diff --git a/compiler/catala_utils/cli.ml b/compiler/catala_utils/cli.ml index b00d5f26..499392f0 100644 --- a/compiler/catala_utils/cli.ml +++ b/compiler/catala_utils/cli.ml @@ -86,6 +86,7 @@ let style_flag = ref true (* Max number of digits to show for decimal results *) let max_prec_digits = ref 20 let trace_flag = ref false +let disable_warnings_flag = ref false let optimize_flag = ref false let disable_counterexamples = ref false let avoid_exceptions_flag = ref false @@ -135,19 +136,26 @@ let trace_opt = "Displays a trace of the interpreter's computation or generates \ logging instructions in translate programs.") +let disable_warnings_opt = + Arg.( + value + & flag + & info ["disable_warnings"] + ~doc:"Disable all the warnings emitted by the compiler.") + let avoid_exceptions = Arg.( value & flag & info ["avoid_exceptions"] - ~doc:"Compiles the default calculus without exceptions") + ~doc:"Compiles the default calculus without exceptions.") let closure_conversion = Arg.( value & flag & info ["closure_conversion"] - ~doc:"Performs closure conversion on the lambda calculus") + ~doc:"Performs closure conversion on the lambda calculus.") let wrap_weaved_output = Arg.( @@ -243,6 +251,7 @@ type options = { language : string option; max_prec_digits : int option; trace : bool; + disable_warnings : bool; disable_counterexamples : bool; optimize : bool; ex_scope : string option; @@ -263,6 +272,7 @@ let options = plugins_dirs language max_prec_digits + disable_warnings trace disable_counterexamples optimize @@ -278,6 +288,7 @@ let options = plugins_dirs; language; max_prec_digits; + disable_warnings; trace; disable_counterexamples; optimize; @@ -299,6 +310,7 @@ let options = $ plugins_dirs $ language $ max_prec_digits_opt + $ disable_warnings_opt $ trace_opt $ disable_counterexamples_opt $ optimize @@ -315,6 +327,10 @@ let set_option_globals options : unit = | Always -> true | Never -> false | Auto -> Unix.isatty Unix.stdout); + (match options.max_prec_digits with + | None -> () + | Some i -> max_prec_digits := i); + disable_warnings_flag := options.disable_warnings; trace_flag := options.trace; optimize_flag := options.optimize; disable_counterexamples := options.disable_counterexamples; @@ -495,7 +511,8 @@ let error_print (format : ('a, out_channel, unit) format) = Printf.eprintf ("%s" ^^ format ^^ "\n%!") (error_marker ()) let warning_print (format : ('a, out_channel, unit) format) = - Printf.printf ("%s" ^^ format ^^ "\n%!") (warning_marker ()) + if !disable_warnings_flag then Printf.ifprintf stdout format + else Printf.printf ("%s" ^^ format ^^ "\n%!") (warning_marker ()) let result_print (format : ('a, out_channel, unit) format) = Printf.printf ("%s" ^^ format ^^ "\n%!") (result_marker ()) diff --git a/compiler/catala_utils/cli.mli b/compiler/catala_utils/cli.mli index 74dcac25..3b69a990 100644 --- a/compiler/catala_utils/cli.mli +++ b/compiler/catala_utils/cli.mli @@ -64,6 +64,7 @@ val max_prec_digits : int ref (** Max number of digits to show for decimal results *) val trace_flag : bool ref +val disable_warnings_flag : bool ref val disable_counterexamples : bool ref (** Disables model-generated counterexamples for proofs that fail. *) @@ -99,6 +100,7 @@ type options = { language : string option; max_prec_digits : int option; trace : bool; + disable_warnings : bool; disable_counterexamples : bool; optimize : bool; ex_scope : string option; diff --git a/compiler/catala_web_interpreter.ml b/compiler/catala_web_interpreter.ml index 9b2caa40..e565181f 100644 --- a/compiler/catala_web_interpreter.ml +++ b/compiler/catala_web_interpreter.ml @@ -23,6 +23,7 @@ let _ = max_prec_digits = None; closure_conversion = false; trace; + disable_warnings = true; disable_counterexamples = false; optimize = false; ex_scope = Some (Js.to_string scope); diff --git a/compiler/desugared/ast.ml b/compiler/desugared/ast.ml index 0d5e370a..8c72e215 100644 --- a/compiler/desugared/ast.ml +++ b/compiler/desugared/ast.ml @@ -247,3 +247,28 @@ let free_variables (def : rule RuleName.Map.t) : Pos.t ScopeDefMap.t = in add_locs acc locs) def ScopeDefMap.empty + +let fold_exprs ~(f : 'a -> expr -> 'a) ~(init : 'a) (p : program) : 'a = + let acc = + ScopeName.Map.fold + (fun _ scope acc -> + let acc = + ScopeDefMap.fold + (fun _ scope_def acc -> + RuleName.Map.fold + (fun _ rule acc -> + f + (f acc (Expr.unbox rule.rule_just)) + (Expr.unbox rule.rule_cons)) + scope_def.scope_def_rules acc) + scope.scope_defs acc + in + let acc = + List.fold_left + (fun acc assertion -> f acc (Expr.unbox assertion)) + acc scope.scope_assertions + in + acc) + p.program_scopes init + in + TopdefName.Map.fold (fun _ (e, _) acc -> f acc e) p.program_topdefs acc diff --git a/compiler/desugared/ast.mli b/compiler/desugared/ast.mli index 224b8cd2..0357a6d4 100644 --- a/compiler/desugared/ast.mli +++ b/compiler/desugared/ast.mli @@ -134,3 +134,9 @@ type program = { val locations_used : expr -> LocationSet.t val free_variables : rule RuleName.Map.t -> Pos.t ScopeDefMap.t + +val fold_exprs : f:('a -> expr -> 'a) -> init:'a -> program -> 'a +(** Usage: [fold_exprs ~f ~init program] applies ~f to all the expressions + inside rules (justifications and consequences), expressions and top-level + definitions of the program. Note that there may be free variables in these + expressions. *) diff --git a/compiler/desugared/linting.ml b/compiler/desugared/linting.ml new file mode 100644 index 00000000..176f2b41 --- /dev/null +++ b/compiler/desugared/linting.ml @@ -0,0 +1,203 @@ +(* This file is part of the Catala compiler, a specification language for tax + and social benefits computation rules. Copyright (C) 2023 Inria, contributor: + Denis Merigoux + + Licensed under the Apache License, Version 2.0 (the "License"); you may not + use this file except in compliance with the License. You may obtain a copy of + the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + License for the specific language governing permissions and limitations under + the License. *) + +open Shared_ast +open Ast +open Catala_utils + +(** If the variable is not an input, then it should be defined somewhere. *) +let detect_empty_definitions (p : program) : unit = + ScopeName.Map.iter + (fun (scope_name : ScopeName.t) scope -> + ScopeDefMap.iter + (fun scope_def_key scope_def -> + if + (match scope_def_key with ScopeDef.Var _ -> true | _ -> false) + && RuleName.Map.is_empty scope_def.scope_def_rules + && (not scope_def.scope_def_is_condition) + && + match Marked.unmark scope_def.scope_def_io.io_input with + | Ast.NoInput -> true + | _ -> false + then + Errors.format_spanned_warning + (ScopeDef.get_position scope_def_key) + "In scope %a, the variable %a is declared but never defined; did \ + you forget something?" + (Cli.format_with_style [ANSITerminal.yellow]) + (Format.asprintf "\"%a\"" ScopeName.format_t scope_name) + (Cli.format_with_style [ANSITerminal.yellow]) + (Format.asprintf "\"%a\"" Ast.ScopeDef.format_t scope_def_key)) + scope.scope_defs) + p.program_scopes + +let detect_unused_scope_vars (p : program) : unit = + let used_scope_vars = + Ast.fold_exprs + ~f:(fun used_scope_vars e -> + let rec used_scope_vars_expr e used_scope_vars = + match Marked.unmark e with + | ELocation (DesugaredScopeVar (v, _)) -> + ScopeVar.Set.add (Marked.unmark v) used_scope_vars + | _ -> Expr.shallow_fold used_scope_vars_expr e used_scope_vars + in + used_scope_vars_expr e used_scope_vars) + ~init:ScopeVar.Set.empty p + in + ScopeName.Map.iter + (fun (scope_name : ScopeName.t) scope -> + ScopeDefMap.iter + (fun scope_def_key scope_def -> + match scope_def_key with + | ScopeDef.Var (v, _) + when (not (ScopeVar.Set.mem v used_scope_vars)) + && not (Marked.unmark scope_def.scope_def_io.io_output) -> + Errors.format_spanned_warning + (ScopeDef.get_position scope_def_key) + "In scope %a, the variable %a is never used anywhere; maybe it's \ + unnecessary?" + (Cli.format_with_style [ANSITerminal.yellow]) + (Format.asprintf "\"%a\"" ScopeName.format_t scope_name) + (Cli.format_with_style [ANSITerminal.yellow]) + (Format.asprintf "\"%a\"" Ast.ScopeDef.format_t scope_def_key) + | _ -> ()) + scope.scope_defs) + p.program_scopes + +let detect_unused_struct_fields (p : program) : unit = + let struct_fields_used = + Ast.fold_exprs + ~f:(fun struct_fields_used e -> + let rec structs_fields_used_expr e struct_fields_used = + match Marked.unmark e with + | EDStructAccess { name_opt = Some name; e = e_struct; field } -> + let field = + StructName.Map.find name + (IdentName.Map.find field p.program_ctx.ctx_struct_fields) + in + StructField.Set.add field + (structs_fields_used_expr e_struct struct_fields_used) + | EStruct { name = _; fields } -> + StructField.Map.fold + (fun field e_field struct_fields_used -> + StructField.Set.add field + (structs_fields_used_expr e_field struct_fields_used)) + fields struct_fields_used + | _ -> Expr.shallow_fold structs_fields_used_expr e struct_fields_used + in + structs_fields_used_expr e struct_fields_used) + ~init:StructField.Set.empty p + in + let scope_out_structs_fields = + ScopeName.Map.fold + (fun _ out_struct acc -> + ScopeVar.Map.fold + (fun _ field acc -> StructField.Set.add field acc) + out_struct.out_struct_fields acc) + p.program_ctx.ctx_scopes StructField.Set.empty + in + StructName.Map.iter + (fun s_name fields -> + if + (not (StructField.Map.is_empty fields)) + && StructField.Map.for_all + (fun field _ -> + (not (StructField.Set.mem field struct_fields_used)) + && not (StructField.Set.mem field scope_out_structs_fields)) + fields + then + Errors.format_spanned_warning + (snd (StructName.get_info s_name)) + "The structure %a is never used; maybe it's unnecessary?" + (Cli.format_with_style [ANSITerminal.yellow]) + (Format.asprintf "\"%a\"" StructName.format_t s_name) + else + StructField.Map.iter + (fun field _ -> + if + (not (StructField.Set.mem field struct_fields_used)) + && not (StructField.Set.mem field scope_out_structs_fields) + then + Errors.format_spanned_warning + (snd (StructField.get_info field)) + "The field %a of struct %a is never used; maybe it's \ + unnecessary?" + (Cli.format_with_style [ANSITerminal.yellow]) + (Format.asprintf "\"%a\"" StructField.format_t field) + (Cli.format_with_style [ANSITerminal.yellow]) + (Format.asprintf "\"%a\"" StructName.format_t s_name)) + fields) + p.program_ctx.ctx_structs + +let detect_unused_enum_constructors (p : program) : unit = + let enum_constructors_used = + Ast.fold_exprs + ~f:(fun enum_constructors_used e -> + let rec enum_constructors_used_expr e enum_constructors_used = + match Marked.unmark e with + | EInj { name = _; e = e_enum; cons } -> + EnumConstructor.Set.add cons + (enum_constructors_used_expr e_enum enum_constructors_used) + | EMatch { e = e_match; name = _; cases } -> + let enum_constructors_used = + enum_constructors_used_expr e_match enum_constructors_used + in + EnumConstructor.Map.fold + (fun cons e_cons enum_constructors_used -> + EnumConstructor.Set.add cons + (enum_constructors_used_expr e_cons enum_constructors_used)) + cases enum_constructors_used + | _ -> + Expr.shallow_fold enum_constructors_used_expr e + enum_constructors_used + in + enum_constructors_used_expr e enum_constructors_used) + ~init:EnumConstructor.Set.empty p + in + EnumName.Map.iter + (fun e_name constructors -> + if + EnumConstructor.Map.for_all + (fun cons _ -> + not (EnumConstructor.Set.mem cons enum_constructors_used)) + constructors + then + Errors.format_spanned_warning + (snd (EnumName.get_info e_name)) + "The enumeration %a is never used; maybe it's unnecessary?" + (Cli.format_with_style [ANSITerminal.yellow]) + (Format.asprintf "\"%a\"" EnumName.format_t e_name) + else + EnumConstructor.Map.iter + (fun constructor _ -> + if not (EnumConstructor.Set.mem constructor enum_constructors_used) + then + Errors.format_spanned_warning + (snd (EnumConstructor.get_info constructor)) + "The constructor %a of enumeration %a is never used; maybe \ + it's unnecessary?" + (Cli.format_with_style [ANSITerminal.yellow]) + (Format.asprintf "\"%a\"" EnumConstructor.format_t constructor) + (Cli.format_with_style [ANSITerminal.yellow]) + (Format.asprintf "\"%a\"" EnumName.format_t e_name)) + constructors) + p.program_ctx.ctx_enums + +let lint_program (p : program) : unit = + detect_empty_definitions p; + detect_unused_scope_vars p; + detect_unused_struct_fields p; + detect_unused_enum_constructors p diff --git a/compiler/desugared/linting.mli b/compiler/desugared/linting.mli new file mode 100644 index 00000000..9d60f78c --- /dev/null +++ b/compiler/desugared/linting.mli @@ -0,0 +1,19 @@ +(* This file is part of the Catala compiler, a specification language for tax + and social benefits computation rules. Copyright (C) 2023 Inria, contributor: + Denis Merigoux + + Licensed under the Apache License, Version 2.0 (the "License"); you may not + use this file except in compliance with the License. You may obtain a copy of + the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + License for the specific language governing permissions and limitations under + the License. *) + +val lint_program : Ast.program -> unit +(** Performs various lints on the program, displaying warnings to help the + developer improve the code. *) diff --git a/compiler/driver.ml b/compiler/driver.ml index 533f4d9a..660edcf5 100644 --- a/compiler/driver.ml +++ b/compiler/driver.ml @@ -39,9 +39,6 @@ let driver source_file (options : Cli.options) : int = (match source_file with | Pos.FileName f -> filename := f | Contents c -> Cli.contents := c); - (match options.max_prec_digits with - | None -> () - | Some i -> Cli.max_prec_digits := i); let l = match options.language with | Some l -> l @@ -174,6 +171,8 @@ let driver source_file (options : Cli.options) : int = let prgm = Desugared.From_surface.translate_program ctxt prgm in Cli.debug_print "Disambiguating..."; let prgm = Desugared.Disambiguate.program prgm in + Cli.debug_print "Linting..."; + Desugared.Linting.lint_program prgm; Cli.debug_print "Collecting rules..."; let prgm = Scopelang.From_desugared.translate_program prgm in match backend with diff --git a/compiler/scopelang/from_desugared.ml b/compiler/scopelang/from_desugared.ml index e401c801..28d7b3cf 100644 --- a/compiler/scopelang/from_desugared.ml +++ b/compiler/scopelang/from_desugared.ml @@ -91,8 +91,11 @@ let rec translate_expr (ctx : ctx) (e : Desugared.Ast.expr) : with Not_found -> (* Should not happen after disambiguation *) Errors.raise_spanned_error (Expr.mark_pos m) - "Field %s does not belong to structure %a" field StructName.format_t - name + "Field %a does not belong to structure %a" + (Cli.format_with_style [ANSITerminal.yellow]) + ("\"" ^ field ^ "\"") + (Cli.format_with_style [ANSITerminal.yellow]) + (Format.asprintf "\"%a\"" StructName.format_t name) in Expr.estructaccess e' field name m | ETuple es -> Expr.etuple (List.map (translate_expr ctx) es) m diff --git a/compiler/shared_ast/expr.ml b/compiler/shared_ast/expr.ml index 4fdd87b0..df39fb8a 100644 --- a/compiler/shared_ast/expr.ml +++ b/compiler/shared_ast/expr.ml @@ -267,7 +267,9 @@ let shallow_fold | ELit _ | EOp _ | EVar _ | ERaise _ | ELocation _ | EEmptyError -> acc | EApp { f = e; args } -> acc |> f e |> lfold args | EArray args -> acc |> lfold args - | EAbs _ -> acc + | EAbs { binder; tys = _ } -> + let _, body = Bindlib.unmbind binder in + acc |> f body | EIfThenElse { cond; etrue; efalse } -> acc |> f cond |> f etrue |> f efalse | ETuple args -> acc |> lfold args | ETupleAccess { e; _ } -> acc |> f e diff --git a/compiler/shared_ast/expr.mli b/compiler/shared_ast/expr.mli index 121fe2d7..e0cb3907 100644 --- a/compiler/shared_ast/expr.mli +++ b/compiler/shared_ast/expr.mli @@ -236,9 +236,9 @@ val map_marks : f:('t1 -> 't2) -> ('a, 't1) gexpr -> ('a, 't2) boxed_gexpr val shallow_fold : (('a, 't) gexpr -> 'acc -> 'acc) -> ('a, 't) gexpr -> 'acc -> 'acc (** Applies a function on all sub-terms of the given expression. Does not - recurse, and doesn't open binders. Useful as helper for recursive calls - within traversal functions. This can be used to compute free variables with - e.g.: + recurse. It opens binders unless you avoid sending binders to the function + like the example below. Useful as helper for recursive calls within + traversal functions. This can be used to compute free variables with e.g.: {[ let rec free_vars = function diff --git a/compiler/shared_ast/program.ml b/compiler/shared_ast/program.ml index 76ac24fd..f43c2c05 100644 --- a/compiler/shared_ast/program.ml +++ b/compiler/shared_ast/program.ml @@ -22,6 +22,12 @@ let map_exprs ~f ~varf { code_items; decl_ctx } = (fun code_items -> { code_items; decl_ctx }) (Scope.map_exprs ~f ~varf code_items) +let fold_left_exprs ~f ~init { code_items; decl_ctx = _ } = + Scope.fold_left ~f:(fun acc e _ -> f acc e) ~init code_items + +let fold_right_exprs ~f ~init { code_items; decl_ctx = _ } = + Scope.fold_right ~f:(fun e _ acc -> f e acc) ~init code_items + let get_scope_body { code_items; _ } scope = match Scope.fold_left ~init:None diff --git a/compiler/shared_ast/program.mli b/compiler/shared_ast/program.mli index 2c23c4a8..b5656854 100644 --- a/compiler/shared_ast/program.mli +++ b/compiler/shared_ast/program.mli @@ -25,6 +25,12 @@ val map_exprs : 'expr1 program -> 'expr2 program Bindlib.box +val fold_left_exprs : + f:('a -> 'expr code_item -> 'a) -> init:'a -> 'expr program -> 'a + +val fold_right_exprs : + f:('expr code_item -> 'a -> 'a) -> init:'a -> 'expr program -> 'a + val get_scope_body : ((_ any, 't) gexpr as 'e) program -> ScopeName.t -> 'e scope_body diff --git a/compiler/shared_ast/typing.ml b/compiler/shared_ast/typing.ml index 300de4b2..1ff1d333 100644 --- a/compiler/shared_ast/typing.ml +++ b/compiler/shared_ast/typing.ml @@ -474,18 +474,27 @@ and typecheck_expr_top_down : try A.IdentName.Map.find field ctx.ctx_struct_fields with Not_found -> Errors.raise_spanned_error context_mark.pos - "Field %s does not belong to structure %a (no structure defines \ + "Field %a does not belong to structure %a (no structure defines \ it)" - field A.StructName.format_t name + (Cli.format_with_style [ANSITerminal.yellow]) + ("\"" ^ field ^ "\"") + (Cli.format_with_style [ANSITerminal.yellow]) + (Format.asprintf "\"%a\"" A.StructName.format_t name) in try A.StructName.Map.find name candidate_structs with Not_found -> Errors.raise_spanned_error context_mark.pos - "Field %s does not belong to structure %a, but to %a" field - A.StructName.format_t name + "Field %a does not belong to structure %a, but to %a" + (Cli.format_with_style [ANSITerminal.yellow]) + ("\"" ^ field ^ "\"") + (Cli.format_with_style [ANSITerminal.yellow]) + (Format.asprintf "\"%a\"" A.StructName.format_t name) (Format.pp_print_list ~pp_sep:(fun ppf () -> Format.fprintf ppf "@ or@ ") - A.StructName.format_t) + (fun fmt s_name -> + Format.fprintf fmt "%a" + (Cli.format_with_style [ANSITerminal.yellow]) + (Format.asprintf "\"%a\"" A.StructName.format_t s_name))) (List.map fst (A.StructName.Map.bindings candidate_structs)) in A.StructField.Map.find field str diff --git a/examples/aides_logement/tests/tests_calcul_al_locatif.catala_fr b/examples/aides_logement/tests/tests_calcul_al_locatif.catala_fr index f5306b9d..2d739baf 100644 --- a/examples/aides_logement/tests/tests_calcul_al_locatif.catala_fr +++ b/examples/aides_logement/tests/tests_calcul_al_locatif.catala_fr @@ -65,13 +65,13 @@ champ d'application Exemple2 : ```catala-test-inline -$ catala Interpret -s Exemple1 +$ catala Interpret -s Exemple1 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 345.73 € ``` ```catala-test-inline -$ catala Interpret -s Exemple2 +$ catala Interpret -s Exemple2 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 352.77 € ``` diff --git a/examples/aides_logement/tests/tests_calcul_al_logement_foyer.catala_fr b/examples/aides_logement/tests/tests_calcul_al_logement_foyer.catala_fr index 5809ba27..554916f2 100644 --- a/examples/aides_logement/tests/tests_calcul_al_logement_foyer.catala_fr +++ b/examples/aides_logement/tests/tests_calcul_al_logement_foyer.catala_fr @@ -30,7 +30,7 @@ champ d'application CasTest1: ``` ```catala-test-inline -$ catala Interpret -s CasTest1 +$ catala Interpret -s CasTest1 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 76.38 € ``` diff --git a/examples/aides_logement/tests/tests_calcul_apl_accession_propriete.catala_fr b/examples/aides_logement/tests/tests_calcul_apl_accession_propriete.catala_fr index ddeadb84..adc53664 100644 --- a/examples/aides_logement/tests/tests_calcul_apl_accession_propriete.catala_fr +++ b/examples/aides_logement/tests/tests_calcul_apl_accession_propriete.catala_fr @@ -144,26 +144,26 @@ champ d'application Exemple4: ``` ```catala-test-inline -$ catala Interpret -s Exemple1 +$ catala Interpret -s Exemple1 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 181.91 € ``` ```catala-test-inline -$ catala Interpret -s Exemple2 +$ catala Interpret -s Exemple2 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 67.34 € ``` ```catala-test-inline -$ catala Interpret -s Exemple3 +$ catala Interpret -s Exemple3 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 181.91 € ``` ```catala-test-inline -$ catala Interpret -s Exemple4 +$ catala Interpret -s Exemple4 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 118.59 € ``` diff --git a/examples/aides_logement/tests/tests_calcul_apl_locatif.catala_fr b/examples/aides_logement/tests/tests_calcul_apl_locatif.catala_fr index 95796f28..210243d4 100644 --- a/examples/aides_logement/tests/tests_calcul_apl_locatif.catala_fr +++ b/examples/aides_logement/tests/tests_calcul_apl_locatif.catala_fr @@ -270,55 +270,55 @@ champ d'application Exemple9: ``` ```catala-test-inline -$ catala Interpret -s Exemple1 +$ catala Interpret -s Exemple1 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 0.00 € ``` ```catala-test-inline -$ catala Interpret -s Exemple2 +$ catala Interpret -s Exemple2 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 352.77 € ``` ```catala-test-inline -$ catala Interpret -s Exemple3 +$ catala Interpret -s Exemple3 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 321.61 € ``` ```catala-test-inline -$ catala Interpret -s Exemple4 +$ catala Interpret -s Exemple4 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 0.00 € ``` ```catala-test-inline -$ catala Interpret -s Exemple5 +$ catala Interpret -s Exemple5 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 311.56 € ``` ```catala-test-inline -$ catala Interpret -s Exemple6 +$ catala Interpret -s Exemple6 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 0.00 € ``` ```catala-test-inline -$ catala Interpret -s Exemple7 +$ catala Interpret -s Exemple7 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 153.77 € ``` ```catala-test-inline -$ catala Interpret -s Exemple8 +$ catala Interpret -s Exemple8 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 11.06 € ``` ```catala-test-inline -$ catala Interpret -s Exemple9 +$ catala Interpret -s Exemple9 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 210.06 € ``` diff --git a/examples/aides_logement/tests/tests_calcul_apl_logement_foyer.catala_fr b/examples/aides_logement/tests/tests_calcul_apl_logement_foyer.catala_fr index 3542c512..43e5c52e 100644 --- a/examples/aides_logement/tests/tests_calcul_apl_logement_foyer.catala_fr +++ b/examples/aides_logement/tests/tests_calcul_apl_logement_foyer.catala_fr @@ -127,31 +127,31 @@ champ d'application CasTest5: ``` ```catala-test-inline -$ catala Interpret -s CasTest1 +$ catala Interpret -s CasTest1 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 12.06 € ``` ```catala-test-inline -$ catala Interpret -s CasTest2 +$ catala Interpret -s CasTest2 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 23.12 € ``` ```catala-test-inline -$ catala Interpret -s CasTest3 +$ catala Interpret -s CasTest3 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 154.78 € ``` ```catala-test-inline -$ catala Interpret -s CasTest4 +$ catala Interpret -s CasTest4 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 154.78 € ``` ```catala-test-inline -$ catala Interpret -s CasTest5 +$ catala Interpret -s CasTest5 --disable_warnings [RESULT] Computation successful! Results: [RESULT] montant = 129.65 € ``` diff --git a/examples/aides_logement/tests/tests_eligibilite_apl.catala_fr b/examples/aides_logement/tests/tests_eligibilite_apl.catala_fr index 19066f06..f7c18bfe 100644 --- a/examples/aides_logement/tests/tests_eligibilite_apl.catala_fr +++ b/examples/aides_logement/tests/tests_eligibilite_apl.catala_fr @@ -242,12 +242,240 @@ champ d'application Exemple2 : ``` ```catala-test-inline -$ catala Interpret -s Exemple1 +$ catala Interpret -s Exemple1 --disable_warnings [RESULT] Computation successful! Results: [RESULT] éligible = true ``` ```catala-test-inline $ catala Typecheck +[WARNING] In scope "RessourcesAidesPersonnelleLogement", the variable "ressources_ménage_arrondies.seuil" is declared but never defined; did you forget something? + +┌─⯈ examples/aides_logement/tests/../prologue.catala_fr:496.9-14: +└───┐ +496 │ état seuil + │ ‾‾‾‾‾ + └┬ Prologue : aides au logement + └┬ Déclarations des champs d'application + └─ Prise en compte des ressources pour les aides personnelles au logement +[WARNING] In scope "RessourcesAidesPersonnelleLogement", the variable "ressources_forfaitaires_r822_20" is declared but never defined; did you forget something? + +┌─⯈ examples/aides_logement/tests/../prologue.catala_fr:504.10-41: +└───┐ +504 │ interne ressources_forfaitaires_r822_20 contenu argent + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue : aides au logement + └┬ Déclarations des champs d'application + └─ Prise en compte des ressources pour les aides personnelles au logement +[WARNING] In scope "ÉligibilitéAidesPersonnelleLogement", the variable "condition_prêt" is never used anywhere; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../prologue.catala_fr:292.10-24: +└───┐ +292 │ interne condition_prêt condition dépend de prêt contenu Prêt + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue : aides au logement + └┬ Déclarations des champs d'application + └─ Éligibilité aux aides personnelles au logement +[WARNING] In scope "ÉligibilitéAidesPersonnelleLogement", the variable "condition_peuplement_logement_l822_10" is never used anywhere; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../prologue.catala_fr:301.10-47: +└───┐ +301 │ interne condition_peuplement_logement_l822_10 condition + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue : aides au logement + └┬ Déclarations des champs d'application + └─ Éligibilité aux aides personnelles au logement +[WARNING] In scope "ÉligibilitéAidesPersonnelleLogement", the variable "patrimoine_pris_en_compte" is never used anywhere; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../prologue.catala_fr:314.10-35: +└───┐ +314 │ interne patrimoine_pris_en_compte contenu argent + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue : aides au logement + └┬ Déclarations des champs d'application + └─ Éligibilité aux aides personnelles au logement +[WARNING] In scope "ÉligibilitéPrimeDeDéménagement", the variable "éligibilité_logement" is never used anywhere; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../prologue.catala_fr:457.10-30: +└───┐ +457 │ interne éligibilité_logement condition + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue : aides au logement + └┬ Déclarations des champs d'application + └─ Éligibilité à la prime de déménagement +[WARNING] In scope "RessourcesAidesPersonnelleLogement", the variable "ressources_ménage_arrondies.seuil" is never used anywhere; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../prologue.catala_fr:496.9-14: +└───┐ +496 │ état seuil + │ ‾‾‾‾‾ + └┬ Prologue : aides au logement + └┬ Déclarations des champs d'application + └─ Prise en compte des ressources pour les aides personnelles au logement +[WARNING] In scope "RessourcesAidesPersonnelleLogement", the variable "ressources_ménage_arrondies.base" is never used anywhere; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../prologue.catala_fr:495.9-13: +└───┐ +495 │ état base + │ ‾‾‾‾ + └┬ Prologue : aides au logement + └┬ Déclarations des champs d'application + └─ Prise en compte des ressources pour les aides personnelles au logement +[WARNING] In scope "RessourcesAidesPersonnelleLogement", the variable "abattement_r_822_8" is never used anywhere; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../prologue.catala_fr:499.10-28: +└───┐ +499 │ interne abattement_r_822_8 contenu argent + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue : aides au logement + └┬ Déclarations des champs d'application + └─ Prise en compte des ressources pour les aides personnelles au logement +[WARNING] In scope "RessourcesAidesPersonnelleLogement", the variable "abattement_r_822_7" is never used anywhere; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../prologue.catala_fr:501.10-28: +└───┐ +501 │ interne abattement_r_822_7 contenu argent + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue : aides au logement + └┬ Déclarations des champs d'application + └─ Prise en compte des ressources pour les aides personnelles au logement +[WARNING] In scope "RessourcesAidesPersonnelleLogement", the variable "abattement_r_822_10" is never used anywhere; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../prologue.catala_fr:503.10-29: +└───┐ +503 │ interne abattement_r_822_10 contenu argent + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue : aides au logement + └┬ Déclarations des champs d'application + └─ Prise en compte des ressources pour les aides personnelles au logement +[WARNING] In scope "CalculAllocationLogement", the variable "catégorie_calcul_apl" is never used anywhere; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../prologue.catala_fr:1000.10-30: +└────┐ +1000 │ interne catégorie_calcul_apl contenu CatégorieCalculAPL + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue : aides au logement + └┬ Calcul du montant de l'allocation logement + └┬ Secteur logement-foyer + └─ Tous secteurs +[WARNING] In scope "ÉligibilitéPrestationsFamiliales", the variable "prestation_courante" is never used anywhere; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../../prestations_familiales/prologue.catala_fr:48.9-28: +└──┐ +48 │ entrée prestation_courante contenu ÉlémentPrestationsFamiliales + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └─ Prologue : prestations familiales +[WARNING] The constructor "AllocationJeuneEnfant" of enumeration "PrestationReçue" is never used; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../prologue.catala_fr:132.5-26: +└───┐ +132 │ -- AllocationJeuneEnfant + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue : aides au logement + └┬ Types de données manipulées par le programme + └┬ Calcul et éligibilité des aides personnelles au logement + └─ Calcul et éligibilité pour tous les secteurs +[WARNING] The constructor "Descendant" of enumeration "Parenté" is never used; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../prologue.catala_fr:185.5-15: +└───┐ +185 │ -- Descendant + │ ‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue : aides au logement + └┬ Types de données manipulées par le programme + └┬ Calcul et éligibilité des aides personnelles au logement + └─ Calcul et éligibilité pour tous les secteurs +[WARNING] The constructor "CollatéralDeuxièmeTroisièmeDegré" of enumeration "Parenté" is never used; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../prologue.catala_fr:186.5-37: +└───┐ +186 │ -- CollatéralDeuxièmeTroisièmeDegré + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue : aides au logement + └┬ Types de données manipulées par le programme + └┬ Calcul et éligibilité des aides personnelles au logement + └─ Calcul et éligibilité pour tous les secteurs +[WARNING] The enumeration "PriseEnCharge" is never used; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../code_construction_legislatif.catala_fr:444.24-37: +└───┐ +444 │ déclaration énumération PriseEnCharge: + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Code de la construction et de l'habitation + └┬ Partie législative + └┬ Livre VIII : Aides personnelles au logement + └┬ Titre II : Dispositions communes aux aides personnelles au logement + └┬ Chapitre III : Modalités de liquidation et de versement + └─ Article L823-2 +[WARNING] The constructor "GardeAlternéeAllocataireUnique" of enumeration "PriseEnChargeEnfant" is never used; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../../prestations_familiales/prologue.catala_fr:10.5-35: +└──┐ +10 │ -- GardeAlternéeAllocataireUnique + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └─ Prologue : prestations familiales +[WARNING] The constructor "ServicesSociauxAllocationVerséeÀLaFamille" of enumeration "PriseEnChargeEnfant" is never used; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../../prestations_familiales/prologue.catala_fr:12.5-46: +└──┐ +12 │ -- ServicesSociauxAllocationVerséeÀLaFamille + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └─ Prologue : prestations familiales +[WARNING] The constructor "ServicesSociauxAllocationVerséeAuxServicesSociaux" of enumeration "PriseEnChargeEnfant" is never used; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../../prestations_familiales/prologue.catala_fr:13.5-54: +└──┐ +13 │ -- ServicesSociauxAllocationVerséeAuxServicesSociaux + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └─ Prologue : prestations familiales +[WARNING] The constructor "PrestationAccueilJeuneEnfant" of enumeration "ÉlémentPrestationsFamiliales" is never used; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../../prestations_familiales/prologue.catala_fr:30.5-33: +└──┐ +30 │ -- PrestationAccueilJeuneEnfant + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └─ Prologue : prestations familiales +[WARNING] The constructor "ComplémentFamilial" of enumeration "ÉlémentPrestationsFamiliales" is never used; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../../prestations_familiales/prologue.catala_fr:32.5-23: +└──┐ +32 │ -- ComplémentFamilial + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └─ Prologue : prestations familiales +[WARNING] The constructor "AllocationLogement" of enumeration "ÉlémentPrestationsFamiliales" is never used; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../../prestations_familiales/prologue.catala_fr:33.5-23: +└──┐ +33 │ -- AllocationLogement + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └─ Prologue : prestations familiales +[WARNING] The constructor "AllocationÉducationEnfantHandicapé" of enumeration "ÉlémentPrestationsFamiliales" is never used; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../../prestations_familiales/prologue.catala_fr:34.5-39: +└──┐ +34 │ -- AllocationÉducationEnfantHandicapé + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └─ Prologue : prestations familiales +[WARNING] The constructor "AllocationSoutienFamilial" of enumeration "ÉlémentPrestationsFamiliales" is never used; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../../prestations_familiales/prologue.catala_fr:35.5-30: +└──┐ +35 │ -- AllocationSoutienFamilial + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └─ Prologue : prestations familiales +[WARNING] The constructor "AllocationRentréeScolaire" of enumeration "ÉlémentPrestationsFamiliales" is never used; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../../prestations_familiales/prologue.catala_fr:36.5-30: +└──┐ +36 │ -- AllocationRentréeScolaire + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └─ Prologue : prestations familiales +[WARNING] The constructor "AllocationJournalièrePresenceParentale" of enumeration "ÉlémentPrestationsFamiliales" is never used; maybe it's unnecessary? + +┌─⯈ examples/aides_logement/tests/../../prestations_familiales/prologue.catala_fr:37.5-43: +└──┐ +37 │ -- AllocationJournalièrePresenceParentale + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └─ Prologue : prestations familiales [RESULT] Typechecking successful! ``` diff --git a/examples/allocations_familiales/tests/tests_allocations_familiales.catala_fr b/examples/allocations_familiales/tests/tests_allocations_familiales.catala_fr index e2e0079c..7945f642 100644 --- a/examples/allocations_familiales/tests/tests_allocations_familiales.catala_fr +++ b/examples/allocations_familiales/tests/tests_allocations_familiales.catala_fr @@ -349,71 +349,159 @@ champ d'application Test14: ``` ```catala-test-inline -$ catala Interpret -s Test1 +$ catala Typecheck +[WARNING] In scope "PrestationsFamiliales", the variable "prestation_courante" is never used anywhere; maybe it's unnecessary? + +┌─⯈ examples/allocations_familiales/tests/../prologue.catala_fr:63.9-28: +└──┐ +63 │ entrée prestation_courante contenu ÉlémentPrestationsFamiliales + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue + └┬ Champs d'applications + └─ Prestations familiales +[WARNING] In scope "AllocationsFamiliales", the variable "versement" is never used anywhere; maybe it's unnecessary? + +┌─⯈ examples/allocations_familiales/tests/../prologue.catala_fr:98.10-19: +└──┐ +98 │ interne versement contenu VersementAllocations dépend de enfant contenu Enfant + │ ‾‾‾‾‾‾‾‾‾ + └┬ Prologue + └┬ Champs d'applications + └─ Allocations familiales +[WARNING] In scope "AllocationsFamiliales", the variable "nombre_enfants_l521_1" is never used anywhere; maybe it's unnecessary? + +┌─⯈ examples/allocations_familiales/tests/../prologue.catala_fr:151.10-31: +└───┐ +151 │ interne nombre_enfants_l521_1 contenu entier + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue + └┬ Champs d'applications + └─ Allocations familiales +[WARNING] The constructor "PrestationAccueilJeuneEnfant" of enumeration "ÉlémentPrestationsFamiliales" is never used; maybe it's unnecessary? + +┌─⯈ examples/allocations_familiales/tests/../prologue.catala_fr:41.5-33: +└──┐ +41 │ -- PrestationAccueilJeuneEnfant + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue + └─ Types de données manipulées par le programme +[WARNING] The constructor "ComplémentFamilial" of enumeration "ÉlémentPrestationsFamiliales" is never used; maybe it's unnecessary? + +┌─⯈ examples/allocations_familiales/tests/../prologue.catala_fr:43.5-23: +└──┐ +43 │ -- ComplémentFamilial + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue + └─ Types de données manipulées par le programme +[WARNING] The constructor "AllocationLogement" of enumeration "ÉlémentPrestationsFamiliales" is never used; maybe it's unnecessary? + +┌─⯈ examples/allocations_familiales/tests/../prologue.catala_fr:44.5-23: +└──┐ +44 │ -- AllocationLogement + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue + └─ Types de données manipulées par le programme +[WARNING] The constructor "AllocationÉducationEnfantHandicapé" of enumeration "ÉlémentPrestationsFamiliales" is never used; maybe it's unnecessary? + +┌─⯈ examples/allocations_familiales/tests/../prologue.catala_fr:45.5-39: +└──┐ +45 │ -- AllocationÉducationEnfantHandicapé + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue + └─ Types de données manipulées par le programme +[WARNING] The constructor "AllocationSoutienFamilial" of enumeration "ÉlémentPrestationsFamiliales" is never used; maybe it's unnecessary? + +┌─⯈ examples/allocations_familiales/tests/../prologue.catala_fr:46.5-30: +└──┐ +46 │ -- AllocationSoutienFamilial + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue + └─ Types de données manipulées par le programme +[WARNING] The constructor "AllocationRentréeScolaire" of enumeration "ÉlémentPrestationsFamiliales" is never used; maybe it's unnecessary? + +┌─⯈ examples/allocations_familiales/tests/../prologue.catala_fr:47.5-30: +└──┐ +47 │ -- AllocationRentréeScolaire + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue + └─ Types de données manipulées par le programme +[WARNING] The constructor "AllocationJournalièrePresenceParentale" of enumeration "ÉlémentPrestationsFamiliales" is never used; maybe it's unnecessary? + +┌─⯈ examples/allocations_familiales/tests/../prologue.catala_fr:48.5-43: +└──┐ +48 │ -- AllocationJournalièrePresenceParentale + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ Prologue + └─ Types de données manipulées par le programme +[RESULT] Typechecking successful! +``` + +```catala-test-inline +$ catala Interpret -s Test1 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test2 +$ catala Interpret -s Test2 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test3 +$ catala Interpret -s Test3 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test4 +$ catala Interpret -s Test4 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test5 +$ catala Interpret -s Test5 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test6 +$ catala Interpret -s Test6 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test7 +$ catala Interpret -s Test7 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test8 +$ catala Interpret -s Test8 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test9 +$ catala Interpret -s Test9 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test10 +$ catala Interpret -s Test10 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test11 +$ catala Interpret -s Test11 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test12 +$ catala Interpret -s Test12 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test13 +$ catala Interpret -s Test13 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test13 +$ catala Interpret -s Test13 --disable_warnings [RESULT] Computation successful! ``` diff --git a/examples/allocations_familiales/tests/tests_ouverture_droits.catala_fr b/examples/allocations_familiales/tests/tests_ouverture_droits.catala_fr index 0bed2d8c..38b17eb2 100644 --- a/examples/allocations_familiales/tests/tests_ouverture_droits.catala_fr +++ b/examples/allocations_familiales/tests/tests_ouverture_droits.catala_fr @@ -62,6 +62,6 @@ champ d'application Test1: ``` ```catala-test-inline -$ catala Interpret -s Test1 +$ catala Interpret -s Test1 --disable_warnings [RESULT] Computation successful! ``` diff --git a/examples/polish_taxes/tests/test_a7_u1_p1.catala_pl b/examples/polish_taxes/tests/test_a7_u1_p1.catala_pl index 9d851601..8e8c6bda 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p1.catala_pl +++ b/examples/polish_taxes/tests/test_a7_u1_p1.catala_pl @@ -23,11 +23,11 @@ zakres Test_A7_U1_P1_PPb: ``` ```catala-test-inline -$ catala Interpret -s Test_A7_U1_P1_PPa +$ catala Interpret -s Test_A7_U1_P1_PPa --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test_A7_U1_P1_PPb +$ catala Interpret -s Test_A7_U1_P1_PPb --disable_warnings [RESULT] Computation successful! ``` diff --git a/examples/polish_taxes/tests/test_a7_u1_p2.catala_pl b/examples/polish_taxes/tests/test_a7_u1_p2.catala_pl index 9b79017d..6f06f35c 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p2.catala_pl +++ b/examples/polish_taxes/tests/test_a7_u1_p2.catala_pl @@ -23,11 +23,11 @@ zakres Test_A7_U1_P2_PPb: ``` ```catala-test-inline -$ catala Interpret -s Test_A7_U1_P2_PPa +$ catala Interpret -s Test_A7_U1_P2_PPa --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test_A7_U1_P2_PPb +$ catala Interpret -s Test_A7_U1_P2_PPb --disable_warnings [RESULT] Computation successful! ``` diff --git a/examples/polish_taxes/tests/test_a7_u1_p3.catala_pl b/examples/polish_taxes/tests/test_a7_u1_p3.catala_pl index 88577e80..83a8bc47 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p3.catala_pl +++ b/examples/polish_taxes/tests/test_a7_u1_p3.catala_pl @@ -12,6 +12,6 @@ zakres Test_A7_U1_P3: asercja sprzedaz.podatek = 1 PLN ``` ```catala-test-inline -$ catala Interpret -s Test_A7_U1_P3 +$ catala Interpret -s Test_A7_U1_P3 --disable_warnings [RESULT] Computation successful! ``` diff --git a/examples/polish_taxes/tests/test_a7_u1_p4.catala_pl b/examples/polish_taxes/tests/test_a7_u1_p4.catala_pl index fbc4360e..bde4c4da 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p4.catala_pl +++ b/examples/polish_taxes/tests/test_a7_u1_p4.catala_pl @@ -12,6 +12,6 @@ zakres Test_A7_U1_P4: asercja sprzedaz.podatek = 1 PLN ``` ```catala-test-inline -$ catala Interpret -s Test_A7_U1_P4 +$ catala Interpret -s Test_A7_U1_P4 --disable_warnings [RESULT] Computation successful! ``` diff --git a/examples/polish_taxes/tests/test_a7_u1_p7.catala_pl b/examples/polish_taxes/tests/test_a7_u1_p7.catala_pl index a8192e5b..6f122d8d 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p7.catala_pl +++ b/examples/polish_taxes/tests/test_a7_u1_p7.catala_pl @@ -12,6 +12,6 @@ zakres Test_A7_U1_P7: asercja sprzedaz.podatek = 1 PLN ``` ```catala-test-inline -$ catala Interpret -s Test_A7_U1_P7 +$ catala Interpret -s Test_A7_U1_P7 --disable_warnings [RESULT] Computation successful! ``` diff --git a/examples/polish_taxes/tests/test_a7_u1_p9.catala_pl b/examples/polish_taxes/tests/test_a7_u1_p9.catala_pl index edd5f710..b680ea97 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p9.catala_pl +++ b/examples/polish_taxes/tests/test_a7_u1_p9.catala_pl @@ -12,6 +12,6 @@ zakres Test_A7_U1_P9: asercja sprzedaz.podatek = 5 PLN ``` ```catala-test-inline -$ catala Interpret -s Test_A7_U1_P9 +$ catala Interpret -s Test_A7_U1_P9 --disable_warnings [RESULT] Computation successful! ``` diff --git a/examples/prestations_familiales/tests/tests_ouverture_droits.catala_fr b/examples/prestations_familiales/tests/tests_ouverture_droits.catala_fr index d7f6e5fa..a08f0df6 100644 --- a/examples/prestations_familiales/tests/tests_ouverture_droits.catala_fr +++ b/examples/prestations_familiales/tests/tests_ouverture_droits.catala_fr @@ -62,6 +62,6 @@ champ d'application Test1: ``` ```catala-test-inline -$ catala Interpret -s Test1 +$ catala Interpret -s Test1 --disable_warnings [RESULT] Computation successful! ``` diff --git a/examples/tutorial_en/tests/test_tutorial.catala_en b/examples/tutorial_en/tests/test_tutorial.catala_en index 63a9fe52..26c7c37c 100644 --- a/examples/tutorial_en/tests/test_tutorial.catala_en +++ b/examples/tutorial_en/tests/test_tutorial.catala_en @@ -29,11 +29,11 @@ scope UnitTest2: ``` ```catala-test-inline -$ catala Interpret -s UnitTest1 +$ catala Interpret -s UnitTest1 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s UnitTest2 +$ catala Interpret -s UnitTest2 --disable_warnings [RESULT] Computation successful! ``` diff --git a/examples/tutoriel_fr/tests/test_tutoriel.catala_fr b/examples/tutoriel_fr/tests/test_tutoriel.catala_fr index a40a610f..0a287c25 100644 --- a/examples/tutoriel_fr/tests/test_tutoriel.catala_fr +++ b/examples/tutoriel_fr/tests/test_tutoriel.catala_fr @@ -29,11 +29,11 @@ champ d'application TestUnitaire2: ``` ```catala-test-inline -$ catala Interpret -s TestUnitaire1 +$ catala Interpret -s TestUnitaire1 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s TestUnitaire2 +$ catala Interpret -s TestUnitaire2 --disable_warnings [RESULT] Computation successful! ``` diff --git a/examples/us_tax_code/tests/test_section_121.catala_en b/examples/us_tax_code/tests/test_section_121.catala_en index 760c59e6..6c9abe60 100644 --- a/examples/us_tax_code/tests/test_section_121.catala_en +++ b/examples/us_tax_code/tests/test_section_121.catala_en @@ -146,31 +146,31 @@ scope Test6: ``` ```catala-test-inline -$ catala Interpret -s Test1 +$ catala Interpret -s Test1 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test2 +$ catala Interpret -s Test2 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test3 +$ catala Interpret -s Test3 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test4 +$ catala Interpret -s Test4 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test5 +$ catala Interpret -s Test5 --disable_warnings [RESULT] Computation successful! ``` ```catala-test-inline -$ catala Interpret -s Test6 +$ catala Interpret -s Test6 --disable_warnings [RESULT] Computation successful! ``` diff --git a/french_law/js/french_law.js b/french_law/js/french_law.js index ab6c3cf7..acec30e9 100644 --- a/french_law/js/french_law.js +++ b/french_law/js/french_law.js @@ -1,6 +1,7 @@ //# 1 "api_web.bc.runtime.js" -// Generated by js_of_ocaml 4.0.0 -(function(Object) +// Generated by js_of_ocaml +(function + (Object) {typeof globalThis !== "object" @@ -432,7 +433,7 @@ 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.alternate && f.base == 16)buffer += f.uppercase?"0X":"0x"; if(f.justify == "+" && f.filler == "0") for(var i=len;i < f.width;i++)buffer += "0"; buffer += rawbuffer; @@ -458,6 +459,7 @@ 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_ml_condition_broadcast(t){return 0} function caml_jsstring_of_string(s){return s.toUtf16()} function fs_node_supported() {return typeof globalThis.process @@ -508,6 +510,7 @@ switch(comp[i]) {case "..":if(ncomp.length > 1)ncomp.pop();break; case ".":break; + case "":break; default:ncomp.push(comp[i]);break} ncomp.unshift(comp0[0]); ncomp.orig = name; @@ -654,37 +657,27 @@ 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_array(a) + {if(! (a instanceof Uint8Array))a = new Uint8Array(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; + {var a=new Uint8Array(s.l),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_uint8_array_of_bytes(s) + {if(s.t != 4)caml_convert_bytes_to_array(s);return s.c} + 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_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)) @@ -715,11 +708,10 @@ 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.constructor = MlFakeFile; MlFakeFile.prototype.truncate = function(len) @@ -737,19 +729,38 @@ {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); + caml_blit_bytes(caml_bytes_of_array(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 + if(offset + len >= clen)len = clen - offset; + if(len) + {var data=caml_create_bytes(len | 0); + caml_blit_bytes(this.data,offset,data,0,len); + buf.set(caml_uint8_array_of_bytes(data),pos)} + return len}; + function MlFakeFd(name,file,flags) + {this.file = file;this.name = name;this.flags = flags} + MlFakeFd.prototype.err_closed = - function(offset){return caml_bytes_get(this.data,offset)}; - MlFakeFile.prototype.close = function(){}; - MlFakeFile.prototype.constructor = MlFakeFile; + function() + {caml_raise_sys_error(this.name + ": file descriptor already closed")}; + MlFakeFd.prototype.length + = + function(){if(this.file)return this.file.length();this.err_closed()}; + MlFakeFd.prototype.write + = + function(offset,buf,pos,len) + {if(this.file)return this.file.write(offset,buf,pos,len); + this.err_closed()}; + MlFakeFd.prototype.read + = + function(offset,buf,pos,len) + {if(this.file)return this.file.read(offset,buf,pos,len); + this.err_closed()}; + MlFakeFd.prototype.close = function(){this.file = undefined}; function MlFakeDevice(root,f) {this.content = {};this.root = root;this.lookupFun = f} MlFakeDevice.prototype.nm = function(name){return this.root + name}; @@ -847,6 +858,38 @@ {var m=n.match(r); if(m && ! seen[m[1]]){seen[m[1]] = true;a.push(m[1])}} return a}; + MlFakeDevice.prototype.opendir + = + function(name,raise_unix) + {var + unix_error=raise_unix && caml_named_value("Unix.Unix_error"), + a=this.readdir(name), + c=false, + i=0; + return {readSync: + function() + {if(c) + if(unix_error) + caml_raise_with_args + (unix_error, + make_unix_err_args("EBADF","closedir",this.nm(name))); + else + caml_raise_sys_error(name + ": closedir failed"); + if(i == a.length)return null; + var entry=a[i]; + i++; + return {name:entry}}, + closeSync: + function() + {if(c) + if(unix_error) + caml_raise_with_args + (unix_error, + make_unix_err_args("EBADF","closedir",this.nm(name))); + else + caml_raise_sys_error(name + ": closedir failed"); + c = true; + a = []}}}; MlFakeDevice.prototype.is_dir = function(name) @@ -862,7 +905,8 @@ MlFakeDevice.prototype.open = function(name,f) - {if(f.rdonly && f.wronly) + {var file; + if(f.rdonly && f.wronly) caml_raise_sys_error (this.nm(name) + @@ -878,16 +922,46 @@ 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} + file = this.content[name]; + if(f.truncate)file.truncate()} else if(f.create) {this.create_dir_if_needed(name); this.content[name] = new MlFakeFile(caml_create_bytes(0)); - return this.content[name]} + file = this.content[name]} else - caml_raise_no_such_file(this.nm(name))}; + caml_raise_no_such_file(this.nm(name)); + return new MlFakeFd(this.nm(name),file,f)}; + MlFakeDevice.prototype.open + = + function(name,f) + {var file; + 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"); + file = this.content[name]; + if(f.truncate)file.truncate()} + else + if(f.create) + {this.create_dir_if_needed(name); + this.content[name] = new MlFakeFile(caml_create_bytes(0)); + file = this.content[name]} + else + caml_raise_no_such_file(this.nm(name)); + return new MlFakeFd(this.nm(name),file,f)}; MlFakeDevice.prototype.register = function(name,content) @@ -916,13 +990,18 @@ (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_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_string_unsafe_get(s,i){return caml_bytes_unsafe_get(s,i)} - function caml_array_of_string(s) + function caml_uint8_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_bound_error() + {caml_invalid_argument("index out of bounds")} function caml_bytes_unsafe_set(s,i,c) {c &= 0xff; if(s.t != 4) @@ -934,59 +1013,48 @@ 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 MlNodeFd(fd,flags) + {this.fs = require("fs");this.fd = fd;this.flags = flags} + MlNodeFd.prototype = new MlFile(); + MlNodeFd.prototype.constructor = MlNodeFd; + MlNodeFd.prototype.truncate = function(len) {try {this.fs.ftruncateSync(this.fd,len | 0)} catch(err){caml_raise_sys_error(err.toString())}}; - MlNodeFile.prototype.length + MlNodeFd.prototype.length = function() {try {return this.fs.fstatSync(this.fd).size} catch(err){caml_raise_sys_error(err.toString())}}; - MlNodeFile.prototype.write + MlNodeFd.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)} + {try + {if(this.flags.isCharacterDevice) + this.fs.writeSync(this.fd,buf,buf_offset,len); + else + this.fs.writeSync(this.fd,buf,buf_offset,len,offset)} catch(err){caml_raise_sys_error(err.toString())} return 0}; - MlNodeFile.prototype.read + MlNodeFd.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(offset,a,buf_offset,len) + {try + {if(this.flags.isCharacterDevice) + var read=this.fs.readSync(this.fd,a,buf_offset,len); + else + var read=this.fs.readSync(this.fd,a,buf_offset,len,offset); + return read} + catch(err){caml_raise_sys_error(err.toString())}}; + MlNodeFd.prototype.close = function() {try - {this.fs.closeSync(this.fd)} + {this.fs.closeSync(this.fd);return 0} 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 @@ -1042,7 +1110,12 @@ case "nonblock":res |= consts.O_NONBLOCK;break } try - {var fd=this.fs.openSync(this.nm(name),res);return new MlNodeFile(fd)} + {var + fd=this.fs.openSync(this.nm(name),res), + isCharacterDevice= + this.fs.lstatSync(this.nm(name)).isCharacterDevice(); + f.isCharacterDevice = isCharacterDevice; + return new MlNodeFd(fd,f)} catch(err){this.raise_nodejs_error(err,raise_unix)}}; MlNodeDevice.prototype.rename = @@ -1078,6 +1151,12 @@ {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.opendir + = + function(name,raise_unix) + {try + {return this.fs.opendirSync(this.nm(name))} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; MlNodeDevice.prototype.raise_nodejs_error = function(err,raise_unix) @@ -1181,9 +1260,9 @@ 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]); + {var process=globalThis.process,n=caml_jsstring_of_string(name); + if(process && process.env && process.env[n] != undefined) + return caml_string_of_jsstring(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()} @@ -1243,10 +1322,6 @@ 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} @@ -1256,33 +1331,50 @@ 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_refill(chan) + {if(chan.refill != null) + {var str=chan.refill(),str_a=caml_uint8_array_of_string(str); + if(str_a.length == 0) + chan.refill = null; + else + {if(chan.buffer.length < chan.buffer_max + str_a.length) + {var b=new Uint8Array(chan.buffer_max + str_a.length); + b.set(chan.buffer); + chan.buffer = b} + chan.buffer.set(str_a,chan.buffer_max); + chan.offset += str_a.length; + chan.buffer_max += str_a.length}} + else + {var + nread= + chan.file.read + (chan.offset, + chan.buffer, + chan.buffer_max, + chan.buffer.length - chan.buffer_max); + chan.offset += nread; + chan.buffer_max += nread}} 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 chan=caml_ml_channels[chanid],p=chan.buffer_curr; + do + if(p >= chan.buffer_max) + {if(chan.buffer_curr > 0) + {chan.buffer.set(chan.buffer.subarray(chan.buffer_curr),0); + p -= chan.buffer_curr; + chan.buffer_max -= chan.buffer_curr; + chan.buffer_curr = 0} + if(chan.buffer_max >= chan.buffer.length)return - chan.buffer_max; + var prev_max=chan.buffer_max; + caml_refill(chan); + if(prev_max == chan.buffer_max)return - chan.buffer_max} + while + (chan.buffer[p++] != 10); + return p - chan.buffer_curr} + function caml_gc_minor(unit) + {if(typeof globalThis.gc == "function")globalThis.gc(true);return 0} var bigInt= function(undefined) @@ -2611,6 +2703,7 @@ 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_ml_condition_new(unit){return {condition:1}} function caml_int64_of_bytes(a) {return new MlInt64 @@ -2679,12 +2772,14 @@ globalThis.jsoo_create_file = jsoo_create_file; globalThis.caml_fs_tmp = []; return 0} - function caml_set_parser_trace(){return 0} + function caml_get_continuation_callstack(){return [0]} + var caml_parser_trace=0; + function caml_set_parser_trace(bool) + {var oldflag=caml_parser_trace;caml_parser_trace = bool;return oldflag} 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); @@ -2720,11 +2815,12 @@ for(var i=0;i < arguments.length;i++) nargs[args.length + i] = arguments[i]; return caml_call_gen(f,nargs)}} + var caml_callback=caml_call_gen; 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])}} + return caml_callback(f,[args])}} function caml_sys_chdir(dir) {var root=resolve_fs_device(dir); if(root.device.exists(root.rest)) @@ -2735,6 +2831,37 @@ return 0} else caml_raise_no_such_file(caml_jsbytes_of_string(dir))} + 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_obj_update_tag(b,o,n) + {if(b[0] == o){b[0] = n;return 1}return 0} + var caml_ml_domain_unique_token_=[0]; + function caml_ml_domain_unique_token(unit) + {return caml_ml_domain_unique_token_} + function caml_lazy_update_to_forcing(o) + {var t=caml_obj_tag(o); + if(t != 246 && t != 250 && t != 244)return 4; + if(caml_obj_update_tag(o,246,244)) + return 0; + else + {var field0=o[1]; + t = o[0]; + if(t == 244) + return field0 == caml_ml_domain_unique_token(0)?1:2; + else + if(t == 250)return 3;else return 2}} function caml_gc_counters(){return [254,0,0,0]} function ml_z_div(z1,z2) {z2 = bigInt(z2); @@ -2751,7 +2878,47 @@ 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} + function caml_unix_closedir(dir_handle) + {try + {dir_handle.pointer.closeSync()} + catch(e) + {var unix_error=caml_named_value("Unix.Unix_error"); + caml_raise_with_args + (unix_error,make_unix_err_args("EBADF","closedir",dir_handle.path))}} + function caml_unix_opendir(path) + {var root=resolve_fs_device(path); + if(! root.device.opendir) + caml_failwith("caml_unix_opendir: not implemented"); + var dir_handle=root.device.opendir(root.rest,true); + return {pointer:dir_handle,path:path}} + function caml_unix_rewinddir(dir_handle) + {caml_unix_closedir(dir_handle); + var new_dir_handle=caml_unix_opendir(dir_handle.path); + dir_handle.pointer = new_dir_handle.pointer; + return 0} + function caml_raise_end_of_file() + {caml_raise_constant(caml_global_data.End_of_file)} + function caml_unix_readdir(dir_handle) + {var entry; + try + {entry = dir_handle.pointer.readSync()} + catch(e) + {var unix_error=caml_named_value("Unix.Unix_error"); + caml_raise_with_args + (unix_error,make_unix_err_args("EBADF","readdir",dir_handle.path))} + if(entry === null) + caml_raise_end_of_file(); + else + return caml_string_of_jsstring(entry.name)} + function caml_unix_findfirst(path) + {var path_js=caml_jsstring_of_string(path); + path_js = path_js.replace(/(^|[\\\/])\*\.\*$/,""); + path = caml_string_of_jsstring(path_js); + var + dir_handle=caml_unix_opendir(path), + first_entry=caml_unix_readdir(dir_handle); + return [0,first_entry,dir_handle]} + function caml_is_continuation_tag(t){return 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)); @@ -2760,9 +2927,9 @@ 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); + {var float32a=new Float32Array(1); float32a[0] = x; - var int32a=new (globalThis.Int32Array)(float32a.buffer); + var int32a=new Int32Array(float32a.buffer); return int32a[0] | 0} function caml_int64_create_lo_mi_hi(lo,mi,hi) {return new MlInt64(lo,mi,hi)} @@ -2851,29 +3018,29 @@ 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; + {var 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 + {case 0:view = Float32Array;break; + case 1:view = Float64Array;break; + case 2:view = Int8Array;break; + case 3:view = Uint8Array;break; + case 4:view = Int16Array;break; + case 5:view = Uint16Array;break; + case 6:view = Int32Array;break; + case 7:view = Int32Array;break; + case 8:view = Int32Array;break; + case 9:view = Int32Array;break; + case 10:view = Float32Array;break; + case 11:view = Float64Array;break; + case 12:view = 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); + {var int32a=new Int32Array(1); int32a[0] = x; - var float32a=new (globalThis.Float32Array)(int32a.buffer); + var float32a=new 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; @@ -3366,6 +3533,8 @@ case 246: case 254: default: + if(caml_is_continuation_tag(tag_a)) + {caml_invalid_argument("compare: continuation value");break} if(a.length != b.length)return a.length < b.length?- 1:1; if(a.length > 1)stack.push(a,b,1); break}} @@ -3411,8 +3580,7 @@ nat2.data[ofs2] = wrap; return 0} function MlNat(x) - {this.data = new (globalThis.Int32Array)(x); - this.length = this.data.length + 2} + {this.data = new Int32Array(x);this.length = this.data.length + 2} MlNat.prototype.caml_custom = "_nat"; function create_nat(size) {var arr=new MlNat(size); @@ -3563,9 +3731,9 @@ 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 process=globalThis.process,main="a.out",args=[]; + if(process && process.argv && process.argv.length > 1) + {var argv=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])); @@ -3582,9 +3750,9 @@ 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); + {if(globalThis.quit)globalThis.quit(code); + if(globalThis.process && globalThis.process.exit) + globalThis.process.exit(code); caml_invalid_argument("Function 'exit' not implemented")} function caml_channel_descriptor(chanid) {var chan=caml_ml_channels[chanid];return chan.fd} @@ -3618,7 +3786,7 @@ 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); + var slice=caml_uint8_array_of_string(str1).slice(pos1,pos1 + len); ba2.data.set(slice,ofs2); return 0} function caml_gr_set_window_title(name) @@ -3637,6 +3805,105 @@ 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)} + var + caml_MD5Transform= + 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)} + return function(w,buffer) + {var a=w[0],b=w[1],c=w[2],d=w[3]; + a = ff(a,b,c,d,buffer[0],7,0xD76AA478); + d = ff(d,a,b,c,buffer[1],12,0xE8C7B756); + c = ff(c,d,a,b,buffer[2],17,0x242070DB); + b = ff(b,c,d,a,buffer[3],22,0xC1BDCEEE); + a = ff(a,b,c,d,buffer[4],7,0xF57C0FAF); + d = ff(d,a,b,c,buffer[5],12,0x4787C62A); + c = ff(c,d,a,b,buffer[6],17,0xA8304613); + b = ff(b,c,d,a,buffer[7],22,0xFD469501); + a = ff(a,b,c,d,buffer[8],7,0x698098D8); + d = ff(d,a,b,c,buffer[9],12,0x8B44F7AF); + c = ff(c,d,a,b,buffer[10],17,0xFFFF5BB1); + b = ff(b,c,d,a,buffer[11],22,0x895CD7BE); + a = ff(a,b,c,d,buffer[12],7,0x6B901122); + d = ff(d,a,b,c,buffer[13],12,0xFD987193); + c = ff(c,d,a,b,buffer[14],17,0xA679438E); + b = ff(b,c,d,a,buffer[15],22,0x49B40821); + a = gg(a,b,c,d,buffer[1],5,0xF61E2562); + d = gg(d,a,b,c,buffer[6],9,0xC040B340); + c = gg(c,d,a,b,buffer[11],14,0x265E5A51); + b = gg(b,c,d,a,buffer[0],20,0xE9B6C7AA); + a = gg(a,b,c,d,buffer[5],5,0xD62F105D); + d = gg(d,a,b,c,buffer[10],9,0x02441453); + c = gg(c,d,a,b,buffer[15],14,0xD8A1E681); + b = gg(b,c,d,a,buffer[4],20,0xE7D3FBC8); + a = gg(a,b,c,d,buffer[9],5,0x21E1CDE6); + d = gg(d,a,b,c,buffer[14],9,0xC33707D6); + c = gg(c,d,a,b,buffer[3],14,0xF4D50D87); + b = gg(b,c,d,a,buffer[8],20,0x455A14ED); + a = gg(a,b,c,d,buffer[13],5,0xA9E3E905); + d = gg(d,a,b,c,buffer[2],9,0xFCEFA3F8); + c = gg(c,d,a,b,buffer[7],14,0x676F02D9); + b = gg(b,c,d,a,buffer[12],20,0x8D2A4C8A); + a = hh(a,b,c,d,buffer[5],4,0xFFFA3942); + d = hh(d,a,b,c,buffer[8],11,0x8771F681); + c = hh(c,d,a,b,buffer[11],16,0x6D9D6122); + b = hh(b,c,d,a,buffer[14],23,0xFDE5380C); + a = hh(a,b,c,d,buffer[1],4,0xA4BEEA44); + d = hh(d,a,b,c,buffer[4],11,0x4BDECFA9); + c = hh(c,d,a,b,buffer[7],16,0xF6BB4B60); + b = hh(b,c,d,a,buffer[10],23,0xBEBFBC70); + a = hh(a,b,c,d,buffer[13],4,0x289B7EC6); + d = hh(d,a,b,c,buffer[0],11,0xEAA127FA); + c = hh(c,d,a,b,buffer[3],16,0xD4EF3085); + b = hh(b,c,d,a,buffer[6],23,0x04881D05); + a = hh(a,b,c,d,buffer[9],4,0xD9D4D039); + d = hh(d,a,b,c,buffer[12],11,0xE6DB99E5); + c = hh(c,d,a,b,buffer[15],16,0x1FA27CF8); + b = hh(b,c,d,a,buffer[2],23,0xC4AC5665); + a = ii(a,b,c,d,buffer[0],6,0xF4292244); + d = ii(d,a,b,c,buffer[7],10,0x432AFF97); + c = ii(c,d,a,b,buffer[14],15,0xAB9423A7); + b = ii(b,c,d,a,buffer[5],21,0xFC93A039); + a = ii(a,b,c,d,buffer[12],6,0x655B59C3); + d = ii(d,a,b,c,buffer[3],10,0x8F0CCC92); + c = ii(c,d,a,b,buffer[10],15,0xFFEFF47D); + b = ii(b,c,d,a,buffer[1],21,0x85845DD1); + a = ii(a,b,c,d,buffer[8],6,0x6FA87E4F); + d = ii(d,a,b,c,buffer[15],10,0xFE2CE6E0); + c = ii(c,d,a,b,buffer[6],15,0xA3014314); + b = ii(b,c,d,a,buffer[13],21,0x4E0811A1); + a = ii(a,b,c,d,buffer[4],6,0xF7537E82); + d = ii(d,a,b,c,buffer[11],10,0xBD3AF235); + c = ii(c,d,a,b,buffer[2],15,0x2AD7D2BB); + b = ii(b,c,d,a,buffer[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])}} + (); + function caml_MD5Update(ctx,input,input_len) + {var in_buf=ctx.len & 0x3f,input_pos=0; + ctx.len += input_len; + if(in_buf) + {var missing=64 - in_buf; + if(input_len < missing) + {ctx.b8.set(input.subarray(0,input_len),in_buf);return} + ctx.b8.set(input.subarray(0,missing),in_buf); + caml_MD5Transform(ctx.w,ctx.b32); + input_len -= missing; + input_pos += missing} + while(input_len >= 64) + {ctx.b8.set(input.subarray(input_pos,input_pos + 64),0); + caml_MD5Transform(ctx.w,ctx.b32); + input_len -= 64; + input_pos += 64} + if(input_len) + ctx.b8.set(input.subarray(input_pos,input_pos + input_len),0)} 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))} @@ -3681,6 +3948,7 @@ function caml_raw_backtrace_length(){return 0} function ml_z_shift_right(z1,amt) {return ml_z_normalize(bigInt(z1).shiftRight(amt))} + function caml_str_initialize(unit){return 0} function caml_obj_block(tag,size) {var o=new Array(size + 1); o[0] = tag; @@ -3735,19 +4003,8 @@ 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 caml_gc_major(unit) + {if(typeof globalThis.gc == "function")globalThis.gc();return 0} function ml_z_shift_left(z1,amt) {return ml_z_normalize(bigInt(z1).shiftLeft(amt))} function caml_lex_array(s) @@ -3782,7 +4039,10 @@ 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]); + var + c, + state=start_state, + buffer=caml_uint8_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} @@ -3811,10 +4071,6 @@ 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() @@ -3831,6 +4087,8 @@ 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} + function caml_atomic_fetch_add(ref,i) + {var old=ref[1];ref[1] += i;return old} var os_type= globalThis.process @@ -3844,18 +4102,14 @@ :"Unix"; function caml_sys_const_ostype_cygwin(){return os_type == "Cygwin"?1:0} function caml_cosh_float(x){return Math.cosh(x)} + function MlMutex(){this.locked = false} + function caml_ml_mutex_new(unit){return new MlMutex()} 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_ephe_check_key(x,i) + {var weak=x[caml_ephe_key_offset + i]; + if(globalThis.WeakRef && weak instanceof globalThis.WeakRef) + weak = weak.deref(); + return weak === undefined?0:1} function caml_hash_mix_final(h) {h ^= h >>> 16; h = caml_mul(h,0x85ebca6b | 0); @@ -3922,7 +4176,10 @@ 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]); + var + c, + state=start_state, + buffer=caml_uint8_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} @@ -3982,38 +4239,80 @@ 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_MD5Init() + {var + buffer=new ArrayBuffer(64), + b32=new Uint32Array(buffer), + b8=new Uint8Array(buffer); + return {len:0, + w:new Uint32Array([0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476]), + b32:b32, + b8:b8}} 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 = ""; + if(! chan.buffer || chan.buffer_curr == 0)return 0; + if(chan.output) + chan.output(caml_subarray_to_jsbytes(chan.buffer,0,chan.buffer_curr)); + else + chan.file.write(chan.offset,chan.buffer,0,chan.buffer_curr); + chan.offset += chan.buffer_curr; + chan.buffer_curr = 0; + return 0} + function caml_seek_out(chanid,pos) + {caml_ml_flush(chanid); + var chan=caml_ml_channels[chanid]; + chan.offset = pos; 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} + {var pos=caml_int64_to_float(pos);return caml_seek_out(chanid,pos)} 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_unix_isatty(fileDescriptor) + {if(fs_node_supported()) + {var tty=require("tty");return tty.isatty(fileDescriptor)?1:0} + else + return 0} + function caml_ml_set_buffered(chanid,v) + {caml_ml_channels[chanid].buffered = v; + if(! v)caml_ml_flush(chanid); + return 0} function caml_gc_compaction(){return 0} - function caml_weak_get(x,i) + function caml_ephe_get_key(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; + var weak=x[caml_ephe_key_offset + i]; + if(globalThis.WeakRef && weak instanceof globalThis.WeakRef) + weak = weak.deref(); + return weak === undefined?0:[0,weak]} + function caml_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_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=caml_unix_localtime(t); + return [0,t,tm2]} function jsoo_z_of_js_string_base(base,s) {if(base == 0) {base = 10; @@ -4064,16 +4363,18 @@ 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); + var slice=caml_uint8_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} + var caml_sys_fds=new Array(3); + function caml_sys_close(fd) + {var file=caml_sys_fds[fd]; + if(file)file.close(); + delete caml_sys_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) @@ -4082,9 +4383,16 @@ = new (globalThis.Error)("Js exception containing backtrace"); return exn} + function caml_atomic_exchange(ref,v){var r=ref[1];ref[1] = v;return r} 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_unix_lstat(name) + {var root=resolve_fs_device(name); + if(! root.device.lstat) + caml_failwith("caml_unix_lstat: not implemented"); + return root.device.lstat(root.rest,true)} + function caml_unix_lstat_64(name) + {var r=caml_unix_lstat(name);r[9] = caml_int64_of_int32(r[9])} function caml_js_set(o,f,v){o[f] = v;return 0} function ml_z_gcdext_intern(z1,z2) {z1 = bigInt(z1); @@ -4120,6 +4428,13 @@ function caml_array_get(array,index) {if(index < 0 || index >= array.length - 1)caml_array_bound_error(); return array[index + 1]} + function caml_continuation_use_noexc(cont) + {var stack=cont[1];cont[1] = 0;return stack} + function caml_unix_rmdir(name) + {var root=resolve_fs_device(name); + if(! root.device.rmdir) + caml_failwith("caml_unix_rmdir: not implemented"); + return root.device.rmdir(root.rest,true)} 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) @@ -4132,22 +4447,66 @@ 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) + function caml_seek_in(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); + if + (pos + >= + chan.offset + - + chan.buffer_max + && + pos + <= + chan.offset + && + chan.file.flags.binary) + chan.buffer_curr = chan.buffer_max - (chan.offset - pos); + else + {chan.offset = pos;chan.buffer_curr = 0;chan.buffer_max = 0} return 0} + function caml_ml_seek_in_64(chanid,pos) + {var pos=caml_int64_to_float(pos);return caml_seek_in(chanid,pos)} + var caml_domain_id=0; + function caml_ml_mutex_unlock(t){t.locked = false;return 0} + var caml_domain_latest_idx=1; + function caml_domain_spawn(f,mutex) + {var id=caml_domain_latest_idx++,old=caml_domain_id; + caml_domain_id = id; + caml_callback(f,[0]); + caml_domain_id = old; + caml_ml_mutex_unlock(mutex); + return id} + function caml_unix_mkdir(name,perm) + {var root=resolve_fs_device(name); + if(! root.device.mkdir) + caml_failwith("caml_unix_mkdir: not implemented"); + return root.device.mkdir(root.rest,perm,true)} 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_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]} + else + args = [undefined]; + var res=caml_callback(f,args); + return res instanceof Function?caml_js_wrap_callback(res):res}} 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)}} + var res=caml_callback(f,args); + return res instanceof Function?caml_js_wrap_callback(res):res}} function caml_is_js(){return 1} + function caml_lazy_update_to_forward(o) + {caml_obj_update_tag(o,244,250);return 0} function caml_ba_dim(ba,i) {if(i < 0 || i >= ba.dims.length)caml_invalid_argument("Bigarray.dim"); return ba.dims[i]} @@ -4157,26 +4516,6 @@ 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) @@ -4186,38 +4525,61 @@ 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)} + var caml_ephe_data_offset=2; 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_ephe_create(n){var x=caml_weak_create(n);return x} 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_maybe_print_stats(unit){return 0} 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 caml_unix_has_symlink(unit){return fs_node_supported()?1:0} 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) + function caml_ephe_set_key(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; + if(v instanceof Object && globalThis.WeakRef) + {if(x[1].register)x[1].register(v,undefined,v); + x[caml_ephe_key_offset + i] = new (globalThis.WeakRef)(v)} + else + x[caml_ephe_key_offset + i] = v; + return 0} + function caml_ephe_unset_key(x,i) + {if(i < 0 || caml_ephe_key_offset + i >= x.length) + caml_invalid_argument("Weak.set"); + if + (globalThis.WeakRef + && + x[caml_ephe_key_offset + i] instanceof globalThis.WeakRef + && + x[1].unregister) + {var old=x[caml_ephe_key_offset + i].deref(); + if(old !== undefined) + {var count=0; + for(var j=caml_ephe_key_offset;j < x.length;j++) + {var key=x[j]; + if(key instanceof globalThis.WeakRef) + {key = key.deref();if(key === old)count++}} + if(count == 1)x[1].unregister(old)}} + x[caml_ephe_key_offset + i] = undefined; + return 0} + function caml_weak_set(x,i,v) + {if(v == 0)caml_ephe_unset_key(x,i);else caml_ephe_set_key(x,i,v[1]); return 0} function caml_sys_remove(name) {var root=resolve_fs_device(name),ok=root.device.unlink(root.rest); @@ -4233,6 +4595,9 @@ 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_bytes_get(s,i) + {if(i >>> 0 >= s.l)caml_bytes_bound_error(); + return caml_bytes_unsafe_get(s,i)} function caml_hypot_float(x,y){return Math.hypot(x,y)} function ml_z_facM(i,m) {if(i <= 0 || m <= 0) @@ -4245,7 +4610,7 @@ 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 caml_unix_inet_addr_of_string(){return 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; @@ -4318,30 +4683,18 @@ 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_char(chanid) + {var chan=caml_ml_channels[chanid]; + if(chan.buffer_curr >= chan.buffer_max) + {chan.buffer_curr = 0;chan.buffer_max = 0;caml_refill(chan)} + if(chan.buffer_curr >= chan.buffer_max)caml_raise_end_of_file(); + var res=chan.buffer[chan.buffer_curr]; + chan.buffer_curr++; + return res} 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} + {var chan=caml_ml_channels[chanid],res=0; + for(var i=0;i < 4;i++)res = (res << 8) + caml_ml_input_char(chanid); + return res} function caml_gr_display_mode() {caml_failwith("caml_gr_display_mode not Implemented")} function ml_z_divisible(a,b) @@ -4379,6 +4732,96 @@ caml_failwith("float_of_string")} function caml_sys_getcwd() {return caml_string_of_jsbytes(caml_current_dir)} + function caml_int64_add(x,y){return x.add(y)} + function caml_int64_mul(x,y){return x.mul(y)} + function caml_int64_ult(x,y){return x.ucompare(y) < 0} + 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 caml_ba_set_1(ba,i0,v){ba.set(ba.offset(i0),v);return 0} + function caml_int64_xor(x,y){return x.xor(y)} + function caml_int64_or(x,y){return x.or(y)} + function caml_lxm_next(v) + {function shift_l(x,k){return caml_int64_shift_left(x,k)} + function shift_r(x,k){return caml_int64_shift_right_unsigned(x,k)} + function or(a,b){return caml_int64_or(a,b)} + function xor(a,b){return caml_int64_xor(a,b)} + function add(a,b){return caml_int64_add(a,b)} + function mul(a,b){return caml_int64_mul(a,b)} + function rotl(x,k){return or(shift_l(x,k),shift_r(x,64 - k))} + function get(a,i){return caml_ba_get_1(a,i)} + function set(a,i,x){return caml_ba_set_1(a,i,x)} + var + M=caml_int64_of_string(caml_new_string("0xd1342543de82ef95")), + daba=caml_int64_of_string(caml_new_string("0xdaba0b6eb09322e3")), + z, + q0, + q1, + st=v, + a=get(st,0), + s=get(st,1), + x0=get(st,2), + x1=get(st,3); + z = add(s,x0); + z = mul(xor(z,shift_r(z,32)),daba); + z = mul(xor(z,shift_r(z,32)),daba); + z = xor(z,shift_r(z,32)); + set(st,1,add(mul(s,M),a)); + var q0=x0,q1=x1; + q1 = xor(q1,q0); + q0 = rotl(q0,24); + q0 = xor(xor(q0,q1),shift_l(q1,16)); + q1 = rotl(q1,37); + set(st,2,q0); + set(st,3,q1); + return z} 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} @@ -4434,7 +4877,7 @@ no_sharing=flags.indexOf(0) !== - 1, closures=flags.indexOf(1) !== - 1; if(closures) - globalThis.console.warn + console.warn ("in caml_output_val: flag Marshal.Closures is not supported."); var writer=new Writer(), @@ -4490,6 +4933,8 @@ if(v instanceof Array && v[0] === (v[0] | 0)) {if(v[0] == 251) caml_failwith("output_value: abstract value (Abstract)"); + if(caml_is_continuation_tag(v[0])) + caml_invalid_argument("output_value: continuation value"); 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)); @@ -4564,26 +5009,20 @@ {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} + if(typeof require != "undefined") + {var child_process=require("child_process"); + if(child_process && child_process.execSync) + try + {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 caml_unix_getuid(unit) + {if(globalThis.process && globalThis.process.getuid) + return globalThis.process.getuid(); + caml_raise_not_found()} 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(); @@ -4596,264 +5035,24 @@ 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) + function caml_marshal_data_size(s,ofs) + {function get32(s,i) + {return caml_bytes_unsafe_get(s,i) << - 8 + 24 | - b.charCodeAt(j + 2) + caml_bytes_unsafe_get(s,i + 1) << 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] + caml_bytes_unsafe_get(s,i + 2) << 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())} + 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 MlStringReader(s,i) {this.s = caml_jsbytes_of_string(s);this.i = i} MlStringReader.prototype @@ -5068,6 +5267,205 @@ MlStringReader (caml_string_of_bytes(s),typeof ofs == "number"?ofs:ofs[0]); return caml_input_value_from_reader(reader,ofs)} + function caml_input_value(chanid) + {var chan=caml_ml_channels[chanid],header=new Uint8Array(20); + function block(buffer,offset,n) + {var r=0; + while(r < n) + {if(chan.buffer_curr >= chan.buffer_max) + {chan.buffer_curr = 0;chan.buffer_max = 0;caml_refill(chan)} + if(chan.buffer_curr >= chan.buffer_max)break; + buffer[offset + r] = chan.buffer[chan.buffer_curr]; + chan.buffer_curr++; + r++} + return r} + var r=block(header,0,20); + if(r == 0) + caml_raise_end_of_file(); + else + if(r < 20)caml_failwith("input_value: truncated object"); + var + len=caml_marshal_data_size(caml_bytes_of_array(header),0), + buf=new Uint8Array(len + 20); + buf.set(header,0); + var r=block(buf,20,len); + if(r < len) + caml_failwith("input_value: truncated object " + r + " " + len); + var + offset=[0], + res=caml_input_value_from_bytes(caml_bytes_of_array(buf),offset); + chan.offset = chan.offset + offset[0]; + return res} + function caml_input_value_to_outside_heap(c){return caml_input_value(c)} + function caml_atomic_cas(ref,o,n) + {if(ref[1] === o){ref[1] = n;return 1}return 0} + 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} + function caml_atomic_load(ref){return ref[1]} + function caml_MD5Final(ctx) + {var in_buf=ctx.len & 0x3f; + ctx.b8[in_buf] = 0x80; + in_buf++; + if(in_buf > 56) + {for(var j=in_buf;j < 64;j++)ctx.b8[j] = 0; + caml_MD5Transform(ctx.w,ctx.b32); + for(var j=0;j < 56;j++)ctx.b8[j] = 0} + else + for(var j=in_buf;j < 56;j++)ctx.b8[j] = 0; + ctx.b32[14] = ctx.len << 3; + ctx.b32[15] = ctx.len >> 29 & 0x1FFFFFFF; + caml_MD5Transform(ctx.w,ctx.b32); + var t=new Uint8Array(16); + for(var i=0;i < 4;i++) + for(var j=0;j < 4;j++)t[i * 4 + j] = ctx.w[i] >> 8 * j & 0xFF; + return t} + function caml_md5_bytes(s,ofs,len) + {var ctx=caml_MD5Init(),a=caml_uint8_array_of_bytes(s); + caml_MD5Update(ctx,a.subarray(ofs,ofs + len),len); + return caml_string_of_array(caml_MD5Final(ctx))} + function caml_ba_set_generic(ba,i,v) + {ba.set(ba.offset(caml_js_from_array(i)),v);return 0} + function caml_ml_condition_wait(t,mutext){return 0} + 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_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_pos_in(chanid) + {var chan=caml_ml_channels[chanid]; + return chan.offset - (chan.buffer_max - chan.buffer_curr)} + function caml_ml_pos_in(chanid){return caml_pos_in(chanid)} + 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_unix_unlink(name) + {var root=resolve_fs_device(name); + if(! root.device.unlink) + caml_failwith("caml_unix_unlink: not implemented"); + return root.device.unlink(root.rest,true)} + function caml_sys_open_for_node(fd,flags) + {if(flags.name) + try + {var fs=require("fs"),fd2=fs.openSync(flags.name,"rs"); + return new MlNodeFd(fd2,flags)} + catch(e){} + return new MlNodeFd(fd,flags)} + function MlFakeFd_out(fd,flags) + {MlFakeFile.call(this,caml_create_bytes(0)); + this.log = function(s){return 0}; + if(fd == 1 && typeof console.log == "function") + this.log = console.log; + else + if(fd == 2 && typeof console.error == "function") + this.log = console.error; + else + if(typeof console.log == "function")this.log = console.log; + this.flags = flags} + MlFakeFd_out.prototype.length = function(){return 0}; + MlFakeFd_out.prototype.write + = + function(offset,buf,pos,len) + {if(this.log) + {if + (len + > + 0 + && + pos + >= + 0 + && + pos + + + len + <= + buf.length + && + buf[pos + len - 1] + == + 10) + len--; + var src=caml_create_bytes(len); + caml_blit_bytes(caml_bytes_of_array(buf),pos,src,0,len); + this.log(src.toUtf16()); + return 0} + caml_raise_sys_error(this.fd + ": file descriptor already closed")}; + MlFakeFd_out.prototype.read + = + function(offset,buf,pos,len) + {caml_raise_sys_error(this.fd + ": file descriptor is write only")}; + MlFakeFd_out.prototype.close = function(){this.log = undefined}; + function caml_sys_open_internal(file,idx) + {if(idx == undefined)idx = caml_sys_fds.length; + caml_sys_fds[idx] = file; + 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); + return caml_sys_open_internal(file,undefined)} + (function() + {function file(fd,flags) + {return fs_node_supported() + ?caml_sys_open_for_node(fd,flags) + :new MlFakeFd_out(fd,flags)} + caml_sys_open_internal + (file(0,{rdonly:1,altname:"/dev/stdin",isCharacterDevice:true}),0); + caml_sys_open_internal + (file(1,{buffered:2,wronly:1,isCharacterDevice:true}),1); + caml_sys_open_internal + (file(2,{buffered:2,wronly:1,isCharacterDevice:true}),2)} + ()); + function ml_z_gcd(z1,z2) + {return ml_z_normalize(bigInt.gcd(bigInt(z1),bigInt(z2)).abs())} function ml_z_mul(z1,z2) {return ml_z_normalize(bigInt(z1).multiply(bigInt(z2)))} function ml_z_hamdist(z1,z2) @@ -5151,7 +5549,7 @@ numgroups=re[4] | 0, numregisters=re[5] | 0, startchars=re[6] | 0, - s=caml_array_of_string(s), + s=caml_uint8_array_of_string(s), pc=0, quit=false, stack=[], @@ -5311,7 +5709,10 @@ 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_gc_full_major(unit) + {if(typeof globalThis.gc == "function")globalThis.gc();return 0} + function caml_ml_mutex_try_lock(t) + {if(! t.locked){t.locked = true;return 1}return 0} function caml_bytes_set32(s,i,i32) {if(i >>> 0 >= s.l - 3)caml_bytes_bound_error(); var @@ -5335,6 +5736,22 @@ 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_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_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(); @@ -5378,29 +5795,29 @@ 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) + {var kind; + if(ta instanceof Float32Array) kind = 0; else - if(ta instanceof g.Float64Array) + if(ta instanceof Float64Array) kind = 1; else - if(ta instanceof g.Int8Array) + if(ta instanceof Int8Array) kind = 2; else - if(ta instanceof g.Uint8Array) + if(ta instanceof Uint8Array) kind = 3; else - if(ta instanceof g.Int16Array) + if(ta instanceof Int16Array) kind = 4; else - if(ta instanceof g.Uint16Array) + if(ta instanceof Uint16Array) kind = 5; else - if(ta instanceof g.Int32Array) + if(ta instanceof Int32Array) kind = 6; else - if(ta instanceof g.Uint32Array) + if(ta instanceof Uint32Array) kind = 6; else caml_invalid_argument @@ -5409,9 +5826,13 @@ 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_ml_seek_out(chanid,pos){return caml_seek_out(chanid,pos)} function caml_js_typeof(o){return typeof o} + function caml_hash_mix_string(h,v) + {return caml_hash_mix_jsbytes(h,caml_jsbytes_of_string(v))} + function caml_string_hash(h,v) + {var h=caml_hash_mix_string(h,v),h=caml_hash_mix_final(h); + return h & 0x3FFFFFFF} function caml_restore_raw_backtrace(exn,bt){return 0} function caml_gr_lineto(x,y) {var s=caml_gr_state_get(); @@ -5422,12 +5843,13 @@ s.x = x; s.y = y; return 0} + function caml_js_function_arity(f){return f.length} function caml_js_wrap_meth_callback_unsafe(f) {return function() - {var len=arguments.length,args=new Array(len + 1); + {var len=caml_js_function_arity(f) - 1,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)}} + return caml_callback(f,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}} @@ -5470,16 +5892,15 @@ {if(err instanceof Array && (err[0] == 0 || err[0] == 248)) {var handler=caml_named_value("Printexc.handle_uncaught_exception"); if(handler) - handler(err,false); + caml_callback(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")}} + if(at_exit)caml_callback(at_exit,[0]); + 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) @@ -5488,78 +5909,124 @@ 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_ml_set_channel_name(chanid,name) + {var chan=caml_ml_channels[chanid];chan.name = 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_ml_domain_cpu_relax(unit){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_ml_input_block(chanid,ba,i,l) + {var + chan=caml_ml_channels[chanid], + n=l, + avail=chan.buffer_max - chan.buffer_curr; + if(l <= avail) + {ba.set(chan.buffer.subarray(chan.buffer_curr,chan.buffer_curr + l),i); + chan.buffer_curr += l} + else + if(avail > 0) + {ba.set + (chan.buffer.subarray(chan.buffer_curr,chan.buffer_curr + avail),i); + chan.buffer_curr += avail; + n = avail} + else + {chan.buffer_curr = 0; + chan.buffer_max = 0; + caml_refill(chan); + var avail=chan.buffer_max - chan.buffer_curr; + if(n > avail)n = avail; + ba.set(chan.buffer.subarray(chan.buffer_curr,chan.buffer_curr + n),i); + chan.buffer_curr += n} + return n} + function caml_md5_chan(chanid,toread) + {var ctx=caml_MD5Init(),buffer=new Uint8Array(4096); + if(toread < 0) + while(true) + {var read=caml_ml_input_block(chanid,buffer,0,buffer.length); + if(read == 0)break; + caml_MD5Update(ctx,buffer.subarray(0,read),read)} + else + while(toread > 0) + {var + read= + caml_ml_input_block + (chanid,buffer,0,toread > buffer.length?buffer.length:toread); + if(read == 0)caml_raise_end_of_file(); + caml_MD5Update(ctx,buffer.subarray(0,read),read); + toread -= read} + return caml_string_of_array(caml_MD5Final(ctx))} function caml_atanh_float(x){return Math.atanh(x)} + function caml_ml_condition_signal(t){return 0} + function caml_unix_findnext(dir_handle) + {return caml_unix_readdir(dir_handle)} 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)} + var buffer=caml_uint8_array_of_bytes(buffer); + buffer = buffer.subarray(offset,offset + len); + if(chan.buffer_curr + buffer.length > chan.buffer.length) + {var b=new Uint8Array(chan.buffer_curr + buffer.length); + b.set(chan.buffer); + chan.buffer = b} + switch(chan.buffered) + {case 0: + chan.buffer.set(buffer,chan.buffer_curr); + chan.buffer_curr += buffer.length; + caml_ml_flush(chanid); + break; + case 1: + chan.buffer.set(buffer,chan.buffer_curr); + chan.buffer_curr += buffer.length; + if(chan.buffer_curr >= chan.buffer.length)caml_ml_flush(chanid); + break; + case 2: + var id=buffer.lastIndexOf(10); + if(id < 0) + {chan.buffer.set(buffer,chan.buffer_curr); + chan.buffer_curr += buffer.length; + if(chan.buffer_curr >= chan.buffer.length)caml_ml_flush(chanid)} + else + {chan.buffer.set(buffer.subarray(0,id + 1),chan.buffer_curr); + chan.buffer_curr += id + 1; + caml_ml_flush(chanid); + chan.buffer.set(buffer.subarray(id + 1),chan.buffer_curr); + chan.buffer_curr += buffer.length - id - 1} + break + } 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_ml_domain_id(unit){return caml_domain_id} 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){}} + {if(typeof globalThis.XMLHttpRequest !== "undefined") + try {return new (globalThis.XMLHttpRequest)()}catch(e){} + if(typeof globalThis.activeXObject !== "undefined") + {try + {return new (globalThis.activeXObject)("Msxml2.XMLHTTP")} + catch(e){} + try + {return new (globalThis.activeXObject)("Msxml3.XMLHTTP")} + catch(e){} + try + {return new (globalThis.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_ml_is_buffered(chanid) + {return caml_ml_channels[chanid].buffered?1:0} function caml_array_append(a1,a2) {var l1=a1.length,l2=a2.length,l=l1 + l2 - 1,a=new Array(l); a[0] = 0; @@ -5567,6 +6034,8 @@ for(;i < l1;i++)a[i] = a1[i]; for(;i < l;i++,j++)a[i] = a2[j]; return a} + function caml_unix_gettimeofday(){return new Date().getTime() / 1000} + function caml_unix_time(){return Math.floor(caml_unix_gettimeofday())} function caml_ml_set_channel_refill(chanid,f) {caml_ml_channels[chanid].refill = f;return 0} function ml_z_nextprime(z1) @@ -5579,10 +6048,20 @@ return ml_z_normalize(z1); else z1 = z1.add(two)} + 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} function caml_js_expr(s) - {js_print_stderr("caml_js_expr: fallback to runtime evaluation\n"); + {console.error("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) @@ -5604,57 +6083,11 @@ 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_md5_string(s,ofs,len) + {return caml_md5_bytes(caml_bytes_of_string(s),ofs,len)} function caml_string_equal(s1,s2){return caml_bytes_equal(s1,s2)} + function caml_array_of_string(x){return caml_uint8_array_of_string(x)} + function caml_jsoo_flags_use_js_string(unit){return 0} 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); @@ -5704,13 +6137,13 @@ 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"); + {console.error("caml_pure_js_expr: fallback to runtime evaluation\n"); return eval(caml_jsstring_of_string(s))} + function caml_blit_string(a,b,c,d,e) + {caml_blit_bytes(caml_bytes_of_string(a),b,c,d,e);return 0} 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 @@ -5722,6 +6155,10 @@ var slice=ba1.data.slice(ofs1,ofs1 + len); caml_blit_bytes(caml_bytes_of_array(slice),0,bytes2,pos2,len); return 0} + function caml_unix_stat(name) + {var root=resolve_fs_device(name); + if(! root.device.stat)caml_failwith("caml_unix_stat: not implemented"); + return root.device.stat(root.rest,true)} 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) @@ -5731,57 +6168,15 @@ {if(! globalThis.caml_fs_tmp)globalThis.caml_fs_tmp = []; globalThis.caml_fs_tmp.push({name:name,content:content})} return 0} + function caml_unix_stat_64(name) + {var r=caml_unix_stat(name);r[9] = caml_int64_of_int32(r[9])} 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 caml_ml_mutex_lock(t) + {if(t.locked) + caml_failwith("Mutex.lock: mutex already locked. Cannot wait."); + else + t.locked = true; + return 0} function re_search_forward(re,s,pos) {if(pos < 0 || pos > caml_ml_string_length(s)) caml_invalid_argument("Str.search_forward"); @@ -5795,11 +6190,7 @@ 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_ml_seek_in(chanid,pos){return caml_seek_in(chanid,pos)} function caml_sys_read_directory(name) {var root=resolve_fs_device(name), @@ -5814,18 +6205,11 @@ 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 + console.error ('caml_js_var: "' + x @@ -5846,9 +6230,38 @@ 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_unset_data(x) + {if(globalThis.FinalizationRegistry && globalThis.WeakRef) + if(x[1] instanceof globalThis.FinalizationRegistry) + for(var j=caml_ephe_key_offset;j < x.length;j++) + {var key=x[j]; + if(key instanceof globalThis.WeakRef) + {key = key.deref();if(key)x[1].unregister(key)}} + x[caml_ephe_data_offset] = undefined; + return 0} + function caml_ephe_set_data(x,data) + {if(globalThis.FinalizationRegistry && globalThis.WeakRef) + if(! (x[1] instanceof globalThis.FinalizationRegistry)) + {x[1] + = + new + (globalThis.FinalizationRegistry) + (function(){caml_ephe_unset_data(x)}); + for(var j=caml_ephe_key_offset;j < x.length;j++) + {var key=x[j]; + if(key instanceof globalThis.WeakRef) + {key = key.deref();if(key)x[1].register(key,undefined,key)}}} + x[caml_ephe_data_offset] = data; + return 0} function caml_ephe_blit_data(src,dst) - {dst[caml_ephe_data_offset] = src[caml_ephe_data_offset];return 0} + {var n=src[caml_ephe_data_offset]; + if(n === undefined) + caml_ephe_unset_data(dst); + else + caml_ephe_set_data(dst,n); + return 0} function caml_is_printable(c){return + (c > 31 && c < 127)} + function caml_array_of_bytes(x){return caml_uint8_array_of_bytes(x)} 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)) @@ -5858,27 +6271,35 @@ function caml_sys_random_seed() {if(globalThis.crypto) if(typeof globalThis.crypto.getRandomValues === "function") - {var a=new (globalThis.Uint32Array)(1); + {var a=new 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); + {var buff=globalThis.crypto.randomBytes(4),a=new 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} + var all_finalizers=new (globalThis.Set)(); + function caml_final_register_called_without_value(cb,a) + {if(globalThis.FinalizationRegistry && a instanceof Object) + {var + x= + new + (globalThis.FinalizationRegistry) + (function(x){all_finalizers.delete(x);cb(0);return}); + x.register(a,x); + all_finalizers.add(x)} + 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_lazy_reset_to_lazy(o) + {caml_obj_update_tag(o,244,246);return 0} function caml_js_delete(o,f){delete o[f];return 0} function caml_int_of_string(s) {var @@ -5938,6 +6359,8 @@ 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 caml_obj_compare_and_swap(x,i,old,n) + {if(x[i + 1] == old){x[i + 1] = n;return 1}return 0} 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) @@ -6024,32 +6447,11 @@ (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_js_wrap_callback_unsafe(f) + {return function() + {var len=caml_js_function_arity(f),args=new Array(len); + for(var i=0;i < len;i++)args[i] = arguments[i]; + return caml_callback(f,args)}} function caml_ba_kind(ba){return ba.kind} function caml_js_fun_call(f,a) {switch(a.length) @@ -6103,18 +6505,14 @@ 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 caml_js_pure_expr(f){return caml_callback(f,[0])} 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_ml_input(chanid,b,i,l) + {var ba=caml_uint8_array_of_bytes(b); + return caml_ml_input_block(chanid,ba,i,l)} function caml_gr_wait_event(_evl) {caml_failwith ("caml_gr_wait_event not Implemented: use Graphics_js instead")} @@ -6122,27 +6520,12 @@ 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_unix_cleanup(){} 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_obj_is_shared(x){return 1} function caml_ml_out_channels_list() {var l=0; for(var c=0;c < caml_ml_channels.length;c++) @@ -6162,11 +6545,14 @@ if(a.value.length % 2 != 0)acc = caml_hash_mix_int(acc,0); if(a.isNegative)acc = acc + 1; return acc | 0} + function caml_pos_out(chanid) + {var chan=caml_ml_channels[chanid];return chan.offset + chan.buffer_curr} function bigstring_of_array_buffer(ab) - {var ta=new (globalThis.Uint8Array)(ab); + {var ta=new 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 caml_unix_filedescr_of_fd(x){return x} function re_string_match(re,s,pos) {if(pos < 0 || pos > caml_ml_string_length(s)) caml_invalid_argument("Str.string_match"); @@ -6243,6 +6629,7 @@ return data} function caml_ba_get_generic(ba,i) {var ofs=ba.offset(caml_js_from_array(i));return ba.get(ofs)} + function caml_unix_startup(){} function caml_get_exception_backtrace(){return 0} function caml_format_float(fmt,x) {function toFixed(x,dp) @@ -6344,6 +6731,10 @@ {return caml_string_lessthan(s2,s1)} function caml_div(x,y) {if(y == 0)caml_raise_zero_divide();return x / y | 0} + 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_ephe_get_data_copy(x) {return x[caml_ephe_data_offset] === undefined ?0 @@ -6355,16 +6746,24 @@ 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_ml_domain_set_name(_name){return 0} 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_ephe_get_key_copy(x,i) + {if(i < 0 || caml_ephe_key_offset + i >= x.length) + caml_invalid_argument("Weak.get_copy"); + var y=caml_ephe_get_key(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_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); + n = caml_callback(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) @@ -6404,7 +6803,7 @@ return tag == meths[li + 1]?meths[li]:0} function caml_js_get_console() {var - c=globalThis.console?globalThis.console:{}, + c=console, m= ["log", "debug", @@ -6425,21 +6824,19 @@ 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 file=caml_sys_fds[fd]; + if(file.flags.wronly)caml_raise_sys_error("fd " + fd + " is writeonly"); var + refill=null, channel= - {file:data.file, - offset:data.offset, + {file:file, + offset:file.flags.append?file.length():0, fd:fd, opened:true, out:false, + buffer_curr:0, + buffer_max:0, + buffer:new Uint8Array(65536), refill:refill}; caml_ml_channels[channel.fd] = channel; return channel.fd} @@ -6447,7 +6844,7 @@ {var ta= new - (globalThis.Uint8Array) + 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)} @@ -6458,11 +6855,6 @@ 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(); @@ -6482,6 +6874,9 @@ 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_domain_dls=[0]; + function caml_domain_dls_set(a){caml_domain_dls = a} + function caml_lazy_read_result(o){return caml_obj_tag(o) == 250?o[1]:o} var caml_js_regexps={amp:/&/g,lt:/>> 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) @@ -6612,15 +7001,6 @@ 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(); @@ -6631,13 +7011,6 @@ {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 @@ -6682,7 +7055,7 @@ {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)} + {return caml_int64_of_float(caml_pos_in(chanid))} function caml_gr_draw_image(im,x,y) {var s=caml_gr_state_get(); if(! im.image) @@ -6706,8 +7079,15 @@ 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_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 + ("caml_unix_symlink: cannot symlink between two filesystems"); + if(! src_root.device.symlink) + caml_failwith("caml_unix_symlink: not implemented"); + return src_root.device.symlink(to_dir,src_root.rest,dst_root.rest,true)} + function caml_ml_pos_out(chanid){return caml_pos_out(chanid)} 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("")} @@ -6721,10 +7101,6 @@ 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) @@ -6812,11 +7188,12 @@ var fs=f * scale; if(Math.abs(fs) > MIN_VALUE)return fs; return fs + adjust(f - fs / scale,i.e) * scale} + function caml_recommended_domain_count(unit){return 1} 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; + {var chan=caml_ml_channels[chanid]; + chan.file.flags.text = ! mode; + chan.file.flags.binary = mode; return 0} function caml_final_register(){return 0} function caml_gr_draw_rect(x,y,w,h) @@ -6827,14 +7204,15 @@ {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 caml_ephe_blit_key(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 ml_z_to_int32(z1){return ml_z_to_int(z1)} var caml_initial_time=new Date().getTime() * 0.001; function caml_sys_time() @@ -6843,10 +7221,8 @@ 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 caml_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; @@ -6872,6 +7248,7 @@ {case 248:h = caml_hash_mix_int(h,v[2]);num--;break; case 250:queue[--rd] = v[1];break; default: + if(caml_is_continuation_tag(v[0]))break; var tag=v.length - 1 << 10 | v[0]; h = caml_hash_mix_int(h,tag); for(i = 1,len = v.length;i < len;i++) @@ -6893,21 +7270,8 @@ 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_domain_dls_get(unit){return caml_domain_dls} function caml_bytes_get32(s,i) {if(i >>> 0 >= s.l - 3)caml_bytes_bound_error(); var @@ -6935,8 +7299,7 @@ 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)} + {return caml_int64_of_float(caml_pos_out(chanid))} function ml_z_extract(z1,pos,len) {z1 = bigInt(z1); return ml_z_normalize @@ -6955,6 +7318,8 @@ 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_unix_findclose(dir_handle) + {return caml_unix_closedir(dir_handle)} function caml_gr_close_subwindow(a) {caml_failwith("caml_gr_close_subwindow not Implemented")} function caml_floatarray_blit(a1,i1,a2,i2,len) @@ -6988,10 +7353,6 @@ 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") @@ -7004,6 +7365,13 @@ var n=f.prec - s.length; if(n > 0)s = caml_str_repeat(n,"0") + s} return caml_finish_formatting(f,s)} + function jsoo_effect_not_supported() + {caml_failwith("Effect handlers are not supported")} + function caml_continuation_use_and_update_handler_noexc + (cont,hval,hexn,heff) + {var stack=caml_continuation_use_noexc(cont); + stack[3] = [0,hval,hexn,heff]; + return stack} 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; @@ -7012,16 +7380,19 @@ 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 file=caml_sys_fds[fd]; + if(file.flags.rdonly)caml_raise_sys_error("fd " + fd + " is readonly"); var + buffered=file.flags.buffered !== undefined?file.flags.buffered:1, channel= - {file:data.file, - offset:data.offset, + {file:file, + offset:file.flags.append?file.length():0, fd:fd, opened:true, out:true, - buffer:""}; + buffer_curr:0, + buffer:new Uint8Array(65536), + buffered:buffered}; caml_ml_channels[channel.fd] = channel; return channel.fd} function caml_array_concat(l) @@ -7030,7 +7401,7 @@ {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); + {var info=caml_jsstring_of_string(info); function get(name) {var res=info.match("(^|,) *" + name + " *= *([a-zA-Z0-9_]+) *(,|$)"); if(res)return res[2]} @@ -7046,7 +7417,7 @@ var h=get("height"); h = h?parseInt(h):200; specs.push("height=" + h); - var win=g.open("about:blank",target,specs.join(",")); + var win=globalThis.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; @@ -7058,8 +7429,6 @@ 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); @@ -7078,7 +7447,6 @@ 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} @@ -7105,6 +7473,7 @@ {if(index < 0 || index >= array.length - 1)caml_array_bound_error(); array[index + 1] = newval; return 0} + function caml_alloc_stack(hv,hx,hf){return 0} function caml_bytes_greaterequal(s1,s2) {return caml_bytes_lessequal(s2,s1)} function ml_z_perfect_power(z) @@ -7188,7 +7557,7 @@ {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)}} + return caml_callback(f,args)}} function ml_z_format(fmt,z1) {z1 = bigInt(z1); var @@ -7252,6 +7621,11 @@ return x} function ml_z_size(z1) {return bigInt(z1).toArray(Math.pow(2,32)).value.length} + function caml_unix_readlink(name) + {var root=resolve_fs_device(name); + if(! root.device.readlink) + caml_failwith("caml_unix_readlink: not implemented"); + return root.device.readlink(root.rest,true)} function caml_backtrace_status(){return 0} function caml_sys_argv(a){return caml_argv} function caml_install_signal_handler(){return 0} @@ -7317,7 +7691,34 @@ tbl_gindex=10, tbl_tablesize=11, tbl_table=12, - tbl_check=13; + tbl_check=13, + tbl_names_const=15, + tbl_names_block=16; + function log(x) + {var s=caml_string_of_jsbytes(x + "\n"); + caml_ml_output(2,s,0,caml_ml_string_length(s))} + function token_name(names,number) + {var str=caml_jsstring_of_string(names); + if(str[0] == "\x00")return ""; + return str.split("\x00")[number]} + function print_token(state,tok) + {var token,kind; + if(tok instanceof Array) + {token = token_name(tables[tbl_names_block],tok[0]); + if(typeof tok[1] == "number") + kind = "" + tok[1]; + else + if(typeof tok[1] == "string") + kind = tok[1]; + else + if(tok[1] instanceof MlBytes) + kind = caml_jsbytes_of_string(tok[1]); + else + kind = "_"; + log("State " + state + ": read token " + token + "(" + kind + ")")} + else + {token = token_name(tables[tbl_names_const],tok); + log("State " + state + ": read token " + token)}} if(! tables.dgoto) {tables.defred = caml_lex_array(tables[tbl_defred]); tables.sindex = caml_lex_array(tables[tbl_sindex]); @@ -7339,6 +7740,7 @@ errflag=env[env_errflag]; exit: for(;;) + next: switch(cmd) {case 0:state = 0;errflag = 0; case 6: @@ -7354,6 +7756,7 @@ else {env[env_curr_char] = tables[tbl_transl_const][arg + 1]; env[env_lval] = 0} + if(caml_parser_trace)print_token(state,arg); case 7: n1 = tables.sindex[state]; n2 = n1 + env[env_curr_char]; @@ -7417,16 +7820,25 @@ tables.check[n2] == ERRCODE) - {cmd = shift_recover;break} + {if(caml_parser_trace)log("Recovering in state " + state1); + cmd = shift_recover; + break next} else - {if(sp <= env[env_stackbase])return RAISE_PARSE_ERROR;sp--}}} + {if(caml_parser_trace)log("Discarding state " + state1); + if(sp <= env[env_stackbase]) + {if(caml_parser_trace)log("No more states to discard"); + return RAISE_PARSE_ERROR} + sp--}}} else {if(env[env_curr_char] == 0)return RAISE_PARSE_ERROR; + if(caml_parser_trace)log("Discarding last token read"); env[env_curr_char] = - 1; cmd = loop; break} case 8:env[env_curr_char] = - 1;if(errflag > 0)errflag--; case 9: + if(caml_parser_trace) + log("State " + state + ": shift to state " + tables.table[n2]); state = tables.table[n2]; sp++; if(sp >= env[env_stacksize]){res = GROW_STACKS_1;break exit} @@ -7438,6 +7850,8 @@ cmd = loop; break; case 10: + if(caml_parser_trace) + log("State " + state + ": reduce by rule " + n); var m=tables.len[n]; env[env_asp] = sp; env[env_rule_number] = n; @@ -7484,6 +7898,7 @@ env[env_state] = state; env[env_errflag] = errflag; return res} + function caml_jsoo_flags_effects(unit){return 0} function caml_update_dummy(x,y) {if(typeof y === "function"){x.fun = y;return 0} if(y.fun){x.fun = y.fun;return 0} @@ -7520,7 +7935,7 @@ return im} function caml_ml_set_channel_output(chanid,f) {var chan=caml_ml_channels[chanid]; - caml_global_data.fds[chan.fd].output = f; + chan.output = function(s){f(s)}; return 0} function caml_read_file_content(name) {var @@ -7530,21 +7945,21 @@ {var file=root.device.open(root.rest,{rdonly:1}), len=file.length(), - buf=caml_create_bytes(len); + buf=new Uint8Array(len); file.read(0,buf,0,len); - return caml_string_of_bytes(buf)} + return caml_string_of_array(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 + {var process=globalThis.process; + if(process && process.on) + process.on ("uncaughtException", function(err,origin) - {caml_fatal_uncaught_exception(err);g.process.exit(2)}); + {caml_fatal_uncaught_exception(err);process.exit(2)}); else - if(g.addEventListener) - g.addEventListener + if(globalThis.addEventListener) + globalThis.addEventListener ("error", function(event) {if(event.error)caml_fatal_uncaught_exception(event.error)})} @@ -7632,55 +8047,90 @@ ml_z_primorial:ml_z_primorial, ml_z_bin:ml_z_bin, bigInt:bigInt, + caml_alloc_stack:caml_alloc_stack, + caml_continuation_use_noexc:caml_continuation_use_noexc, + caml_continuation_use_and_update_handler_noexc: + caml_continuation_use_and_update_handler_noexc, + caml_get_continuation_callstack:caml_get_continuation_callstack, + caml_ml_condition_new:caml_ml_condition_new, + caml_ml_condition_wait:caml_ml_condition_wait, + caml_ml_condition_broadcast:caml_ml_condition_broadcast, + caml_ml_condition_signal:caml_ml_condition_signal, + jsoo_effect_not_supported:jsoo_effect_not_supported, + MlMutex:MlMutex, + caml_ml_mutex_new:caml_ml_mutex_new, + caml_ml_mutex_lock:caml_ml_mutex_lock, + caml_ml_mutex_try_lock:caml_ml_mutex_try_lock, + caml_ml_mutex_unlock:caml_ml_mutex_unlock, + caml_lxm_next:caml_lxm_next, + caml_domain_dls:caml_domain_dls, + caml_domain_dls_set:caml_domain_dls_set, + caml_domain_dls_get:caml_domain_dls_get, + caml_atomic_load:caml_atomic_load, + caml_atomic_cas:caml_atomic_cas, + caml_atomic_fetch_add:caml_atomic_fetch_add, + caml_atomic_exchange:caml_atomic_exchange, + caml_ml_domain_unique_token:caml_ml_domain_unique_token, + caml_ml_domain_set_name:caml_ml_domain_set_name, + caml_recommended_domain_count:caml_recommended_domain_count, + caml_domain_id:caml_domain_id, + caml_domain_spawn:caml_domain_spawn, + caml_ml_domain_id:caml_ml_domain_id, + caml_ml_domain_cpu_relax:caml_ml_domain_cpu_relax, caml_ephe_key_offset:caml_ephe_key_offset, caml_ephe_data_offset:caml_ephe_data_offset, + caml_ephe_set_key:caml_ephe_set_key, + caml_ephe_unset_key:caml_ephe_unset_key, + caml_ephe_create:caml_ephe_create, 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_key:caml_ephe_blit_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, + caml_unix_gettimeofday:caml_unix_gettimeofday, + caml_unix_time:caml_unix_time, + caml_unix_gmtime:caml_unix_gmtime, + caml_unix_localtime:caml_unix_localtime, + caml_unix_mktime:caml_unix_mktime, + caml_unix_startup:caml_unix_startup, + caml_unix_cleanup:caml_unix_cleanup, + caml_unix_filedescr_of_fd:caml_unix_filedescr_of_fd, + caml_unix_isatty:caml_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, + caml_unix_stat:caml_unix_stat, + caml_unix_stat_64:caml_unix_stat_64, + caml_unix_lstat:caml_unix_lstat, + caml_unix_lstat_64:caml_unix_lstat_64, + caml_unix_mkdir:caml_unix_mkdir, + caml_unix_rmdir:caml_unix_rmdir, + caml_unix_symlink:caml_unix_symlink, + caml_unix_readlink:caml_unix_readlink, + caml_unix_unlink:caml_unix_unlink, + caml_unix_getuid:caml_unix_getuid, + caml_unix_getpwuid:caml_unix_getpwuid, + caml_unix_has_symlink:caml_unix_has_symlink, + caml_unix_opendir:caml_unix_opendir, + caml_unix_readdir:caml_unix_readdir, + caml_unix_closedir:caml_unix_closedir, + caml_unix_rewinddir:caml_unix_rewinddir, + caml_unix_findfirst:caml_unix_findfirst, + caml_unix_findnext:caml_unix_findnext, + caml_unix_findclose:caml_unix_findclose, + caml_unix_inet_addr_of_string:caml_unix_inet_addr_of_string, 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_str_initialize:caml_str_initialize, caml_raise_sys_error:caml_raise_sys_error, caml_sys_exit:caml_sys_exit, caml_is_special_exception:caml_is_special_exception, @@ -7713,7 +8163,6 @@ 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, @@ -7731,6 +8180,8 @@ caml_register_global:caml_register_global, caml_get_global_data:caml_get_global_data, caml_is_printable:caml_is_printable, + caml_maybe_print_stats:caml_maybe_print_stats, + caml_parser_trace:caml_parser_trace, caml_parse_engine:caml_parse_engine, caml_set_parser_trace:caml_set_parser_trace, caml_update_dummy:caml_update_dummy, @@ -7742,6 +8193,8 @@ caml_obj_dup:caml_obj_dup, caml_obj_truncate:caml_obj_truncate, caml_obj_make_forward:caml_obj_make_forward, + caml_obj_compare_and_swap:caml_obj_compare_and_swap, + caml_obj_is_shared:caml_obj_is_shared, caml_lazy_make_forward:caml_lazy_make_forward, caml_get_public_method:caml_get_public_method, caml_oo_last_id:caml_oo_last_id, @@ -7751,6 +8204,12 @@ 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, + caml_obj_update_tag:caml_obj_update_tag, + caml_lazy_update_to_forcing:caml_lazy_update_to_forcing, + caml_lazy_update_to_forward:caml_lazy_update_to_forward, + caml_lazy_reset_to_lazy:caml_lazy_reset_to_lazy, + caml_lazy_read_result:caml_lazy_read_result, + caml_is_continuation_tag:caml_is_continuation_tag, initialize_nat:initialize_nat, MlNat:MlNat, caml_hash_nat:caml_hash_nat, @@ -7817,8 +8276,8 @@ 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_uint8_array_of_bytes:caml_uint8_array_of_bytes, + caml_uint8_array_of_string:caml_uint8_array_of_string, caml_create_string:caml_create_string, caml_create_bytes:caml_create_bytes, caml_string_of_array:caml_string_of_array, @@ -7834,7 +8293,6 @@ 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, @@ -7860,8 +8318,14 @@ 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_array_of_string:caml_array_of_string, + caml_array_of_bytes:caml_array_of_bytes, caml_md5_chan:caml_md5_chan, caml_md5_string:caml_md5_string, + caml_MD5Transform:caml_MD5Transform, + caml_MD5Init:caml_MD5Init, + caml_MD5Update:caml_MD5Update, + caml_MD5Final:caml_MD5Final, caml_md5_bytes:caml_md5_bytes, caml_marshal_constants:caml_marshal_constants, MlStringReader:MlStringReader, @@ -7899,9 +8363,10 @@ 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_callback:caml_callback, caml_is_js:caml_is_js, + caml_jsoo_flags_use_js_string:caml_jsoo_flags_use_js_string, + caml_jsoo_flags_effects:caml_jsoo_flags_effects, 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, @@ -7922,17 +8387,19 @@ 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_callback_unsafe:caml_js_wrap_callback_unsafe, 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_function_arity:caml_js_function_arity, 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_fds:caml_sys_fds, 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, @@ -7940,21 +8407,23 @@ 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_refill:caml_refill, caml_ml_input:caml_ml_input, + caml_ml_input_block:caml_ml_input_block, caml_input_value:caml_input_value, + caml_input_value_to_outside_heap:caml_input_value_to_outside_heap, caml_ml_input_char:caml_ml_input_char, caml_ml_input_int:caml_ml_input_int, + caml_seek_in:caml_seek_in, caml_ml_seek_in:caml_ml_seek_in, caml_ml_seek_in_64:caml_ml_seek_in_64, + caml_pos_in:caml_pos_in, 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, @@ -7963,8 +8432,10 @@ caml_ml_output:caml_ml_output, caml_ml_output_char:caml_ml_output_char, caml_output_value:caml_output_value, + caml_seek_out:caml_seek_out, caml_ml_seek_out:caml_ml_seek_out, caml_ml_seek_out_64:caml_ml_seek_out_64, + caml_pos_out:caml_pos_out, 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, @@ -8045,7 +8516,6 @@ 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, @@ -8055,6 +8525,7 @@ caml_hash_mix_bytes:caml_hash_mix_bytes, caml_hash_mix_string:caml_hash_mix_string, caml_hash:caml_hash, + caml_string_hash:caml_string_hash, caml_gr_state:caml_gr_state, caml_gr_state_get:caml_gr_state_get, caml_gr_state_set:caml_gr_state_set, @@ -8128,9 +8599,12 @@ caml_get_major_credit:caml_get_major_credit, fs_node_supported:fs_node_supported, MlNodeDevice:MlNodeDevice, - MlNodeFile:MlNodeFile, + MlNodeFd:MlNodeFd, + caml_sys_open_for_node:caml_sys_open_for_node, MlFakeDevice:MlFakeDevice, MlFakeFile:MlFakeFile, + MlFakeFd_out:MlFakeFd_out, + MlFakeFd:MlFakeFd, caml_trailing_slash:caml_trailing_slash, caml_current_dir:caml_current_dir, caml_get_root:caml_get_root, @@ -8303,7 +8777,9 @@ //# 1 "../../.js/stdlib/stdlib.cma.js" -(function(globalThis) +// Generated by js_of_ocaml +(function + (globalThis) {"use strict"; var runtime=globalThis.jsoo_runtime, @@ -8341,6 +8817,10 @@ caml_compare=runtime.caml_compare, caml_create_bytes=runtime.caml_create_bytes, caml_div=runtime.caml_div, + caml_ephe_blit_key=runtime.caml_ephe_blit_key, + caml_ephe_check_key=runtime.caml_ephe_check_key, + caml_ephe_get_key=runtime.caml_ephe_get_key, + caml_ephe_get_key_copy=runtime.caml_ephe_get_key_copy, caml_ephe_set_key=runtime.caml_ephe_set_key, caml_ephe_unset_key=runtime.caml_ephe_unset_key, caml_equal=runtime.caml_equal, @@ -8460,8 +8940,8 @@ 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], + ocaml_version=caml_string_of_jsbytes("4.14.1"), + ocaml_release=[0,4,14,1,0], cst_Obj_Ephemeron_blit_key= caml_string_of_jsbytes("Obj.Ephemeron.blit_key"), cst_Obj_Ephemeron_check_key= @@ -9077,74 +9557,74 @@ _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_= + _p_=[0,caml_string_of_jsbytes("seq.ml"),596,4], + _v_=[0,caml_string_of_jsbytes("uchar.ml"),88,18], + _u_=[0,caml_string_of_jsbytes("uchar.ml"),91,7], + _t_=[0,caml_string_of_jsbytes("uchar.ml"),80,18], + _s_=[0,caml_string_of_jsbytes("uchar.ml"),85,7], + _y_=[0,0,0], + _E_=[0,caml_string_of_jsbytes("bytes.ml"),808,20], + _D_=[0,caml_string_of_jsbytes("bytes.ml"),819,9], + _C_=[0,caml_string_of_jsbytes("bytes.ml"),754,20], + _B_=[0,caml_string_of_jsbytes("bytes.ml"),765,9], + _A_=[0,caml_string_of_jsbytes("bytes.ml"),642,20], + _z_=[0,caml_string_of_jsbytes("bytes.ml"),667,9], + _F_=[0,caml_string_of_jsbytes("array.ml"),322,4], + _H_=[0,caml_string_of_jsbytes("float.ml"),395,6], + _G_=[0,caml_string_of_jsbytes("float.ml"),222,14], + _S_=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,65535), + _R_=runtime.caml_int64_create_lo_mi_hi(0,0,0), + _Q_=runtime.caml_int64_create_lo_mi_hi(1,0,0), + _P_=runtime.caml_int64_create_lo_mi_hi(1,0,0), + _T_=[0,0,0,0], + _U_=[0,0,0], + _V_=[0,caml_string_of_jsbytes("set.ml"),570,18], + _W_=[0,0,0,0], + _X_=[0,caml_string_of_jsbytes("map.ml"),400,10], + _Y_=[0,0,0], + _Z_=[0,caml_string_of_jsbytes("stream.ml"),53,12], + ___=[0,0], + _$_=[0,caml_string_of_jsbytes("stream.ml"),82,12], + _ad_=[0,caml_string_of_jsbytes("buffer.ml"),231,9], + _ac_=[0,caml_string_of_jsbytes("buffer.ml"),212,2], + _ab_=[0,caml_string_of_jsbytes("buffer.ml"),93,2], + _aa_=[0,caml_string_of_jsbytes("buffer.ml"),94,2], + _af_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),850,23], + _aq_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),814,21], + _ai_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),815,21], + _ar_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),818,21], + _aj_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),819,21], + _as_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),822,19], + _ak_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),823,19], + _at_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),826,22], + _al_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),827,22], + _au_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),831,30], + _am_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),832,30], + _ao_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),836,26], + _ag_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),837,26], + _ap_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),846,28], + _ah_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),847,28], + _an_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),851,23], + _aw_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1558,4], + _ax_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1626,39], + _ay_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1649,31], + _az_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1650,31], + _aA_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1830,8], + _a4_= [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_= + _a3_= [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_= + _aG_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9155,13 +9635,13 @@ [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], + _aH_=[0,1,0], + _aI_=[0,0], + _aJ_=[1,0], + _aK_=[1,1], _aM_=[1,1], - _aO_=[1,1], - _aN_=[1,1], - _aS_= + _aL_=[1,1], + _aQ_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9185,7 +9665,7 @@ 0]]]]]]]]], caml_string_of_jsbytes ("invalid format %S: at character number %d, flag %C is only allowed after the '%%', before padding and precision")], - _aP_= + _aN_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9202,13 +9682,13 @@ [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_= + _aO_=[0,0], + _aP_=[0,0], + _aR_=[0,[12,64,0]], + _aS_=[0,caml_string_of_jsbytes("@ "),1,0], + _aT_=[0,caml_string_of_jsbytes("@,"),0,0], + _aU_=[2,60], + _aV_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9230,7 +9710,7 @@ [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_= + _aW_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9247,8 +9727,8 @@ [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_= + _aX_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2837,11], + _aY_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9262,10 +9742,10 @@ [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_= + _aZ_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2899,34], + _a0_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2935,28], + _a1_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2957,11], + _a2_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9286,7 +9766,7 @@ [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_= + _aF_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9303,7 +9783,7 @@ [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_= + _aE_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9320,7 +9800,7 @@ [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_= + _aD_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9330,21 +9810,21 @@ 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_= + _aC_= [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")], + _aB_=[0,0,4], + _av_=[0,103], + _ae_=[0,0,0], + _bo_=[0,[2,0,[0,0]],caml_string_of_jsbytes("%s%c")], _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_= + _be_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _bf_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _a__= [0, [2, 0, @@ -9352,7 +9832,7 @@ 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_= + _bb_= [0, [2, 0, @@ -9369,7 +9849,7 @@ [2,0,[11,caml_string_of_jsbytes(".\n"),0]]]]]]]], caml_string_of_jsbytes ("%s: wrong argument '%s'; option '%s' expects %s.\n")], - _be_= + _bc_= [0, [2, 0, @@ -9377,7 +9857,7 @@ 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_= + _bd_= [0, [2, 0, @@ -9385,28 +9865,28 @@ 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_= + _a$_=[0,caml_string_of_jsbytes("-help")], + _ba_=[0,caml_string_of_jsbytes("--help")], + _a9_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _a8_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], + _a7_=[0,caml_string_of_jsbytes("-help")], + _a5_= [0, [11,caml_string_of_jsbytes(" "),[2,0,[12,32,[2,0,[12,10,0]]]]], caml_string_of_jsbytes(" %s %s\n")], - _a8_= + _a6_= [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_= + _bt_= [0, [11,caml_string_of_jsbytes(", "),[2,0,[2,0,0]]], caml_string_of_jsbytes(", %s%s")], - _bH_= + _bF_= [0, [11,caml_string_of_jsbytes("Fatal error: exception "),[2,0,[12,10,0]]], caml_string_of_jsbytes("Fatal error: exception %s\n")], - _bI_= + _bG_= [0, [11, caml_string_of_jsbytes @@ -9414,13 +9894,13 @@ [2,0,[12,10,0]]], caml_string_of_jsbytes ("Fatal error in uncaught exception handler: exception %s\n")], - _bG_= + _bE_= [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_= + _bA_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], + _bB_= [0, [11, caml_string_of_jsbytes @@ -9428,7 +9908,7 @@ 0], caml_string_of_jsbytes ("(Program not linked with -g, cannot print stack backtrace)\n")], - _bA_= + _by_= [0, [2, 0, @@ -9449,23 +9929,23 @@ [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_= + _bz_= [0, [2,0,[11,caml_string_of_jsbytes(" unknown location"),0]], caml_string_of_jsbytes("%s unknown location")], - _bz_= + _bx_= [0, [11,caml_string_of_jsbytes("Uncaught exception: "),[2,0,[12,10,0]]], caml_string_of_jsbytes("Uncaught exception: %s\n")], - _by_= + _bw_= [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_= + _bu_=[0,[12,40,[2,0,[2,0,[12,41,0]]]],caml_string_of_jsbytes("(%s%s)")], + _bv_=[0,[12,40,[2,0,[12,41,0]]],caml_string_of_jsbytes("(%s)")], + _bs_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _br_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _bD_= [0, caml_string_of_jsbytes(""), caml_string_of_jsbytes @@ -9476,92 +9956,92 @@ ("(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_= + _bN_= [0, [11, caml_string_of_jsbytes("minor_collections: "), [4,0,0,0,[12,10,0]]], caml_string_of_jsbytes("minor_collections: %d\n")], - _bQ_= + _bO_= [0, [11, caml_string_of_jsbytes("major_collections: "), [4,0,0,0,[12,10,0]]], caml_string_of_jsbytes("major_collections: %d\n")], - _bR_= + _bP_= [0, [11, caml_string_of_jsbytes("compactions: "), [4,0,0,0,[12,10,0]]], caml_string_of_jsbytes("compactions: %d\n")], - _bS_= + _bQ_= [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_= + _bR_=[0,[12,10,0],caml_string_of_jsbytes("\n")], + _bS_=[0,[8,[0,0,0],0,[0,0],0],caml_string_of_jsbytes("%.0f")], + _bT_= [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_= + _bU_= [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_= + _bV_= [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_= + _bW_=[0,[12,10,0],caml_string_of_jsbytes("\n")], + _bX_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _bY_= [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_= + _bZ_= [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_= + _b0_= [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_= + _b1_= [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_= + _b2_= [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_= + _b3_= [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_= + _b4_=[0,[12,10,0],caml_string_of_jsbytes("\n")], + _b5_= [0, [11,caml_string_of_jsbytes("live_blocks: "),[4,0,0,0,[12,10,0]]], caml_string_of_jsbytes("live_blocks: %d\n")], - _b8_= + _b6_= [0, [11,caml_string_of_jsbytes("free_blocks: "),[4,0,0,0,[12,10,0]]], caml_string_of_jsbytes("free_blocks: %d\n")], - _b9_= + _b7_= [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_= + _cd_=runtime.caml_int64_create_lo_mi_hi(1,0,0), + _ce_=runtime.caml_int64_create_lo_mi_hi(0,0,0), + _cf_= [0, 987910699, 495797812, @@ -9618,43 +10098,43 @@ 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_= + _ci_=[0,0], + _co_=[3,0,3], + _cn_=[1,caml_string_of_jsbytes("max_indent < 2")], + _cl_=[1,caml_string_of_jsbytes("margin <= max_indent")], + _cm_=[0,0], + _ck_=[0,caml_string_of_jsbytes("")], + _cj_=[0,caml_string_of_jsbytes(""),0,caml_string_of_jsbytes("")], + _cE_=[0,91], + _cD_=[0,123], + _cF_=[0,caml_string_of_jsbytes("scanf.ml"),1453,13], + _cG_=[0,[3,0,[10,0]],caml_string_of_jsbytes("%S%!")], + _cC_=[0,37,caml_string_of_jsbytes("")], + _cB_= [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_= + _cA_= [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_= + _cz_= [0, [11, caml_string_of_jsbytes("bad character hexadecimal encoding \\"), [0,[0,0]]], caml_string_of_jsbytes("bad character hexadecimal encoding \\%c%c")], - _cA_= + _cy_= [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_= + _cx_= [0, [11, caml_string_of_jsbytes("character "), @@ -9663,24 +10143,24 @@ 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_= + _cw_= [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_= + _cv_=[0,caml_string_of_jsbytes("scanf.ml"),555,9], + _cu_= [0, [11,caml_string_of_jsbytes("invalid boolean '"),[2,0,[12,39,0]]], caml_string_of_jsbytes("invalid boolean '%s'")], - _cv_= + _ct_= [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_= + _cs_= [0, [11, caml_string_of_jsbytes("scanning of "), @@ -9692,7 +10172,7 @@ 0]]], caml_string_of_jsbytes ("scanning of %s failed: premature end of file occurred before end of token")], - _ct_= + _cr_= [0, [11, caml_string_of_jsbytes("scanning of "), @@ -9704,145 +10184,138 @@ 0]]], caml_string_of_jsbytes ("scanning of %s failed: the specified length was too short for token")], - _cs_= + _cq_= [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], + _cN_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),439,17], + _cM_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),421,13], + _cL_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),418,13], + _cK_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),415,13], + _cJ_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),412,13], + _cI_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),409,13], + _cH_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),281,50], + _cO_=[0,caml_string_of_jsbytes("camlinternalMod.ml"),72,5], + _cP_=[0,caml_string_of_jsbytes("camlinternalMod.ml"),81,2], _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]; + _cR_=[0,0], + _cQ_=[0,0], + _cX_=[0,7,0], + _cW_=[0,1,[0,3,[0,5,0]]], + _cV_=[0,[2,0,[4,6,[0,2,6],0,[2,0,0]]],caml_string_of_jsbytes("%s%06x%s")], + _cU_=[0,caml_string_of_jsbytes('"'),0], + _cY_=[254,0.,0.], + _cZ_=[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)]}} + {if(typeof param === "number")return 0; + 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)]}} + {if(typeof fmtty1 === "number")return fmtty2; + 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)]}} + {if(typeof fmt1 === "number")return fmt2; + 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"); @@ -9884,7 +10357,7 @@ 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)} + {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) @@ -9899,33 +10372,33 @@ 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_}} + {var _Et_=[0,caml_int_of_string(s)];return _Et_} + catch(_Eu_) + {_Eu_ = caml_wrap_exception(_Eu_); + if(_Eu_[1] === Failure)return 0; + throw _Eu_}} 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} + {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}} + if(! switch$0)return s; + var i$0=i + 1 | 0,i=i$0}} 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_}} + {var _Er_=[0,caml_float_of_string(s)];return _Er_} + catch(_Es_) + {_Es_ = caml_wrap_exception(_Es_); + if(_Es_[1] === Failure)return 0; + throw _Es_}} function append(l1,l2) - {if(l1){var tl=l1[2],hd=l1[1];return [0,hd,append(tl,l2)]}return l2} + {if(! l1)return l2;var tl=l1[2],hd=l1[1];return [0,hd,append(tl,l2)]} var stdin=caml_ml_open_descriptor_in(0), stdout=caml_ml_open_descriptor_out(1), @@ -9940,48 +10413,34 @@ {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}} + {if(! param$0)return 0; + var l=param$0[2],a=param$0[1]; + try + {caml_ml_flush(a)} + catch(_Eq_) + {_Eq_ = caml_wrap_exception(_Eq_); + if(_Eq_[1] !== Sys_error)throw _Eq_} + var param$0=l}} 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)) + {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)) + {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 {caml_ml_flush(oc)}catch(_Ep_){} try - {var _Ex_=caml_ml_close_channel(oc);return _Ex_} - catch(_Ey_){return 0}} + {var _En_=caml_ml_close_channel(oc);return _En_} + catch(_Eo_){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); @@ -9989,22 +10448,18 @@ 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)) + {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}} + {if(0 >= len$0)return 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}} function really_input(ic,s,ofs,len) - {if - (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) + {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) @@ -10015,20 +10470,18 @@ {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}} + {if(! param$0)return buf; + 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}} 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)} + var _Em_=build_result(caml_create_bytes(len),len,accu)} else - {if(! (0 < n)) + {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; @@ -10039,14 +10492,14 @@ if(accu) var len$0=(len + n | 0) - 1 | 0, - _Ew_=build_result(caml_create_bytes(len$0),len$0,[0,res,accu]); + _Em_=build_result(caml_create_bytes(len$0),len$0,[0,res,accu]); else - var _Ew_=res} - return caml_string_of_bytes(_Ew_)}} + var _Em_=res} + return caml_string_of_bytes(_Em_)}} function close_noerr$0(ic) {try - {var _Eu_=caml_ml_close_channel(ic);return _Eu_} - catch(_Ev_){return 0}} + {var _Ek_=caml_ml_close_channel(ic);return _Ek_} + catch(_El_){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)} @@ -10077,14 +10530,14 @@ 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_) + function symbol(param,_Ei_) {var - str2=_Es_[2], - fmt2=_Es_[1], + str2=_Ei_[2], + fmt2=_Ei_[1], str1=param[2], fmt1=param[1], - _Et_=cat(str1,cat(cst$0,str2)); - return [0,concat_fmt(fmt1,fmt2),_Et_]} + _Ej_=cat(str1,cat(cst$0,str2)); + return [0,concat_fmt(fmt1,fmt2),_Ej_]} var exit_function=[0,flush_all]; function at_exit(f) {for(;;) @@ -10099,9 +10552,9 @@ 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_}} + _Eh_=1 - success; + if(_Eh_)continue; + return _Eh_}} 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)} @@ -10338,11 +10791,11 @@ 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} + {if(0 !== param[0])return 0;var v=param[1];return [0,v]} 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} + {if(0 !== e[0])return e;var v=e[1];return [0,caml_call1(f,v)]} 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) @@ -10355,21 +10808,22 @@ 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)}} + {var _Ef_=e1[1]; + if(0 === e2[0]){var v2=e2[1];return caml_call2(left,_Ef_,v2)}} else - {var _Eq_=e1[1]; - if(0 !== e2[0]){var v2$0=e2[1];return caml_call2(right,_Eq_,v2$0)}} + {var _Eg_=e1[1]; + if(0 !== e2[0]){var v2$0=e2[1];return caml_call2(right,_Eg_,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]; + {var _Ed_=e1[1]; + if(0 !== e2[0])return -1; + var v2=e2[1]; + return caml_call2(left,_Ed_,v2)} + var _Ee_=e1[1]; if(0 === e2[0])return 1; var v2$0=e2[1]; - return caml_call2(right,_Eo_,v2$0)} + return caml_call2(right,_Ee_,v2$0)} var Stdlib_Either= [0, @@ -10404,11 +10858,11 @@ 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 _Eb_=[0,caml_sys_getenv(s)];return _Eb_} + catch(_Ec_) + {_Ec_ = caml_wrap_exception(_Ec_); + if(_Ec_ === Not_found)return 0; + throw _Ec_}} var interactive=[0,0]; function set_signal(sig_num,sig_beh){return 0} var @@ -10443,7 +10897,7 @@ sigxfsz=-28; function catch_break(on){return on?0:0} var development_version=0; - function Make(_Ek_,_Ej_){return [0,1]} + function Make(_Ea_,_D$_){return [0,1]} var Immediate64=[0,Make], Stdlib_Sys= @@ -10521,13 +10975,12 @@ 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_]} + {if(caml_obj_tag(obj) !== 247)throw [0,Assert_failure,_n_]; + var + info=runtime.caml_obj_raw_field(obj,1), + arity=info >> 24, + start_env=info << 8 >>> 9 | 0; + return [0,arity,start_env]} function of_val(x) {var switch$0=0; if(is_block(x) && caml_obj_tag(x) !== 248 && 1 <= x.length - 1) @@ -10549,19 +11002,19 @@ 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); + {var _D9_=0 <= l?1:0,_D__=_D9_?l <= max_ephe_length?1:0:_D9_; + if(1 - _D__)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_} + {var _D6_=0 <= o?1:0,_D7_=_D6_?o < length(e)?1:0:_D6_,_D8_=1 - _D7_; + return _D8_?invalid_arg(msg):_D8_} function get_key(e,o) {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_get_key); - return runtime.caml_ephe_get_key(e,o)} + return 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)} + return 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)} @@ -10570,7 +11023,7 @@ 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)} + return caml_ephe_check_key(e,o)} function blit_key(e1,o1,e2,o2,l) {if (0 @@ -10581,24 +11034,22 @@ <= o1 && - ! - ((length(e1) - 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_} + (length(e2) - l | 0) + >= + o2) + {var _D4_=0 !== l?1:0,_D5_=_D4_?caml_ephe_blit_key(e1,o1,e2,o2,l):_D4_; + return _D5_} return invalid_arg(cst_Obj_Ephemeron_blit_key)} var - _o_=runtime.caml_ephe_blit_data, - _p_=runtime.caml_ephe_check_data, - _q_= + _o_= [0, create, length, @@ -10611,9 +11062,9 @@ 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_, + runtime.caml_ephe_unset_data, + runtime.caml_ephe_check_data, + runtime.caml_ephe_blit_data, max_ephe_length], Stdlib_Obj= [0, @@ -10642,7 +11093,7 @@ extension_constructor, extension_name, extension_id, - _q_]; + _o_]; 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} @@ -10679,23 +11130,23 @@ function is_val(l){return caml_obj_tag(l) !== 246?1:0} function map$0(f,x) {return [246, - function(_D__) + function(_D1_) {var - _D$_=caml_obj_tag(x), - _Ea_=250 === _D$_?x[1]:246 === _D$_?force_lazy_block(x):x; - return caml_call1(f,_Ea_)}]} + _D2_=caml_obj_tag(x), + _D3_=250 === _D2_?x[1]:246 === _D2_?force_lazy_block(x):x; + return caml_call1(f,_D3_)}]} 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_)}]} + {if(! is_val(x)) + return [246, + function(_DY_) + {var + _DZ_=caml_obj_tag(x), + _D0_=250 === _DZ_?x[1]:246 === _DZ_?force_lazy_block(x):x; + return caml_call1(f,_D0_)}]; + var + _DW_=caml_obj_tag(x), + _DX_=250 === _DW_?x[1]:246 === _DW_?force_lazy_block(x):x; + return from_val(caml_call1(f,_DX_))} var Stdlib_Lazy= [0, @@ -10715,218 +11166,178 @@ 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)} + if(! match)return caml_call1(seq2,0); + var next=match[2],x=match[1]; + return [0,x,function(_DV_){return append$0(next,seq2,_DV_)}]} 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} + if(! match)return 0; + var next=match[2],x=match[1]; + function _DT_(_DU_){return map$1(f,next,_DU_)} + return [0,caml_call1(f,x),_DT_]} 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}} + if(! match)return 0; + 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(_DS_){return filter_map(f,next,_DS_)}]} + var seq$0=next}} 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}} + if(! match)return 0; + var next=match[2],x=match[1]; + if(caml_call1(f,x)) + return [0,x,function(_DR_){return filter(f,next,_DR_)}]; + var seq$0=next}} 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} + if(! match)return 0; + var next=match[2],x=match[1],_DP_=0; + return append$0(x,function(_DQ_){return concat(next,_DQ_)},_DP_)} 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} + if(! match)return 0; + var next=match[2],x=match[1],_DM_=0; + function _DN_(_DO_){return flat_map(f,next,_DO_)} + return append$0(caml_call1(f,x),_DN_,_DM_)} 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}} + if(! match)return acc$0; + var + next=match[2], + x=match[1], + acc$1=caml_call2(f,acc$0,x), + acc$0=acc$1, + seq$0=next}} 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}} + if(! match)return 0; + var next=match[2],x=match[1]; + caml_call1(f,x); + var seq$0=next}} 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} + if(! match)return 0; + var match$0=match[1],u$0=match$0[2],x=match$0[1]; + return [0,x,function(_DL_){return unfold(f,u$0,_DL_)}]} 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} + if(! match)return 0; + var xs$0=match[2],x=match[1]; + return [0,[0,x,xs$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}} + if(! match)return accu; + var xs$0=match[2],accu$0=accu + 1 | 0,accu=accu$0,xs=xs$0}} 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}} + if(! match)return 0; + 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}} 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}} + if(! match)return accu; + 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}} 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}} + if(! match)return 1; + var xs$1=match[2],x=match[1],_DK_=caml_call1(p,x); + if(! _DK_)return _DK_; + var xs$0=xs$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}} + if(! match)return 0; + var xs$1=match[2],x=match[1],_DJ_=caml_call1(p,x); + if(_DJ_)return _DJ_; + var xs$0=xs$1}} 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}} + if(! match)return 0; + var xs$1=match[2],x=match[1]; + if(caml_call1(p,x))return [0,x]; + var xs$0=xs$1}} 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}} + if(! match)return 0; + var xs$1=match[2],x=match[1],result=caml_call1(f,x); + if(result)return result; + var xs$0=xs$1}} 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}} + if(! match)return 0; + var xs$1=match[2],x=match[1],match$0=caml_call1(ys$0,0); + if(! match$0)return 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}} 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}} + if(! match)return accu$0; + var xs$1=match[2],x=match[1],match$0=caml_call1(ys$0,0); + if(! match$0)return accu$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}} 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}} + if(! match)return 1; + var xs$1=match[2],x=match[1],match$0=caml_call1(ys$0,0); + if(! match$0)return 1; + var ys$1=match$0[2],y=match$0[1],_DI_=caml_call2(f,x,y); + if(! _DI_)return _DI_; + var xs$0=xs$1,ys$0=ys$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}} + if(! match)return 0; + var xs$1=match[2],x=match[1],match$0=caml_call1(ys$0,0); + if(! match$0)return 0; + var ys$1=match$0[2],y=match$0[1],_DH_=caml_call2(f,x,y); + if(_DH_)return _DH_; + var xs$0=xs$1,ys$0=ys$1}} function equal$0(eq,xs,ys) {var xs$0=xs,ys$0=ys; for(;;) @@ -10938,9 +11349,10 @@ 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_}} + _DG_=caml_call2(eq,x,y); + if(! _DG_)return _DG_; + var xs$0=xs$1,ys$0=ys$1; + continue}} else if(! match$0)return 1; return 0}} @@ -10948,78 +11360,65 @@ {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}} + if(! match)return match$0?-1:0; + var _DE_=match[2],_DF_=match[1]; + if(! match$0)return 1; + var ys$1=match$0[2],y=match$0[1],c=caml_call2(cmp,_DF_,y); + if(0 !== c)return c; + var xs$0=_DE_,ys$0=ys$1}} 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} + {if(i >= j)return 0; + var _DB_=i + 1 | 0; + function _DC_(_DD_){return init_aux(f,_DB_,j,_DD_)} + return [0,caml_call1(f,i),_DC_]} 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)} + {if(0 > n)return invalid_arg(cst_Seq_init); + var _Dz_=0; + return function(_DA_){return init_aux(f,_Dz_,n,_DA_)}} function repeat(x,param) - {return [0,x,function(_DH_){return repeat(x,_DH_)}]} + {return [0,x,function(_Dy_){return repeat(x,_Dy_)}]} function forever(f,param) - {function _DF_(_DG_){return forever(f,_DG_)} - return [0,caml_call1(f,0),_DF_]} + {function _Dw_(_Dx_){return forever(f,_Dx_)} + return [0,caml_call1(f,0),_Dw_]} function cycle_nonempty(xs,param) - {var _DD_=0; - return append$0(xs,function(_DE_){return cycle_nonempty(xs,_DE_)},_DD_)} + {var _Du_=0; + return append$0(xs,function(_Dv_){return cycle_nonempty(xs,_Dv_)},_Du_)} 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} + if(! match)return 0; + var xs$0=match[2],x=match[1]; + function _Dr_(_Dt_){return cycle_nonempty(xs,_Dt_)} + return [0,x,function(_Ds_){return append$0(xs$0,_Dr_,_Ds_)}]} function iterate1(f,x,param) {var y=caml_call1(f,x); - return [0,y,function(_Dz_){return iterate1(f,y,_Dz_)}]} + return [0,y,function(_Dq_){return iterate1(f,y,_Dq_)}]} function iterate(f,x) - {function _Dw_(_Dy_){return iterate1(f,x,_Dy_)} - return function(_Dx_){return [0,x,_Dw_]}} + {function _Dn_(_Dp_){return iterate1(f,x,_Dp_)} + return function(_Do_){return [0,x,_Dn_]}} 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} + if(! match)return 0; + var xs$0=match[2],x=match[1],_Dk_=i + 1 | 0; + function _Dl_(_Dm_){return mapi_aux(f,_Dk_,xs$0,_Dm_)} + return [0,caml_call2(f,i,x),_Dl_]} function mapi(f,xs) - {var _Dr_=0;return function(_Ds_){return mapi_aux(f,_Dr_,xs,_Ds_)}} + {var _Di_=0;return function(_Dj_){return mapi_aux(f,_Di_,xs,_Dj_)}} 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} + if(! match)return 0; + var xs$0=match[2],x=match[1],s$0=caml_call2(f,s,x); + return [0,s$0,function(_Dh_){return tail_scan(f,s$0,xs$0,_Dh_)}]} function scan(f,s,xs) - {function _Dn_(_Dp_){return tail_scan(f,s,xs,_Dp_)} - return function(_Do_){return [0,s,_Dn_]}} + {function _De_(_Dg_){return tail_scan(f,s,xs,_Dg_)} + return function(_Df_){return [0,s,_De_]}} 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}} + if(! match)return 0; + var xs$0=match[2],x=match[1]; + return [0,x,take_aux(n - 1 | 0,xs$0)]}} function take(n,xs) {if(n < 0)invalid_arg(cst_Seq_take);return take_aux(n,xs)} function drop(n,xs) @@ -11030,107 +11429,92 @@ {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}} + if(! match)return 0; + 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}} :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} + if(! match)return 0; + var xs$0=match[2],x=match[1]; + return caml_call1(p,x) + ?[0,x,function(_Dd_){return take_while(p,xs$0,_Dd_)}] + :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}} + if(! node)return 0; + var xs$1=node[2],x=node[1]; + if(! caml_call1(p,x))return node; + var xs$0=xs$1}} 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} + if(! match)return 0; + var xs$0=match[2],x=match[1],_C6_=caml_call1(eq,x); + function _C7_(_Dc_){return drop_while(_C6_,xs$0,_Dc_)} + function _C8_(_Db_){return group(eq,_C7_,_Db_)} + var _C9_=caml_call1(eq,x); + function _C__(_Da_){return take_while(_C9_,xs$0,_Da_)} + return [0,function(_C$_){return [0,x,_C__]},_C8_]} 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} + if(! match)return 0; + var xs$0=match[2],x=match[1]; + return [0,x,memoize(xs$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}} + return function(_C5_) + {var _C4_=caml_obj_tag(s); + return 250 === _C4_?s[1]:246 === _C4_?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} + if(! match)return 0; + var xs$0=match[2],x=match[1]; + return [0,x,once(xs$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} + if(! match)return 0; + var xs$0=match[2],x=match[1],match$0=caml_call1(ys,0); + if(! match$0)return 0; + var ys$0=match$0[2],y=match$0[1]; + return [0,[0,x,y],function(_C3_){return zip(xs$0,ys$0,_C3_)}]} 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} + if(! match)return 0; + var xs$0=match[2],x=match[1],match$0=caml_call1(ys,0); + if(! match$0)return 0; + var ys$0=match$0[2],y=match$0[1]; + function _C1_(_C2_){return map2(f,xs$0,ys$0,_C2_)} + return [0,caml_call2(f,x,y),_C1_]} 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)} + if(! match)return caml_call1(ys,0); + var xs$0=match[2],x=match[1]; + return [0,x,function(_C0_){return interleave(ys,xs$0,_C0_)}]} function sorted_merge1(cmp,x,xs,y,ys) {return 0 < caml_call2(cmp,x,y) ?[0, y, - function(_C7_) + function(_CY_) {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]}] + if(! match)return [0,x,xs]; + var ys$0=match[2],y=match[1]; + return sorted_merge1(cmp,x,xs,y,ys$0)}] :[0, x, - function(_C8_) + function(_CZ_) {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]}]} + if(! match)return [0,y,ys]; + var xs$0=match[2],x=match[1]; + return sorted_merge1(cmp,x,xs$0,y,ys)}]} function sorted_merge(cmp,xs,ys,param) {var match=caml_call1(xs,0),match$0=caml_call1(ys,0); if(match) @@ -11143,102 +11527,99 @@ 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} + if(! match)return 0; + var xys$0=match[2],match$0=match[1],x=match$0[1]; + return [0,x,function(_CX_){return map_fst(xys$0,_CX_)}]} 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} + if(! match)return 0; + var xys$0=match[2],match$0=match[1],y=match$0[2]; + return [0,y,function(_CW_){return map_snd(xys$0,_CW_)}]} function unzip(xys) - {function _C2_(_C4_){return map_snd(xys,_C4_)} - return [0,function(_C3_){return map_fst(xys,_C3_)},_C2_]} + {function _CT_(_CV_){return map_snd(xys,_CV_)} + return [0,function(_CU_){return map_fst(xys,_CU_)},_CT_]} 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}} + if(! match)return 0; + 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(_CS_){return filter_map_find_left_map(f,xs$1,_CS_)}]} + var xs$0=xs$1}} 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}} + if(! match)return 0; + 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(_CR_){return filter_map_find_right_map(f,xs$1,_CR_)}]}} function partition_map(f,xs) - {function _CX_(_CZ_){return filter_map_find_right_map(f,xs,_CZ_)} + {function _CO_(_CQ_){return filter_map_find_right_map(f,xs,_CQ_)} return [0, - function(_CY_){return filter_map_find_left_map(f,xs,_CY_)}, - _CX_]} + function(_CP_){return filter_map_find_left_map(f,xs,_CP_)}, + _CO_]} 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 _CK_(x){return 1 - caml_call1(p,x)} + function _CL_(_CN_){return filter(_CK_,xs,_CN_)} + return [0,function(_CM_){return filter(p,xs,_CM_)},_CL_]} function peel(xss) - {return unzip(function(_CS_){return filter_map(uncons,xss,_CS_)})} + {return unzip(function(_CJ_){return filter_map(uncons,xss,_CJ_)})} 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) + if(! is_empty(heads)) + return [0,heads,function(_CI_){return transpose(tails,_CI_)}]; + if(is_empty(tails))return 0; + throw [0,Assert_failure,_p_]} + function _q_(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)} + if(! match)return transpose(remainders,0); + 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], + _CC_=function(_CH_){return [0,xs$0,tails]}, + _CD_=function(_CG_){return _q_(_CC_,xss$0,_CG_)}; + return [0,function(_CF_){return [0,x,heads]},_CD_]} + var match$2=peel(remainders),tails$0=match$2[2],heads$0=match$2[1]; + return [0,heads$0,function(_CE_){return _q_(tails$0,xss$0,_CE_)}]} 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 _Cw_(x) + {function _CA_(y){return caml_call2(f,x,y)} + return function(_CB_){return map$1(_CA_,ys,_CB_)}} + function xss(_Cz_){return map$1(_Cw_,xs,_Cz_)} + function _Cv_(_Cy_){return _q_(empty,xss,_Cy_)} + return function(_Cx_){return concat(_Cv_,_Cx_)}} 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} + if(! match)return 0; + var x=match[1]; + return [0,x,c]} 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}} + if(! match)return 0; + var xs=match[2],x=match[1]; + s[1] = xs; + return [0,x]}} function ints(i,param) - {var _CC_=i + 1 | 0;return [0,i,function(_CD_){return ints(_CC_,_CD_)}]} + {var _Ct_=i + 1 | 0;return [0,i,function(_Cu_){return ints(_Ct_,_Cu_)}]} var Stdlib_Seq= [0, @@ -11302,17 +11683,18 @@ 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 value(o,default$0){if(! o)return default$0;var v=o[1];return v} 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} + {if(! param)return invalid_arg(cst_option_is_None); + var v=param[1]; + return v} + function bind(o,f){if(! o)return 0;var v=o[1];return caml_call1(f,v)} + function join(param){if(! param)return 0;var o=param[1];return o} + function map$2(f,o){if(! o)return 0;var v=o[1];return [0,caml_call1(f,v)]} function fold$0(none,some,param) - {if(param){var v=param[1];return caml_call1(some,v)}return none} + {if(! param)return none;var v=param[1];return caml_call1(some,v)} function iter$0(f,param) - {if(param){var v=param[1];return caml_call1(f,v)}return 0} + {if(! param)return 0;var v=param[1];return caml_call1(f,v)} function is_none(param){return param?0:1} function is_some(param){return param?1:0} function equal$1(eq,o0,o1) @@ -11322,17 +11704,18 @@ 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} + {if(! o0)return o1?-1:0; + var _Cs_=o0[1]; + if(! o1)return 1; + var v1=o1[1]; + return caml_call2(cmp,_Cs_,v1)} 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} + {if(! param)return [1,none];var v=param[1];return [0,v]} + function to_list(param){if(! param)return 0;var v=param[1];return [0,v,0]} function to_seq(param) - {if(param){var v=param[1];return function(_CA_){return return$0(v,_CA_)}} - return empty} + {if(! param)return empty; + var v=param[1]; + return function(_Cr_){return return$0(v,_Cr_)}} var Stdlib_Option= [0, @@ -11356,19 +11739,20 @@ 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} + {if(0 !== r[0])return default$0;var v=r[1];return v} function get_ok(param) - {if(0 === param[0]){var v=param[1];return v} - return invalid_arg(cst_result_is_Error)} + {if(0 !== param[0])return invalid_arg(cst_result_is_Error); + var v=param[1]; + return v} 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} + {if(0 !== r[0])return r;var v=r[1];return caml_call1(f,v)} + function join$0(e){if(0 !== e[0])return e;var r=e[1];return r} function map$3(f,e) - {if(0 === e[0]){var v=e[1];return [0,caml_call1(f,v)]}return e} + {if(0 !== e[0])return e;var v=e[1];return [0,caml_call1(f,v)]} 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) @@ -11376,36 +11760,37 @@ 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} + {if(0 !== param[0])return 0;var v=param[1];return caml_call1(f,v)} 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)}} + {var _Cp_=r0[1]; + if(0 === r1[0]){var v1=r1[1];return caml_call2(ok,_Cp_,v1)}} else - {var _Cz_=r0[1]; - if(0 !== r1[0]){var e1=r1[1];return caml_call2(error,_Cz_,e1)}} + {var _Cq_=r0[1]; + if(0 !== r1[0]){var e1=r1[1];return caml_call2(error,_Cq_,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]; + {var _Cn_=r0[1]; + if(0 !== r1[0])return -1; + var v1=r1[1]; + return caml_call2(ok,_Cn_,v1)} + var _Co_=r0[1]; if(0 === r1[0])return 1; var e1=r1[1]; - return caml_call2(error,_Cx_,e1)} + return caml_call2(error,_Co_,e1)} function to_option(param) - {if(0 === param[0]){var v=param[1];return [0,v]}return 0} + {if(0 !== param[0])return 0;var v=param[1];return [0,v]} function to_list$0(param) - {if(0 === param[0]){var v=param[1];return [0,v,0]}return 0} + {if(0 !== param[0])return 0;var v=param[1];return [0,v,0]} function to_seq$0(param) - {if(0 === param[0]) - {var v=param[1];return function(_Cv_){return return$0(v,_Cv_)}} - return empty} + {if(0 !== param[0])return empty; + var v=param[1]; + return function(_Cm_){return return$0(v,_Cm_)}} var Stdlib_Result= [0, @@ -11429,32 +11814,32 @@ to_list$0, to_seq$0]; caml_register_global(784,Stdlib_Result,"Stdlib__Result"); - function equal$3(_Cu_,_Ct_){return _Cu_ === _Ct_?1:0} + function equal$3(_Cl_,_Ck_){return _Cl_ === _Ck_?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_} + function _r_(_Cj_){return _Cj_} var Stdlib_Bool= [0, - function(_Cr_){return 1 - _Cr_}, + function(_Ci_){return 1 - _Ci_}, equal$3, compare$3, - _t_, + _r_, 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)} + {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} + {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)) + if(14 > c) switch(c) {case 8:return cst_b; case 9:return cst_t; @@ -11472,18 +11857,18 @@ 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} + {var _Ch_=c - 192 | 0,switch$0=0; + if(30 < _Ch_ >>> 0) + {if(25 >= _Ch_ + 127 >>> 0)switch$0 = 1} else - if(23 !== _Cq_)switch$0 = 1; + if(23 !== _Ch_)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} + {var _Cg_=c - 224 | 0,switch$0=0; + if(30 < _Cg_ >>> 0) + {if(25 >= _Cg_ + 127 >>> 0)switch$0 = 1} else - if(23 !== _Cp_)switch$0 = 1; + if(23 !== _Cg_)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} @@ -11515,12 +11900,12 @@ 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_; + {var _Cc_=0 <= i?1:0,_Cd_=_Cc_?i <= 55295?1:0:_Cc_; + if(_Cd_) + var _Ce_=_Cd_; else - var _Co_=57344 <= i?1:0,_Cn_=_Co_?i <= 1114111?1:0:_Co_; - return _Cn_} + var _Cf_=57344 <= i?1:0,_Ce_=_Cf_?i <= 1114111?1:0:_Cf_; + return _Ce_} function of_int(i) {return is_valid(i) ?i @@ -11536,31 +11921,28 @@ 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} + function unsafe_to_char(_Cb_){return _Cb_} + function equal$5(_Ca_,_B$_){return _Ca_ === _B$_?1:0} var compare$5=caml_int_compare; - function hash(_Ch_){return _Ch_} + function hash(_B__){return _B__} 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_]} + {if(0 > u)throw [0,Assert_failure,_t_]; + if(127 >= u)return 1; + if(2047 >= u)return 2; + if(65535 >= u)return 3; + if(1114111 < u)throw [0,Assert_failure,_s_]; + return 4} 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_} + {if(0 > u)throw [0,Assert_failure,_v_]; + if(65535 >= u)return 2; + if(1114111 < u)throw [0,Assert_failure,_u_]; + return 4} + function _w_(_B9_){return _B9_} var Stdlib_Uchar= [0, @@ -11572,8 +11954,8 @@ pred, is_valid, of_int, - function(_Cf_){return _Cf_}, - _y_, + function(_B8_){return _B8_}, + _w_, is_char, of_char, to_char, @@ -11592,117 +11974,97 @@ 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}} + {if(! param)return len; + var param$0=param[2],len$0=len + 1 | 0,len=len$0,param=param$0}} function cons$0(a,l){return [0,a,l]} function hd(param) - {if(param){var a=param[1];return a}return failwith(cst_hd)} + {if(! param)return failwith(cst_hd);var a=param[1];return a} function tl(param) - {if(param){var l=param[2];return l}return failwith(cst_tl)} + {if(! param)return failwith(cst_tl);var l=param[2];return l} 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)} + {if(0 > n)return invalid_arg(cst_List_nth); + var l$0=l,n$0=n; + for(;;) + {if(! l$0)return failwith(cst_nth); + 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}} 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)} + {if(0 > n)return invalid_arg(cst_List_nth$0); + var l$0=l,n$0=n; + for(;;) + {if(! l$0)return 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}} 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}} + {if(! l1$0)return l2$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}} 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)} + {if(0 > len)return invalid_arg(cst_List_init); + if(50 >= len)return init_aux$0(0,len,f); + 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}} function flatten(param) - {if(param){var r=param[2],l=param[1];return append(l,flatten(r))} - return 0} + {if(! param)return 0; + var r=param[2],l=param[1]; + return append(l,flatten(r))} 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)} + {if(! param)return 0; + var l=param[2],a=param[1],r=caml_call1(f,a); + return [0,r,map$4(f,l)]} + function _x_(i,f,param) + {if(! param)return 0; + var l=param[2],a=param[1],r=caml_call2(f,i,a); + return [0,r,_x_(i + 1 | 0,f,l)]} + function mapi$0(f,l){return _x_(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}} + {if(! param$0)return accu; + var + l=param$0[2], + a=param$0[1], + accu$0=[0,caml_call1(f,a),accu], + accu=accu$0, + param$0=l}} 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}} + {if(! param$0)return 0; + var l=param$0[2],a=param$0[1]; + caml_call1(f,a); + var param$0=l}} 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}} + {if(! param)return 0; + var l=param[2],a=param[1]; + caml_call2(f,i,a); + var i$0=i + 1 | 0,i=i$0,param=l}} 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}} + {if(! l$0)return accu$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}} 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} + {if(! l)return accu; + var l$0=l[2],a=l[1]; + return caml_call2(f,a,fold_right(f,l$0,accu))} function map2$0(f,l1,l2) {if(l1) {if(l2) @@ -11770,20 +12132,17 @@ 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}} + {if(! param$0)return 1; + var l=param$0[2],a=param$0[1],_B7_=caml_call1(p,a); + if(! _B7_)return _B7_; + var param$0=l}} 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}} + {if(! param$0)return 0; + var l=param$0[2],a=param$0[1],_B6_=caml_call1(p,a); + if(_B6_)return _B6_; + var param$0=l}} function for_all2$0(p,l1,l2) {var l1$0=l1,l2$0=l2; for(;;) @@ -11794,9 +12153,10 @@ 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_}} + _B5_=caml_call2(p,a1,a2); + if(! _B5_)return _B5_; + var l1$0=l1$1,l2$0=l2$1; + continue}} else if(! l2$0)return 1; return invalid_arg(cst_List_for_all2)}} @@ -11810,8 +12170,8 @@ a2=l2$0[1], l1$1=l1$0[2], a1=l1$0[1], - _Cb_=caml_call2(p,a1,a2); - if(_Cb_)return _Cb_; + _B4_=caml_call2(p,a1,a2); + if(_B4_)return _B4_; var l1$0=l1$1,l2$0=l2$1; continue}} else @@ -11820,218 +12180,175 @@ 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}} + {if(! param$0)return 0; + var l=param$0[2],a=param$0[1],_B3_=0 === caml_compare(a,x)?1:0; + if(_B3_)return _B3_; + var param$0=l}} 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}} + {if(! param$0)return 0; + var l=param$0[2],a=param$0[1],_B2_=a === x?1:0; + if(_B2_)return _B2_; + var param$0=l}} 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}} + {if(! param$0)throw Not_found; + 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}} 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}} + {if(! param$0)return 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}} 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}} + {if(! param$0)throw Not_found; + var l=param$0[2],match=param$0[1],b=match[2],a=match[1]; + if(a === x)return b; + var param$0=l}} 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}} + {if(! param$0)return 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}} 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}} + {if(! param$0)return 0; + var + l=param$0[2], + match=param$0[1], + a=match[1], + _B1_=0 === caml_compare(a,x)?1:0; + if(_B1_)return _B1_; + var param$0=l}} 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}} + {if(! param$0)return 0; + var l=param$0[2],match=param$0[1],a=match[1],_B0_=a === x?1:0; + if(_B0_)return _B0_; + var param$0=l}} 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} + {if(! param)return 0; + var l=param[2],pair=param[1],a=pair[1]; + return 0 === caml_compare(a,x)?l:[0,pair,remove_assoc(x,l)]} 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} + {if(! param)return 0; + var l=param[2],pair=param[1],a=pair[1]; + return a === x?l:[0,pair,remove_assq(x,l)]} 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}} + {if(! param$0)throw Not_found; + var l=param$0[2],x=param$0[1]; + if(caml_call1(p,x))return x; + var param$0=l}} 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}} + {if(! param$0)return 0; + var l=param$0[2],x=param$0[1]; + if(caml_call1(p,x))return [0,x]; + var param$0=l}} 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}} + {if(! param$0)return 0; + var l=param$0[2],x=param$0[1],result=caml_call1(f,x); + if(result)return result; + var param$0=l}} 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)}}} + {if(! param)return rev(accu$0); + 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}}} 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)}} + {if(! param$0)return rev(acc); + 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}} 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)}}} + {if(! param)return rev(accu$0); + 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}}} 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)}} + {if(! param$0)return rev(acc); + 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}} 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)]}} + {if(! param$0)return [0,accu$0,rev(l_accu)]; + 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}} 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_]}} + {if(! param$0){var _BZ_=rev(no);return [0,rev(yes),_BZ_]} + 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}} 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_]}} + {if(! param$0){var _BY_=rev(right);return [0,rev(left),_BY_]} + 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}} 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_} + {if(! param)return _y_; + 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]]} function combine(l1,l2) {if(l1) {if(l2) @@ -12041,95 +12358,34 @@ 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} + {if(! l1)return l2; + if(! l2)return l1; + 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)]} function fast_sort(cmp,l) - {function rev_sort(n,l) + {function sort(n,l) {if(2 === n) {if(l) - {var _B3_=l[2]; - if(_B3_) + {var _BU_=l[2]; + if(_BU_) {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], + tl=_BU_[2], + x2=_BU_[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 _BW_=l[2]; + if(_BW_) + {var _BX_=_BW_[2]; + if(_BX_) {var - tl$1=_B2_[2], - x3=_B2_[1], - x2$0=_B1_[1], + tl$1=_BX_[2], + x3=_BX_[1], + x2$0=_BW_[1], x1$0=l[1], s$0= 0 < caml_call2(cmp,x1$0,x2$0) @@ -12164,14 +12420,11 @@ {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)} + var _BV_=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) + var _BV_=rev_append(l2,accu); + return [0,_BV_,tl$0]}} + function rev_sort(n,l) {if(2 === n) {if(l) {var _BQ_=l[2]; @@ -12180,8 +12433,7 @@ 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]]; + 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) @@ -12194,52 +12446,18 @@ 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_} + 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, @@ -12256,17 +12474,19 @@ 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; + {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 _BR_=rev_append(l1,accu)} else var _BR_=rev_append(l2,accu); return [0,_BR_,tl$0]}} - function sort(n,l) + var len=length$1(l); + return 2 <= len?sort(len,l)[1]:l} + function sort_uniq(cmp,l) + {function sort(n,l) {if(2 === n) {if(l) {var _BH_=l[2]; @@ -12361,23 +12581,116 @@ else var _BI_=rev_append(l2,accu); return [0,_BI_,tl$0]}} + function rev_sort(n,l) + {if(2 === n) + {if(l) + {var _By_=l[2]; + if(_By_) + {var + tl=_By_[2], + x2=_By_[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 _BA_=l[2]; + if(_BA_) + {var _BB_=_BA_[2]; + if(_BB_) + {var + tl$1=_BB_[2], + x3=_BB_[1], + x2$0=_BA_[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), + _BC_= + 0 === c$2 + ?[0,x2$0,0] + :0 < c$2?[0,x2$0,[0,x3,0]]:[0,x3,[0,x2$0,0]], + s$0=_BC_; + else + if(0 < c$1) + {var c$3=caml_call2(cmp,x2$0,x3); + if(0 === c$3) + var _BD_=[0,x1$0,[0,x2$0,0]]; + else + if(0 < c$3) + var _BD_=[0,x1$0,[0,x2$0,[0,x3,0]]]; + else + var + c$4=caml_call2(cmp,x1$0,x3), + _BE_= + 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]]], + _BD_=_BE_; + var s$0=_BD_} + else + {var c$5=caml_call2(cmp,x1$0,x3); + if(0 === c$5) + var _BF_=[0,x2$0,[0,x1$0,0]]; + else + if(0 < c$5) + var _BF_=[0,x2$0,[0,x1$0,[0,x3,0]]]; + else + var + c$6=caml_call2(cmp,x2$0,x3), + _BG_= + 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]]], + _BF_=_BG_; + var s$0=_BF_} + 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 _Bz_=rev_append(l1,accu)} + else + var _Bz_=rev_append(l2,accu); + return [0,_Bz_,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}} + {if(! l1$0)return l2$0?-1:0; + if(! l2$0)return 1; + var l2$1=l2$0[2],l1$1=l1$0[2],l1$0=l1$1,l2$0=l2$1}} 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}} + {if(! l$0)return 0 === n$0?0:0 < n$0?-1:1; + var l$1=l$0[2]; + if(0 >= n$0)return 1; + var n$1=n$0 - 1 | 0,l$0=l$1,n$0=n$1}} function equal$6(eq,l1,l2) {var l1$0=l1,l2$0=l2; for(;;) @@ -12388,40 +12701,37 @@ 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_}} + _Bx_=caml_call2(eq,a1,a2); + if(! _Bx_)return _Bx_; + var l1$0=l1$1,l2$0=l2$1; + continue}} 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}} + {if(! l1$0)return l2$0?-1:0; + var _Bv_=l1$0[2],_Bw_=l1$0[1]; + if(! l2$0)return 1; + var l2$1=l2$0[2],a2=l2$0[1],c=caml_call2(cmp,_Bw_,a2); + if(0 !== c)return c; + var l1$0=_Bv_,l2$0=l2$1}} 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_)}} + {if(! l)return 0; + var tail=l[2],x=l[1]; + return [0,x,function(_Bu_){return aux(tail,_Bu_)}]} + return function(_Bt_){return aux(l,_Bt_)}} 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 _Bs_=0; + return rev(fold_left(function(acc,x){return [0,x,acc]},_Bs_,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} + if(! match)return 0; + var next=match[2],x=match[1]; + return [0,x,direct(depth - 1 | 0,next)]} return direct(500,seq)} var include$0= @@ -12493,7 +12803,7 @@ 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} + function equal$7(_Br_,_Bq_){return _Br_ === _Bq_?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} @@ -12517,13 +12827,13 @@ 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_; + {var s=caml_create_bytes(n),_Bo_=n - 1 | 0,_Bn_=0; + if(_Bo_ >= 0) + {var i=_Bn_; for(;;) {caml_bytes_unsafe_set(s,i,caml_call1(f,i)); - var _By_=i + 1 | 0; - if(_Bx_ !== i){var i=_By_;continue} + var _Bp_=i + 1 | 0; + if(_Bo_ !== i){var i=_Bp_;continue} break}} return s} var empty$0=caml_create_bytes(0); @@ -12534,18 +12844,17 @@ 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)) + {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; + {var c=a + b | 0,_Bm_=b < 0?1:0,match=c < 0?1:0,switch$0=0; if(a < 0) - {if(_Bv_ && ! match)switch$0 = 1} + {if(_Bm_ && ! match)switch$0 = 1} else - if(! _Bv_ && match)switch$0 = 1; + if(! _Bm_ && match)switch$0 = 1; return switch$0?invalid_arg(cst_Bytes_extend):c} function extend(s,left,right) {var @@ -12559,8 +12868,7 @@ 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)) + {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) @@ -12573,15 +12881,17 @@ <= ofs1 && - ! - ((caml_ml_bytes_length(s1) - len | 0) < ofs1) + (caml_ml_bytes_length(s1) - len | 0) + >= + ofs1 && 0 <= ofs2 && - ! - ((caml_ml_bytes_length(s2) - len | 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) @@ -12594,72 +12904,72 @@ <= ofs1 && - ! - ((caml_ml_string_length(s1) - len | 0) < ofs1) + (caml_ml_string_length(s1) - len | 0) + >= + ofs1 && 0 <= ofs2 && - ! - ((caml_ml_bytes_length(s2) - len | 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_; + {var _Bk_=caml_ml_bytes_length(a) - 1 | 0,_Bj_=0; + if(_Bk_ >= 0) + {var i=_Bj_; for(;;) {caml_call1(f,caml_bytes_unsafe_get(a,i)); - var _Bu_=i + 1 | 0; - if(_Bt_ !== i){var i=_Bu_;continue} + var _Bl_=i + 1 | 0; + if(_Bk_ !== i){var i=_Bl_;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_; + {var _Bh_=caml_ml_bytes_length(a) - 1 | 0,_Bg_=0; + if(_Bh_ >= 0) + {var i=_Bg_; for(;;) {caml_call2(f,i,caml_bytes_unsafe_get(a,i)); - var _Br_=i + 1 | 0; - if(_Bq_ !== i){var i=_Br_;continue} + var _Bi_=i + 1 | 0; + if(_Bh_ !== i){var i=_Bi_;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; + {if(! l)return empty$0; + var seplen=caml_ml_bytes_length(sep),acc=0,param=l,pos$1=0; + for(;;) + {if(param) + {var _Bd_=param[1]; + if(param[2]) + {var + tl=param[2], + x=(caml_ml_bytes_length(_Bd_) + seplen | 0) + acc | 0, + acc$0=acc <= x?x:invalid_arg(cst_Bytes_concat), + acc=acc$0, + param=tl; + continue} + var _Bf_=caml_ml_bytes_length(_Bd_) + acc | 0} + else + var _Bf_=acc; + var dst=caml_create_bytes(_Bf_),pos=pos$1,param$0=l; 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} + {if(! param$0)return dst; + var _Be_=param$0[1]; + if(param$0[2]) + {var tl$0=param$0[2]; + caml_blit_bytes(_Be_,0,dst,pos,caml_ml_bytes_length(_Be_)); + caml_blit_bytes + (sep,0,dst,pos + caml_ml_bytes_length(_Be_) | 0,seplen); + var + pos$0=(pos + caml_ml_bytes_length(_Be_) | 0) + seplen | 0, + pos=pos$0, + param$0=tl$0; + continue} + caml_blit_bytes(_Be_,0,dst,pos,caml_ml_bytes_length(_Be_)); + return dst}}} function cat$0(s1,s2) {var l1=caml_ml_bytes_length(s1), @@ -12669,11 +12979,11 @@ 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} + {var _Bc_=param - 9 | 0,switch$0=0; + if(4 < _Bc_ >>> 0) + {if(23 === _Bc_)switch$0 = 1} else - if(2 !== _Bl_)switch$0 = 1; + if(2 !== _Bc_)switch$0 = 1; return switch$0?1:0} function trim(s) {var len=caml_ml_bytes_length(s),i=[0,0]; @@ -12686,34 +12996,34 @@ {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_; + {var n=[0,0],_A7_=caml_ml_bytes_length(s) - 1 | 0,_A6_=0; + if(_A7_ >= 0) + {var i$0=_A6_; 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} + {var _A$_=match - 34 | 0,switch$1=0; + if(58 < _A$_ >>> 0) + {if(93 <= _A$_)switch$1 = 1} else - if(56 < _Bi_ - 1 >>> 0){switch$0 = 1;switch$1 = 1} - if(! switch$1){var _Bj_=1;switch$0 = 2}} + if(56 < _A$_ - 1 >>> 0){switch$0 = 1;switch$1 = 1} + if(! switch$1){var _Ba_=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} + switch(switch$0){case 0:var _Ba_=4;break;case 1:var _Ba_=2;break} + n[1] = n[1] + _Ba_ | 0; + var _Bb_=i$0 + 1 | 0; + if(_A7_ !== i$0){var i$0=_Bb_;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_; + var _A9_=caml_ml_bytes_length(s) - 1 | 0,_A8_=0; + if(_A9_ >= 0) + {var i=_A8_; for(;;) {var c=caml_bytes_unsafe_get(s,i),switch$2=0; if(35 <= c) @@ -12768,53 +13078,53 @@ 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} + var _A__=i + 1 | 0; + if(_A9_ !== i){var i=_A__;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_; + var r=caml_create_bytes(l),_A4_=l - 1 | 0,_A3_=0; + if(_A4_ >= 0) + {var i=_A3_; 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} + var _A5_=i + 1 | 0; + if(_A4_ !== i){var i=_A5_;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_; + var r=caml_create_bytes(l),_A1_=l - 1 | 0,_A0_=0; + if(_A1_ >= 0) + {var i=_A0_; 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} + var _A2_=i + 1 | 0; + if(_A1_ !== i){var i=_A2_;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_; + {var r=[0,x],_AY_=caml_ml_bytes_length(a) - 1 | 0,_AX_=0; + if(_AY_ >= 0) + {var i=_AX_; 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} + var _AZ_=i + 1 | 0; + if(_AY_ !== i){var i=_AZ_;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_; + {var r=[0,x],_AV_=caml_ml_bytes_length(a) - 1 | 0; + if(_AV_ >= 0) + {var i=_AV_; 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} + var _AW_=i - 1 | 0; + if(0 !== i){var i=_AW_;continue} break}} return r[1]} function exists$1(p,s) @@ -12822,15 +13132,13 @@ 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}} + var i$0=i + 1 | 0,i=i$0}} 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}} + if(! caml_call1(p,caml_bytes_unsafe_get(s,i)))return 0; + var i$0=i + 1 | 0,i=i$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) @@ -12844,124 +13152,113 @@ {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_} + _AU_=len_pre <= len_s?1:0; + if(! _AU_)return _AU_; + 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}} 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_} + _AT_=0 <= diff?1:0; + if(! _AT_)return _AT_; + 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}} 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}} + var i$1=i$0 + 1 | 0,i$0=i$1}} 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}} + var i$1=i$0 + 1 | 0,i$0=i$1}} 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); + 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); + 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}} + {if(0 > 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}} 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); + {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}} + {if(0 > 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}} 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); + {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)) + 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_} + {index_rec(s,l,i,c);var _AR_=1;return _AR_} + catch(_AS_) + {_AS_ = caml_wrap_exception(_AS_); + if(_AS_ === Not_found)return 0; + throw _AS_} 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)) + {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_} + {rindex_rec(s,i,c);var _AP_=1;return _AP_} + catch(_AQ_) + {_AQ_ = caml_wrap_exception(_AQ_); + if(_AQ_ === Not_found)return 0; + throw _AQ_} 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_; + _AL_=caml_ml_bytes_length(s) - 1 | 0; + if(_AL_ >= 0) + {var i=_AL_; 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_]; + {var _AN_=r[1]; + r[1] = [0,sub(s,i + 1 | 0,(j[1] - i | 0) - 1 | 0),_AN_]; j[1] = i} - var _AX_=i - 1 | 0; - if(0 !== i){var i=_AX_;continue} + var _AO_=i - 1 | 0; + if(0 !== i){var i=_AO_;continue} break}} - var _AV_=r[1]; - return [0,sub(s,0,j[1]),_AV_]} + var _AM_=r[1]; + return [0,sub(s,0,j[1]),_AM_]} 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)} @@ -12969,17 +13266,17 @@ 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_)}} + var x=caml_bytes_get(s,i),_AJ_=i + 1 | 0; + return [0,x,function(_AK_){return aux(_AJ_,_AK_)}]} + var _AH_=0; + return function(_AI_){return aux(_AH_,_AI_)}} 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_)}} + var x=caml_bytes_get(s,i),_AF_=i + 1 | 0; + return [0,[0,i,x],function(_AG_){return aux(_AF_,_AG_)}]} + var _AD_=0; + return function(_AE_){return aux(_AD_,_AE_)}} function of_seq$0(i) {var n=[0,0],buf=[0,make$0(256,0)]; iter @@ -13024,7 +13321,7 @@ 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_} + {var _AB_=b < 144?1:0,_AC_=_AB_ || (191 < b?1:0);return _AC_} 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} @@ -13035,7 +13332,7 @@ if(224 <= b0) {var switch$0=0; if(237 <= b0) - {if(! (245 <= b0)) + {if(245 > b0) switch(b0 - 237 | 0) {case 0: var i$0=i + 1 | 0; @@ -13096,7 +13393,7 @@ ?dec_invalid(3) :dec_ret(4,utf_8_uchar_4(b0,b1$2,b2$2,b3$0))}} else - {if(! (225 <= b0)) + {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); @@ -13120,7 +13417,7 @@ ?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(128 > b0)return dec_ret(1,b0); if(194 <= b0) {var i$15=i + 1 | 0; if(max < i$15)return dec_invalid(1); @@ -13130,38 +13427,35 @@ :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} + {function set(_AA_,_Az_,_Ay_) + {caml_bytes_unsafe_set(_AA_,_Az_,_Ay_);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_]} + if(0 > u)throw [0,Assert_failure,_A_]; + if(127 >= u){caml_bytes_set(b,i,u);return 1} + if(2047 >= u) + {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)} + if(65535 >= u) + {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)} + if(1114111 < u)throw [0,Assert_failure,_z_]; + 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)} function is_valid_utf_8(b) {var max=caml_ml_bytes_length(b) - 1 | 0,i=0; for(;;) @@ -13170,13 +13464,14 @@ if(224 <= match) {var switch$0=0; if(237 <= match) - {if(! (245 <= match)) + {if(245 > match) switch(match - 237 | 0) {case 0: var last=i + 2 | 0; if - (! - (max < last) + (max + >= + last && ! not_in_x80_to_x9F(caml_bytes_unsafe_get(b,i + 1 | 0)) @@ -13188,8 +13483,9 @@ case 3: var last$1=i + 3 | 0; if - (! - (max < last$1) + (max + >= + last$1 && ! not_in_x90_to_xBF(caml_bytes_unsafe_get(b,i + 1 | 0)) @@ -13204,8 +13500,9 @@ case 7: var last$3=i + 3 | 0; if - (! - (max < last$3) + (max + >= + last$3 && ! not_in_x80_to_x8F(caml_bytes_unsafe_get(b,i + 1 | 0)) @@ -13222,8 +13519,9 @@ default: var last$2=i + 3 | 0; if - (! - (max < last$2) + (max + >= + last$2 && ! not_in_x80_to_xBF(caml_bytes_unsafe_get(b,i + 1 | 0)) @@ -13236,11 +13534,12 @@ {var i$3=last$2 + 1 | 0,i=i$3;continue} return 0}} else - {if(! (225 <= match)) + {if(225 > match) {var last$4=i + 2 | 0; if - (! - (max < last$4) + (max + >= + last$4 && ! not_in_xA0_to_xBF(caml_bytes_unsafe_get(b,i + 1 | 0)) @@ -13253,8 +13552,9 @@ if(switch$0) {var last$0=i + 2 | 0; if - (! - (max < last$0) + (max + >= + last$0 && ! not_in_x80_to_xBF(caml_bytes_unsafe_get(b,i + 1 | 0)) @@ -13264,12 +13564,13 @@ {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(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) + (max + >= + last$5 && ! not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last$5))) @@ -13278,15 +13579,15 @@ return 0}} function get_utf_16be_uchar(b,i) {var max=caml_ml_bytes_length(b) - 1 | 0; - if(0 <= i && ! (max < i)) + if(0 <= i && max >= i) {if(i === max)return dec_invalid(1); var hi=get$1(b,i); - if(55296 <= hi && ! (57343 < hi)) + 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)) + 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)} @@ -13294,22 +13595,17 @@ 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_]} + if(0 <= i && max >= i) + {if(0 > u)throw [0,Assert_failure,_C_]; + if(65535 >= u) + {var last$0=i + 1 | 0;return max < last$0?0:(set$0(b,i,u),2)} + if(1114111 < u)throw [0,Assert_failure,_B_]; + 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} 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; @@ -13317,27 +13613,25 @@ {if(max < i)return 1; if(i === max)return 0; var u=get$1(b,i); - if(55296 <= u && ! (57343 < u)) + 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} + 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 i$0=i + 2 | 0,i=i$0}} function get_utf_16le_uchar(b,i) {var max=caml_ml_bytes_length(b) - 1 | 0; - if(0 <= i && ! (max < i)) + 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(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)) + 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)} @@ -13345,22 +13639,18 @@ 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; + if(0 <= i && max >= i) + {if(0 > u)throw [0,Assert_failure,_E_]; + if(65535 >= u) + {var last$0=i + 1 | 0; return max < last$0?0:(caml_bytes_set16(b,i,u),2)} - throw [0,Assert_failure,_G_]} + 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; + caml_bytes_set16(b,i,hi); + caml_bytes_set16(b,i + 2 | 0,lo); + return 4} 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; @@ -13368,16 +13658,14 @@ {if(max < i)return 1; if(i === max)return 0; var u=caml_bytes_get16(b,i); - if(55296 <= u && ! (57343 < u)) + 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} + 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 i$0=i + 2 | 0,i=i$0}} var set_int64_ne=caml_bytes_set64, set_int32_ne=caml_bytes_set32, @@ -13490,57 +13778,56 @@ 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; + {if(! l)return cst$3; + var seplen=caml_ml_string_length(sep),acc=0,param=l,pos$1=0; + for(;;) + {if(param) + {var _Av_=param[1]; + if(param[2]) + {var + tl=param[2], + x=(caml_ml_string_length(_Av_) + seplen | 0) + acc | 0, + acc$0=acc <= x?x:invalid_arg(cst_String_concat), + acc=acc$0, + param=tl; + continue} + var _Ax_=caml_ml_string_length(_Av_) + acc | 0} + else + var _Ax_=acc; + var dst=caml_create_bytes(_Ax_),pos=pos$1,param$0=l; 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; + {if(param$0) + {var _Aw_=param$0[1]; + if(param$0[2]) + {var tl$0=param$0[2]; + caml_blit_string(_Aw_,0,dst,pos,caml_ml_string_length(_Aw_)); + caml_blit_string + (sep,0,dst,pos + caml_ml_string_length(_Aw_) | 0,seplen); + var + pos$0=(pos + caml_ml_string_length(_Aw_) | 0) + seplen | 0, + pos=pos$0, + param$0=tl$0; 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} + caml_blit_string(_Aw_,0,dst,pos,caml_ml_string_length(_Aw_))} + return caml_string_of_bytes(dst)}}} function iter$4(f,s) - {var _AC_=caml_ml_string_length(s) - 1 | 0,_AB_=0; - if(! (_AC_ < 0)) - {var i=_AB_; + {var _At_=caml_ml_string_length(s) - 1 | 0,_As_=0; + if(_At_ >= 0) + {var i=_As_; for(;;) {caml_call1(f,caml_string_unsafe_get(s,i)); - var _AD_=i + 1 | 0; - if(_AC_ !== i){var i=_AD_;continue} + var _Au_=i + 1 | 0; + if(_At_ !== i){var i=_Au_;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_; + {var _Aq_=caml_ml_string_length(s) - 1 | 0,_Ap_=0; + if(_Aq_ >= 0) + {var i=_Ap_; for(;;) {caml_call2(f,i,caml_string_unsafe_get(s,i)); - var _AA_=i + 1 | 0; - if(_Az_ !== i){var i=_AA_;continue} + var _Ar_=i + 1 | 0; + if(_Aq_ !== i){var i=_Ar_;continue} break}} return 0} function map$6(f,s) @@ -13554,11 +13841,11 @@ 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} + {var _Ao_=param - 9 | 0,switch$0=0; + if(4 < _Ao_ >>> 0) + {if(23 === _Ao_)switch$0 = 1} else - if(2 !== _Ax_)switch$0 = 1; + if(2 !== _Ao_)switch$0 = 1; return switch$0?1:0} function trim$0(s) {if(caml_string_equal(s,cst$4))return s; @@ -13574,87 +13861,79 @@ {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} + var match=caml_string_unsafe_get(s,i),_An_=match - 32 | 0,switch$0=0; + if(59 < _An_ >>> 0) + {if(33 < _An_ - 61 >>> 0)switch$0 = 1} else - if(2 === _Aw_)switch$0 = 1; + if(2 === _An_)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}} + var i$0=i + 1 | 0,i=i$0}} 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}} + var i$1=i$0 + 1 | 0,i$0=i$1}} 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}} + var i$1=i$0 + 1 | 0,i$0=i$1}} 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); + 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); + 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}} + {if(0 > 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}} 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); + {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}} + {if(0 > 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}} 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)) + {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)) + 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_} + {index_rec$0(s,l,i,c);var _Al_=1;return _Al_} + catch(_Am_) + {_Am_ = caml_wrap_exception(_Am_); + if(_Am_ === Not_found)return 0; + throw _Am_} 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)) + {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_} + {rindex_rec$0(s,i,c);var _Aj_=1;return _Aj_} + catch(_Ak_) + {_Ak_ = caml_wrap_exception(_Ak_); + if(_Ak_ === Not_found)return 0; + throw _Ak_} 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)))} @@ -13668,51 +13947,47 @@ {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_} + _Ai_=len_pre <= len_s?1:0; + if(! _Ai_)return _Ai_; + 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}} 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_} + _Ah_=0 <= diff?1:0; + if(! _Ah_)return _Ah_; + 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}} 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_; + _Ad_=caml_ml_string_length(s) - 1 | 0; + if(_Ad_ >= 0) + {var i=_Ad_; 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_]; + {var _Af_=r[1]; + r[1] = [0,sub$0(s,i + 1 | 0,(j[1] - i | 0) - 1 | 0),_Af_]; j[1] = i} - var _Ap_=i - 1 | 0; - if(0 !== i){var i=_Ap_;continue} + var _Ag_=i - 1 | 0; + if(0 !== i){var i=_Ag_;continue} break}} - var _An_=r[1]; - return [0,sub$0(s,0,j[1]),_An_]} + var _Ae_=r[1]; + return [0,sub$0(s,0,j[1]),_Ae_]} function uppercase$1(s) {return caml_string_of_bytes(uppercase$0(caml_bytes_of_string(s)))} function lowercase$1(s) @@ -13833,33 +14108,24 @@ 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 equal$10(param,_Ac_){return 1} + function compare$10(param,_Ab_){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)) + (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)) + {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)) + {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) @@ -13882,25 +14148,24 @@ 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)} + if(0 > l)return invalid_arg(cst_Array_init); + var res=caml_make_vect(l,caml_call1(f,0)),_z$_=l - 1 | 0,_z__=1; + if(_z$_ >= 1) + {var i=_z__; + for(;;) + {res[1 + i] = caml_call1(f,i); + var _Aa_=i + 1 | 0; + if(_z$_ !== i){var i=_Aa_;continue} + break}} + return res} 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_; + {var res=caml_make_vect(sx,[0]),_z8_=sx - 1 | 0,_z7_=0; + if(_z8_ >= 0) + {var x=_z7_; for(;;) {res[1 + x] = caml_make_vect(sy,init); - var _Ag_=x + 1 | 0; - if(_Af_ !== x){var x=_Ag_;continue} + var _z9_=x + 1 | 0; + if(_z8_ !== x){var x=_z9_;continue} break}} return res} function copy$1(a) @@ -13913,11 +14178,11 @@ ?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)) + {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)) + {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) @@ -13930,127 +14195,118 @@ <= ofs1 && - ! - ((a1.length - 1 - len | 0) < ofs1) + (a1.length - 1 - len | 0) + >= + ofs1 && 0 <= ofs2 && - ! - ((a2.length - 1 - len | 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_; + {var _z5_=a.length - 1 - 1 | 0,_z4_=0; + if(_z5_ >= 0) + {var i=_z4_; for(;;) {caml_call1(f,a[1 + i]); - var _Ad_=i + 1 | 0; - if(_Ac_ !== i){var i=_Ad_;continue} + var _z6_=i + 1 | 0; + if(_z5_ !== i){var i=_z6_;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__; + var _z2_=a.length - 1 - 1 | 0,_z1_=0; + if(_z2_ >= 0) + {var i=_z1_; for(;;) {caml_call2(f,a[1 + i],b[1 + i]); - var _Aa_=i + 1 | 0; - if(_z$_ !== i){var i=_Aa_;continue} + var _z3_=i + 1 | 0; + if(_z2_ !== i){var i=_z3_;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_; + var r=caml_make_vect(l,caml_call1(f,a[1])),_zZ_=l - 1 | 0,_zY_=1; + if(_zZ_ >= 1) + {var i=_zY_; for(;;) {r[1 + i] = caml_call1(f,a[1 + i]); - var _z9_=i + 1 | 0; - if(_z8_ !== i){var i=_z9_;continue} + var _z0_=i + 1 | 0; + if(_zZ_ !== i){var i=_z0_;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_; + var r=caml_make_vect(la,caml_call2(f,a[1],b[1])),_zW_=la - 1 | 0,_zV_=1; + if(_zW_ >= 1) + {var i=_zV_; 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} + var _zX_=i + 1 | 0; + if(_zW_ !== i){var i=_zX_;continue} break}} return r} function iteri$3(f,a) - {var _z2_=a.length - 1 - 1 | 0,_z1_=0; - if(! (_z2_ < 0)) - {var i=_z1_; + {var _zT_=a.length - 1 - 1 | 0,_zS_=0; + if(_zT_ >= 0) + {var i=_zS_; for(;;) {caml_call2(f,i,a[1 + i]); - var _z3_=i + 1 | 0; - if(_z2_ !== i){var i=_z3_;continue} + var _zU_=i + 1 | 0; + if(_zT_ !== i){var i=_zU_;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_; + var r=caml_make_vect(l,caml_call2(f,0,a[1])),_zQ_=l - 1 | 0,_zP_=1; + if(_zQ_ >= 1) + {var i=_zP_; for(;;) {r[1 + i] = caml_call2(f,i,a[1 + i]); - var _z0_=i + 1 | 0; - if(_zZ_ !== i){var i=_z0_;continue} + var _zR_=i + 1 | 0; + if(_zQ_ !== i){var i=_zR_;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}} + {if(0 > i)return res; + var res$0=[0,a[1 + i],res],i$0=i - 1 | 0,i=i$0,res=res$0}} 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}} + {if(! param$0)return accu$0; + var + param$1=param$0[2], + accu$1=accu$0 + 1 | 0, + accu$0=accu$1, + param$0=param$1}} 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]} + {if(! l)return [0]; + var tl=l[2],hd=l[1],a=caml_make_vect(list_length(0,l),hd),i=1,param=tl; + for(;;) + {if(! param)return a; + 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}} 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_; + {var r=[0,x],_zN_=a.length - 1 - 1 | 0,_zM_=0; + if(_zN_ >= 0) + {var i=_zM_; for(;;) {r[1] = caml_call2(f,r[1],a[1 + i]); - var _zX_=i + 1 | 0; - if(_zW_ !== i){var i=_zX_;continue} + var _zO_=i + 1 | 0; + if(_zN_ !== i){var i=_zO_;continue} break}} return r[1]} function fold_left_map$0(f,acc,input_array) @@ -14062,10 +14318,10 @@ 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_; + _zK_=len - 1 | 0, + _zJ_=1; + if(_zK_ >= 1) + {var i=_zJ_; for(;;) {var match$0=caml_call2(f,acc$1[1],input_array[1 + i]), @@ -14073,18 +14329,18 @@ 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} + var _zL_=i + 1 | 0; + if(_zK_ !== i){var i=_zL_;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_; + {var r=[0,x],_zH_=a.length - 1 - 1 | 0; + if(_zH_ >= 0) + {var i=_zH_; for(;;) {r[1] = caml_call2(f,a[1 + i],r[1]); - var _zR_=i - 1 | 0; - if(0 !== i){var i=_zR_;continue} + var _zI_=i - 1 | 0; + if(0 !== i){var i=_zI_;continue} break}} return r[1]} function exists$3(p,a) @@ -14092,23 +14348,21 @@ 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}} + var i$0=i + 1 | 0,i=i$0}} 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}} + if(! caml_call1(p,a[1 + i]))return 0; + var i$0=i + 1 | 0,i=i$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}} + if(! caml_call2(p,l1[1 + i],l2[1 + i]))return 0; + var i$0=i + 1 | 0,i=i$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); @@ -14116,38 +14370,33 @@ 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}} + var i$0=i + 1 | 0,i=i$0}} 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}} + var i$0=i + 1 | 0,i=i$0}} 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}} + var i$0=i + 1 | 0,i=i$0}} 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}} + var i$0=i + 1 | 0,i=i$0}} 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}} + var i$0=i + 1 | 0,i=i$0}} function split$0(x) {if(caml_equal(x,[0]))return [0,[0],[0]]; var @@ -14157,29 +14406,29 @@ 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_; + _zF_=n - 1 | 0, + _zE_=1; + if(_zF_ >= 1) + {var i=_zE_; 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} + var _zG_=i + 1 | 0; + if(_zF_ !== i){var i=_zG_;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_; + var x=caml_make_vect(na,[0,a[1],b[1]]),_zC_=na - 1 | 0,_zB_=1; + if(_zC_ >= 1) + {var i=_zB_; for(;;) {x[1 + i] = [0,a[1 + i],b[1 + i]]; - var _zM_=i + 1 | 0; - if(_zL_ !== i){var i=_zM_;continue} + var _zD_=i + 1 | 0; + if(_zC_ !== i){var i=_zD_;continue} break}} return x} var Bottom=[248,cst_Stdlib_Array_Bottom,caml_fresh_oo_id(0)]; @@ -14187,19 +14436,19 @@ {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) + {var _zu_=i31 + 1 | 0,_zv_=caml_check_bound(a,_zu_)[1 + _zu_]; + if(caml_call2(cmp,caml_check_bound(a,i31)[1 + i31],_zv_) < 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) + _zw_=i31 + 2 | 0, + _zx_=caml_check_bound(a,_zw_)[1 + _zw_], + _zy_=x[1]; + if(caml_call2(cmp,caml_check_bound(a,_zy_)[1 + _zy_],_zx_) < 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_))) + {var _zz_=i31 + 1 | 0,_zA_=caml_check_bound(a,_zz_)[1 + _zz_]; + if(0 > caml_call2(cmp,caml_check_bound(a,i31)[1 + i31],_zA_)) return i31 + 1 | 0} if(i31 < l)return i31; throw [0,Bottom,i]} @@ -14208,76 +14457,77 @@ 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 _zt_=caml_check_bound(a,j)[1 + j]; + caml_check_bound(a,i$0)[1 + i$0] = _zt_; 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_} + {var _zs_=trickledown(l,i,e);return _zs_} 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}} + if(exn[1] !== Bottom)throw exn; + var i$0=exn[2]; + caml_check_bound(a,i$0)[1 + i$0] = e; + return 0}} 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}} + {var i$1=maxson(l,i$0),_zr_=caml_check_bound(a,i$1)[1 + i$1]; + caml_check_bound(a,i$0)[1 + i$0] = _zr_; + var i$0=i$1}} function bubble(l,i) {try - {var _zz_=bubbledown(l,i);return _zz_} + {var _zq_=bubbledown(l,i);return _zq_} 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_; + if(exn[1] !== Bottom)throw exn; + var i$0=exn[2]; + return i$0}} + var l=a.length - 1,_zi_=((l + 1 | 0) / 3 | 0) - 1 | 0; + if(_zi_ >= 0) + {var i$2=_zi_; 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} + var _zp_=i$2 - 1 | 0; + if(0 !== i$2){var i$2=_zp_;continue} break}} - var _zs_=l - 1 | 0; - if(! (_zs_ < 2)) - {var i$0=_zs_; + var _zj_=l - 1 | 0; + if(_zj_ >= 2) + {var i$0=_zj_; 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_; + _zn_=caml_check_bound(a,0)[1]; + caml_check_bound(a,i$0)[1 + i$0] = _zn_; 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(i === father)throw [0,Assert_failure,_F_]; 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_; + {var _zh_=caml_check_bound(a,father)[1 + father]; + caml_check_bound(a,i)[1 + i] = _zh_; 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} + var _zo_=i$0 - 1 | 0; + if(2 !== i$0){var i$0=_zo_;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_; + var _zk_=1 < l?1:0; + if(_zk_) + {var e=caml_check_bound(a,1)[2],_zl_=caml_check_bound(a,0)[1]; + caml_check_bound(a,1)[2] = _zl_; caml_check_bound(a,0)[1] = e; - var _zv_=0} + var _zm_=0} else - var _zv_=_zt_; - return _zv_} + var _zm_=_zk_; + return _zm_} function fast_sort$0(cmp,a) {function merge(src1ofs,src1len,src2,src2ofs,src2len,dst,dstofs) {var @@ -14294,51 +14544,49 @@ {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)} + if(i2$0 >= src2r)return blit$1(a,i1,dst,d + 1 | 0,src1r - i1 | 0); + 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} 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)}} + if(i1$0 >= src1r) + return blit$1(src2,i2,dst,d + 1 | 0,src2r - i2 | 0); + 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}} function isortto(srcofs,dst,dstofs,len) - {var _zi_=len - 1 | 0,_zh_=0; - if(! (_zi_ < 0)) - {var i=_zh_; + {var _y$_=len - 1 | 0,_y__=0; + if(_y$_ >= 0) + {var i=_y__; a: for(;;) {var - _zj_=srcofs + i | 0, - e=caml_check_bound(a,_zj_)[1 + _zj_], + _za_=srcofs + i | 0, + e=caml_check_bound(a,_za_)[1 + _za_], 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 _zb_=j[1]; + if(0 < caml_call2(cmp,caml_check_bound(dst,_zb_)[1 + _zb_],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_; + _zc_=j[1], + _zd_=caml_check_bound(dst,_zc_)[1 + _zc_], + _ze_=j[1] + 1 | 0; + caml_check_bound(dst,_ze_)[1 + _ze_] = _zd_; 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} + var _zf_=j[1] + 1 | 0; + caml_check_bound(dst,_zf_)[1 + _zf_] = e; + var _zg_=i + 1 | 0; + if(_y$_ !== i){var i=_zg_;continue a} break} break}} return 0} @@ -14359,39 +14607,34 @@ 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_)}} + {if(i >= a.length - 1)return 0; + var x=a[1 + i],_y8_=i + 1 | 0; + return [0,x,function(_y9_){return aux(_y8_,_y9_)}]} + var _y6_=0; + return function(_y7_){return aux(_y6_,_y7_)}} 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_)}} + {if(i >= a.length - 1)return 0; + var x=a[1 + i],_y4_=i + 1 | 0; + return [0,[0,i,x],function(_y5_){return aux(_y4_,_y5_)}]} + var _y2_=0; + return function(_y3_){return aux(_y2_,_y3_)}} 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 _y1_=0,l=fold_left(function(acc,x){return [0,x,acc]},_y1_,i$2); + if(! l)return [0]; + 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)return a; + 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}} var concat$2=caml_array_concat, include$3= @@ -14441,8 +14684,8 @@ 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_} + {var _y0_=x == runtime.caml_trunc_float(x)?1:0; + return _y0_?is_finite(x):_y0_} 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} @@ -14488,44 +14731,43 @@ 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 _yY_=(ofs + len | 0) - 1 | 0; + if(_yY_ >= ofs) {var i=ofs; for(;;) {a[1 + i] = v; - var _y8_=i + 1 | 0; - if(_y7_ !== i){var i=_y8_;continue} + var _yZ_=i + 1 | 0; + if(_yY_ !== i){var i=_yZ_;continue} break}} return 0} function check(a,ofs,len,msg) - {var _y3_=ofs < 0?1:0; - if(_y3_) - var _y4_=_y3_; + {var _yU_=ofs < 0?1:0; + if(_yU_) + var _yV_=_yU_; else - {var _y5_=len < 0?1:0; - if(_y5_) - var _y4_=_y5_; + {var _yW_=len < 0?1:0; + if(_yW_) + var _yV_=_yW_; 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_} + _yX_=(ofs + len | 0) < 0?1:0, + _yV_=_yX_ || (a.length - 1 < (ofs + len | 0)?1:0)} + return _yV_?invalid_arg(msg):_yV_} 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)} + {if(0 > l)return invalid_arg(cst_Float_Array_init); + var res=caml_floatarray_create(l),_yS_=l - 1 | 0,_yR_=0; + if(_yS_ >= 0) + {var i=_yR_; + for(;;) + {res[1 + i] = caml_call1(f,i); + var _yT_=i + 1 | 0; + if(_yS_ !== i){var i=_yT_;continue} + break}} + return res} function append$2(a1,a2) {var l1=a1.length - 1, @@ -14554,7 +14796,7 @@ var i$0=i + hlen | 0,l$0=tl$0,i=i$0; continue} if(i === acc)return result; - throw [0,Assert_failure,_I_]}}} + throw [0,Assert_failure,_G_]}}} function sub$2(a,ofs,len) {check(a,ofs,len,cst_Float_Array_sub); var result=caml_floatarray_create(len); @@ -14571,98 +14813,96 @@ 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_]})} + {return init$0(a.length - 1,function(_yQ_){return a[1 + _yQ_]})} 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}} + {if(! l$0)return result; + 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}} function iter$6(f,a) - {var _yX_=a.length - 1 - 1 | 0,_yW_=0; - if(! (_yX_ < 0)) - {var i=_yW_; + {var _yO_=a.length - 1 - 1 | 0,_yN_=0; + if(_yO_ >= 0) + {var i=_yN_; for(;;) {caml_call1(f,a[1 + i]); - var _yY_=i + 1 | 0; - if(_yX_ !== i){var i=_yY_;continue} + var _yP_=i + 1 | 0; + if(_yO_ !== i){var i=_yP_;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_; + var _yL_=a.length - 1 - 1 | 0,_yK_=0; + if(_yL_ >= 0) + {var i=_yK_; for(;;) {caml_call2(f,a[1 + i],b[1 + i]); - var _yV_=i + 1 | 0; - if(_yU_ !== i){var i=_yV_;continue} + var _yM_=i + 1 | 0; + if(_yL_ !== i){var i=_yM_;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_; + {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_call1(f,a[1 + i]); - var _yS_=i + 1 | 0; - if(_yR_ !== i){var i=_yS_;continue} + var _yJ_=i + 1 | 0; + if(_yI_ !== i){var i=_yJ_;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 r=caml_floatarray_create(la),_yF_=la - 1 | 0,_yE_=0; + if(_yF_ >= 0) {var i=_yE_; for(;;) - {r[1] = caml_call2(f,r[1],a[1 + i]); + {r[1 + i] = caml_call2(f,a[1 + i],b[1 + i]); var _yG_=i + 1 | 0; if(_yF_ !== i){var i=_yG_;continue} break}} + return r} + function iteri$4(f,a) + {var _yC_=a.length - 1 - 1 | 0,_yB_=0; + if(_yC_ >= 0) + {var i=_yB_; + for(;;) + {caml_call2(f,i,a[1 + i]); + var _yD_=i + 1 | 0; + if(_yC_ !== i){var i=_yD_;continue} + break}} + return 0} + function mapi$4(f,a) + {var l=a.length - 1,r=caml_floatarray_create(l),_yz_=l - 1 | 0,_yy_=0; + if(_yz_ >= 0) + {var i=_yy_; + for(;;) + {r[1 + i] = caml_call2(f,i,a[1 + i]); + var _yA_=i + 1 | 0; + if(_yz_ !== i){var i=_yA_;continue} + break}} + return r} + function fold_left$4(f,x,a) + {var r=[0,x],_yw_=a.length - 1 - 1 | 0,_yv_=0; + if(_yw_ >= 0) + {var i=_yv_; + for(;;) + {r[1] = caml_call2(f,r[1],a[1 + i]); + var _yx_=i + 1 | 0; + if(_yw_ !== i){var i=_yx_;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_; + {var r=[0,x],_yt_=a.length - 1 - 1 | 0; + if(_yt_ >= 0) + {var i=_yt_; for(;;) {r[1] = caml_call2(f,a[1 + i],r[1]); - var _yD_=i - 1 | 0; - if(0 !== i){var i=_yD_;continue} + var _yu_=i - 1 | 0; + if(0 !== i){var i=_yu_;continue} break}} return r[1]} function exists$4(p,a) @@ -14670,28 +14910,23 @@ 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}} + var i$0=i + 1 | 0,i=i$0}} 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}} + if(! caml_call1(p,a[1 + i]))return 0; + var i$0=i + 1 | 0,i=i$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}} + var i$0=i + 1 | 0,i=i$0}} 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}} + {if(i === n)return 0;if(x == a[1 + i])return 1;var i$0=i + 1 | 0,i=i$0}} var Bottom$0=[248,cst_Stdlib_Float_Array_Bottom,caml_fresh_oo_id(0)]; function sort$0(cmp,a) {function maxson(l,i) @@ -14715,10 +14950,9 @@ < l && - ! - (0 - <= - caml_call2(cmp,caml_array_get(a,i31),caml_array_get(a,i31 + 1 | 0)))) + 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]} @@ -14726,42 +14960,43 @@ {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)}} + if(0 >= caml_call2(cmp,caml_array_get(a,j),e)) + return caml_array_set(a,i$0,e); + caml_array_set(a,i$0,caml_array_get(a,j)); + var i$0=j}} function trickle(l,i,e) {try - {var _yB_=trickledown(l,i,e);return _yB_} + {var _ys_=trickledown(l,i,e);return _ys_} 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}} + if(exn[1] !== Bottom$0)throw exn; + var i$0=exn[2]; + return caml_array_set(a,i$0,e)}} 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}} + var i$0=i$1}} function bubble(l,i) {try - {var _yA_=bubbledown(l,i);return _yA_} + {var _yr_=bubbledown(l,i);return _yr_} 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_; + if(exn[1] !== Bottom$0)throw exn; + var i$0=exn[2]; + return i$0}} + var l=a.length - 1,_yl_=((l + 1 | 0) / 3 | 0) - 1 | 0; + if(_yl_ >= 0) + {var i$2=_yl_; 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} + var _yq_=i$2 - 1 | 0; + if(0 !== i$2){var i$2=_yq_;continue} break}} - var _yv_=l - 1 | 0; - if(! (_yv_ < 2)) - {var i$0=_yv_; + var _ym_=l - 1 | 0; + if(_ym_ >= 2) + {var i$0=_ym_; a: for(;;) {var e$0=caml_array_get(a,i$0); @@ -14769,25 +15004,25 @@ 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(i === father)throw [0,Assert_failure,_H_]; 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} + var _yp_=i$0 - 1 | 0; + if(2 !== i$0){var i$0=_yp_;continue a} break} break}} - var _yw_=1 < l?1:0; - if(_yw_) + var _yn_=1 < l?1:0; + if(_yn_) {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)} + var _yo_=caml_array_set(a,0,e)} else - var _yx_=_yw_; - return _yx_} + var _yo_=_yn_; + return _yo_} function stable_sort(cmp,a) {function merge(src1ofs,src1len,src2,src2ofs,src2len,dst,dstofs) {var @@ -14804,30 +15039,23 @@ {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)} + if(i2$0 >= src2r)return blit$2(a,i1,dst,d + 1 | 0,src1r - i1 | 0); + var + d$0=d + 1 | 0, + s2$0=caml_array_get(src2,i2$0), + i2=i2$0, + s2=s2$0, + d=d$0; + continue} 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)}} + if(i1$0 >= src1r) + return blit$2(src2,i2,dst,d + 1 | 0,src2r - i2 | 0); + var d$1=d + 1 | 0,s1$0=caml_array_get(a,i1$0),i1=i1$0,s1=s1$0,d=d$1}} function isortto(srcofs,dst,dstofs,len) - {var _ys_=len - 1 | 0,_yr_=0; - if(! (_ys_ < 0)) - {var i=_yr_; + {var _yj_=len - 1 | 0,_yi_=0; + if(_yj_ >= 0) + {var i=_yi_; a: for(;;) {var @@ -14846,8 +15074,8 @@ 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} + var _yk_=i + 1 | 0; + if(_yj_ !== i){var i=_yk_;continue a} break} break}} return 0} @@ -14865,69 +15093,65 @@ 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_)}} + {if(i >= a.length - 1)return 0; + var x=a[1 + i],_yg_=i + 1 | 0; + return [0,x,function(_yh_){return aux(_yg_,_yh_)}]} + var _ye_=0; + return function(_yf_){return aux(_ye_,_yf_)}} 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_)}} + {if(i >= a.length - 1)return 0; + var x=a[1 + i],_yc_=i + 1 | 0; + return [0,[0,i,x],function(_yd_){return aux(_yc_,_yd_)}]} + var _ya_=0; + return function(_yb_){return aux(_ya_,_yb_)}} function of_seq$3(i$2) {var - _yi_=0, - param$0=fold_left(function(acc,x){return [0,x,acc]},_yi_,i$2), + _x$_=0, + param$0=fold_left(function(acc,x){return [0,x,acc]},_x$_,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}} + {if(! param)return a; + var tl=param[2],hd=param[1]; + a[1 + i] = hd; + var i$0=i - 1 | 0,i=i$0,param=tl}} 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_; + var r=caml_make_vect(l,caml_call1(f,a[1])),_x9_=l - 1 | 0,_x8_=1; + if(_x9_ >= 1) + {var i=_x8_; for(;;) {r[1 + i] = caml_call1(f,a[1 + i]); - var _yh_=i + 1 | 0; - if(_yg_ !== i){var i=_yh_;continue} + var _x__=i + 1 | 0; + if(_x9_ !== i){var i=_x__;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_; + {var l=a.length - 1,r=caml_floatarray_create(l),_x6_=l - 1 | 0,_x5_=0; + if(_x6_ >= 0) + {var i=_x5_; for(;;) {r[1 + i] = caml_call1(f,a[1 + i]); - var _ye_=i + 1 | 0; - if(_yd_ !== i){var i=_ye_;continue} + var _x7_=i + 1 | 0; + if(_x6_ !== i){var i=_x7_;continue} break}} return r} var - _K_=caml_floatarray_create, - _L_=caml_array_set, - _M_=caml_array_get, - _N_= + _I_=caml_floatarray_create, + _J_=caml_array_set, + _K_=caml_array_get, + _L_= [0, - function(_yb_){return _yb_.length - 1}, - _M_, - _L_, - make$2, + function(_x4_){return _x4_.length - 1}, _K_, + _J_, + make$2, + _I_, init$4, append$2, concat$3, @@ -14957,9 +15181,9 @@ of_seq$3, map_to_array, map_from_array], - _O_=caml_floatarray_create, - _P_=caml_array_set, - _Q_=caml_array_get, + _M_=caml_floatarray_create, + _N_=caml_array_set, + _O_=caml_array_get, Stdlib_Float= [0, zero$0, @@ -14990,11 +15214,11 @@ min_max_num, hash$0, [0, - function(_ya_){return _ya_.length - 1}, - _Q_, - _P_, - make$2, + function(_x3_){return _x3_.length - 1}, _O_, + _N_, + make$2, + _M_, init$4, append$2, concat$3, @@ -15024,7 +15248,7 @@ of_seq$3, map_to_array, map_from_array], - _N_]; + _L_]; 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} @@ -15033,22 +15257,17 @@ 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))) + {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$_}} + {var _x1_=[0,caml_int_of_string(s)];return _x1_} + catch(_x2_) + {_x2_ = caml_wrap_exception(_x2_); + if(_x2_[1] === Failure)return 0; + throw _x2_}} 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) @@ -15083,29 +15302,31 @@ 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 succ$2(n){return caml_int64_add(n,_P_)} + function pred$2(n){return caml_int64_sub(n,_Q_)} 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_)} + {return caml_greaterequal(n,_R_)?n:runtime.caml_int64_neg(n)} + function lognot$1(n){return runtime.caml_int64_xor(n,_S_)} 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(zero$2,n) && - ! - (0 < caml_int64_compare(n,max_int$3))) + 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_}} + {var _xZ_=[0,caml_int64_of_string(s)];return _xZ_} + catch(_x0_) + {_x0_ = caml_wrap_exception(_x0_); + if(_x0_[1] === Failure)return 0; + throw _x0_}} 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) @@ -15154,22 +15375,17 @@ 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))) + {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_}} + {var _xX_=[0,caml_int_of_string(s)];return _xX_} + catch(_xY_) + {_xY_ = caml_wrap_exception(_xY_); + if(_xY_[1] === Failure)return 0; + throw _xY_}} 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) @@ -15209,38 +15425,38 @@ 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_) + _xU_=0 <= result?1:0, + _xV_=_xU_?buf[12] !== dummy_pos?1:0:_xU_; + if(_xV_) {buf[11] = buf[12]; - var _x5_=buf[12]; - buf[12] = [0,_x5_[1],_x5_[2],_x5_[3],buf[4] + buf[6] | 0]} + var _xW_=buf[12]; + buf[12] = [0,_xW_[1],_xW_[2],_xW_[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_) + _xR_=0 <= result?1:0, + _xS_=_xR_?buf[12] !== dummy_pos?1:0:_xR_; + if(_xS_) {buf[11] = buf[12]; - var _x2_=buf[12]; - buf[12] = [0,_x2_[1],_x2_[2],_x2_[3],buf[4] + buf[6] | 0]} + var _xT_=buf[12]; + buf[12] = [0,_xT_[1],_xT_[2],_xT_[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, + _xD_=with_positions?zero_pos:dummy_pos, + _xE_=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); + _xF_=[0], + _xG_=0, + _xH_=0, + _xI_=0, + _xJ_=0, + _xK_=0, + _xL_=0, + _xM_=0, + _xN_=caml_create_bytes(1024); return [0, function(lexbuf) {var @@ -15270,48 +15486,20 @@ 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_; + var t=lexbuf[10],_xP_=t.length - 1 - 1 | 0,_xO_=0; + if(_xP_ >= 0) + {var i=_xO_; 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} + var _xQ_=i + 1 | 0; + if(_xP_ !== i){var i=_xQ_;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}, + _xM_, _xL_, _xK_, _xJ_, @@ -15320,16 +15508,44 @@ _xG_, _xF_, _xE_, - _xD_, + _xD_]} + 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 + _xs_=with_positions?zero_pos:dummy_pos, + _xt_=with_positions?zero_pos:dummy_pos, + _xu_=[0], + _xv_=1, + _xw_=0, + _xx_=0, + _xy_=0, + _xz_=0, + _xA_=0, + _xB_=caml_ml_string_length(s), + _xC_=to_bytes(s); + return [0, + function(lexbuf){lexbuf[9] = 1;return 0}, _xC_, - _xB_]} + _xB_, + _xA_, + _xz_, + _xy_, + _xx_, + _xw_, + _xv_, + _xu_, + _xt_, + _xs_]} 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]]; + {var _xr_=lexbuf[12]; + lexbuf[12] = [0,fname,_xr_[2],_xr_[3],_xr_[4]]; return 0} function with_positions(lexbuf){return lexbuf[12] !== dummy_pos?1:0} function lexeme(lexbuf) @@ -15338,8 +15554,9 @@ 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} + {if(0 > i1)return 0; + var len=i2 - i1 | 0; + return [0,sub_string(lexbuf[2],i1,len)]} 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} @@ -15352,9 +15569,9 @@ 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_} + _xp_=lcp !== dummy_pos?1:0, + _xq_=_xp_?(lexbuf[12] = [0,lcp[1],lcp[2] + 1 | 0,lcp[4],lcp[4]],0):_xp_; + return _xq_} function flush_input(lb) {lb[6] = 0; lb[4] = 0; @@ -15459,16 +15676,16 @@ 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_} + _xk_=env[13], + _xl_= + caml_call1(caml_check_bound(tables[1],_xk_)[1 + _xk_],env), + _xm_=4, + arg$1=_xl_, + cmd$0=_xm_} + catch(_xo_) + {_xo_ = caml_wrap_exception(_xo_); + if(_xo_ !== Parse_error)throw _xo_; + var arg$1=0,cmd$0=5} var cmd=cmd$0,arg=arg$1; continue; default: @@ -15487,37 +15704,33 @@ 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}; + {if(! is_block(tok)) + return caml_check_bound(tables[2],tok)[1 + tok] === curr_char?1:0; + var _xn_=caml_obj_tag(tok); + return caml_check_bound(tables[3],_xn_)[1 + _xn_] === 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_]} + {var _xj_=env[11] - n | 0;return caml_check_bound(env[2],_xj_)[1 + _xj_]} 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_]}} + {if(0 >= i) + {var _xi_=env[11];return caml_check_bound(env[4],_xi_)[1 + _xi_]} + var + _xg_=(env[11] - i | 0) + 1 | 0, + st=caml_check_bound(env[3],_xg_)[1 + _xg_], + _xh_=(env[11] - i | 0) + 1 | 0, + en=caml_check_bound(env[4],_xh_)[1 + _xh_]; + if(caml_notequal(st,en))return st; + var i$0=i - 1 | 0,i=i$0}} function symbol_end_pos(param) - {var _xn_=env[11];return caml_check_bound(env[4],_xn_)[1 + _xn_]} + {var _xf_=env[11];return caml_check_bound(env[4],_xf_)[1 + _xf_]} function rhs_start_pos(n) - {var _xm_=env[11] - (env[12] - n | 0) | 0; - return caml_check_bound(env[3],_xm_)[1 + _xm_]} + {var _xe_=env[11] - (env[12] - n | 0) | 0; + return caml_check_bound(env[3],_xe_)[1 + _xe_]} function rhs_end_pos(n) - {var _xl_=env[11] - (env[12] - n | 0) | 0; - return caml_check_bound(env[4],_xl_)[1 + _xl_]} + {var _xd_=env[11] - (env[12] - n | 0) | 0; + return caml_check_bound(env[4],_xd_)[1 + _xd_]} 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]} @@ -15538,7 +15751,7 @@ rhs_end_pos, clear_parser, Parse_error, - function(_xk_){return runtime.caml_set_parser_trace(_xk_)}, + runtime.caml_set_parser_trace, YYexit, yyparse, peek_val, @@ -15549,219 +15762,190 @@ Stdlib_Set= [0, function(Ord) - {function height(param){if(param){var h=param[4];return h}return 0} + {function height(param){if(! param)return 0;var h=param[4];return h} 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_]} + var _xc_=hr <= hl?hl + 1 | 0:hr + 1 | 0; + return [0,l,v,r,_xc_]} 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_]} + {if(! l)return invalid_arg(cst_Set_bal$0); + var lr=l[3],lv=l[2],ll=l[1],_w9_=height(lr); + if(_w9_ <= height(ll))return create(ll,lv,create(lr,v,r)); + if(! lr)return invalid_arg(cst_Set_bal); + var lrr=lr[3],lrv=lr[2],lrl=lr[1],_w__=create(lrr,v,r); + return create(create(ll,lv,lrl),lrv,_w__)} + if((hl + 2 | 0) >= hr) + {var _xb_=hr <= hl?hl + 1 | 0:hr + 1 | 0;return [0,l,v,r,_xb_]} + if(! r)return invalid_arg(cst_Set_bal$2); + var rr=r[3],rv=r[2],rl=r[1],_w$_=height(rl); + if(_w$_ <= height(rr))return create(create(l,v,rl),rv,rr); + if(! rl)return invalid_arg(cst_Set_bal$1); + var rlr=rl[3],rlv=rl[2],rll=rl[1],_xa_=create(rlr,rv,rr); + return create(create(l,v,rll),rlv,_xa_)} 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]} + {if(! t)return [0,0,x,0,1]; + 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)} 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)} + {if(! param)return singleton(x); + var r=param[3],v=param[2],l=param[1]; + return bal(add_min_element(x,l),v,r)} 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)} + {if(! param)return singleton(x); + var r=param[3],v=param[2],l=param[1]; + return bal(l,v,add_max_element(x,r))} 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)} + {if(! l)return add_min_element(v,r); + if(! r)return add_max_element(v,l); + 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)} 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}} + {if(! param$0)throw Not_found; + var _w8_=param$0[1]; + if(_w8_){var param$0=_w8_;continue} + var v=param$0[2]; + return v}} 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}} + {if(! param$0)return 0; + var _w7_=param$0[1]; + if(_w7_){var param$0=_w7_;continue} + var v=param$0[2]; + return [0,v]}} 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}} + {if(! param$0)throw Not_found; + if(param$0[3]){var param$1=param$0[3],param$0=param$1;continue} + var v=param$0[2]; + return v}} 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}} + {if(! param$0)return 0; + if(param$0[3]){var param$1=param$0[3],param$0=param$1;continue} + var v=param$0[2]; + return [0,v]}} 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)} + {if(! param)return invalid_arg(cst_Set_remove_min_elt); + var _w6_=param[1]; + if(_w6_) + {var r=param[3],v=param[2];return bal(remove_min_elt(_w6_),v,r)} + var r$0=param[3]; + return r$0} 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} + {if(! t1)return t2; + if(! t2)return t1; + var _w5_=remove_min_elt(t2); + return join(t1,min_elt(t2),_w5_)} 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_} + {if(! param)return _T_; + 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)]} 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}} + {if(! param$0)return 0; + var + r=param$0[3], + v=param$0[2], + l=param$0[1], + c=caml_call2(Ord[1],x,v), + _w4_=0 === c?1:0; + if(_w4_)return _w4_; + var param$1=0 <= c?r:l,param$0=param$1}} 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} + {if(! t)return 0; + var r=t[3],v=t[2],l=t[1],c=caml_call2(Ord[1],x,v); + if(0 === c) + {if(! l)return r; + if(! r)return l; + var _w3_=remove_min_elt(r); + return bal(l,min_elt(r),_w3_)} + 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)} 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} + {if(! s1)return s2; + if(! s2)return s1; + 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], + _w1_=union(r1,r2$0); + return join(union(l1,l2$0),v1,_w1_)} + if(1 === h1)return add(v1,s2); + var + match$0=split(v2,s1), + r1$0=match$0[3], + l1$0=match$0[1], + _w2_=union(r1$0,r2); + return join(union(l1$0,l2),v2,_w2_)} 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} + {if(! s1)return 0; + if(! s2)return 0; + var r1=s1[3],v1=s1[2],l1=s1[1],_wX_=split(v1,s2),_wY_=_wX_[1]; + if(_wX_[2]) + {var r2=_wX_[3],_wZ_=inter(r1,r2); + return join(inter(l1,_wY_),v1,_wZ_)} + var r2$0=_wX_[3],_w0_=inter(r1,r2$0); + return concat(inter(l1,_wY_),_w0_)} 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}]} + {if(! param)return [0,0,function(param){return 0}]; + 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)return 0; + var rr=match[2],lr=match[1]; + return [0,join(l,v,lr),rr]} + var match$0=split_bis(x,l); + if(! match$0)return 0; + var rl=match$0[2],ll=match$0[1]; + return [0,ll,function(param){return join(caml_call1(rl,0),v,r)}]} function disjoint(s1,s2) {var s1$0=s1,s2$0=s2; for(;;) @@ -15769,416 +15953,339 @@ {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} + if(! match)return 0; + var r2=match[2],l2=match[1],_wW_=disjoint(l1,l2); + if(! _wW_)return _wW_; + var s2$1=caml_call1(r2,0),s1$0=r1,s2$0=s2$1; + continue} 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} + {if(! s1)return 0; + if(! s2)return s1; + var r1=s1[3],v1=s1[2],l1=s1[1],_wS_=split(v1,s2),_wT_=_wS_[1]; + if(_wS_[2]) + {var r2=_wS_[3],_wU_=diff(r1,r2); + return concat(diff(l1,_wT_),_wU_)} + var r2$0=_wS_[3],_wV_=diff(r1,r2$0); + return join(diff(l1,_wT_),v1,_wV_)} 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}} + {if(! s$0)return e$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}} 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}} + {if(! e1)return e2?-1:0; + if(! e2)return 1; + 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)return c; + var + e2$1=cons_enum(r2,e2$0), + e1$1=cons_enum(r1,e1$0), + e1=e1$1, + e2=e2$1}} 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}} + {if(! s1$0)return 1; + if(! s2$0)return 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 _wP_=subset(l1,l2); + if(! _wP_)return _wP_; + var s1$0=r1,s2$0=r2; + continue} + if(0 <= c) + {var _wQ_=subset([0,0,v1,r1,0],r2); + if(! _wQ_)return _wQ_; + var s1$0=l1; + continue} + var _wR_=subset([0,l1,v1,0,0],l2); + if(! _wR_)return _wR_; + var s1$0=r1}} 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}} + {if(! param$0)return 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}} 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}} + {if(! s$0)return accu$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}} 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}} + {if(! param$0)return 1; + var r=param$0[3],v=param$0[2],l=param$0[1],_wM_=caml_call1(p,v); + if(_wM_) + {var _wN_=for_all(p,l); + if(_wN_){var param$0=r;continue} + var _wO_=_wN_} + else + var _wO_=_wM_; + return _wO_}} 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}} + {if(! param$0)return 0; + var r=param$0[3],v=param$0[2],l=param$0[1],_wJ_=caml_call1(p,v); + if(_wJ_) + var _wK_=_wJ_; + else + {var _wL_=exists(p,l); + if(! _wL_){var param$0=r;continue} + var _wK_=_wL_} + return _wK_}} 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} + {if(! t)return 0; + 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)return concat(l$0,r$0); + if(l === l$0 && r === r$0)return t; + return join(l$0,v,r$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_} + {if(! param)return _U_; + 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 _wH_=concat(lf,rf);return [0,join(lt,v,rt),_wH_]} + var _wI_=join(lf,v,rf); + return [0,concat(lt,rt),_wI_]} function cardinal(param) - {if(param) - {var r=param[3],l=param[1],_wN_=cardinal(r); - return (cardinal(l) + 1 | 0) + _wN_ | 0} - return 0} + {if(! param)return 0; + var r=param[3],l=param[1],_wG_=cardinal(r); + return (cardinal(l) + 1 | 0) + _wG_ | 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}} + {if(! param$0)return accu$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}} 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}} + {if(! param$0)throw Not_found; + 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}} 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}} + {if(! param$1)throw Not_found; + var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; + if(! caml_call1(f,v$0)){var param$1=r$0;continue} + var v0=v$0,param=l$0; + for(;;) + {if(! param)return v0; + var r=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,param=l;continue} + var param=r}}} 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}} + {if(! param$1)return 0; + var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; + if(! caml_call1(f,v$0)){var param$1=r$0;continue} + var v0=v$0,param=l$0; + for(;;) + {if(! param)return [0,v0]; + var r=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,param=l;continue} + var param=r}}} 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}} + {if(! param$1)throw Not_found; + var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; + if(! caml_call1(f,v$0)){var param$1=l$0;continue} + var v0=v$0,param=r$0; + for(;;) + {if(! param)return v0; + var r=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,param=r;continue} + var param=l}}} 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}} + {if(! param$1)return 0; + var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; + if(! caml_call1(f,v$0)){var param$1=l$0;continue} + var v0=v$0,param=r$0; + for(;;) + {if(! param)return [0,v0]; + var r=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,param=r;continue} + var param=l}}} 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}} + {if(! param$0)return 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}} 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} + {var _wF_=max_elt(l); + if(0 <= caml_call2(Ord[1],_wF_,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} + {var _wE_=min_elt(r); + if(0 <= caml_call2(Ord[1],v,_wE_))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} + {if(! t)return 0; + 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)} 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} + {if(! t)return 0; + 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)return t2; + if(! t2)return t1; + var _wD_=remove_min_elt(t2); + return try_join(t1,min_elt(t2),_wD_)} 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} + {if(! l)return empty; + var _ws_=l[2],_wt_=l[1]; + if(! _ws_)return singleton(_wt_); + var _wu_=_ws_[2],_wv_=_ws_[1]; + if(! _wu_)return add(_wv_,singleton(_wt_)); + var _ww_=_wu_[2],_wx_=_wu_[1]; + if(! _ww_)return add(_wx_,add(_wv_,singleton(_wt_))); + var _wy_=_ww_[2],_wz_=_ww_[1]; + if(! _wy_)return add(_wz_,add(_wx_,add(_wv_,singleton(_wt_)))); + if(_wy_[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 _wA_=l[2]; + if(_wA_) + {var l$4=_wA_[2],x1=_wA_[1],x0$0=l[1]; + return [0,[0,[0,0,x0$0,0,1],x1,0,2],l$4]}} + break; + default: + if(l) + {var _wB_=l[2]; + if(_wB_) + {var _wC_=_wB_[2]; + if(_wC_) + {var l$5=_wC_[2],x2=_wC_[1],x1$0=_wB_[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)throw [0,Assert_failure,_V_]; + 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]}; + return sub(length$1(l$0),l$0)[1]} + var x4=_wy_[1]; + return add(x4,add(_wz_,add(_wx_,add(_wv_,singleton(_wt_)))))} 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} + {if(! c)return 0; + var rest=c[3],t=c[2],x=c[1],_wq_=cons_enum(t,rest); + return [0,x,function(_wr_){return seq_of_enum(_wq_,_wr_)}]} function to_seq(c) - {var _wv_=cons_enum(c,0); - return function(_ww_){return seq_of_enum(_wv_,_ww_)}} + {var _wo_=cons_enum(c,0); + return function(_wp_){return seq_of_enum(_wo_,_wp_)}} 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}} + {if(! s$0)return e$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}} 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} + {if(! c)return 0; + var rest=c[3],t=c[2],x=c[1],_wm_=snoc_enum(t,rest); + return [0,x,function(_wn_){return rev_seq_of_enum(_wm_,_wn_)}]} function to_rev_seq(c) - {var _wr_=snoc_enum(c,0); - return function(_ws_){return rev_seq_of_enum(_wr_,_ws_)}} + {var _wk_=snoc_enum(c,0); + return function(_wl_){return rev_seq_of_enum(_wk_,_wl_)}} function to_seq_from(low,s) {var s$0=s,c=0; for(;;) @@ -16188,10 +16295,10 @@ {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]} + var _wi_=[0,v,r,c]} else - var _wp_=c; - return function(_wq_){return seq_of_enum(_wp_,_wq_)}}} + var _wi_=c; + return function(_wj_){return seq_of_enum(_wi_,_wj_)}}} return [0, empty, is_empty, @@ -16240,397 +16347,327 @@ Stdlib_Map= [0, function(Ord) - {function height(param){if(param){var h=param[5];return h}return 0} + {function height(param){if(! param)return 0;var h=param[5];return h} 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_]} + {var hl=height(l),hr=height(r),_wh_=hr <= hl?hl + 1 | 0:hr + 1 | 0; + return [0,l,x,d,r,_wh_]} 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_]} + {if(! l)return invalid_arg(cst_Map_bal$0); + var lr=l[4],ld=l[3],lv=l[2],ll=l[1],_wc_=height(lr); + if(_wc_ <= height(ll))return create(ll,lv,ld,create(lr,x,d,r)); + if(! lr)return invalid_arg(cst_Map_bal); + var + lrr=lr[4], + lrd=lr[3], + lrv=lr[2], + lrl=lr[1], + _wd_=create(lrr,x,d,r); + return create(create(ll,lv,ld,lrl),lrv,lrd,_wd_)} + if((hl + 2 | 0) >= hr) + {var _wg_=hr <= hl?hl + 1 | 0:hr + 1 | 0;return [0,l,x,d,r,_wg_]} + if(! r)return invalid_arg(cst_Map_bal$2); + var rr=r[4],rd=r[3],rv=r[2],rl=r[1],_we_=height(rl); + if(_we_ <= height(rr))return create(create(l,x,d,rl),rv,rd,rr); + if(! rl)return invalid_arg(cst_Map_bal$1); + var + rlr=rl[4], + rld=rl[3], + rlv=rl[2], + rll=rl[1], + _wf_=create(rlr,rv,rd,rr); + return create(create(l,x,d,rll),rlv,rld,_wf_)} 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]} + {if(! m)return [0,0,x,data,0,1]; + 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)} 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}} + {if(! param$0)throw Not_found; + 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}} 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}} + {if(! param$1)throw Not_found; + 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 param$1=r$0;continue} + var v0=v$0,d0=d$0,param=l$0; + for(;;) + {if(! param)return [0,v0,d0]; + 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}}} 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}} + {if(! param$1)return 0; + 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 param$1=r$0;continue} + var v0=v$0,d0=d$0,param=l$0; + for(;;) + {if(! param)return [0,[0,v0,d0]]; + 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}}} 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}} + {if(! param$1)throw Not_found; + 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 param$1=l$0;continue} + var v0=v$0,d0=d$0,param=r$0; + for(;;) + {if(! param)return [0,v0,d0]; + 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}}} 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}} + {if(! param$1)return 0; + 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 param$1=l$0;continue} + var v0=v$0,d0=d$0,param=r$0; + for(;;) + {if(! param)return [0,[0,v0,d0]]; + 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}}} 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}} + {if(! param$0)return 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}} 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}} + {if(! param$0)return 0; + var + r=param$0[4], + v=param$0[2], + l=param$0[1], + c=caml_call2(Ord[1],x,v), + _wb_=0 === c?1:0; + if(_wb_)return _wb_; + var param$1=0 <= c?r:l,param$0=param$1}} 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}} + {if(! param$0)throw Not_found; + var _wa_=param$0[1]; + if(_wa_){var param$0=_wa_;continue} + var d=param$0[3],v=param$0[2]; + return [0,v,d]}} 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}} + {if(! param$0)return 0; + var _v$_=param$0[1]; + if(_v$_){var param$0=_v$_;continue} + var d=param$0[3],v=param$0[2]; + return [0,[0,v,d]]}} 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}} + {if(! param$0)throw Not_found; + 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]}} 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}} + {if(! param$0)return 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]]}} 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} + {if(! param)return invalid_arg(cst_Map_remove_min_elt); + var _v__=param[1]; + if(_v__) + {var r=param[4],d=param[3],v=param[2]; + return bal(remove_min_binding(_v__),v,d,r)} + var r$0=param[4]; + return r$0} + function _vJ_(t1,t2) + {if(! t1)return t2; + if(! t2)return t1; + var match=min_binding(t2),d=match[2],x=match[1]; + return bal(t1,x,d,remove_min_binding(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} + {if(! m)return 0; + var r=m[4],d=m[3],v=m[2],l=m[1],c=caml_call2(Ord[1],x,v); + if(0 === c)return _vJ_(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)} 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} + {if(! m) + {var match$0=caml_call1(f,0); + if(! match$0)return 0; + var data$0=match$0[1]; + return [0,0,x,data$0,0,1]} + 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)return _vJ_(l,r); + var data=match[1]; + return d === data?m:[0,l,x,data,r,h]} + 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)} 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}} + {if(! param$0)return 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}} 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} + {if(! param)return 0; + 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]} 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} + {if(! param)return 0; + 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]} 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}} + {if(! m$0)return accu$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}} 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}} + {if(! param$0)return 1; + var + r=param$0[4], + d=param$0[3], + v=param$0[2], + l=param$0[1], + _v7_=caml_call2(p,v,d); + if(_v7_) + {var _v8_=for_all(p,l); + if(_v8_){var param$0=r;continue} + var _v9_=_v8_} + else + var _v9_=_v7_; + return _v9_}} 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]} + {if(! param$0)return 0; 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_} + r=param$0[4], + d=param$0[3], + v=param$0[2], + l=param$0[1], + _v4_=caml_call2(p,v,d); + if(_v4_) + var _v5_=_v4_; + else + {var _v6_=exists(p,l); + if(! _v6_){var param$0=r;continue} + var _v5_=_v6_} + return _v5_}} + function add_min_binding(k,x,param) + {if(! param)return singleton(k,x); + var r=param[4],d=param[3],v=param[2],l=param[1]; + return bal(add_min_binding(k,x,l),v,d,r)} + function add_max_binding(k,x,param) + {if(! param)return singleton(k,x); + var r=param[4],d=param[3],v=param[2],l=param[1]; + return bal(l,v,d,add_max_binding(k,x,r))} + function join(l,v,d,r) + {if(! l)return add_min_binding(v,d,r); + if(! r)return add_max_binding(v,d,l); + 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)} + function concat(t1,t2) + {if(! t1)return t2; + if(! t2)return t1; + var match=min_binding(t2),d=match[2],x=match[1]; + return join(t1,x,d,remove_min_binding(t2))} + function concat_or_join(t1,v,d,t2) + {if(! d)return concat(t1,t2);var d$0=d[1];return join(t1,v,d$0,t2)} + function split(x,param) + {if(! param)return _W_; + 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)]} function merge(f,s1,s2) {if(s1) {var h1=s1[5],r1=s1[4],d1=s1[3],v1=s1[2],l1=s1[1]; @@ -16640,25 +16677,24 @@ 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_)}} + _v0_=merge(f,r1,r2), + _v1_=caml_call3(f,v1,[0,d1],d2); + return concat_or_join(merge(f,l1,l2),v1,_v1_,_v0_)}} 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_]} + if(! s2)throw [0,Assert_failure,_X_]; + 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], + _v2_=merge(f,r1$0,r2$0), + _v3_=caml_call3(f,v2,d1$0,[0,d2$0]); + return concat_or_join(merge(f,l1$0,l2$0),v2,_v3_,_v2_)} function union(f,s1,s2) {if(s1) {if(s2) @@ -16681,10 +16717,9 @@ 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)} + if(! d2$0)return join(l,v1,d1,r); + var d2$1=d2$0[1]; + return concat_or_join(l,v1,caml_call3(f,v1,d1,d2$1),r)} var match$0=split(v2,s1), r1$0=match$0[3], @@ -16692,150 +16727,135 @@ 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)} + if(! d1$0)return join(l$0,v2,d2,r$0); + var d1$1=d1$0[1]; + return concat_or_join(l$0,v2,caml_call3(f,v2,d1$1,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} + {if(! m)return 0; + 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)return concat(l$0,r$0); + if(l === l$0 && r === r$0)return m; + return join(l$0,v,d,r$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} + {if(! param)return 0; + 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)return concat(l$0,r$0); + var d$0=fvd[1]; + return join(l$0,v,d$0,r$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 ___} + {if(! param)return _Y_; + 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 _vY_=concat(lf,rf);return [0,join(lt,v,d,rt),_vY_]} + var _vZ_=join(lf,v,d,rf); + return [0,concat(lt,rt),_vZ_]} 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}} + {if(! m$0)return e$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}} 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}} + {if(! e1)return e2?-1:0; + if(! e2)return 1; + 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)return c; + var c$0=caml_call2(cmp,d1,d2); + if(0 !== c$0)return c$0; + var + e2$1=cons_enum(r2,e2$0), + e1$1=cons_enum(r1,e1$0), + e1=e1$1, + e2=e2$1}} 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) + {if(! e1)return e2?0:1; + if(! e2)return 0; + 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], + _vV_=0 === caml_call2(Ord[1],v1,v2)?1:0; + if(_vV_) + {var _vW_=caml_call2(cmp,d1,d2); + if(_vW_) {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}} + e2$1=cons_enum(r2,e2$0), + e1$1=cons_enum(r1,e1$0), + e1=e1$1, + e2=e2$1; + continue} + var _vX_=_vW_} + else + var _vX_=_vV_; + return _vX_}} function cardinal(param) - {if(param) - {var r=param[4],l=param[1],_v1_=cardinal(r); - return (cardinal(l) + 1 | 0) + _v1_ | 0} - return 0} + {if(! param)return 0; + var r=param[4],l=param[1],_vU_=cardinal(r); + return (cardinal(l) + 1 | 0) + _vU_ | 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}} + {if(! param$0)return accu$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}} function bindings(s){return bindings_aux(0,s)} function add_seq(i,m) {return fold_left @@ -16845,37 +16865,33 @@ 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} + {if(! c)return 0; + var rest=c[4],t=c[3],v=c[2],k=c[1],_vS_=cons_enum(t,rest); + return [0,[0,k,v],function(_vT_){return seq_of_enum(_vS_,_vT_)}]} function to_seq(m) - {var _vX_=cons_enum(m,0); - return function(_vY_){return seq_of_enum(_vX_,_vY_)}} + {var _vQ_=cons_enum(m,0); + return function(_vR_){return seq_of_enum(_vQ_,_vR_)}} 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}} + {if(! s$0)return e$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}} 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} + {if(! c)return 0; + var rest=c[4],t=c[3],v=c[2],k=c[1],_vO_=snoc_enum(t,rest); + return [0, + [0,k,v], + function(_vP_){return rev_seq_of_enum(_vO_,_vP_)}]} function to_rev_seq(c) - {var _vT_=snoc_enum(c,0); - return function(_vU_){return rev_seq_of_enum(_vT_,_vU_)}} + {var _vM_=snoc_enum(c,0); + return function(_vN_){return rev_seq_of_enum(_vM_,_vN_)}} function to_seq_from(low,m) {var m$0=m,c=0; for(;;) @@ -16890,10 +16906,10 @@ {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]} + var _vK_=[0,v,d,r,c]} else - var _vR_=c; - return function(_vS_){return seq_of_enum(_vR_,_vS_)}}} + var _vK_=c; + return function(_vL_){return seq_of_enum(_vK_,_vL_)}}} return [0, empty, is_empty, @@ -16942,19 +16958,23 @@ 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} + {var _vI_=s[1]; + if(! _vI_)throw Empty; + var tl=_vI_[2],hd=_vI_[1]; + s[1] = tl; + s[2] = s[2] - 1 | 0; + return hd} 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} + {var _vH_=s[1]; + if(! _vH_)return 0; + var tl=_vH_[2],hd=_vH_[1]; + s[1] = tl; + s[2] = s[2] - 1 | 0; + return [0,hd]} function top(s) - {var _vN_=s[1];if(_vN_){var hd=_vN_[1];return hd}throw Empty} + {var _vG_=s[1];if(! _vG_)throw Empty;var hd=_vG_[1];return hd} function top_opt(s) - {var _vM_=s[1];if(_vM_){var hd=_vM_[1];return [0,hd]}return 0} + {var _vF_=s[1];if(! _vF_)return 0;var hd=_vF_[1];return [0,hd]} 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])} @@ -16986,94 +17006,86 @@ 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) + {var cell=[0,x,0],_vE_=q[3]; + return _vE_ + ?(q[1] = q[1] + 1 | 0,_vE_[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} + {var _vD_=q[2]; + if(! _vD_)throw Empty$0; + var content=_vD_[1]; + return content} function peek_opt(q) - {var _vJ_=q[2];if(_vJ_){var content=_vJ_[1];return [0,content]}return 0} + {var _vC_=q[2];if(! _vC_)return 0;var content=_vC_[1];return [0,content]} 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} + {var _vA_=q[2]; + if(! _vA_)throw Empty$0; + var _vB_=_vA_[1]; + if(_vA_[2]) + {var next=_vA_[2];q[1] = q[1] - 1 | 0;q[2] = next;return _vB_} + clear$0(q); + return _vB_} 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} + {var _vy_=q[2]; + if(! _vy_)return 0; + var _vz_=_vy_[1]; + if(_vy_[2]) + {var next=_vy_[2];q[1] = q[1] - 1 | 0;q[2] = next;return [0,_vz_]} + clear$0(q); + return [0,_vz_]} 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}} + {if(! cell){q_res[3] = prev;return q_res} + 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}} 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}} + {if(! cell)return 0; + var content=cell[1],next=cell[2]; + caml_call1(f,content); + var cell=next}} 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}} + {if(! cell)return accu; + var + content=cell[1], + next=cell[2], + accu$0=caml_call2(f,accu,content), + accu=accu$0, + cell=next}} 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_} + {var _vw_=0 < q1[1]?1:0; + if(! _vw_)return _vw_; + var _vx_=q2[3]; + return _vx_ + ?(q2[1] + = + q2[1] + + + q1[1] + | + 0, + _vx_[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))} 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_)}} + {if(! c)return 0; + var x=c[1],next=c[2]; + return [0,x,function(_vv_){return aux(next,_vv_)}]} + var _vt_=q[2]; + return function(_vu_){return aux(_vt_,_vu_)}} 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 @@ -17104,9 +17116,9 @@ 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} + {if(! param)return 0;var match=param[1],count=match[1];return count} function data(param) - {if(param){var match=param[1],data=match[2];return data}return 0} + {if(! param)return 0;var match=param[1],data=match[2];return data} 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) @@ -17116,28 +17128,28 @@ 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,_$_]} + if(typeof match === "number"){var d$0=d2;continue} + if(0 !== match[0])throw [0,Assert_failure,_Z_]; + var d11=match[2],a=match[1]; + return [0,a,[1,d11,d2]]; 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, + _vp_=caml_obj_tag(f), + d$1=250 === _vp_?f[1]:246 === _vp_?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); + var _vq_=d$0[1],_vr_=_vq_[1]; + if(_vr_) + {var _vs_=_vr_[1]; + if(! _vs_)return 0; + var a$0=_vs_[1]; + _vq_[1] = 0; + return [0,a$0,d$0]} + var match$0=caml_call1(_vq_[2],count); if(match$0){var a$1=match$0[1];return [0,a$1,d$0]} - _vx_[1] = _aa_; + _vq_[1] = ___; return 0; case 4: var b=d$0[1]; @@ -17150,52 +17162,48 @@ 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])]}}} + {var _vk_=s[2]; + if(typeof _vk_ === "number")return 0; + switch(_vk_[0]) + {case 0:var a=_vk_[1];return [0,a]; + case 1: + var d=get_data(s[1],s[2]); + if(typeof d === "number")return 0; + if(0 !== d[0])throw [0,Assert_failure,_$_]; + var a$0=d[1]; + s[2] = d; + return [0,a$0]; + case 2: + var + f=_vk_[1], + _vl_=caml_obj_tag(f), + _vm_=250 === _vl_?f[1]:246 === _vl_?force_lazy_block(f):f; + s[2] = _vm_; + continue; + case 3: + var _vn_=_vk_[1],_vo_=_vn_[1]; + if(_vo_){var a$1=_vo_[1];return a$1} + var x=caml_call1(_vn_[2],s[1]); + _vn_[1] = [0,x]; + return x; + default: + var b=_vk_[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} + {if(! param)return 0;var s=param[1];return peek_data(s)} 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; + {var _vi_=s[2]; + if(typeof _vi_ !== "number") + switch(_vi_[0]) + {case 0:var d=_vi_[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} + var _vj_=_vi_[1]; + if(_vj_[1]){s[1] = s[1] + 1 | 0;_vj_[1] = 0;return 0} break; case 4: - var b=_vp_[1]; + var b=_vi_[1]; if(b[3] <= b[4])fill_buff(b); return 0 === b[3] ?(s[2] = 0,0) @@ -17205,47 +17213,48 @@ if(match)continue; return 0}} function junk(param) - {if(param){var data=param[1];return junk_data(data)}return 0} + {if(! param)return 0;var data=param[1];return junk_data(data)} 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]} + {if(0 >= n)return [0,0,s[2],0]; + var match=peek_data(s); + if(! match)return [0,0,s[2],0]; + 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]} 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} + {if(! param)return 0; + 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} function next(s) {var match=peek$0(s); - if(match){var a=match[1];junk(s);return a} - throw Failure$0} + if(! match)throw Failure$0; + var a=match[1]; + junk(s); + return a} 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}} + if(! match)return 0; + var a=match[1]; + junk(strm); + caml_call1(f,a)}} 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_)]]} + {var _vh_=0; + return [0,[0,0,fold_right(function(x,l){return [0,x,l]},l,_vh_)]]} function of_string(s) {var count=[0,0]; return from @@ -17264,7 +17273,7 @@ :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 iapp(i,s){var _vg_=data(s);return [0,[0,0,[1,data(i),_vg_]]]} 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) @@ -17273,43 +17282,21 @@ 0, [2, [246, - function(_vl_) - {var _vm_=data(s);return [1,data(caml_call1(f,0)),_vm_]}]]]]} + function(_ve_) + {var _vf_=data(s);return [1,data(caml_call1(f,0)),_vf_]}]]]]} function lcons(f,s) {return [0, [0, 0, [2, [246, - function(_vj_) - {var _vk_=data(s);return [0,caml_call1(f,0),_vk_]}]]]]} + function(_vc_) + {var _vd_=data(s);return [0,caml_call1(f,0),_vd_]}]]]]} function lsing(f) - {return [0,[0,0,[2,[246,function(_vi_){return [0,caml_call1(f,0),0]}]]]]} + {return [0,[0,0,[2,[246,function(_vb_){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)}} + {return [0,[0,0,[2,[246,function(_va_){return data(caml_call1(f,0))}]]]]} function dump(f,s) {print_string(cst_count); print_int(count(s)); @@ -17317,6 +17304,26 @@ dump_data(f,data(s)); print_string(cst$6); return print_newline(0)} + function dump_data(f,param) + {if(typeof param === "number")return print_string(cst_Sempty); + 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)}} var Stdlib_Stream= [0, @@ -17353,7 +17360,7 @@ 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)) + {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) @@ -17366,19 +17373,21 @@ <= srcoff && - ! - ((src[2] - len | 0) < srcoff) + (src[2] - len | 0) + >= + srcoff && 0 <= dstoff && - ! - ((caml_ml_bytes_length(dst) - len | 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); + {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} @@ -17398,10 +17407,9 @@ 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_]}} + if((b[2] + more | 0) > b[3])throw [0,Assert_failure,_ab_]; + if((old_pos + more | 0) <= b[3])return 0; + throw [0,Assert_failure,_aa_]}} function add_char(b,c) {var pos=b[2]; if(b[3] <= pos)resize(b,1); @@ -17434,14 +17442,14 @@ 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_; + {var _u9_=offset < 0?1:0; + if(_u9_) + var _u__=_u9_; 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); + _u$_=len < 0?1:0, + _u__=_u$_ || ((caml_ml_string_length(s) - len | 0) < offset?1:0); + if(_u__)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); @@ -17458,13 +17466,13 @@ 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); + {var _u7_=len < 0?1:0,_u8_=_u7_ || (max_string_length < len?1:0); + if(_u8_)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]; + var already_read=0,ofs=b[2],to_read=len,_u6_=b[1]; for(;;) {if(0 !== to_read) - {var r=input(ic,_vb_,ofs,to_read); + {var r=input(ic,_u6_,ofs,to_read); if(0 !== r) {var already_read$0=already_read + r | 0, @@ -17474,71 +17482,19 @@ 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_]}} + if((b[2] + already_read | 0) > b[3])throw [0,Assert_failure,_ac_]; + b[2] = b[2] + already_read | 0; + if(already_read < len)throw End_of_file; + return 0}} 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) + {if(i$7 >= lim$1) + {var _u5_=92 === previous?1:0;return _u5_?add_char(b,previous):_u5_} + var current=caml_string_get(s,i$7); + if(36 !== current) + {if(92 === previous) {add_char(b,92); add_char(b,current); var i$9=i$7 + 1 | 0,previous=32,i$7=i$9; @@ -17548,27 +17504,73 @@ 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_}} + 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 _u4_=41; + else + {if(123 !== opening)throw [0,Assert_failure,_ad_];var _u4_=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) !== _u4_) + {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}} function truncate(b,len) - {if(0 <= len && ! (b[2] < len)){b[2] = len;return 0} + {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_)}} + var x=caml_bytes_unsafe_get(b[1],i),_u2_=i + 1 | 0; + return [0,x,function(_u3_){return aux(_u2_,_u3_)}]} + var _u0_=0; + return function(_u1_){return aux(_u0_,_u1_)}} 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_)}} + var x=caml_bytes_unsafe_get(b[1],i),_uY_=i + 1 | 0; + return [0,[0,i,x],function(_uZ_){return aux(_uY_,_uZ_)}]} + var _uW_=0; + return function(_uX_){return aux(_uW_,_uX_)}} function add_seq$1(b,seq) - {return iter(function(_u2_){return add_char(b,_u2_)},seq)} + {return iter(function(_uV_){return add_char(b,_uV_)},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; @@ -17660,14 +17662,14 @@ 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)}} + var _uU_=i + 1 | 0; + if(31 === i)return caml_string_of_bytes(char_set$0); + var i=_uU_}} 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} + {if(! pad_opt)return 0;var width=pad_opt[1];return [0,1,width]} function param_format_of_ignored_format(ign,fmt) {if(typeof ign === "number") switch(ign) @@ -17675,39 +17677,38 @@ 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]]}} + 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],_uT_=[0,ndec];else var _uT_=0; + return [0,[8,_ae_,pad_of_pad_opt(pad_opt$5),_uT_,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)]} @@ -17715,17 +17716,17 @@ {var len=caml_ml_bytes_length(buf[2]), min_len=buf[1] + overhead | 0, - _uY_=len < min_len?1:0; - if(_uY_) + _uR_=len < min_len?1:0; + if(_uR_) {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} + var _uS_=0} else - var _uZ_=_uY_; - return _uZ_} + var _uS_=_uR_; + return _uS_} function buffer_add_char(buf,c) {buffer_check_size(buf,1); caml_bytes_set(buf[2],buf[1],c); @@ -17773,21 +17774,18 @@ 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} + {if(! pad_opt)return 0; + var width=pad_opt[1]; + return buffer_add_string(buf,caml_string_of_jsbytes("" + width))} 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)}} + {if(typeof pad === "number")return 0; + 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]; @@ -17830,29 +17828,26 @@ 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))}} + 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_; + {var _uP_=caml_ml_string_length(str) - 1 | 0,_uO_=0; + if(_uP_ >= 0) + {var i=_uO_; for(;;) {bprint_char_literal(buf,caml_string_get(str,i)); - var _uX_=i + 1 | 0; - if(_uW_ !== i){var i=_uX_;continue} + var _uQ_=i + 1 | 0; + if(_uP_ !== i){var i=_uQ_;continue} break}} return 0} function bprint_fmtty(buf,fmtty) {var fmtty$0=fmtty; for(;;) - if(typeof fmtty$0 === "number") - return 0; - else + {if(typeof fmtty$0 === "number")return 0; switch(fmtty$0[0]) {case 0: var rest=fmtty$0[1]; @@ -17932,18 +17927,18 @@ var rest$13=fmtty$0[1]; buffer_add_string(buf,cst_r$1); var fmtty$0=rest$13; - continue}} + continue}}} function int_of_custom_arity(param) - {if(param){var x=param[1];return 1 + int_of_custom_arity(x) | 0}return 0} + {if(! param)return 0; + var x=param[1]; + return 1 + int_of_custom_arity(x) | 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 + {if(typeof fmt$0 === "number")return 0; switch(fmt$0[0]) {case 0: var rest=fmt$0[1]; @@ -18125,33 +18120,33 @@ :buffer_add_char(buf,c)}; buffer_add_char(buf,91); var - _uL_= + _uE_= 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(_uJ_) {function is_alone(c) {var after=chr(c + 1 | 0), before=chr(c - 1 | 0), - _uR_=is_in_char_set(_uQ_,c); - if(_uR_) + _uK_=is_in_char_set(_uJ_,c); + if(_uK_) var - _uS_=is_in_char_set(_uQ_,before), - _uT_=_uS_?is_in_char_set(_uQ_,after):_uS_, - _uU_=1 - _uT_; + _uL_=is_in_char_set(_uJ_,before), + _uM_=_uL_?is_in_char_set(_uJ_,after):_uL_, + _uN_=1 - _uM_; else - var _uU_=_uR_; - return _uU_} + var _uN_=_uK_; + return _uN_} return is_alone}, - is_alone=is_alone$0(_uL_); + is_alone=is_alone$0(_uE_); 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))) + {if(! is_in_char_set(_uE_,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) @@ -18162,7 +18157,7 @@ switch$0 = 1} if(switch$0) {var i$1=i + 1 | 0; - if(! is_in_char_set(_uL_,char_of_int(i$1))) + if(! is_in_char_set(_uE_,char_of_int(i$1))) {print_char(buf,i$1 - 1 | 0); var i$6=i$1 + 1 | 0,i=i$6; continue} @@ -18177,7 +18172,7 @@ switch$1 = 1; else if(46 < switcher$0 - 1 >>> 0) - {if(! is_in_char_set(_uL_,char_of_int(i$1 + 1 | 0))) + {if(! is_in_char_set(_uE_,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} @@ -18185,14 +18180,14 @@ else switch$1 = 1; if(switch$1) - {if(! is_in_char_set(_uL_,char_of_int(i$1 + 1 | 0))) + {if(! is_in_char_set(_uE_,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))) + {if(256 !== j$0 && is_in_char_set(_uE_,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); @@ -18208,10 +18203,10 @@ 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_); + {case 0:var _uF_=108;break; + case 1:var _uF_=110;break; + default:var _uF_=78} + buffer_add_char(buf,_uF_); var fmt$0=rest$20,ign_flag$0=0; continue; case 22: @@ -18234,307 +18229,43 @@ 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_; + _uH_=int_of_custom_arity(arity), + _uG_=1; + if(_uH_ >= 1) + {var i$8=_uG_; 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} + var _uI_=i$8 + 1 | 0; + if(_uH_ !== i$8){var i$8=_uI_;continue} break}} var fmt$0=rest$23,ign_flag$0=0; - continue}} + 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_]}} + {if(typeof param === "number")return 0; + 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 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 + {if(typeof param !== "number") switch(param[0]) {case 0: var @@ -18544,8 +18275,8 @@ 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]; + _uj_=function(param){caml_call1(af,0);return 0}; + return [0,function(param){caml_call1(fa,0);return 0},_uj_,ed,de]; case 1: var rest$0=param[1], @@ -18554,10 +18285,10 @@ 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}; + _uk_=function(param){caml_call1(af$0,0);return 0}; return [0, function(param){caml_call1(fa$0,0);return 0}, - _t__, + _uk_, ed$0, de$0]; case 2: @@ -18568,10 +18299,10 @@ 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}; + _ul_=function(param){caml_call1(af$1,0);return 0}; return [0, function(param){caml_call1(fa$1,0);return 0}, - _t$_, + _ul_, ed$1, de$1]; case 3: @@ -18582,10 +18313,10 @@ 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}; + _um_=function(param){caml_call1(af$2,0);return 0}; return [0, function(param){caml_call1(fa$2,0);return 0}, - _ua_, + _um_, ed$2, de$2]; case 4: @@ -18596,10 +18327,10 @@ 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}; + _un_=function(param){caml_call1(af$3,0);return 0}; return [0, function(param){caml_call1(fa$3,0);return 0}, - _ub_, + _un_, ed$3, de$3]; case 5: @@ -18610,10 +18341,10 @@ 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}; + _uo_=function(param){caml_call1(af$4,0);return 0}; return [0, function(param){caml_call1(fa$4,0);return 0}, - _uc_, + _uo_, ed$4, de$4]; case 6: @@ -18624,10 +18355,10 @@ 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}; + _up_=function(param){caml_call1(af$5,0);return 0}; return [0, function(param){caml_call1(fa$5,0);return 0}, - _ud_, + _up_, ed$5, de$5]; case 7: @@ -18638,10 +18369,10 @@ 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}; + _uq_=function(param){caml_call1(af$6,0);return 0}; return [0, function(param){caml_call1(fa$6,0);return 0}, - _ue_, + _uq_, ed$6, de$6]; case 8: @@ -18652,10 +18383,10 @@ 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}; + _ur_=function(param){caml_call1(af$7,0);return 0}; return [0, function(param){caml_call1(fa$7,0);return 0}, - _uf_, + _ur_, ed$7, de$7]; case 9: @@ -18674,15 +18405,15 @@ 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}; + _us_=function(param){caml_call1(jd,0);caml_call1(de$8,0);return 0}, + _ut_=function(param){caml_call1(ed$8,0);caml_call1(dj,0);return 0}, + _uu_=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_]; + _uu_, + _ut_, + _us_]; case 10: var rest$9=param[1], @@ -18691,10 +18422,10 @@ 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}; + _uv_=function(param){caml_call1(af$9,0);return 0}; return [0, function(param){caml_call1(fa$9,0);return 0}, - _uj_, + _uv_, ed$9, de$9]; case 11: @@ -18705,10 +18436,10 @@ 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}; + _uw_=function(param){caml_call1(af$10,0);return 0}; return [0, function(param){caml_call1(fa$10,0);return 0}, - _uk_, + _uw_, ed$10, de$10]; case 12: @@ -18719,10 +18450,10 @@ 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}; + _ux_=function(param){caml_call1(af$11,0);return 0}; return [0, function(param){caml_call1(fa$11,0);return 0}, - _ul_, + _ux_, ed$11, de$11]; case 13: @@ -18733,14 +18464,14 @@ 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}; + _uy_=function(param){caml_call1(de$12,0);return 0}, + _uz_=function(param){caml_call1(ed$12,0);return 0}, + _uA_=function(param){caml_call1(af$12,0);return 0}; return [0, function(param){caml_call1(fa$12,0);return 0}, - _uo_, - _un_, - _um_]; + _uA_, + _uz_, + _uy_]; default: var rest$13=param[1], @@ -18749,28 +18480,282 @@ 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}; + _uB_=function(param){caml_call1(de$13,0);return 0}, + _uC_=function(param){caml_call1(ed$13,0);return 0}, + _uD_=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} + _uD_, + _uC_, + _uB_]} + function _ug_(param){return 0} + function _uh_(param){return 0} + function _ui_(param){return 0} + return [0,function(param){return 0},_ui_,_uh_,_ug_]} + function trans(ty1,ty2) + {var switch$0=0; + if(typeof ty1 === "number") + {if(typeof ty2 === "number")return 0; + 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,_af_]}} + else + switch(ty1[0]) + {case 0: + var switch$1=0,_tZ_=ty1[1]; + if(typeof ty2 !== "number") + switch(ty2[0]) + {case 0:var rest2=ty2[1];return [0,trans(_tZ_,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,_t0_=ty1[1]; + if(typeof ty2 !== "number") + switch(ty2[0]) + {case 1:var rest2$0=ty2[1];return [1,trans(_t0_,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,_t1_=ty1[1]; + if(typeof ty2 === "number") + switch$3 = 1; + else + switch(ty2[0]) + {case 2:var rest2$1=ty2[1];return [2,trans(_t1_,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,_t2_=ty1[1]; + if(typeof ty2 === "number") + switch$4 = 1; + else + switch(ty2[0]) + {case 3:var rest2$2=ty2[1];return [3,trans(_t2_,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,_t3_=ty1[1]; + if(typeof ty2 === "number") + switch$5 = 1; + else + switch(ty2[0]) + {case 4:var rest2$3=ty2[1];return [4,trans(_t3_,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,_t4_=ty1[1]; + if(typeof ty2 === "number") + switch$6 = 1; + else + switch(ty2[0]) + {case 5:var rest2$4=ty2[1];return [5,trans(_t4_,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,_t5_=ty1[1]; + if(typeof ty2 === "number") + switch$7 = 1; + else + switch(ty2[0]) + {case 6:var rest2$5=ty2[1];return [6,trans(_t5_,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,_t6_=ty1[1]; + if(typeof ty2 === "number") + switch$8 = 1; + else + switch(ty2[0]) + {case 7:var rest2$6=ty2[1];return [7,trans(_t6_,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,_t7_=ty1[2],_t8_=ty1[1]; + if(typeof ty2 === "number") + switch$9 = 1; + else + switch(ty2[0]) + {case 8: + var rest2$7=ty2[2],ty2$0=ty2[1],_t9_=trans(_t7_,rest2$7); + return [8,trans(_t8_,ty2$0),_t9_]; + 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,_ao_]; + break; + case 9: + var switch$10=0,_t__=ty1[3],_t$_=ty1[2],_ua_=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(_t$_),ty21), + match=fmtty_rel_det(ty), + f4=match[4], + f2=match[2]; + caml_call1(f2,0); + caml_call1(f4,0); + return [9,_ua_,ty22,trans(_t__,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,_ap_]; + break; + case 10: + var _ub_=ty1[1]; + if(typeof ty2 !== "number" && 10 === ty2[0]) + {var rest2$9=ty2[1];return [10,trans(_ub_,rest2$9)]} + throw [0,Assert_failure,_aq_]; + case 11: + var switch$11=0,_uc_=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(_uc_,rest2$10)]; + default:switch$11 = 1} + if(switch$11)throw [0,Assert_failure,_ar_]; + break; + case 12: + var switch$12=0,_ud_=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(_ud_,rest2$11)]; + default:switch$12 = 1} + if(switch$12)throw [0,Assert_failure,_as_]; + break; + case 13: + var switch$13=0,_ue_=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(_ue_,rest2$12)]; + default:switch$13 = 1} + if(switch$13)throw [0,Assert_failure,_at_]; + break; + default: + var switch$14=0,_uf_=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(_uf_,rest2$13)]; + default:switch$14 = 1} + if(switch$14)throw [0,Assert_failure,_au_]} + switch(switch$0) + {case 0:throw [0,Assert_failure,_ai_]; + case 1:throw [0,Assert_failure,_aj_]; + case 2:throw [0,Assert_failure,_ak_]; + case 3:throw [0,Assert_failure,_al_]; + case 4:throw [0,Assert_failure,_am_]; + case 5:throw [0,Assert_failure,_ag_]; + case 6:throw [0,Assert_failure,_ah_]; + default:throw [0,Assert_failure,_an_]}} 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} + {if(! arity)return fmtty; + var arity$0=arity[1]; + return [12,fmtty_of_custom(arity$0,fmtty)]} function fmtty_of_fmt(fmtty) {var fmtty$0=fmtty; for(;;) - if(typeof fmtty$0 === "number") - return 0; - else + {if(typeof fmtty$0 === "number")return 0; 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)]; @@ -18839,15 +18824,15 @@ var rest$13=fmtty$0[2], fmting_gen=fmtty$0[1], - _t4_=fmtty_of_fmt(rest$13); + _tX_=fmtty_of_fmt(rest$13); if(0 === fmting_gen[0]) - var match=fmting_gen[1],fmt=match[1],_t5_=fmtty_of_fmt(fmt); + var match=fmting_gen[1],fmt=match[1],_tY_=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_); + _tY_=fmtty_of_fmt(fmt$0); + return concat_fmtty(_tY_,_tX_); 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)]; @@ -18860,600 +18845,588 @@ 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} + 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))}} + return fmtty_of_custom(arity,fmtty_of_fmt(rest$19))}}} + function fmtty_of_precision_fmtty(prec,fmtty) + {return typeof prec === "number"?prec?[2,fmtty]:fmtty:fmtty} 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}} + {if(typeof pad === "number")return [0,0,fmtty]; + 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)} - } + if(typeof prec !== "number") + {var rest$1=match[2],pad$2=match[1],p=prec[1]; + return [0,pad$2,[0,p],rest$1]} + if(! prec){var rest$0=match[2],pad$1=match[1];return [0,pad$1,0,rest$0]} + var _tW_=match[2]; + if(typeof _tW_ !== "number" && 2 === _tW_[0]) + {var rest=_tW_[1],pad$0=match[1];return [0,pad$0,1,rest]} throw Type_mismatch} + function type_format(fmt,fmtty) + {var _tV_=type_format_gen(fmt,fmtty); + if(typeof _tV_[2] !== "number")throw Type_mismatch; + var fmt$0=_tV_[1]; + return fmt$0} 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} + function type_format_gen(fmt,fmtty) + {if(typeof fmt === "number")return [0,0,fmtty]; + 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), + _tE_=match$1[2], + _tD_=match$1[1]; + if(typeof _tE_ !== "number" && 1 === _tE_[0]) + {var + fmtty_rest$1=_tE_[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,_tD_,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), + _tG_=match$3[2], + _tF_=match$3[1]; + if(typeof _tG_ !== "number" && 1 === _tG_[0]) + {var + fmtty_rest$2=_tG_[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,_tF_,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), + _tI_=match$5[3], + _tH_=match$5[1]; + if(typeof _tI_ !== "number" && 2 === _tI_[0]) + {var + fmtty_rest$3=_tI_[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,_tH_,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), + _tK_=match$7[3], + _tJ_=match$7[1]; + if(typeof _tK_ !== "number" && 3 === _tK_[0]) + {var + fmtty_rest$4=_tK_[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,_tJ_,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), + _tM_=match$9[3], + _tL_=match$9[1]; + if(typeof _tM_ !== "number" && 4 === _tM_[0]) + {var + fmtty_rest$5=_tM_[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,_tL_,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), + _tO_=match$11[3], + _tN_=match$11[1]; + if(typeof _tO_ !== "number" && 5 === _tO_[0]) + {var + fmtty_rest$6=_tO_[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,_tN_,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), + _tQ_=match$13[3], + _tP_=match$13[1]; + if(typeof _tQ_ !== "number" && 6 === _tQ_[0]) + {var + fmtty_rest$7=_tQ_[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,_tP_,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), + _tS_=match$15[2], + _tR_=match$15[1]; + if(typeof _tS_ !== "number" && 7 === _tS_[0]) + {var + fmtty_rest$8=_tS_[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,_tR_,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], + _tT_=[0,erase_rel(sub_fmtty1)]; + if(caml_notequal([0,erase_rel(sub_fmtty$1)],_tT_)) + 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[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], + _tU_=type_ignored_format_substituti(sub_fmtty$3,rest,fmtty), + match$35=_tU_[2], + fmtty$22=match$35[2], + fmt$22=match$35[1], + sub_fmtty$4=_tU_[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)} + 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)} + } + throw Type_mismatch} + function type_ignored_format_substituti(sub_fmtty,fmt,fmtty) + {if(typeof sub_fmtty === "number") + return [0,0,type_format_gen(fmt,fmtty)]; + 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], + _tB_=[0,erase_rel(sub1_fmtty)]; + if(caml_notequal([0,erase_rel(sub1_fmtty$0)],_tB_)) + throw Type_mismatch; + var _tC_=[0,erase_rel(sub2_fmtty$1)]; + if(caml_notequal([0,erase_rel(sub2_fmtty$2)],_tC_)) + 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 recast(fmt,fmtty){return type_format(fmt,erase_rel(symm(fmtty)))} function fix_padding(padty,width,str) @@ -19462,7 +19435,7 @@ 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_); + var _tA_=2 === padty$0?48:32,res=make$0(width$0,_tA_); 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; @@ -19516,7 +19489,7 @@ switch$0=0; if(58 <= c) {if(71 <= c) - {if(! (5 < c - 97 >>> 0))switch$0 = 1} + {if(5 >= c - 97 >>> 0)switch$0 = 1} else if(65 <= c)switch$0 = 1} else @@ -19572,7 +19545,7 @@ function format_of_fconv(fconv,prec) {var prec$0=abs(prec), - symb=char_of_fconv(_ax_,fconv), + symb=char_of_fconv(_av_,fconv), buf=buffer_create(16); buffer_add_char(buf,37); bprint_fconv_flag(buf,fconv); @@ -19581,111 +19554,111 @@ 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} + {if(13 > iconv)return s; + var n=[0,0],_tv_=caml_ml_string_length(s) - 1 | 0,_tu_=0; + if(_tv_ >= 0) + {var i$0=_tu_; + for(;;) + {var match=caml_string_unsafe_get(s,i$0); + if(9 >= match - 48 >>> 0)n[1]++; + var _tz_=i$0 + 1 | 0; + if(_tv_ !== i$0){var i$0=_tz_;continue} + break}} + var + digits=n[1], + buf= + caml_create_bytes + (caml_ml_string_length(s) + ((digits - 1 | 0) / 3 | 0) | 0), + pos=[0,0]; + function put(c){caml_bytes_set(buf,pos[1],c);pos[1]++;return 0} + var + left=[0,((digits - 1 | 0) % 3 | 0) + 1 | 0], + _tx_=caml_ml_string_length(s) - 1 | 0, + _tw_=0; + if(_tx_ >= 0) + {var i=_tw_; + 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 _ty_=i + 1 | 0; + if(_tx_ !== i){var i=_ty_;continue} + break}} + return caml_string_of_bytes(buf)} 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 1:var _tt_=cst_d$3;break; + case 2:var _tt_=cst_d$4;break; + case 4:var _tt_=cst_i$1;break; + case 5:var _tt_=cst_i$2;break; + case 6:var _tt_=cst_x;break; + case 7:var _tt_=cst_x$0;break; + case 8:var _tt_=cst_X$0;break; + case 9:var _tt_=cst_X$1;break; + case 10:var _tt_=cst_o;break; + case 11:var _tt_=cst_o$0;break; case 0: - case 13:var _tA_=cst_d$2;break; + case 13:var _tt_=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))} + case 14:var _tt_=cst_i$0;break; + default:var _tt_=cst_u} + return transform_int_alt(iconv,caml_format_int(_tt_,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 1:var _ts_=cst_ld$0;break; + case 2:var _ts_=cst_ld$1;break; + case 4:var _ts_=cst_li$1;break; + case 5:var _ts_=cst_li$2;break; + case 6:var _ts_=cst_lx;break; + case 7:var _ts_=cst_lx$0;break; + case 8:var _ts_=cst_lX;break; + case 9:var _ts_=cst_lX$0;break; + case 10:var _ts_=cst_lo;break; + case 11:var _ts_=cst_lo$0;break; case 0: - case 13:var _tz_=cst_ld;break; + case 13:var _ts_=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))} + case 14:var _ts_=cst_li$0;break; + default:var _ts_=cst_lu} + return transform_int_alt(iconv,caml_format_int(_ts_,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 1:var _tr_=cst_nd$0;break; + case 2:var _tr_=cst_nd$1;break; + case 4:var _tr_=cst_ni$1;break; + case 5:var _tr_=cst_ni$2;break; + case 6:var _tr_=cst_nx;break; + case 7:var _tr_=cst_nx$0;break; + case 8:var _tr_=cst_nX;break; + case 9:var _tr_=cst_nX$0;break; + case 10:var _tr_=cst_no;break; + case 11:var _tr_=cst_no$0;break; case 0: - case 13:var _ty_=cst_nd;break; + case 13:var _tr_=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))} + case 14:var _tr_=cst_ni$0;break; + default:var _tr_=cst_nu} + return transform_int_alt(iconv,caml_format_int(_tr_,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 1:var _tq_=cst_Ld$0;break; + case 2:var _tq_=cst_Ld$1;break; + case 4:var _tq_=cst_Li$1;break; + case 5:var _tq_=cst_Li$2;break; + case 6:var _tq_=cst_Lx;break; + case 7:var _tq_=cst_Lx$0;break; + case 8:var _tq_=cst_LX;break; + case 9:var _tq_=cst_LX$0;break; + case 10:var _tq_=cst_Lo;break; + case 11:var _tq_=cst_Lo$0;break; case 0: - case 13:var _tx_=cst_Ld;break; + case 13:var _tq_=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))} + case 14:var _tq_=cst_Li$0;break; + default:var _tq_=cst_Lu} + return transform_int_alt(iconv,caml_int64_format(_tq_,n))} function convert_float(fconv,prec,x) {function hex(param) {switch(fconv[1]) @@ -19706,17 +19679,17 @@ i=0; for(;;) {if(i === len) - var _tv_=0; + var _to_=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} + {var match=caml_string_get(str,i),_tn_=match - 46 | 0,switch$0=0; + if(23 < _tn_ >>> 0) + {if(55 === _tn_)switch$0 = 1} else - if(21 < _tu_ - 1 >>> 0)switch$0 = 1; + if(21 < _tn_ - 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_)} + var _to_=1} + var _tp_=_to_?str:cat(str,cst$29); + return caml_special_val(_tp_)} case 6:return hex(0); case 7:return uppercase_ascii$1(hex(0)); case 8:return caml_special_val(hex(0)); @@ -19725,12 +19698,76 @@ {var buf=buffer_create(16); bprint_fmtty(buf,fmtty); return buffer_contents(buf)} + 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)}} + if(0 === pad[0]) + {var _tk_=pad[2],_tl_=pad[1]; + if(typeof prec === "number") + return prec + ?function(p,x) + {var + str= + fix_padding + (_tl_,_tk_,fix_int_precision(p,caml_call2(trans,iconv,x))); + return make_printf(k,[4,acc,str],fmt)} + :function(x) + {var str=fix_padding(_tl_,_tk_,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 + (_tl_,_tk_,fix_int_precision(p$0,caml_call2(trans,iconv,x))); + return make_printf(k,[4,acc,str],fmt)}} + var _tm_=pad[1]; + if(typeof prec === "number") + return prec + ?function(w,p,x) + {var + str= + fix_padding + (_tm_,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(_tm_,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(_tm_,w,fix_int_precision(p$1,caml_call2(trans,iconv,x))); + return make_printf(k,[4,acc,str],fmt)}} + 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)}; + 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_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 + {if(typeof fmt$0 === "number")return caml_call1(k$0,acc$0); switch(fmt$0[0]) {case 0: var rest=fmt$0[1]; @@ -19797,38 +19834,37 @@ 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(0 === pad$5[0]) + {var _th_=pad$5[2],_ti_=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)); + ?function(p,x) + {var str=fix_padding(_ti_,_th_,convert_float(fconv,p,x)); return make_printf(k$0,[4,acc$0,str],rest$7)} - :function(w,x) + :function(x) {var str=convert_float(fconv,default_float_precision(fconv),x), - str$0=fix_padding(_tt_,w,str); + str$0=fix_padding(_ti_,_th_,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)); + var p$0=prec$3[1]; + return function(x) + {var str=fix_padding(_ti_,_th_,convert_float(fconv,p$0,x)); return make_printf(k$0,[4,acc$0,str],rest$7)}} + var _tj_=pad$5[1]; + if(typeof prec$3 === "number") + return prec$3 + ?function(w,p,x) + {var str=fix_padding(_tj_,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(_tj_,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(_tj_,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); @@ -19882,11 +19918,11 @@ fmt$0=fmt$4; continue; case 18: - var _tp_=fmt$0[1]; - if(0 === _tp_[0]) + var _tf_=fmt$0[1]; + if(0 === _tf_[0]) {var rest$13=fmt$0[2], - match=_tp_[1], + match=_tf_[1], fmt$5=match[1], k$3= function(acc,k,rest) @@ -19900,7 +19936,7 @@ continue} var rest$14=fmt$0[2], - match$0=_tp_[1], + match$0=_tf_[1], fmt$6=match$0[1], k$4= function(acc,k,rest) @@ -19911,7 +19947,7 @@ acc$0=0, fmt$0=fmt$6; continue; - case 19:throw [0,Assert_failure,_ay_]; + case 19:throw [0,Assert_failure,_aw_]; 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)}; @@ -19926,111 +19962,105 @@ {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]); + if(counter >= 50) + return caml_trampoline_return + (make_ignored_param$0,[0,k$0,acc$0,ign,rest$18]); + var counter$1=counter + 1 | 0; + return make_ignored_param$0(counter$1,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_])}} + _tg_=caml_call1(f,0); + if(counter >= 50) + return caml_trampoline_return + (make_custom$0,[0,k$0,acc$0,rest$19,arity,_tg_]); + var counter$0=counter + 1 | 0; + return make_custom$0(counter$0,k$0,acc$0,rest$19,arity,_tg_)}}} 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]); + if(counter >= 50) + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + var counter$0=counter + 1 | 0; + return make_invalid_arg(counter$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_]; + if(counter >= 50) + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + var counter$1=counter + 1 | 0; + return make_invalid_arg(counter$1,k,acc,fmt); + case 2:throw [0,Assert_failure,_ax_]; 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)} + if(counter >= 50) + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + var counter$2=counter + 1 | 0; + return make_invalid_arg(counter$2,k,acc,fmt)} + switch(ign[0]) + {case 0: + if(counter >= 50) 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)} + var counter$3=counter + 1 | 0; + return make_invalid_arg(counter$3,k,acc,fmt); + case 1: + if(counter >= 50) 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)} + var counter$4=counter + 1 | 0; + return make_invalid_arg(counter$4,k,acc,fmt); + case 2: + if(counter >= 50) 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)} + var counter$5=counter + 1 | 0; + return make_invalid_arg(counter$5,k,acc,fmt); + case 3: + if(counter >= 50) 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)} + var counter$6=counter + 1 | 0; + return make_invalid_arg(counter$6,k,acc,fmt); + case 4: + if(counter >= 50) 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)} + var counter$7=counter + 1 | 0; + return make_invalid_arg(counter$7,k,acc,fmt); + case 5: + if(counter >= 50) 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)} + var counter$8=counter + 1 | 0; + return make_invalid_arg(counter$8,k,acc,fmt); + case 6: + if(counter >= 50) 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)} + var counter$9=counter + 1 | 0; + return make_invalid_arg(counter$9,k,acc,fmt); + case 7: + if(counter >= 50) 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)} + var counter$10=counter + 1 | 0; + return make_invalid_arg(counter$10,k,acc,fmt); + case 8: + if(counter >= 50) 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)} + var counter$11=counter + 1 | 0; + return make_invalid_arg(counter$11,k,acc,fmt); + case 9: + var fmtty=ign[2]; + if(counter >= 50) 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)} + var counter$14=counter + 1 | 0; + return make_from_fmtty$0(counter$14,k,acc,fmtty,fmt); + case 10: + if(counter >= 50) 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])}} + var counter$12=counter + 1 | 0; + return make_invalid_arg(counter$12,k,acc,fmt); + default: + if(counter >= 50) + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + var counter$13=counter + 1 | 0; + return make_invalid_arg(counter$13,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 + {if(typeof fmtty !== "number") switch(fmtty[0]) {case 0: var rest=fmtty[1]; @@ -20069,7 +20099,7 @@ {return make_from_fmtty(k,acc,concat_fmtty(ty,rest$8),fmt)}; case 10: var rest$9=fmtty[1]; - return function(param,_to_) + return function(param,_te_) {return make_from_fmtty(k,acc,rest$9,fmt)}; case 11: var rest$10=fmtty[1]; @@ -20077,24 +20107,28 @@ 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_]}} + case 13:throw [0,Assert_failure,_ay_]; + default:throw [0,Assert_failure,_az_]} + if(counter >= 50) + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + var counter$0=counter + 1 | 0; + return make_invalid_arg(counter$0,k,acc,fmt)} 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])} + {var _td_=[8,acc,cst_Printf_bad_conversion$0]; + if(counter >= 50) + return caml_trampoline_return(make_printf$0,[0,k,_td_,fmt]); + var counter$0=counter + 1 | 0; + return make_printf$0(counter$0,k,_td_,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])} + var _tc_=[4,acc,f]; + if(counter >= 50) + return caml_trampoline_return(make_printf$0,[0,k,_tc_,rest]); + var counter$0=counter + 1 | 0; + return make_printf$0(counter$0,k,_tc_,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) @@ -20103,116 +20137,72 @@ {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) + function fn_of_padding_precision(k,o,fmt,pad,prec) {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)}}} + {if(typeof prec !== "number") + {var _sN_=make_iprintf(k,o,fmt);return function(_tb_){return _sN_}} + if(prec) + {var _sK_=make_iprintf(k,o,fmt),_sL_=function(_ta_){return _sK_}; + return function(_s$_){return _sL_}} + var _sM_=make_iprintf(k,o,fmt); + return function(_s__){return _sM_}} + if(0 === pad[0]) + {if(typeof prec !== "number") + {var _sR_=make_iprintf(k,o,fmt);return function(_s9_){return _sR_}} + if(prec) + {var _sO_=make_iprintf(k,o,fmt),_sP_=function(_s8_){return _sO_}; + return function(_s7_){return _sP_}} + var _sQ_=make_iprintf(k,o,fmt); + return function(_s6_){return _sQ_}} + if(typeof prec !== "number") + {var _sX_=make_iprintf(k,o,fmt),_sY_=function(_s5_){return _sX_}; + return function(_s4_){return _sY_}} + if(prec) + {var + _sS_=make_iprintf(k,o,fmt), + _sT_=function(_s3_){return _sS_}, + _sU_=function(_s2_){return _sT_}; + return function(_s1_){return _sU_}} + var _sV_=make_iprintf(k,o,fmt); + function _sW_(_s0_){return _sV_} + return function(_sZ_){return _sW_}} 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 + {if(typeof fmt$0 === "number")return caml_call1(k$0,o); switch(fmt$0[0]) {case 0: - var rest=fmt$0[1],_sA_=make_iprintf(k$0,o,rest); - return function(_ti_){return _sA_}; + var rest=fmt$0[1],_r1_=make_iprintf(k$0,o,rest); + return function(_sJ_){return _r1_}; case 1: - var rest$0=fmt$0[1],_sB_=make_iprintf(k$0,o,rest$0); - return function(_th_){return _sB_}; + var rest$0=fmt$0[1],_r2_=make_iprintf(k$0,o,rest$0); + return function(_sI_){return _r2_}; 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_}} + var _r3_=fmt$0[1]; + if(typeof _r3_ === "number") + {var rest$1=fmt$0[2],_r4_=make_iprintf(k$0,o,rest$1); + return function(_sH_){return _r4_}} + if(0 === _r3_[0]) + {var rest$2=fmt$0[2],_r5_=make_iprintf(k$0,o,rest$2); + return function(_sG_){return _r5_}} + var + rest$3=fmt$0[2], + _r6_=make_iprintf(k$0,o,rest$3), + _r7_=function(_sF_){return _r6_}; + return function(_sE_){return _r7_}; 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_}} + var _r8_=fmt$0[1]; + if(typeof _r8_ === "number") + {var rest$4=fmt$0[2],_r9_=make_iprintf(k$0,o,rest$4); + return function(_sD_){return _r9_}} + if(0 === _r8_[0]) + {var rest$5=fmt$0[2],_r__=make_iprintf(k$0,o,rest$5); + return function(_sC_){return _r__}} + var + rest$6=fmt$0[2], + _r$_=make_iprintf(k$0,o,rest$6), + _sa_=function(_sB_){return _r$_}; + return function(_sA_){return _sa_}; 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); @@ -20229,25 +20219,24 @@ 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_}} + var _sb_=fmt$0[1]; + if(typeof _sb_ === "number") + {var rest$12=fmt$0[2],_sc_=make_iprintf(k$0,o,rest$12); + return function(_sz_){return _sc_}} + if(0 === _sb_[0]) + {var rest$13=fmt$0[2],_sd_=make_iprintf(k$0,o,rest$13); + return function(_sy_){return _sd_}} + var + rest$14=fmt$0[2], + _se_=make_iprintf(k$0,o,rest$14), + _sf_=function(_sx_){return _se_}; + return function(_sw_){return _sf_}; 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_}; + var rest$15=fmt$0[3],_sg_=make_iprintf(k$0,o,rest$15); + return function(_sv_){return _sg_}; case 14: var rest$16=fmt$0[3],fmtty=fmt$0[2]; return function(param) @@ -20256,19 +20245,19 @@ 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_}; + _sh_=make_iprintf(k$0,o,rest$17), + _si_=function(_su_){return _sh_}; + return function(_st_){return _si_}; case 16: - var rest$18=fmt$0[1],_sU_=make_iprintf(k$0,o,rest$18); - return function(_s3_){return _sU_}; + var rest$18=fmt$0[1],_sj_=make_iprintf(k$0,o,rest$18); + return function(_ss_){return _sj_}; 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 _sk_=fmt$0[1]; + if(0 === _sk_[0]) {var rest$19=fmt$0[2], - match=_sV_[1], + match=_sk_[1], fmt$5=match[1], k$3= function(k,rest) @@ -20279,7 +20268,7 @@ continue} var rest$20=fmt$0[2], - match$0=_sV_[1], + match$0=_sk_[1], fmt$6=match$0[1], k$4= function(k,rest) @@ -20288,76 +20277,43 @@ k$0=k$2, fmt$0=fmt$6; continue; - case 19:throw [0,Assert_failure,_aC_]; + case 19:throw [0,Assert_failure,_aA_]; case 20: - var rest$21=fmt$0[3],_sW_=make_iprintf(k$0,o,rest$21); - return function(_s2_){return _sW_}; + var rest$21=fmt$0[3],_sl_=make_iprintf(k$0,o,rest$21); + return function(_sr_){return _sl_}; case 21: - var rest$22=fmt$0[2],_sX_=make_iprintf(k$0,o,rest$22); - return function(_s1_){return _sX_}; + var rest$22=fmt$0[2],_sm_=make_iprintf(k$0,o,rest$22); + return function(_sq_){return _sm_}; case 22: - var rest$23=fmt$0[1],_sY_=make_iprintf(k$0,o,rest$23); - return function(_s0_){return _sY_}; + var rest$23=fmt$0[1],_sn_=make_iprintf(k$0,o,rest$23); + return function(_sp_){return _sn_}; case 23: - var rest$24=fmt$0[2],ign=fmt$0[1],_sZ_=0; + var rest$24=fmt$0[2],ign=fmt$0[1],_so_=0; return make_ignored_param - (function(param){return caml_call1(k$0,o)},_sZ_,ign,rest$24); + (function(param){return caml_call1(k$0,o)},_so_,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])}} + if(counter >= 50) + return caml_trampoline_return + (fn_of_custom_arity$0,[0,k$0,o,rest$25,arity]); + var counter$0=counter + 1 | 0; + return fn_of_custom_arity$0(counter$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])} + {var arity=param[1],_rZ_=fn_of_custom_arity(k,o,fmt,arity); + return function(_r0_){return _rZ_}} + if(counter >= 50) + return caml_trampoline_return(make_iprintf$0,[0,k,o,fmt]); + var counter$0=counter + 1 | 0; + return make_iprintf$0(counter$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 + {if(typeof acc$0 === "number")return 0; switch(acc$0[0]) {case 0: var @@ -20367,15 +20323,15 @@ 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_); + var _rX_=acc$0[2],_rY_=acc$0[1]; + if(0 === _rX_[0]) + {var acc$1=_rX_[1]; + output_acc(o,_rY_); output_string(o,cst$30); var acc$0=acc$1; continue} - var acc$2=_r4_[1]; - output_acc(o,_r5_); + var acc$2=_rX_[1]; + output_acc(o,_rY_); output_string(o,cst$31); var acc$0=acc$2; continue; @@ -20396,13 +20352,11 @@ default: var c=acc$0[2],p$1=acc$0[1]; output_acc(o,p$1); - return caml_ml_output_char(o,c)}} + 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 + {if(typeof acc$0 === "number")return 0; switch(acc$0[0]) {case 0: var @@ -20412,15 +20366,15 @@ 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_); + var _rV_=acc$0[2],_rW_=acc$0[1]; + if(0 === _rV_[0]) + {var acc$1=_rV_[1]; + bufput_acc(b,_rW_); add_string(b,cst$32); var acc$0=acc$1; continue} - var acc$2=_r2_[1]; - bufput_acc(b,_r3_); + var acc$2=_rV_[1]; + bufput_acc(b,_rW_); add_string(b,cst$33); var acc$0=acc$2; continue; @@ -20439,13 +20393,11 @@ 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)}} + 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 + {if(typeof acc$0 === "number")return 0; switch(acc$0[0]) {case 0: var @@ -20455,15 +20407,15 @@ 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_); + var _rT_=acc$0[2],_rU_=acc$0[1]; + if(0 === _rT_[0]) + {var acc$1=_rT_[1]; + strput_acc(b,_rU_); add_string(b,cst$34); var acc$0=acc$1; continue} - var acc$2=_r0_[1]; - strput_acc(b,_r1_); + var acc$2=_rT_[1]; + strput_acc(b,_rU_); add_string(b,cst$35); var acc$0=acc$2; continue; @@ -20482,43 +20434,41 @@ 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)}} + 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_; + {if(caml_string_equal(str,cst$36))return _aB_; var len=caml_ml_string_length(str); function invalid_box(param) - {return caml_call1(failwith_message(_aE_),str)} + {return caml_call1(failwith_message(_aC_),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}} + var i$1=i$0 + 1 | 0,i$0=i$1}} 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}} + var j$1=j$0 + 1 | 0,j$0=j$1}} 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} + {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}} + if(! switch$0)return j$0; + var j$1=j$0 + 1 | 0,j$0=j$1}} var wstart=parse_spaces(0), wend=parse_lword(wstart,wstart), @@ -20530,11 +20480,11 @@ 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_; + _rR_=caml_int_of_string(sub$0(str,nstart,nend - nstart | 0)), + indent=_rR_} + catch(_rS_) + {_rS_ = caml_wrap_exception(_rS_); + if(_rS_[1] !== Failure)throw _rS_; var indent=invalid_box(0)} var exp_end=parse_spaces(nend); if(exp_end !== len)invalid_box(0); @@ -20557,37 +20507,33 @@ 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]}} + {if(typeof pad === "number")return [0,0,fmt]; + 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]}} + if(typeof pad === "number")return [0,0,prec$0,fmt]; + 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)} + {return caml_call3(failwith_message(_aD_),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)} + {return caml_call4(failwith_message(_aE_),str,str_ind,c,s)} function expected_character(str_ind,expected,read) - {return caml_call4(failwith_message(_aH_),str,str_ind,expected,read)} + {return caml_call4(failwith_message(_aF_),str,str_ind,expected,read)} function add_literal(lit_start,str_ind,fmt) {var size=str_ind - lit_start | 0; return 0 === size @@ -20595,6 +20541,1055 @@ :1 === size ?[0,[12,caml_string_get(str,lit_start),fmt]] :[0,[11,sub$0(str,lit_start,size),fmt]]} + 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), + _rQ_= + 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=_rQ_[1]; + return add_literal(lit_start,str_ind,fmt_rest)} + if(64 !== match) + {var str_ind$1=str_ind + 1 | 0,str_ind=str_ind$1;continue} + var str_ind$0=str_ind + 1 | 0; + if(str_ind$0 === end_ind) + var match$0=_aR_; + 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,_aS_,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,_aT_,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)}} + 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; + if(0 !== pad[0]) + return 2 <= pad[1] + ?legacy_behavior$0 + ?_aL_ + :incompatible_flag(pct_ind,str_ind,48,cst_precision$1) + :pad; + if(2 > pad[1])return pad; + var n=pad[2]; + return legacy_behavior$0 + ?[0,1,n] + :incompatible_flag(pct_ind,str_ind,48,cst_precision$0)} + function check_no_0(symb,pad) + {if(typeof pad === "number")return pad; + if(0 !== pad[0]) + return 2 <= pad[1] + ?legacy_behavior$0 + ?_aM_ + :incompatible_flag(pct_ind,str_ind,symb,cst_0$1) + :pad; + if(2 > pad[1])return pad; + var width=pad[2]; + return legacy_behavior$0 + ?[0,1,width] + :incompatible_flag(pct_ind,str_ind,symb,cst_0$0)} + function opt_of_pad(c,pad) + {if(typeof pad === "number")return 0; + 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], + _rn_=[0,[23,ignored$2,fmt_rest$7]]; + else + var _rn_=[0,[14,get_pad_opt(40),sub_fmtty,fmt_rest$7]]; + var fmt_result=_rn_; + 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], + _rp_=get_ign(0)?[0,[23,1,fmt_rest$10]]:[0,[1,fmt_rest$10]], + fmt_result=_rp_; + 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],_rv_=[0,[23,ignored$6,fmt_rest$14]]; + else + var _rv_=[0,[21,counter$0,fmt_rest$14]]; + var fmt_result=_rv_; + 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)], + _rw_=[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], + _rw_=[0,[3,pad$7,fmt_rest$16]]; + var fmt_result=_rw_; + 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 _rP_=i + 1 | 0; + if(c !== i){var i=_rP_;continue} + break}} + return 0}, + fail_single_percent= + function(str_ind) + {return caml_call2(failwith_message(_aV_),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 _rO_=str_ind$0 + 1 | 0; + if(counter >= 50) + return caml_trampoline_return + (parse_char_set_after_char$0,[0,_rO_,end_ind,c]); + var counter$0=counter + 1 | 0; + return parse_char_set_after_char$0(counter$0,_rO_,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 _rM_=str_ind$2 + 2 | 0; + if(counter >= 50) + return caml_trampoline_return + (parse_char_set_content,[0,_rM_,end_ind]); + var counter$2=counter + 1 | 0; + return parse_char_set_content(counter$2,_rM_,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 _rN_=str_ind$2 + 1 | 0; + if(counter >= 50) + return caml_trampoline_return + (parse_char_set_content,[0,_rN_,end_ind]); + var counter$1=counter + 1 | 0; + return parse_char_set_content(counter$1,_rN_,end_ind)} + if(switch$0 && 37 === c$0) + {add_char(c$1); + var _rL_=str_ind$0 + 1 | 0; + if(counter >= 50) + return caml_trampoline_return + (parse_char_set_content,[0,_rL_,end_ind]); + var counter$0=counter + 1 | 0; + return parse_char_set_content(counter$0,_rL_,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}}, + 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], + _rB_=[0,[23,ignored$9,fmt_rest$19]]; + else + var _rB_=[0,[20,get_pad_opt(91),char_set$1,fmt_rest$19]]; + var fmt_result=_rB_; + 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 + _rC_=get_ign(0)?[0,[23,3,fmt_rest$21]]:[0,[22,fmt_rest$21]], + _rD_=_rC_; + else + var + _rD_= + legacy_behavior$0 + ?char_format(fmt_rest$21) + :invalid_format_message + (str_ind,cst_non_zero_widths_are_unsupp); + var _rE_=_rD_} + else + var _rE_=char_format(fmt_rest$21); + var fmt_result=_rE_; + break; + case 114: + var + match$25=parse(str_ind,end_ind), + fmt_rest$22=match$25[1], + _rF_=get_ign(0)?[0,[23,2,fmt_rest$22]]:[0,[19,fmt_rest$22]], + fmt_result=_rF_; + 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)], + _rG_=[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], + _rG_=[0,[2,pad$10,fmt_rest$24]]; + var fmt_result=_rG_; + 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], + _rH_=[0,[23,ignored$11,fmt_rest$26]]; + else + var _rH_=[0,[13,get_pad_opt(123),sub_fmtty$0,fmt_rest$26]]; + var fmt_result=_rH_; + 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)], + _ro_=[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], + _ro_=[0,[9,pad$4,fmt_rest$9]]; + var fmt_result=_ro_; + 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), + _rI_=symb$0 - 88 | 0, + switch$2=0; + if(32 >= _rI_ >>> 0) + switch(_rI_) + {case 0: + case 12: + case 17: + case 23: + case 29: + case 32:var _ru_=1;switch$2 = 1;break + } + if(! switch$2)var _ru_=0; + if(_ru_){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,_aZ_]; + if(get_ign(0)) + var ignored$5=[11,counter],_rt_=[0,[23,ignored$5,fmt_rest$13]]; + else + var _rt_=[0,[21,counter,fmt_rest$13]]; + var fmt_result=_rt_} + break; + case 32: + case 35: + case 43: + case 45: + case 95: + var + fmt_result= + caml_call3(failwith_message(_aQ_),str,pct_ind,symb); + break; + case 88: + case 100: + case 105: + case 111: + case 117: + case 120: + var + _rx_=get_space(0), + _ry_=get_hash(0), + iconv$2= + compute_int_conv(pct_ind,str_ind,get_plus(0),_ry_,_rx_,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)], + _rz_=[0,[23,ignored$8,fmt_rest$17]]; + else + var + _rA_=get_prec(0), + match$20=make_padprec_fmt_ebb(get_int_pad(0),_rA_,fmt_rest$17), + fmt_rest$18=match$20[3], + prec$4=match$20[2], + pad$8=match$20[1], + _rz_=[0,[4,iconv$2,pad$8,prec$4,fmt_rest$18]]; + var fmt_result=_rz_; + 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 _rJ_=1;break; + case 1:var _rJ_=0;break; + case 2:var _rJ_=3;break; + default:var _rJ_=6} + var kind=_rJ_}} + else + if(69 <= symb) + {var switch$5=0; + switch(symb - 69 | 0) + {case 0:var _rK_=2;break; + case 1:switch$4 = 1;switch$5 = 1;break; + case 2:var _rK_=4;break; + default:var _rK_=7} + if(! switch$5)var kind=_rK_} + 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,_a1_]} + 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 _rq_=match?incompatible_flag(pct_ind,str_ind,95,cst$40):0; + else + var ndec=match[1],_rq_=[0,ndec]; + var + ignored$4=[6,get_pad_opt(95),_rq_], + _rr_=[0,[23,ignored$4,fmt_rest$11]]} + else + var + _rs_=get_prec(0), + match$14=make_padprec_fmt_ebb(get_pad(0),_rs_,fmt_rest$11), + fmt_rest$12=match$14[3], + prec$3=match$14[2], + pad$5=match$14[1], + _rr_=[0,[8,fconv,pad$5,prec$3,fmt_rest$12]]; + var fmt_result=_rr_; + 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 + _q9_=caml_string_get(str,str_ind), + _q__=get_space(0), + _q$_=get_hash(0), + iconv= + compute_int_conv + (pct_ind,str_ind + 1 | 0,get_plus(0),_q$_,_q__,_q9_), + 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)], + _ra_=[0,[23,ignored,fmt_rest]]; + else + var + _rc_=get_prec(0), + match$1=make_padprec_fmt_ebb(get_int_pad(0),_rc_,fmt_rest), + fmt_rest$0=match$1[3], + prec$0=match$1[2], + pad$0=match$1[1], + _ra_=[0,[5,iconv,pad$0,prec$0,fmt_rest$0]]; + var _rb_=_ra_; + break; + case 1:switch$7 = 1;switch$8 = 1;break; + default: + var + _rd_=caml_string_get(str,str_ind), + _re_=get_space(0), + _rf_=get_hash(0), + iconv$0= + compute_int_conv + (pct_ind,str_ind + 1 | 0,get_plus(0),_rf_,_re_,_rd_), + 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)], + _rg_=[0,[23,ignored$0,fmt_rest$1]]; + else + var + _rh_=get_prec(0), + match$3=make_padprec_fmt_ebb(get_int_pad(0),_rh_,fmt_rest$1), + fmt_rest$2=match$3[3], + prec$1=match$3[2], + pad$1=match$3[1], + _rg_=[0,[6,iconv$0,pad$1,prec$1,fmt_rest$2]]; + var _rb_=_rg_} + if(! switch$8)var fmt_result=_rb_} + else + if(76 === symb) + {var + _ri_=caml_string_get(str,str_ind), + _rj_=get_space(0), + _rk_=get_hash(0), + iconv$1= + compute_int_conv + (pct_ind,str_ind + 1 | 0,get_plus(0),_rk_,_rj_,_ri_), + 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)], + _rl_=[0,[23,ignored$1,fmt_rest$3]]; + else + var + _rm_=get_prec(0), + match$5=make_padprec_fmt_ebb(get_int_pad(0),_rm_,fmt_rest$3), + fmt_rest$4=match$5[3], + prec$2=match$5[2], + pad$2=match$5[1], + _rl_=[0,[7,iconv$1,pad$2,prec$2,fmt_rest$4]]; + var fmt_result=_rl_} + else + switch$7 = 1; + if(switch$7) + var + fmt_result= + caml_call3(failwith_message(_aN_),str,str_ind - 1 | 0,symb)} + if(1 - legacy_behavior$0) + {var _q0_=1 - plus_used[1],plus$0=_q0_?plus:_q0_; + if(plus$0)incompatible_flag(pct_ind,str_ind,symb,cst$41); + var _q1_=1 - hash_used[1],hash$0=_q1_?hash:_q1_; + if(hash$0)incompatible_flag(pct_ind,str_ind,symb,cst$42); + var _q2_=1 - space_used[1],space$0=_q2_?space:_q2_; + if(space$0)incompatible_flag(pct_ind,str_ind,symb,cst$43); + var _q3_=1 - pad_used[1],_q4_=_q3_?caml_notequal([0,pad],_aO_):_q3_; + if(_q4_)incompatible_flag(pct_ind,str_ind,symb,cst_padding$0); + var + _q5_=1 - prec_used[1], + _q6_=_q5_?caml_notequal([0,prec],_aP_):_q5_; + if(_q6_) + {var _q7_=ign?95:symb; + incompatible_flag(pct_ind,str_ind,_q7_,cst_precision$2)} + var plus$1=ign?plus:ign; + if(plus$1)incompatible_flag(pct_ind,str_ind,95,cst$44)} + var _q8_=1 - ign_used[1],ign$0=_q8_?ign:_q8_; + 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_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")return parse_conv(pad); + if(typeof prec === "number" && ! prec)return parse_conv(0); + if(minus) + {if(typeof prec === "number")return parse_conv(_aJ_); + var n=prec[1]; + return parse_conv([0,0,n])} + if(typeof prec === "number")return parse_conv(_aK_); + var n$0=prec[1]; + return parse_conv([0,1,n$0])} + 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) + return parse_conversion + (pct_ind, + str_ind + 1 | 0, + end_ind, + plus, + hash, + space, + ign, + pad, + 0, + pad, + symb); + var str_ind$0=str_ind + 1 | 0; + if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + function parse_literal(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])} + var 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 + _qZ_=str_ind$0 + 1 | 0, + minus$0=minus || (45 === symb$0?1:0); + return parse_literal(minus$0,_qZ_)} + break + } + return legacy_behavior$0 + ?parse_after_precision + (pct_ind, + str_ind$0, + end_ind, + minus, + plus, + hash, + space, + ign, + pad, + _aI_) + :invalid_format_without(str_ind$0 - 1 | 0,46,cst_precision)} + 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 _qW_=flag[1],_qX_=_qW_?1 - legacy_behavior$0:_qW_; + if(_qX_) + {var _qY_=caml_string_get(str,str_ind); + caml_call3(failwith_message(_aG_),str,str_ind,_qY_)} + 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 + _qR_=space[1], + _qS_=hash[1], + _qT_=plus[1], + _qU_=minus[1], + _qV_=zero[1]; + if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + var + padty= + _qV_ + ?_qU_ + ?legacy_behavior$0 + ?0 + :incompatible_flag(pct_ind,str_ind$0,45,cst_0) + :2 + :_qU_?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, + _qU_, + _qT_, + _qS_, + _qR_, + ign, + [0,padty,width])}} + else + if(42 === match$0) + return parse_after_padding + (pct_ind, + str_ind$0 + 1 | 0, + end_ind, + _qU_, + _qT_, + _qS_, + _qR_, + 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,_qU_,_qT_,_qS_,_qR_,ign,0); + case 1: + return parse_after_padding + (pct_ind,str_ind$0,end_ind,_qU_,_qT_,_qS_,_qR_,ign,0); + default: + return parse_after_padding + (pct_ind,str_ind$0,end_ind,_qU_,_qT_,_qS_,_qR_,ign,_aH_)}}} + 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)throw Not_found; + 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], + _qP_=[0,[18,formatting$0,fmt_rest$0]]; + return _qP_} + catch(_qQ_) + {_qQ_ = caml_wrap_exception(_qQ_); + if(_qQ_ !== Not_found)throw _qQ_; + 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]]}} + function parse_good_break(str_ind,end_ind) + {try + {var + _qI_=str_ind === end_ind?1:0, + _qJ_=_qI_ || (60 !== caml_string_get(str,str_ind)?1:0); + if(_qJ_)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), + _qK_=[0,s,width,0], + _qL_=str_ind_3 + 1 | 0, + formatting_lit$0=_qK_, + next_ind=_qL_; + 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), + _qM_=[0,s$0,width,offset], + _qN_=str_ind_5 + 1 | 0, + formatting_lit$0=_qM_, + next_ind=_qN_} + else + switch$1 = 1; + if(switch$1)throw Not_found} + catch(_qO_) + {_qO_ = caml_wrap_exception(_qO_); + if(_qO_ !== Not_found && _qO_[1] !== Failure)throw _qO_; + 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_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), + _qG_=[0,[0,str_ind_3 + 1 | 0,[1,s,size]]]} + else + var _qG_=0; + var _qF_=_qG_} + catch(_qH_) + {_qH_ = caml_wrap_exception(_qH_); + if(_qH_ !== Not_found && _qH_[1] !== Failure)throw _qH_; + var _qF_=0} + if(_qF_) + {var + match=_qF_[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,_aU_,fmt_rest$0]]} + 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))return str_ind$0; + var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1}} function parse_positive(str_ind,end_ind,acc) {var str_ind$0=str_ind,acc$0=acc; for(;;) @@ -20604,14 +21599,13 @@ 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}} + (failwith_message(_aW_),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}} 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)} + {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); @@ -20623,18 +21617,67 @@ 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) + throw [0,Assert_failure,_aX_]} + function search_subformat_end(str_ind,end_ind,c) {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}} + {if(str_ind$0 === end_ind) + caml_call3(failwith_message(_aY_),str,c,end_ind); + var match=caml_string_get(str,str_ind$0); + if(37 !== match) + {var str_ind$7=str_ind$0 + 1 | 0,str_ind$0=str_ind$7;continue} + 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}} 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)} + (failwith_message(_a2_),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(;;) @@ -20666,7 +21709,7 @@ {if(100 === symb)return 2;if(105 === symb)return 5} else {var switcher$1=symb - 88 | 0; - if(! (32 < switcher$1 >>> 0)) + if(32 >= switcher$1 >>> 0) switch(switcher$1) {case 0:return 8; case 12:return 0; @@ -20677,7 +21720,7 @@ }} if(switch$0) {var switcher=symb - 88 | 0; - if(! (32 < switcher >>> 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; @@ -20685,1146 +21728,35 @@ 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(! legacy_behavior$0) + return incompatible_flag(pct_ind,str_ind,symb,cst$49); + var hash$0=0; + continue }} - 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; + if(! plus$0) + {if(! space$0)throw [0,Assert_failure,_a0_]; + if(! legacy_behavior$0) + return incompatible_flag(pct_ind,str_ind,symb,cst$48); + var space$0=0; 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}} + if(space$0) + {if(! legacy_behavior$0) + return incompatible_flag(pct_ind,str_ind,32,cst$46); + var space$0=0; + continue} + if(! legacy_behavior$0) + return incompatible_flag(pct_ind,str_ind,symb,cst$47); + var plus$0=0}} 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_}} + {var _qD_=[0,type_format(fmt,fmtty),str];return _qD_} + catch(_qE_) + {_qE_ = caml_wrap_exception(_qE_); + if(_qE_ !== Type_mismatch)throw _qE_; + var _qC_=string_of_fmtty(fmtty); + return caml_call2(failwith_message(_a3_),str,_qC_)}} function format_of_string_format(str,param) {var str$0=param[2], @@ -21832,12 +21764,12 @@ 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 _qA_=[0,type_format(fmt$0,fmtty_of_fmt(fmt)),str];return _qA_} + catch(_qB_) + {_qB_ = caml_wrap_exception(_qB_); + if(_qB_ === Type_mismatch) + return caml_call2(failwith_message(_a4_),str,str$0); + throw _qB_}} var CamlinternalFormat= [0, @@ -21866,24 +21798,24 @@ recast]; caml_register_global(807,CamlinternalFormat,"CamlinternalFormat"); function kfprintf(k,o,param) - {var fmt=param[1],_qG_=0; + {var fmt=param[1],_qz_=0; return make_printf (function(acc){output_acc(o,acc);return caml_call1(k,o)}, - _qG_, + _qz_, fmt)} function kbprintf(k,b,param) - {var fmt=param[1],_qF_=0; + {var fmt=param[1],_qy_=0; return make_printf (function(acc){bufput_acc(b,acc);return caml_call1(k,b)}, - _qF_, + _qy_, 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 fprintf(oc,fmt){return kfprintf(function(_qx_){return 0},oc,fmt)} + function bprintf(b,fmt){return kbprintf(function(_qw_){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)} + {return ikfprintf(function(_qv_){return 0},oc,fmt)} + function ibprintf(b,fmt){return ikfprintf(function(_qu_){return 0},b,fmt)} function printf(fmt){return fprintf(stdout,fmt)} function eprintf(fmt){return fprintf(stderr,fmt)} function ksprintf(k,param) @@ -21918,90 +21850,86 @@ 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}} + {if(! l$0)throw Not_found; + 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}} 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_]} + _qt_=sub$0(s,i + 1 | 0,len - (i + 1 | 0) | 0); + return [0,sub$0(s,0,i),_qt_]} 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_]} + {if(! l)return cst_none; + var t=l[2],h=l[1],_qs_=cat(prefix,h); + return cat + (fold_left$0(function(x,y){return cat(x,cat(sep,y))},_qs_,t), + suffix)} + function help_action(param){throw [0,Stop,_a7_]} 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_; + {assoc3(cst_help$2,speclist);var _qp_=0,_qn_=_qp_} + catch(_qr_) + {_qr_ = caml_wrap_exception(_qr_); + if(_qr_ !== Not_found)throw _qr_; var - _qu_= + _qn_= [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_; + {assoc3(cst_help$1,speclist);var _qo_=0,add2=_qo_} + catch(_qq_) + {_qq_ = caml_wrap_exception(_qq_); + if(_qq_ !== Not_found)throw _qq_; var add2= [0, [0,cst_help$0,[0,help_action],cst_Display_this_list_of_optio$0], 0]} - return append(speclist,append(_qu_,add2))} + return append(speclist,append(_qn_,add2))} function usage_b(buf,speclist,errmsg) - {caml_call1(bprintf(buf,_a__),errmsg); - var _qr_=add_help(speclist); + {caml_call1(bprintf(buf,_a8_),errmsg); + var _qk_=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_)} + _ql_=0 < caml_ml_string_length(doc)?1:0; + if(! _ql_)return _ql_; + if(11 !== spec[0]) + return caml_call2(bprintf(buf,_a5_),key,doc); + var l=spec[1],_qm_=make_symlist(cst$53,cst$52,cst$51,l); + return caml_call3(bprintf(buf,_a6_),key,_qm_,doc)}, + _qk_)} 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 _qj_=usage_string(speclist,errmsg); + return caml_call1(eprintf(_a9_),_qj_)} 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_}} + {var _qh_=[0,bool_of_string(x)];return _qh_} + catch(_qi_) + {_qi_ = caml_wrap_exception(_qi_); + if(_qi_[1] === Invalid_argument)return 0; + throw _qi_}} 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_}} + {var _qf_=[0,caml_int_of_string(x)];return _qf_} + catch(_qg_) + {_qg_ = caml_wrap_exception(_qg_); + if(_qg_[1] === Failure)return 0; + throw _qg_}} 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_}} + {var _qd_=[0,caml_float_of_string(x)];return _qd_} + catch(_qe_) + {_qe_ = caml_wrap_exception(_qe_); + if(_qe_[1] === Failure)return 0; + throw _qe_}} function parse_and_expand_argv_dynamic_ (allow_expand,current,argv,speclist,anonfun,errmsg) {var initpos=current[1]; @@ -22014,200 +21942,197 @@ :cst$54; switch(error[0]) {case 0: - var _qj_=error[1]; + var _qc_=error[1]; if - (caml_string_notequal(_qj_,cst_help$3) + (caml_string_notequal(_qc_,cst_help$3) && - caml_string_notequal(_qj_,cst_help$4)) - caml_call2(bprintf(b,_ba_),progname,_qj_); + caml_string_notequal(_qc_,cst_help$4)) + caml_call2(bprintf(b,_a__),progname,_qc_); break; case 1: var expected=error[3],arg=error[2],opt=error[1]; - caml_call4(bprintf(b,_bd_),progname,arg,opt,expected); + caml_call4(bprintf(b,_bb_),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)} + case 2:var s=error[1];caml_call2(bprintf(b,_bc_),progname,s);break; + default:var s$0=error[1];caml_call2(bprintf(b,_bd_),progname,s$0)} usage_b(b,speclist[1],errmsg); - if(! caml_equal(error,_bb_) && ! caml_equal(error,_bc_)) + if(! caml_equal(error,_a$_) && ! caml_equal(error,_ba_)) 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 + {if(current[1] >= argv[1].length - 1)return 0; + try + {var + _p5_=current[1], + s=caml_check_bound(argv[1],_p5_)[1 + _p5_], + switch$0=0; + if(1 <= caml_ml_string_length(s) && 45 === caml_string_get(s,0)) + {try + {var + follow$1=0, + _p7_=assoc3(s,speclist[1]), + follow$0=follow$1, + action=_p7_} + catch(_qa_) + {_qa_ = caml_wrap_exception(_qa_); + if(_qa_ !== Not_found)throw _qa_; + 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}} + match=split$1(s), + arg=match[2], + keyword=match[1], + follow=[0,arg], + _p6_=assoc3(keyword,speclist[1])} + catch(_qb_) + {_qb_ = caml_wrap_exception(_qb_); + if(_qb_ === Not_found)throw [0,Stop,[0,s]]; + throw _qb_} + var follow$0=follow,action=_p6_} + var + no_arg$0= + function(s,follow) + {function no_arg(param) + {if(! follow)return 0; + var arg=follow[1]; + throw [0,Stop,[1,s,arg,cst_no_argument]]} + 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) + throw [0,Stop,[2,s]]; + var _p$_=current[1] + 1 | 0; + return caml_check_bound(argv[1],_p$_)[1 + _p$_]} + 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)throw [0,Stop,[1,s,arg,cst_a_boolean]]; + var s$0=match[1]; + caml_call1(f$0,s$0); + return consume_arg(0); + 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)throw [0,Stop,[1,s,arg$1,cst_an_integer]]; + var x=match$0[1]; + caml_call1(f$2,x); + return consume_arg(0); + case 7: + var + r$2=param[1], + arg$2=get_arg(0), + match$1=int_of_string_opt$0(arg$2); + if(! match$1)throw [0,Stop,[1,s,arg$2,cst_an_integer$0]]; + var x$0=match$1[1]; + r$2[1] = x$0; + return consume_arg(0); + case 8: + var + f$3=param[1], + arg$3=get_arg(0), + match$2=float_of_string_opt(arg$3); + if(! match$2)throw [0,Stop,[1,s,arg$3,cst_a_float]]; + var x$1=match$2[1]; + caml_call1(f$3,x$1); + return consume_arg(0); + case 9: + var + r$3=param[1], + arg$4=get_arg(0), + match$3=float_of_string_opt(arg$4); + if(! match$3)throw [0,Stop,[1,s,arg$4,cst_a_float$0]]; + var x$2=match$3[1]; + r$3[1] = x$2; + return consume_arg(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)) + throw [0, + Stop, + [1, + s, + arg$5, + cat(cst_one_of,make_symlist(cst$57,cst$56,cst$55,symb))]]; + caml_call1(f$4,arg$5); + return consume_arg(0); + case 12: + var f$5=param[1]; + no_arg(0); + for(;;) + {if(current[1] >= (argv[1].length - 1 - 1 | 0))return 0; + var _p8_=current[1] + 1 | 0; + caml_call1(f$5,caml_check_bound(argv[1],_p8_)[1 + _p8_]); + consume_arg(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)) + return caml_call1(f$6,rev(acc[1])); + var _p__=current[1] + 1 | 0,_p9_=acc[1]; + acc[1] = [0,caml_check_bound(argv[1],_p__)[1 + _p__],_p9_]; + consume_arg(0)} + 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) + {exn = caml_wrap_exception(exn); + if(exn[1] === Bad){var m=exn[2];throw convert_error([3,m])} + if(exn[1] !== Stop)throw exn; + var e=exn[2]; + throw convert_error(e)} + current[1]++}} function parse_and_expand_argv_dynamic (current,argv,speclist,anonfun,errmsg) {return parse_and_expand_argv_dynamic_ @@ -22222,61 +22147,62 @@ ([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_} + {var _p4_=parse_argv(0,caml_sys_argv(0),l,f,msg);return _p4_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] === Bad) + {var msg$0=exn[2];caml_call1(eprintf(_be_),msg$0);return exit(2)} + if(exn[1] !== Help)throw exn; + var msg$1=exn[2]; + caml_call1(printf(_bf_),msg$1); + return exit(0)}} + function parse_dynamic(l,f,msg) + {try + {var _p3_=parse_argv_dynamic(0,caml_sys_argv(0),l,f,msg);return _p3_} 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}} + if(exn[1] !== Help)throw exn; + var msg$1=exn[2]; + caml_call1(printf(_bh_),msg$1); + return exit(0)}} 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_} + _p2_=parse_and_expand_argv_dynamic(current$0,argv,spec,f,msg); + return _p2_} 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}} + {var msg$0=exn[2];caml_call1(eprintf(_bi_),msg$0);return exit(2)} + if(exn[1] !== Help)throw exn; + var msg$1=exn[2]; + caml_call1(printf(_bj_),msg$1); + return exit(0)}} 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}} + if(32 !== caml_string_get(s,n$0))return n$0; + var n$1=n$0 + 1 | 0,n$0=n$1}} 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_} + catch(_p0_) + {_p0_ = caml_wrap_exception(_p0_); + if(_p0_ !== Not_found)throw _p0_; + try + {var n=index$0(s,32)} + catch(_p1_) + {_p1_ = caml_wrap_exception(_p1_); + if(_p1_ === Not_found)return len; + throw _p1_} + return loop(n + 1 | 0)} return loop(n$0 + 1 | 0)} function max_arg_len(cur,param) {var doc=param[3],spec=param[2],kwd=param[1]; @@ -22297,32 +22223,30 @@ 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}, + {var _pY_=ksd[1],_pZ_=ksd[2]; + if(! caml_string_notequal(ksd[3],cst$58))return ksd; + if(11 === _pZ_[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, + _pY_, + _pZ_, + 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(_pY_), + diff=(len$0 - kwd_len | 0) - cutcol | 0; + if(0 >= diff)return [0,_pY_,spec,replace_leading_tab(msg)]; + 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,_pY_,spec,cat(prefix,cat(spaces,suffix))]}, completed)} function read_aux(trim,sep,file) {var ic=open_bin$0(file),buf=create$2(200),words=[0,0]; @@ -22331,9 +22255,9 @@ 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_} + {var _pX_=sub$0(s,0,len - 1 | 0);switch$0 = 1} + if(! switch$0)var _pX_=s; + var word=_pX_} else var word=s; words[1] = [0,word,words[1]]; @@ -22341,27 +22265,25 @@ 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_)} + if(c === sep)stash(0);else add_char(buf,c)}} + catch(_pW_) + {_pW_ = caml_wrap_exception(_pW_); + if(_pW_ !== End_of_file)throw _pW_; + if(0 < buf[2])stash(0); + caml_ml_close_channel(ic); + return of_list(rev(words[1]))}} + var _bk_=10,_bl_=1; + function read_arg(_pV_){return read_aux(_bl_,_bk_,_pV_)} + var _bm_=0,_bn_=0; + function read_arg0(_pU_){return read_aux(_bn_,_bm_,_pU_)} function write_aux(sep,file,args) {var oc=open_bin(file); - iter$5(function(s){return caml_call2(fprintf(oc,_bq_),s,sep)},args); + iter$5(function(s){return caml_call2(fprintf(oc,_bo_),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 _bp_=10; + function write_arg(_pS_,_pT_){return write_aux(_bp_,_pS_,_pT_)} + var _bq_=0; + function write_arg0(_pQ_,_pR_){return write_aux(_bq_,_pQ_,_pR_)} var Stdlib_Arg= [0, @@ -22391,26 +22313,22 @@ {var f=x[1 + i]; return is_block(f) ?caml_obj_tag(f) === 252 - ?caml_call1(sprintf(_bt_),f) + ?caml_call1(sprintf(_br_),f) :caml_obj_tag(f) === 253?to_string(f):cst$60 - :caml_call1(sprintf(_bu_),f)} + :caml_call1(sprintf(_bs_),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_)} + var _pO_=other_fields(x,i + 1 | 0),_pP_=field(x,i); + return caml_call2(sprintf(_bt_),_pP_,_pO_)} 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}} + {if(! param$0)return 0; + var tl=param$0[2],hd=param$0[1]; + try {var switch$0=0,val=caml_call1(hd,x);switch$0 = 1}catch(_pN_){} + if(switch$0 && val){var s=val[1];return [0,s]} + var param$0=tl}} return conv(printers[1])} function to_string_default(x) {if(x === Out_of_memory)return cst_Out_of_memory; @@ -22450,41 +22368,41 @@ 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]} + if(0 !== caml_obj_tag(x))return x[1]; + var constructor=x[1][1],match=x.length - 1; + if(2 < match >>> 0) + var + _pJ_=other_fields(x,2), + _pK_=field(x,1), + _pM_=caml_call2(sprintf(_bu_),_pK_,_pJ_); + else + switch(match) + {case 0:var _pM_=cst$62;break; + case 1:var _pM_=cst$63;break; + default:var _pL_=field(x,1),_pM_=caml_call1(sprintf(_bv_),_pL_)} + return cat(constructor,_pM_)} function to_string$6(e) {var match=use_printers(e); - if(match){var s=match[1];return s} - return to_string_default(e)} + if(! match)return to_string_default(e); + var s=match[1]; + return s} function print(fct,arg) {try - {var _pN_=caml_call1(fct,arg);return _pN_} + {var _pI_=caml_call1(fct,arg);return _pI_} catch(x) {x = caml_wrap_exception(x); - var _pM_=to_string$6(x); - caml_call1(eprintf(_by_),_pM_); + var _pH_=to_string$6(x); + caml_call1(eprintf(_bw_),_pH_); caml_ml_flush(stderr); throw x}} function catch$0(fct,arg) {try - {var _pL_=caml_call1(fct,arg);return _pL_} + {var _pG_=caml_call1(fct,arg);return _pG_} catch(x) {x = caml_wrap_exception(x); caml_ml_flush(stdout); - var _pK_=to_string$6(x); - caml_call1(eprintf(_bz_),_pK_); + var _pF_=to_string$6(x); + caml_call1(eprintf(_bx_),_pF_); return exit(2)}} function raw_backtrace_entries(bt){return bt} function convert_raw_backtrace(bt) @@ -22496,48 +22414,46 @@ :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]); + _px_=slot[5], + _py_=slot[4], + _pz_=slot[3], + _pA_=slot[6]?cst_inlined:cst$64, + _pB_=slot[2], + _pC_=slot[7], + _pD_=info(slot[1]); return [0, - caml_call7(sprintf(_bA_),_pI_,_pH_,_pG_,_pF_,_pE_,_pD_,_pC_)]} + caml_call7(sprintf(_by_),_pD_,_pC_,_pB_,_pA_,_pz_,_py_,_px_)]} if(slot[1])return 0; - var _pJ_=info(0); - return [0,caml_call1(sprintf(_bB_),_pJ_)]} + var _pE_=info(0); + return [0,caml_call1(sprintf(_bz_),_pE_)]} 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_)} + if(! backtrace)return fprintf(outchan,_bB_); + var a=backtrace[1],_pv_=a.length - 1 - 1 | 0,_pu_=0; + if(_pv_ >= 0) + {var i=_pu_; + for(;;) + {var match=format_backtrace_slot(i,caml_check_bound(a,i)[1 + i]); + if(match){var str=match[1];caml_call1(fprintf(outchan,_bA_),str)} + var _pw_=i + 1 | 0; + if(_pv_ !== i){var i=_pw_;continue} + break}} + return 0} 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_} + if(! backtrace)return cst_Program_not_linked_with_g_; + var a=backtrace[1],b=create$2(1024),_ps_=a.length - 1 - 1 | 0,_pr_=0; + if(_ps_ >= 0) + {var i=_pr_; + for(;;) + {var match=format_backtrace_slot(i,caml_check_bound(a,i)[1 + i]); + if(match){var str=match[1];caml_call1(bprintf(b,_bC_),str)} + var _pt_=i + 1 | 0; + if(_ps_ !== i){var i=_pt_;continue} + break}} + return contents(b)} 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} @@ -22549,19 +22465,18 @@ 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} + if(! match)return 0; + var backtrace=match[1],i$1=backtrace.length - 1 - 1 | 0,i=i$1; + for(;;) + {if(-1 === i) + var _pq_=0; + else + {var + param=caml_check_bound(backtrace,i)[1 + i], + _pp_=0 === param[0]?1:0; + if(! _pp_){var i$0=i - 1 | 0,i=i$0;continue} + var _pq_=_pp_} + return _pq_?[0,backtrace]:0}} function backtrace_slots_of_raw_entry(entry) {return backtrace_slots([0,entry])} function raw_backtrace_length(bt){return bt.length - 1} @@ -22573,21 +22488,21 @@ 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_}} + _po_=1 - success; + if(_po_)continue; + return _po_}} 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(); + var errors=_bD_.slice(); function default_uncaught_exception_han(exn,raw_backtrace) - {var _pr_=to_string$6(exn); - caml_call1(eprintf(_bG_),_pr_); + {var _pm_=to_string$6(exn); + caml_call1(eprintf(_bE_),_pm_); 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_])} + {var _pn_=abs(status); + prerr_endline(caml_check_bound(errors,_pn_)[1 + _pn_])} return caml_ml_flush(stderr)} var uncaught_exception_handler=[0,default_uncaught_exception_han]; function set_uncaught_exception_handler(fn) @@ -22599,46 +22514,46 @@ {var raw_backtrace= debugger_in_use?empty_backtrace:caml_get_exception_raw_backtra(0); - try {do_at_exit(0)}catch(_pq_){} + try {do_at_exit(0)}catch(_pl_){} try {var - _pm_=caml_call2(uncaught_exception_handler[1],exn,raw_backtrace), - _pl_=_pm_} + _ph_=caml_call2(uncaught_exception_handler[1],exn,raw_backtrace), + _pg_=_ph_} 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_); + _pe_=to_string$6(exn); + caml_call1(eprintf(_bF_),_pe_); print_raw_backtrace(stderr,raw_backtrace); - var _pk_=to_string$6(exn$0); - caml_call1(eprintf(_bI_),_pk_); + var _pf_=to_string$6(exn$0); + caml_call1(eprintf(_bG_),_pf_); 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}} + var _pg_=caml_ml_flush(stderr)} + var _pi_=_pg_} + catch(_pk_) + {_pk_ = caml_wrap_exception(_pk_); + if(_pk_ !== Out_of_memory)throw _pk_; + var _pi_=prerr_endline(cst_Fatal_error_out_of_memory_)} + return _pi_} + catch(_pj_){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_)} + function _bH_(_pd_){return runtime.caml_raw_backtrace_next_slot(_pd_)} + function _bI_(_pc_){return runtime.caml_convert_raw_backtrace_slot(_pc_)} + function _bJ_(_pb_,_pa_) + {return runtime.caml_raw_backtrace_slot(_pb_,_pa_)} var - _bM_= + _bK_= [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_)} + function _bL_(_o$_){return caml_get_exception_raw_backtra(_o$_)} + function _bM_(_o__){return runtime.caml_backtrace_status(_o__)} var Stdlib_Printexc= [0, @@ -22648,23 +22563,23 @@ catch$0, print_backtrace, get_backtrace, - function(_pc_){return runtime.caml_record_backtrace(_pc_)}, - _bO_, + function(_o9_){return runtime.caml_record_backtrace(_o9_)}, + _bM_, register_printer, use_printers, raw_backtrace_entries, - _bN_, + _bL_, 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_, + raw_backtrace_length, _bJ_, + _bI_, + _bH_, exn_slot_id, exn_slot_name]; caml_register_global(811,Stdlib_Printexc,"Stdlib__Printexc"); @@ -22676,14 +22591,13 @@ [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}); + {if(param[1] !== Finally_raised)return 0; + var exn=param[2]; + return [0,cat(cst_Fun_Finally_raised,to_string$6(exn))]}); function protect(finally$0,work) {function finally_no_exn(param) {try - {var _pb_=caml_call1(finally$0,0);return _pb_} + {var _o8_=caml_call1(finally$0,0);return _o8_} catch(e) {e = caml_wrap_exception(e); var bt=caml_get_exception_raw_backtra(0),exn=[0,Finally_raised,e]; @@ -22702,47 +22616,47 @@ 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 st=runtime.caml_gc_stat(0),_oQ_=st[4]; + caml_call1(fprintf(c,_bN_),_oQ_); + var _oR_=st[5]; + caml_call1(fprintf(c,_bO_),_oR_); + var _oS_=st[14]; + caml_call1(fprintf(c,_bP_),_oS_); + var _oT_=st[17]; + caml_call1(fprintf(c,_bQ_),_oT_); + fprintf(c,_bR_); 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_); + _oU_=st[1], + l1=caml_ml_string_length(caml_call1(sprintf(_bS_),_oU_)), + _oV_=st[1]; + caml_call2(fprintf(c,_bT_),l1,_oV_); + var _oW_=st[2]; + caml_call2(fprintf(c,_bU_),l1,_oW_); + var _oX_=st[3]; + caml_call2(fprintf(c,_bV_),l1,_oX_); + fprintf(c,_bW_); 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_)} + _oY_=st[15], + l2=caml_ml_string_length(caml_call1(sprintf(_bX_),_oY_)), + _oZ_=st[15]; + caml_call2(fprintf(c,_bY_),l2,_oZ_); + var _o0_=st[6]; + caml_call2(fprintf(c,_bZ_),l2,_o0_); + var _o1_=st[8]; + caml_call2(fprintf(c,_b0_),l2,_o1_); + var _o2_=st[10]; + caml_call2(fprintf(c,_b1_),l2,_o2_); + var _o3_=st[12]; + caml_call2(fprintf(c,_b2_),l2,_o3_); + var _o4_=st[13]; + caml_call2(fprintf(c,_b3_),l2,_o4_); + fprintf(c,_b4_); + var _o5_=st[9]; + caml_call1(fprintf(c,_b5_),_o5_); + var _o6_=st[11]; + caml_call1(fprintf(c,_b6_),_o6_); + var _o7_=st[7]; + return caml_call1(fprintf(c,_b7_),_o7_)} function allocated_bytes(param) {var match=runtime.caml_gc_counters(0), @@ -22752,48 +22666,38 @@ return (mi + ma - pro) * 4} function create_alarm(f){return [0,1]} function delete_alarm(a){a[1] = 0;return 0} + function _b8_(param){return 0} + function _b9_(param){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__]; + var null_tracker=[0,function(param){return 0},_b$_,_b__,_b9_,_b8_]; 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 _ca_=[0,null_tracker,start,runtime.caml_memprof_stop]; + function _cb_(_oP_){return runtime.caml_final_release(_oP_)} var + _cc_=runtime.caml_final_register_called_without_value, Stdlib_Gc= [0, print_stat, allocated_bytes, - function(_oR_,_oQ_){return runtime.caml_final_register(_oR_,_oQ_)}, - _ce_, - _cd_, + function(_oO_,_oN_){return runtime.caml_final_register(_oO_,_oN_)}, + _cc_, + _cb_, create_alarm, delete_alarm, - _cc_]; + _ca_]; 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)) + (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) @@ -22807,7 +22711,7 @@ 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 char_hex(n){var _oM_=10 <= n?87:48;return n + _oM_ | 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; @@ -22815,28 +22719,28 @@ {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)}} + var _oL_=i + 1 | 0; + if(15 === i)return caml_string_of_bytes(result); + var i=_oL_}} 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} + {if(103 > c)return (c - 97 | 0) + 10 | 0} else - if(! (71 <= c))return (c - 65 | 0) + 10 | 0} + if(71 > c)return (c - 65 | 0) + 10 | 0} else - if(! (9 < c - 48 >>> 0))return c - 48 | 0; + 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)); + {var i$0=2 * i | 0,_oJ_=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)}} + (result,i,chr((digit(caml_string_get(s,i$0)) << 4) + _oJ_ | 0)); + var _oK_=i + 1 | 0; + if(15 === i)return caml_string_of_bytes(result); + var i=_oK_}} var Stdlib_Digest= [0, @@ -22859,11 +22763,11 @@ {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_; + var _oI_=i$0 + 1 | 0; + if(54 !== i$0){var i$0=_oI_;continue} + var accu=[0,cst_x$1],_oE_=54 + max$1(55,l) | 0,_oD_=0; + if(_oE_ >= 0) + {var i=_oD_; for(;;) {var j=i % 55 | 0, @@ -22871,15 +22775,15 @@ 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} + _oF_=accu[1], + _oz_=caml_string_get(_oF_,3) << 24, + _oA_=caml_string_get(_oF_,2) << 16, + _oB_=caml_string_get(_oF_,1) << 8, + _oC_=((caml_string_get(_oF_,0) + _oB_ | 0) + _oA_ | 0) + _oz_ | 0, + _oG_=(caml_check_bound(s[1],j)[1 + j] ^ _oC_) & 1073741823; + caml_check_bound(s[1],j)[1 + j] = _oG_; + var _oH_=i + 1 | 0; + if(_oE_ !== i){var i=_oH_;continue} break}} s[2] = 0; return 0}} @@ -22890,18 +22794,18 @@ 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, + _ow_=s[2], + curval=caml_check_bound(s[1],_ow_)[1 + _ow_], + _ox_=(s[2] + 24 | 0) % 55 | 0, newval= - caml_check_bound(s[1],_oA_)[1 + _oA_] + caml_check_bound(s[1],_ox_)[1 + _ox_] + (curval ^ (curval >>> 25 | 0) & 31) | 0, newval30=newval & 1073741823, - _oB_=s[2]; - caml_check_bound(s[1],_oB_)[1 + _oB_] = newval30; + _oy_=s[2]; + caml_check_bound(s[1],_oy_)[1 + _oy_] = newval30; return newval30} function intaux(s,n) {for(;;) @@ -22909,34 +22813,23 @@ 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); + {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)} + {if(0 >= bound)return invalid_arg(cst_Random_full_int); + if(1073741823 >= bound)return intaux(s,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), + r$0=((b3 & 1073741312) << 12 | b2 >>> 9 | 0) << 20 | b1 >>> 10 | 0, + r=r$0; + var v=caml_mod(r,bound); + if(((2147483647 - bound | 0) + 1 | 0) < (r - v | 0))continue; + return v}} function int32(s,bound) {if(caml_lessequal(bound,0))return invalid_arg(cst_Random_int32); for(;;) @@ -22945,7 +22838,7 @@ continue; return v}} function int64(s,bound) - {if(caml_lessequal(bound,_cg_))return invalid_arg(cst_Random_int64); + {if(caml_lessequal(bound,_ce_))return invalid_arg(cst_Random_int64); for(;;) {var b1=caml_int64_of_int32(bits(s)), @@ -22956,7 +22849,7 @@ if (caml_greaterthan (caml_int64_sub(r,v), - caml_int64_add(caml_int64_sub(max_int$2,bound),_cf_))) + caml_int64_add(caml_int64_sub(max_int$2,bound),_cd_))) continue; return v}} function nativeint(s,bound){return int32(s,bound)} @@ -22976,7 +22869,7 @@ 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]; + var default$0=[0,_cf_.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)} @@ -22994,7 +22887,7 @@ function get_state(param){return copy$5(default$0)} function set_state(s){return assign(default$0,s)} var - _ci_= + _cg_= [0, make$3, make_self_init, @@ -23026,90 +22919,86 @@ bits32$0, bits64$0, nativebits$0, - _ci_, + _cg_, 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_} + {var _ou_=h.length - 1 < 4?1:0,_ov_=_ou_ || (h[4] < 0?1:0);return _ov_} 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_; + {var _c3_=caml_sys_getenv(cst_OCAMLRUNPARAM),params=_c3_} + catch(_os_) + {_os_ = caml_wrap_exception(_os_); + if(_os_ !== Not_found)throw _os_; 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 _c2_=caml_sys_getenv(cst_CAMLRUNPARAM),_ch_=_c2_} + catch(_ot_) + {_ot_ = caml_wrap_exception(_ot_); + if(_ot_ !== Not_found)throw _ot_; + var _ch_=cst$66} + var params=_ch_} 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)}]; + var prng=[246,function(_or_){return caml_call1(_cg_[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}} + var x$1=x$0 * 2 | 0,x$0=x$1}} 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_); + _op_=caml_obj_tag(prng), + _oq_=250 === _op_?prng[1]:246 === _op_?force_lazy_block(prng):prng, + seed=caml_call1(_cg_[4],_oq_); 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_} + {var _oo_=0 < h[1]?1:0; + return _oo_?(h[1] = 0,fill$0(h[2],0,h[2].length - 1,0)):_oo_} 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} + {if(! param)return 0; + 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)return prec$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}} 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_]} + {var _ol_=init[4],_om_=init[3],_on_=map$7(copy_bucketlist,init[2]); + return [0,init[1],_on_,_om_,_ol_]} 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_; + _of_=odata.length - 1 - 1 | 0, + _oe_=0; + if(_of_ >= 0) + {var i$0=_oe_; a: for(;;) {var cell$1=caml_check_bound(odata,i$0)[1 + i$0],cell=cell$1; @@ -23129,58 +23018,55 @@ 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} + var _ok_=i$0 + 1 | 0; + if(_of_ !== i$0){var i$0=_ok_;continue a} break} break}} if(inplace) - {var _ok_=nsize - 1 | 0,_oj_=0; - if(! (_ok_ < 0)) - {var i=_oj_; + {var _oh_=nsize - 1 | 0,_og_=0; + if(_oh_ >= 0) + {var i=_og_; 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} + var _oj_=i + 1 | 0; + if(_oh_ !== i){var i=_oj_;continue} break}} - var _ol_=0} + var _oi_=0} else - var _ol_=inplace; - return _ol_} + var _oi_=inplace; + return _oi_} 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_} + _od_=nsize < max_array_length?1:0; + if(! _od_)return _od_; + 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)} 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}} + {if(! param$0)return 0; + var key=param$0[1],data=param$0[2],next=param$0[3]; + caml_call2(f,key,data); + var param$0=next}} 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_; + {var d=h[2],_n$_=d.length - 1 - 1 | 0,_n__=0; + if(_n$_ >= 0) + {var i=_n__; for(;;) {do_bucket(caml_check_bound(d,i)[1 + i]); - var _of_=i + 1 | 0; - if(_oc_ !== i){var i=_of_;continue} + var _oc_=i + 1 | 0; + if(_n$_ !== i){var i=_oc_;continue} break}} - var _od_=1 - old_trav,_oe_=_od_?flip_ongoing_traversal(h):_od_; - return _oe_} + var _oa_=1 - old_trav,_ob_=_oa_?flip_ongoing_traversal(h):_oa_; + return _ob_} catch(exn) {exn = caml_wrap_exception(exn); if(old_trav)throw exn; @@ -23189,41 +23075,37 @@ 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)}} + {if(! slot$0) + return prec$0 + ?(prec$0[3] = 0,0) + :(caml_check_bound(h[2],i)[1 + i] = 0,0); + var + key=slot$0[1], + data=slot$0[2], + next=slot$0[3], + match=caml_call2(f,key,data); + if(! match){h[1] = h[1] - 1 | 0;var slot$0=next;continue} + 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}} 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_; + {var _n6_=d.length - 1 - 1 | 0,_n5_=0; + if(_n6_ >= 0) + {var i=_n5_; 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} + var _n9_=i + 1 | 0; + if(_n6_ !== i){var i=_n9_;continue} break}} - var _n__=1 - old_trav,_n$_=_n__?flip_ongoing_traversal(h):_n__; - return _n$_} + var _n7_=1 - old_trav,_n8_=_n7_?flip_ongoing_traversal(h):_n7_; + return _n8_} catch(exn) {exn = caml_wrap_exception(exn); if(old_trav)throw exn; @@ -23233,31 +23115,29 @@ {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}} + {if(! b$0)return accu$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}} 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_; + {var d=h[2],accu=[0,init],_n1_=d.length - 1 - 1 | 0,_n0_=0; + if(_n1_ >= 0) + {var i=_n0_; 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} + {var _n3_=accu[1]; + accu[1] = do_bucket(caml_check_bound(d,i)[1 + i],_n3_); + var _n4_=i + 1 | 0; + if(_n1_ !== i){var i=_n4_;continue} break}} if(1 - old_trav)flip_ongoing_traversal(h); - var _n5_=accu[1]; - return _n5_} + var _n2_=accu[1]; + return _n2_} catch(exn) {exn = caml_wrap_exception(exn); if(old_trav)throw exn; @@ -23266,31 +23146,29 @@ 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}} + {if(! param$0)return accu$0; + var + param$1=param$0[3], + accu$1=accu$0 + 1 | 0, + accu$0=accu$1, + param$0=param$1}} function stats(h) {var - _nZ_=h[2], - _n0_=0, + _nW_=h[2], + _nX_=0, mbl= fold_left$3 - (function(m,b){return max$1(m,bucket_length(0,b))},_n0_,_nZ_), + (function(m,b){return max$1(m,bucket_length(0,b))},_nX_,_nW_), histo=caml_make_vect(mbl + 1 | 0,0), - _n1_=h[2]; + _nY_=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_; + _nZ_=caml_check_bound(histo,l)[1 + l] + 1 | 0; + caml_check_bound(histo,l)[1 + l] = _nZ_; return 0}, - _n1_); + _nY_); return [0,h[1],h[2].length - 1,mbl,histo]} function to_seq$9(tbl) {var tbl_data=tbl[2]; @@ -23299,36 +23177,35 @@ 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_)}]} + return [0,[0,key,data],function(_nV_){return aux(i$0,next,_nV_)}]} 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_)}} + buck$0=buck$1}} + var _nS_=0,_nT_=0; + return function(_nU_){return aux(_nT_,_nS_,_nU_)}} 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_)}} + {var _nO_=to_seq$9(m); + function _nP_(_nR_){return _nR_[1]} + return function(_nQ_){return map$1(_nP_,_nO_,_nQ_)}} 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_)}} + {var _nK_=to_seq$9(m); + function _nL_(_nN_){return _nN_[2]} + return function(_nM_){return map$1(_nL_,_nK_,_nM_)}} 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_} + {var _nJ_=h[2].length - 1 - 1 | 0; + return caml_call2(H[2],h[3],key) & _nJ_} 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_} + var _nI_=h[2].length - 1 << 1 < h[1]?1:0; + return _nI_?resize$0(key_index,h):_nI_} function remove(h,key) {var i=key_index(h,key), @@ -23336,72 +23213,58 @@ 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}} + {if(! c)return 0; + 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}} 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} + {var _nH_=key_index(h,key),match=caml_check_bound(h[2],_nH_)[1 + _nH_]; + if(! match)throw Not_found; + var k1=match[1],d1=match[2],next1=match[3]; + if(caml_call2(H[1],key,k1))return d1; + if(! next1)throw Not_found; + var k2=next1[1],d2=next1[2],next2=next1[3]; + if(caml_call2(H[1],key,k2))return d2; + if(! next2)throw Not_found; + 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)throw Not_found; + var k=param[1],data=param[2],next=param[3]; + if(caml_call2(H[1],key,k))return data; + var param=next}} 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} + {var _nG_=key_index(h,key),match=caml_check_bound(h[2],_nG_)[1 + _nG_]; + if(! match)return 0; + var k1=match[1],d1=match[2],next1=match[3]; + if(caml_call2(H[1],key,k1))return [0,d1]; + if(! next1)return 0; + var k2=next1[1],d2=next1[2],next2=next1[3]; + if(caml_call2(H[1],key,k2))return [0,d2]; + if(! next2)return 0; + 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)return 0; + var k=param[1],data=param[2],next=param[3]; + if(caml_call2(H[1],key,k))return [0,data]; + var param=next}} 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_])} + {if(! param$0)return 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}} + var _nF_=key_index(h,key); + return find_in_bucket(caml_check_bound(h[2],_nF_)[1 + _nF_])} function replace(h,key,data) {var i=key_index(h,key), @@ -23413,30 +23276,28 @@ if(! caml_call2(H[1],k,key)){var param=next;continue} param[1] = key; param[2] = data; - var _nF_=0} + var _nC_=0} else - var _nF_=1; - if(_nF_) + var _nC_=1; + if(_nC_) {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_} + var _nD_=h[2].length - 1 << 1 < h[1]?1:0; + if(_nD_)return resize$0(key_index,h); + var _nE_=_nD_} else - var _nH_=_nF_; - return _nH_}} + var _nE_=_nC_; + return _nE_}} function mem(h,key) {var - _nE_=key_index(h,key), - param$0=caml_check_bound(h[2],_nE_)[1 + _nE_], + _nB_=key_index(h,key), + param$0=caml_check_bound(h[2],_nB_)[1 + _nB_], 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}} + {if(! param)return 0; + var k=param[1],next=param[3],_nA_=caml_call2(H[1],k,key); + if(_nA_)return _nA_; + var param=next}} function add_seq(tbl,i) {return iter (function(param) @@ -23496,8 +23357,8 @@ 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)} + _nz_=include[1]; + function create(sz){return caml_call2(_nz_,_ci_,sz)} function of_seq(i) {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} return [0, @@ -23536,77 +23397,63 @@ 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_} + var _ny_=h[2].length - 1 << 1 < h[1]?1:0; + return _ny_?resize$0(key_index,h):_ny_} 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}} + {if(! c)return 0; + 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}} 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} + {var _nx_=key_index(h,key),match=caml_check_bound(h[2],_nx_)[1 + _nx_]; + if(! match)throw Not_found; + var k1=match[1],d1=match[2],next1=match[3]; + if(0 === caml_compare(key,k1))return d1; + if(! next1)throw Not_found; + var k2=next1[1],d2=next1[2],next2=next1[3]; + if(0 === caml_compare(key,k2))return d2; + if(! next2)throw Not_found; + var k3=next2[1],d3=next2[2],next3=next2[3]; + if(0 === caml_compare(key,k3))return d3; + var param=next3; + for(;;) + {if(! param)throw Not_found; + var k=param[1],data=param[2],next=param[3]; + if(0 === caml_compare(key,k))return data; + var param=next}} 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} + {var _nw_=key_index(h,key),match=caml_check_bound(h[2],_nw_)[1 + _nw_]; + if(! match)return 0; + var k1=match[1],d1=match[2],next1=match[3]; + if(0 === caml_compare(key,k1))return [0,d1]; + if(! next1)return 0; + var k2=next1[1],d2=next1[2],next2=next1[3]; + if(0 === caml_compare(key,k2))return [0,d2]; + if(! next2)return 0; + 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)return 0; + var k=param[1],data=param[2],next=param[3]; + if(0 === caml_compare(key,k))return [0,data]; + var param=next}} 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_])} + {if(! param$0)return 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}} + var _nv_=key_index(h,key); + return find_in_bucket(caml_check_bound(h[2],_nv_)[1 + _nv_])} function replace(h,key,data) {var i=key_index(h,key), @@ -23618,30 +23465,28 @@ if(0 !== caml_compare(k,key)){var param=next;continue} param[1] = key; param[2] = data; - var _nv_=0} + var _ns_=0} else - var _nv_=1; - if(_nv_) + var _ns_=1; + if(_ns_) {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_} + var _nt_=h[2].length - 1 << 1 < h[1]?1:0; + if(_nt_)return resize$0(key_index,h); + var _nu_=_nt_} else - var _nx_=_nv_; - return _nx_}} + var _nu_=_ns_; + return _nu_}} function mem$2(h,key) {var - _nu_=key_index(h,key), - param$0=caml_check_bound(h[2],_nu_)[1 + _nu_], + _nr_=key_index(h,key), + param$0=caml_check_bound(h[2],_nr_)[1 + _nr_], 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}} + {if(! param)return 0; + var k=param[1],next=param[3],_nq_=0 === caml_compare(k,key)?1:0; + if(_nq_)return _nq_; + var param=next}} function add_seq$2(tbl,i) {return iter (function(param) @@ -23658,19 +23503,19 @@ 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_); + _nj_=caml_obj_tag(prng), + _nk_=250 === _nj_?prng[1]:246 === _nj_?force_lazy_block(prng):prng, + seed=caml_call1(_cg_[4],_nk_); 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; + _nl_=4 <= h.length - 1?h[4]:s, + h$0=[0,h[1],caml_make_vect(s,0),seed,_nl_], + _nm_=h$0[2], + _nn_=h[2], + _no_=0; insert_all_buckets - (function(_ns_){return key_index(h$0,_ns_)},_nr_,_nq_,_np_); + (function(_np_){return key_index(h$0,_np_)},_no_,_nn_,_nm_); return h$0} var Stdlib_Hashtbl= @@ -23708,26 +23553,27 @@ 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); + {var _nh_=0 <= l?1:0,_ni_=_nh_?l <= _o_[15]?1:0:_nh_; + if(1 - _ni_)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_} + {var _ne_=0 <= o?1:0,_nf_=_ne_?o < length$6(e)?1:0:_ne_,_ng_=1 - _nf_; + return _ng_?invalid_arg(msg):_ng_} 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)} + if(! x)return caml_ephe_unset_key(e,o); + var x$0=x[1]; + return caml_ephe_set_key(e,o,x$0)} function get$2(e,o) {raise_if_invalid_offset$0(e,o,cst_Weak_get); - return runtime.caml_weak_get(e,o)} + return caml_ephe_get_key(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)} + return caml_ephe_get_key_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)} + return caml_ephe_check_key(e,o)} function blit$4(e1,o1,e2,o2,l) {if (0 @@ -23738,29 +23584,29 @@ <= o1 && - ! - ((length$6(e1) - 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_} + (length$6(e2) - l | 0) + >= + o2) + {var _nc_=0 !== l?1:0,_nd_=_nc_?caml_ephe_blit_key(e1,o1,e2,o2,l):_nc_; + return _nd_} 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)) + {if(0 <= ofs && 0 <= len && (length$6(ar) - len | 0) >= ofs) + {var _na_=(ofs + len | 0) - 1 | 0; + if(_na_ >= ofs) {var i=ofs; for(;;) {set$1(ar,i,x); - var _ne_=i + 1 | 0; - if(_nd_ !== i){var i=_ne_;continue} + var _nb_=i + 1 | 0; + if(_na_ !== i){var i=_nb_;continue} break}} return 0} throw [0,Invalid_argument,cst_Weak_fill]} @@ -23779,20 +23625,20 @@ 0, 0]} function clear(t) - {var _nb_=t[1].length - 1 - 1 | 0,_na_=0; - if(! (_nb_ < 0)) - {var i=_na_; + {var _m__=t[1].length - 1 - 1 | 0,_m9_=0; + if(_m__ >= 0) + {var i=_m9_; 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} + var _m$_=i + 1 | 0; + if(_m__ !== i){var i=_m$_;continue} break}} t[3] = limit; t[4] = 0; return 0} function fold(f,t,init) - {var _m$_=t[1],i=0; + {var _m8_=t[1],i=0; return fold_right$2 (function(b,accu$1) {var i$0=i,accu=accu$1; @@ -23807,12 +23653,11 @@ i$0=i$1, accu=accu$0; continue} - var i$2=i$0 + 1 | 0,i$0=i$2; - continue}}, - _m$_, + var i$2=i$0 + 1 | 0,i$0=i$2}}, + _m8_, init)} function iter(f,t) - {var _m__=t[1],i=0; + {var _m7_=t[1],i=0; return iter$5 (function(b) {var i$0=i; @@ -23824,26 +23669,24 @@ 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__)} + var i$2=i$0 + 1 | 0,i$0=i$2}}, + _m7_)} 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, + _m6_=check$0(b,i$0)?1:0, + accu$1=accu$0 + _m6_ | 0, i$1=i$0 + 1 | 0, i$0=i$1, - accu$0=accu$1; - continue}} + accu$0=accu$1}} function count(t) - {var _m4_=0,_m5_=t[1],_m6_=0; + {var _m1_=0,_m2_=t[1],_m3_=0; return fold_right$2 - (function(_m7_,_m8_){return count_bucket(_m6_,_m7_,_m8_)}, - _m5_, - _m4_)} + (function(_m4_,_m5_){return count_bucket(_m3_,_m4_,_m5_)}, + _m2_, + _m1_)} function add_aux(t,setter,d,h,index) {var bucket$0=caml_check_bound(t[1],index)[1 + index], @@ -23851,107 +23694,105 @@ 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_) + {if(sz > i$3) + {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} + 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 _mX_=sz <= t[3]?1:0,_mY_=_mX_?t[3] < newsz?1:0:_mX_; + if(_mY_) + {t[4] = t[4] + 1 | 0; + var i$4=0; + for(;;) {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; + _mN_=t[5], + bucket=caml_check_bound(t[1],_mN_)[1 + _mN_], + _mO_=t[5], + hbucket=caml_check_bound(t[2],_mO_)[1 + _mO_], + 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 _mP_=caml_check_bound(hbucket,j)[1 + j]; + caml_check_bound(hbucket,i$0)[1 + i$0] = _mP_; + 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 _mQ_=t[5]; + caml_check_bound(t[1],_mQ_)[1 + _mQ_] = emptybucket; + var _mR_=t[5]; + caml_check_bound(t[2],_mR_)[1 + _mR_] = [0]} + else + {var newbucket=weak_create(prev_len); + blit$4(bucket,0,newbucket,0,prev_len); + var _mU_=t[5]; + caml_check_bound(t[1],_mU_)[1 + _mU_] = newbucket; + var _mV_=sub$1(hbucket,0,prev_len),_mW_=t[5]; + caml_check_bound(t[2],_mW_)[1 + _mW_] = _mV_} + var _mS_=t[3] < n?1:0,_mT_=_mS_?prev_len <= t[3]?1:0:_mS_; + if(_mT_)t[4] = t[4] - 1 | 0; + break}} + t[5] = caml_mod(t[5] + 1 | 0,t[1].length - 1); + var _m0_=i$4 + 1 | 0; + if(2 !== i$4){var i$4=_m0_;continue} + break}} + var _mZ_=((t[1].length - 1) / 2 | 0) < t[4]?1:0; + if(! _mZ_)return _mZ_; + 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),_mM_=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}}, + _mM_); + 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}} function add(t,d) {var h=caml_call1(H[2],d); @@ -23966,19 +23807,17 @@ 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}} + if(h !== caml_check_bound(hashes,i)[1 + i]) + {var i$2=i + 1 | 0,i=i$2;continue} + 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}} function merge(t,d) {return find_or (t, @@ -23996,19 +23835,17 @@ 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}} + if(h !== caml_check_bound(hashes,i)[1 + i]) + {var i$2=i + 1 | 0,i=i$2;continue} + 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}} function find_shadow(t,d,iffound,ifnotfound) {var h=caml_call1(H[2],d), @@ -24019,20 +23856,18 @@ 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}} + if(h !== caml_check_bound(hashes,i)[1 + i]) + {var i$1=i + 1 | 0,i=i$1;continue} + 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}} function remove(t,d) - {var _mO_=0; - return find_shadow(t,d,function(w,i){return set$1(w,i,0)},_mO_)} + {var _mL_=0; + return find_shadow(t,d,function(w,i){return set$1(w,i,0)},_mL_)} function mem(t,d) - {var _mN_=0;return find_shadow(t,d,function(w,i){return 1},_mN_)} + {var _mK_=0;return find_shadow(t,d,function(w,i){return 1},_mK_)} function find_all(t,d) {var h=caml_call1(H[2],d), @@ -24044,39 +23879,37 @@ 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}} + if(h !== caml_check_bound(hashes,i)[1 + i]) + {var i$3=i + 1 | 0,i=i$3;continue} + 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}} function stats(t) {var len=t[1].length - 1,lens=map$7(length$6,t[1]); sort(caml_int_compare,lens); var - _mF_=0, + _mC_=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_]} + fold_left$3(function(_mJ_,_mI_){return _mJ_ + _mI_ | 0},_mC_,lens), + _mD_=len - 1 | 0, + _mF_=len / 2 | 0, + _mE_=caml_check_bound(lens,_mD_)[1 + _mD_], + _mG_=caml_check_bound(lens,_mF_)[1 + _mF_], + _mH_=caml_check_bound(lens,0)[1]; + return [0,len,count(t),totlen,_mH_,_mG_,_mE_]} return [0, create, clear, @@ -24121,8 +23954,8 @@ 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_} + {var _mB_=caml_string_notequal(s,cst$67); + return _mB_?format_pp_text(state,caml_ml_string_length(s),s):_mB_} function break_new_line(state,param,width) {var after=param[3],offset=param[2],before=param[1]; format_string(state,before); @@ -24135,7 +23968,7 @@ 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_line(state,width){return break_new_line(state,_cj_,width)} function break_same_line(state,param) {var after=param[3],width=param[2],before=param[1]; format_string(state,before); @@ -24147,179 +23980,166 @@ 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} + if(! match$3)return 0; + var + match$4=match$3[1], + tabs=match$4[1], + add_tab= + function(n,ls) + {if(! ls)return [0,n,0]; + var l=ls[2],x=ls[1]; + return caml_lessthan(n,x)?[0,n,ls]:[0,x,add_tab(n,l)]}; + tabs[1] = add_tab(state[6] - state[9] | 0,tabs[1]); 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); + if(! match$5)return pp_output_newline(state); + var match$6=match$5[1],width$0=match$6[2]; + return break_line(state,width$0); 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_; + var _my_=state[10] !== (state[6] - state[9] | 0)?1:0; + if(! _my_)return _my_; + var match$1=take_opt(state[28]); + if(! match$1)return 0; + 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; 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])}} + if(! match$7)return 0; + var tag_name=match$7[1],marker=caml_call1(state[25],tag_name); + return pp_output_string(state,marker)} + 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)return 0; + 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)} + 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)return 0; + var match$11=match$10[1],tabs$0=match$11[1],_mz_=tabs$0[1]; + if(_mz_) + {var first=_mz_[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 _mA_=head} + else + var _mA_=first; + var tab=_mA_; + 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]); + 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}} + if(! match)return 0; + var + match$0=match[1], + size=match$0[1], + length=match$0[3], + token=match$0[2], + pending_count=state[13] - state[12] | 0, + _mw_=0 <= size?1:0, + _mx_=_mw_ || (state[9] <= pending_count?1:0); + if(! _mx_)return _mx_; + 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}} 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]; + var queue_elem=[0,unknown,_ck_,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} + if(! match)return 0; + var + match$0=match[1], + queue_elem=match$0[2], + left_total=match$0[1], + _mr_=queue_elem[1]; + if(left_total < state[12])return initialize_scan_stack(state[1]); + var _ms_=queue_elem[2]; + if(typeof _ms_ !== "number") + switch(_ms_[0]) + {case 3: + var + _mu_=1 - ty, + _mv_= + _mu_ + ?(queue_elem[1] = state[13] + _mr_ | 0,pop_opt(state[1]),0) + :_mu_; + return _mv_; + case 1: + case 2: + var + _mt_= + ty?(queue_elem[1] = state[13] + _mr_ | 0,pop_opt(state[1]),0):ty; + return _mt_ + } return 0} function scan_push(state,b,token) {pp_enqueue(state,token); @@ -24331,37 +24151,36 @@ 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_} + var _mp_=state[14] === state[15]?1:0; + if(! _mp_)return _mp_; + var _mq_=state[16]; + return enqueue_string_as(state,caml_ml_string_length(_mq_),_mq_)} function pp_close_box(state,param) - {var _mq_=1 < state[14]?1:0; - if(_mq_) + {var _mn_=1 < state[14]?1:0; + if(_mn_) {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_stag(state,tag_name) + {if(state[22]){push(tag_name,state[4]);caml_call1(state[26],tag_name)} + var _mm_=state[23]; + if(! _mm_)return _mm_; + var token=[5,tag_name]; + return pp_enqueue(state,[0,size,token,0])} + function pp_close_stag(state,param) + {if(state[23])pp_enqueue(state,[0,size,5,0]); + var _mk_=state[22]; + if(_mk_) + {var match=pop_opt(state[4]); + if(match){var tag_name=match[1];return caml_call1(state[27],tag_name)} + var _ml_=0} + else + var _ml_=_mk_; + return _ml_} 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} @@ -24393,8 +24212,8 @@ 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_); + {var _mj_=state[4]; + iter$7(function(param){return pp_close_tag(state,0)},_mj_); for(;;) {if(1 < state[14]){pp_close_box(state,0);continue} state[13] = pp_infinity; @@ -24402,8 +24221,8 @@ 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_} + {var _mi_=state[14] < state[15]?1:0; + return _mi_?enqueue_string_as(state,size,s):_mi_} function pp_print_as(state,isize,s) {return pp_print_as_size(state,isize,s)} function pp_print_string(state,s) @@ -24430,30 +24249,29 @@ 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_} + {var _mh_=state[14] < state[15]?1:0; + return _mh_?enqueue_advance(state,[0,size,3,0]):_mh_} 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_} + {var _mg_=state[14] < state[15]?1:0; + return _mg_?enqueue_advance(state,[0,size,4,0]):_mg_} 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_} + _mf_=state[14] < state[15]?1:0; + if(! _mf_)return _mf_; + 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)} 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])} @@ -24461,37 +24279,37 @@ 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_} + var _me_=state[14] < state[15]?1:0; + if(! _me_)return _me_; + var elem=[0,size,[4,[0,[0,0]]],0]; + return enqueue_advance(state,elem)} 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 _mb_=1 < state[14]?1:0; + if(_mb_) + {var _mc_=state[14] < state[15]?1:0; + if(_mc_) {var elem=[0,size,2,0]; enqueue_advance(state,elem); state[14] = state[14] - 1 | 0; - var _mg_=0} + var _md_=0} else - var _mg_=_mf_} + var _md_=_mc_} 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)} + var _md_=_mb_; return _md_} + function pp_print_tbreak(state,width,offset) + {var _ma_=state[14] < state[15]?1:0; + if(! _ma_)return _ma_; + var size=- state[13] | 0,elem=[0,size,[2,width,offset],width]; + return scan_push(state,1,elem)} 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_} + {var _l$_=state[14] < state[15]?1:0; + if(! _l$_)return _l$_; + var elem=[0,size,0,0]; + return enqueue_advance(state,elem)} function pp_set_max_boxes(state,n) - {var _ma_=1 < n?1:0,_mb_=_ma_?(state[15] = n,0):_ma_;return _mb_} + {var _l9_=1 < n?1:0,_l__=_l9_?(state[15] = n,0):_l9_;return _l__} function pp_get_max_boxes(state,param){return state[15]} function pp_over_max_boxes(state,param) {return state[14] === state[15]?1:0} @@ -24499,32 +24317,29 @@ 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$_} + {var _l8_=1 < n$0?1:0; + if(! _l8_)return _l8_; + var n$1=state[6] - n$0 | 0,_l7_=1 <= n$1?1:0; + if(! _l7_)return _l7_; + var n=pp_limit(n$1); + state[7] = n; + state[8] = state[6] - state[7] | 0; + return pp_rinit(state)} 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_} + {var _l6_=1 <= n?1:0; + if(! _l6_)return _l6_; + 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)} function validate_geometry(param) {var margin=param[2],max_indent=param[1]; - return 2 <= max_indent?margin <= max_indent?_cn_:_co_:_cp_} + return 2 <= max_indent?margin <= max_indent?_cl_:_cm_:_cn_} function check_geometry(geometry) {var match=validate_geometry(geometry);return 0 === match[0]?1:0} function pp_get_margin(state,param){return state[6]} @@ -24565,46 +24380,43 @@ 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_}} + {var _l5_=0 < n$0?1:0; + if(! _l5_)return _l5_; + if(80 >= n$0)return caml_call3(state[17],blank_line,0,n$0); + caml_call3(state[17],blank_line,0,80); + var n$1=n$0 - 80 | 0,n$0=n$1}} function pp_set_formatter_out_channel(state,oc) {state[17] = - function(_l5_,_l6_,_l7_){return output_substring(oc,_l5_,_l6_,_l7_)}; + function(_l2_,_l3_,_l4_){return output_substring(oc,_l2_,_l3_,_l4_)}; 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_)}; + state[19] = function(_l1_){return display_newline(state,_l1_)}; + state[20] = function(_l0_){return display_indent(state,_l0_)}; + state[21] = function(_lZ_){return display_indent(state,_lZ_)}; 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} + {if(param[1] !== String_tag)return cst$79; + var s=param[2]; + return cat(cst$78,cat(s,cst$77))} 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} + {if(param[1] !== String_tag)return cst$82; + var s=param[2]; + return cat(cst$81,cat(s,cst$80))} + function default_pp_print_open_tag(_lY_){return 0} + function default_pp_print_close_tag(_lX_){return 0} function pp_make_formatter(f,g,h,i,j) - {var pp_queue=create$1(0),sys_tok=[0,unknown,_cq_,0]; + {var pp_queue=create$1(0),sys_tok=[0,unknown,_co_,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); + var _lU_=create$0(0),_lV_=create$0(0),_lW_=create$0(0); return [0, scan_stack, create$0(0), - _lZ_, - _lY_, - _lX_, + _lW_, + _lV_, + _lU_, 78, 10, 68, @@ -24632,27 +24444,27 @@ {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} + {function _lM_(_lT_){return 0} + function _lN_(_lS_){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_)}; + pp_make_formatter(output,flush,function(_lR_){return 0},_lN_,_lM_); + ppf[19] = function(_lQ_){return display_newline(ppf,_lQ_)}; + ppf[20] = function(_lP_){return display_indent(ppf,_lP_)}; + ppf[21] = function(_lO_){return display_indent(ppf,_lO_)}; return ppf} function formatter_of_out_channel(oc) - {function _lL_(param){return caml_ml_flush(oc)} + {function _lI_(param){return caml_ml_flush(oc)} return make_formatter - (function(_lM_,_lN_,_lO_) - {return output_substring(oc,_lM_,_lN_,_lO_)}, - _lL_)} + (function(_lJ_,_lK_,_lL_) + {return output_substring(oc,_lJ_,_lK_,_lL_)}, + _lI_)} function formatter_of_buffer(b) - {function _lG_(_lK_){return 0} + {function _lD_(_lH_){return 0} return make_formatter - (function(_lH_,_lI_,_lJ_) - {return add_substring(b,_lH_,_lI_,_lJ_)}, - _lG_)} + (function(_lE_,_lF_,_lG_) + {return add_substring(b,_lE_,_lF_,_lG_)}, + _lD_)} var pp_buffer_size=512; function pp_make_buffer(param){return create$2(pp_buffer_size)} var @@ -24675,114 +24487,108 @@ {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 g(_lC_){return add_symbolic_output_item(sob,0)} + function h(_lB_){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 open_hbox(_lA_){return pp_open_hbox(std_formatter,_lA_)} + function open_vbox(_lz_){return pp_open_vbox(std_formatter,_lz_)} + function open_hvbox(_ly_){return pp_open_hvbox(std_formatter,_ly_)} + function open_hovbox(_lx_){return pp_open_hovbox(std_formatter,_lx_)} + function open_box(_lw_){return pp_open_box(std_formatter,_lw_)} + function close_box(_lv_){return pp_close_box(std_formatter,_lv_)} + function open_tag(_lu_){return pp_open_tag(std_formatter,_lu_)} + function close_tag(_lt_){return pp_close_tag(std_formatter,_lt_)} + function open_stag(_ls_){return pp_open_stag(std_formatter,_ls_)} + function close_stag(_lr_){return pp_close_stag(std_formatter,_lr_)} + function print_as(_lp_,_lq_){return pp_print_as(std_formatter,_lp_,_lq_)} + function print_string$0(_lo_){return pp_print_string(std_formatter,_lo_)} + function print_bytes$0(_ln_){return pp_print_bytes(std_formatter,_ln_)} + function print_int$0(_lm_){return pp_print_int(std_formatter,_lm_)} + function print_float$0(_ll_){return pp_print_float(std_formatter,_ll_)} + function print_char$0(_lk_){return pp_print_char(std_formatter,_lk_)} + function print_bool(_lj_){return pp_print_bool(std_formatter,_lj_)} + function print_break(_lh_,_li_) + {return pp_print_break(std_formatter,_lh_,_li_)} + function print_cut(_lg_){return pp_print_cut(std_formatter,_lg_)} + function print_space(_lf_){return pp_print_space(std_formatter,_lf_)} + function force_newline(_le_){return pp_force_newline(std_formatter,_le_)} + function print_flush(_ld_){return pp_print_flush(std_formatter,_ld_)} + function print_newline$0(_lc_) + {return pp_print_newline(std_formatter,_lc_)} + function print_if_newline(_lb_) + {return pp_print_if_newline(std_formatter,_lb_)} + function open_tbox(_la_){return pp_open_tbox(std_formatter,_la_)} + function close_tbox(_k$_){return pp_close_tbox(std_formatter,_k$_)} + function print_tbreak(_k9_,_k__) + {return pp_print_tbreak(std_formatter,_k9_,_k__)} + function set_tab(_k8_){return pp_set_tab(std_formatter,_k8_)} + function print_tab(_k7_){return pp_print_tab(std_formatter,_k7_)} + function set_margin(_k6_){return pp_set_margin(std_formatter,_k6_)} + function get_margin(_k5_){return std_formatter[6]} + function set_max_indent(_k4_) + {return pp_set_max_indent(std_formatter,_k4_)} + function get_max_indent(_k3_){return std_formatter[8]} + function set_geometry(_k1_,_k2_) + {return pp_set_geometry(std_formatter,_k1_,_k2_)} + function safe_set_geometry(_kZ_,_k0_) + {return pp_safe_set_geometry(std_formatter,_kZ_,_k0_)} + function get_geometry(_kY_){return pp_get_geometry(std_formatter,_kY_)} + function update_geometry(_kX_) + {return pp_update_geometry(std_formatter,_kX_)} + function set_max_boxes(_kW_){return pp_set_max_boxes(std_formatter,_kW_)} + function get_max_boxes(_kV_){return std_formatter[15]} + function over_max_boxes(_kU_) + {return pp_over_max_boxes(std_formatter,_kU_)} + function set_ellipsis_text(_kT_) + {return pp_set_ellipsis_text(std_formatter,_kT_)} + function get_ellipsis_text(_kS_){return std_formatter[16]} + function set_formatter_out_channel(_kR_) + {return pp_set_formatter_out_channel(std_formatter,_kR_)} + function set_formatter_out_functions(_kQ_) + {return pp_set_formatter_out_functions(std_formatter,_kQ_)} + function get_formatter_out_functions(_kP_) + {return pp_get_formatter_out_functions(std_formatter,_kP_)} + function set_formatter_output_functions(_kN_,_kO_) + {return pp_set_formatter_output_functi(std_formatter,_kN_,_kO_)} + function get_formatter_output_functions(_kM_) + {return pp_get_formatter_output_functi(std_formatter,_kM_)} + function set_formatter_stag_functions(_kL_) + {return pp_set_formatter_stag_function(std_formatter,_kL_)} + function get_formatter_stag_functions(_kK_) + {return pp_get_formatter_stag_function(std_formatter,_kK_)} + function set_print_tags(_kJ_) + {return pp_set_print_tags(std_formatter,_kJ_)} + function get_print_tags(_kI_){return std_formatter[22]} + function set_mark_tags(_kH_){return pp_set_mark_tags(std_formatter,_kH_)} + function get_mark_tags(_kG_){return std_formatter[23]} + function set_tags(_kF_){return pp_set_tags(std_formatter,_kF_)} 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}} + if(! param$0)return 0; + var _kE_=param$0[1]; + if(! param$0[2])return caml_call2(pp_v,ppf,_kE_); + var vs=param$0[2]; + caml_call2(pp_v,ppf,_kE_); + caml_call2(pp_sep,ppf,0); + var opt$1=[0,pp_sep],opt$0=opt$1,param$0=vs}} 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} + if(! match$0)return 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)return 0; + var seq$0=match[2],v=match[1]; + caml_call2(pp_sep,ppf,0); + caml_call2(pp_v,ppf,v); + var seq=seq$0}} function pp_print_text(ppf,s) {var len=caml_ml_string_length(s),left=[0,0],right=[0,0]; function flush(param) @@ -24791,22 +24597,21 @@ 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_}} + {if(right[1] === len) + {var _kD_=left[1] !== len?1:0;return _kD_?flush(0):_kD_} + 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]++}} 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)} + var none=function(param,_kC_){return 0}; + if(! param)return caml_call2(none,ppf,0); + var v=param[1]; + return caml_call2(pp_v,ppf,v)} 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]; @@ -24831,94 +24636,89 @@ 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)}} + 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)} + if(typeof acc === "number")return 0; + 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 _ks_=acc[2],_kt_=acc[1]; + if(0 === _ks_[0]) + {var acc$0=_ks_[1]; + output_acc$0(ppf,_kt_); + return pp_open_stag + (ppf,[0,String_tag,compute_tag(output_acc$0,acc$0)])} + var acc$1=_ks_[1]; + output_acc$0(ppf,_kt_); + 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 _ku_=acc[1],switch$1=0; + if(typeof _ku_ !== "number" && 0 === _ku_[0]) + {var _kv_=_ku_[2],switch$2=0; + if(typeof _kv_ !== "number" && 1 === _kv_[0]) + {var s$0=acc[2],size=_kv_[2],p$1=_ku_[1]; + switch$1 = 1; + switch$2 = 1}} + if(! switch$1){var s=acc[2],p$0=_ku_;switch$0 = 2} + break; + case 3: + var _kw_=acc[1],switch$3=0; + if(typeof _kw_ !== "number" && 0 === _kw_[0]) + {var _kx_=_kw_[2],switch$4=0; + if(typeof _kx_ !== "number" && 1 === _kx_[0]) + {var c$0=acc[2],size$0=_kx_[2],p$3=_kw_[1]; + switch$0 = 1; + switch$3 = 1; + switch$4 = 1}} + if(! switch$3){var c=acc[2],p$2=_kw_;switch$0 = 3} + break; + case 4: + var _ky_=acc[1],switch$5=0; + if(typeof _ky_ !== "number" && 0 === _ky_[0]) + {var _kz_=_ky_[2],switch$6=0; + if(typeof _kz_ !== "number" && 1 === _kz_[0]) + {var s$0=acc[2],size=_kz_[2],p$1=_ky_[1]; + switch$5 = 1; + switch$6 = 1}} + if(! switch$5){var s=acc[2],p$0=_ky_;switch$0 = 2} + break; + case 5: + var _kA_=acc[1],switch$7=0; + if(typeof _kA_ === "number" || ! (0 === _kA_[0])) + switch$7 = 1; + else + {var _kB_=_kA_[2],switch$8=0; + if(typeof _kB_ !== "number" && 1 === _kB_[0]) + {var c$0=acc[2],size$0=_kB_[2],p$3=_kA_[1]; + switch$0 = 1; + switch$8 = 1} + if(! switch$8)switch$7 = 1} + if(switch$7){var c=acc[2],p$2=_kA_;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: @@ -24928,89 +24728,87 @@ 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)} + if(typeof acc === "number")return 0; + 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 _kg_=acc[2],_kh_=acc[1]; + if(0 === _kg_[0]) + {var acc$0=_kg_[1]; + strput_acc$0(ppf,_kh_); + return pp_open_stag + (ppf,[0,String_tag,compute_tag(strput_acc$0,acc$0)])} + var acc$1=_kg_[1]; + strput_acc$0(ppf,_kh_); + 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 _ki_=acc[1],switch$1=0; + if(typeof _ki_ !== "number" && 0 === _ki_[0]) + {var _kj_=_ki_[2],switch$2=0; + if(typeof _kj_ !== "number" && 1 === _kj_[0]) + {var s$0=acc[2],size=_kj_[2],p$1=_ki_[1]; + switch$1 = 1; + switch$2 = 1}} + if(! switch$1){var s=acc[2],p$0=_ki_;switch$0 = 2} + break; + case 3: + var _kk_=acc[1],switch$3=0; + if(typeof _kk_ !== "number" && 0 === _kk_[0]) + {var _kl_=_kk_[2],switch$4=0; + if(typeof _kl_ !== "number" && 1 === _kl_[0]) + {var c$0=acc[2],size$0=_kl_[2],p$3=_kk_[1]; + switch$0 = 1; + switch$3 = 1; + switch$4 = 1}} + if(! switch$3){var c=acc[2],p$2=_kk_;switch$0 = 3} + break; + case 4: + var _km_=acc[1],switch$5=0; + if(typeof _km_ !== "number" && 0 === _km_[0]) + {var _kn_=_km_[2],switch$6=0; + if(typeof _kn_ !== "number" && 1 === _kn_[0]) + {var s$0=acc[2],size=_kn_[2],p$1=_km_[1]; + switch$5 = 1; + switch$6 = 1}} + if(! switch$5){var s=acc[2],p$0=_km_;switch$0 = 2} + break; + case 5: + var _ko_=acc[1],switch$7=0; + if(typeof _ko_ === "number" || ! (0 === _ko_[0])) + switch$7 = 1; + else + {var _kp_=_ko_[2],switch$8=0; + if(typeof _kp_ !== "number" && 1 === _kp_[0]) + {var c$0=acc[2],size$0=_kp_[2],p$3=_ko_[1]; + switch$0 = 1; + switch$8 = 1} + if(! switch$8)switch$7 = 1} + if(switch$7){var c=acc[2],p$2=_ko_;switch$0 = 3} + break; + case 6: + var _kq_=acc[1]; + if(typeof _kq_ !== "number" && 0 === _kq_[0]) + {var _kr_=_kq_[2]; + if(typeof _kr_ !== "number" && 1 === _kr_[0]) + {var f$1=acc[2],size$1=_kr_[2],p$4=_kq_[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,_kq_); + 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: @@ -25019,28 +24817,28 @@ 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; + {var fmt=param[1],_kf_=0; return make_printf (function(acc){output_acc$0(ppf,acc);return caml_call1(k,ppf)}, - _ki_, + _kf_, 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)} + {var fmt=param[1],_kd_=0; + return make_iprintf(function(_ke_){return 0},_kd_,fmt)} function fprintf$0(ppf) - {function _kd_(_kf_){return 0} - return function(_ke_){return kfprintf$0(_kd_,ppf,_ke_)}} + {function _ka_(_kc_){return 0} + return function(_kb_){return kfprintf$0(_ka_,ppf,_kb_)}} 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; + {var fmt=param[1],_j$_=0; return make_printf (function(acc) {return caml_call1 (k,function(ppf){return output_acc$0(ppf,acc)})}, - _kc_, + _j$_, fmt)} function dprintf(fmt){return kdprintf(function(i){return i},fmt)} function kprintf(k,param) @@ -25067,10 +24865,10 @@ 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 set_all_formatter_output_funct(_j7_,_j8_,_j9_,_j__) + {return pp_set_all_formatter_output_fu(std_formatter,_j7_,_j8_,_j9_,_j__)} + function get_all_formatter_output_funct(_j6_) + {return pp_get_all_formatter_output_fu(std_formatter,_j6_)} 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)} @@ -25078,14 +24876,15 @@ 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_)}; + {if(param[1] !== String_tag)return e; + var s=param[2]; + return caml_call1(f,s)} + state[24] = function(_j5_){return stringify(mot,cst$84,_j5_)}; + state[25] = function(_j4_){return stringify(mct,cst$85,_j4_)}; + var _j0_=0; + state[26] = function(_j3_){return stringify(pot,_j0_,_j3_)}; + var _j1_=0; + state[27] = function(_j2_){return stringify(pct,_j1_,_j2_)}; return 0} function pp_get_formatter_tag_functions(fmt,param) {var funs=pp_get_formatter_stag_function(fmt,0); @@ -25094,10 +24893,10 @@ 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_)} + function set_formatter_tag_functions(_jZ_) + {return pp_set_formatter_tag_functions(std_formatter,_jZ_)} + function get_formatter_tag_functions(_jY_) + {return pp_get_formatter_tag_functions(std_formatter,_jY_)} var Stdlib_Format= [0, @@ -25265,24 +25064,25 @@ 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_}} + catch(_jX_) + {_jX_ = caml_wrap_exception(_jX_); + if(_jX_ !== End_of_file)throw _jX_; + ib[2] = null_char; + ib[3] = 0; + ib[1] = 1; + return null_char}} 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}} + {var _jW_=ib[9]; + if(typeof _jW_ === "number") + return 0 === _jW_?cst_unnamed_function:cst_unnamed_character_string; + if(0 === _jW_[0])return cst_unnamed_Stdlib_input_chann; + var fname=_jW_[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} @@ -25315,8 +25115,8 @@ i[1]++; return c} return create$4(1,next)} - var _cr_=0; - function from_function$0(_jY_){return create$4(_cr_,_jY_)} + var _cp_=0; + function from_function$0(_jV_){return create$4(_cp_,_jV_)} var len=1024; function scan_close_at_end(ic) {caml_ml_close_channel(ic);throw End_of_file} @@ -25333,46 +25133,42 @@ 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_)} + {if(! caml_string_notequal(fname,cst$87))return stdib; + var ic=caml_call1(open_in,fname); + return from_ic(scan_close_at_end,[1,fname,ic],ic)} + function from_file(_jU_){return open_in_file(open_text$0,_jU_)} + function from_file_bin(_jT_){return open_in_file(open_bin$0,_jT_)} 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 _jS_=ib[9]; + if(typeof _jS_ === "number")return 0; + if(0 === _jS_[0]){var ic=_jS_[1];return caml_ml_close_channel(ic)} + var ic$0=_jS_[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 _jQ_=assq(ic,memo[1]);return _jQ_} + catch(_jR_) + {_jR_ = caml_wrap_exception(_jR_); + if(_jR_ !== Not_found)throw _jR_; + var ib=from_ic(scan_close_ic,[0,ic],ic); + memo[1] = [0,[0,ic,ib],memo[1]]; + return ib}} + function memo_from_channel(_jP_) + {return memo_from_ic(scan_raise_at_end,_jP_)} 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))} + {return bad_input(caml_call1(sprintf(_cq_),c))} function bad_token_length(message) - {return bad_input(caml_call1(sprintf(_ct_),message))} + {return bad_input(caml_call1(sprintf(_cr_),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))} + {return bad_input(caml_call2(sprintf(_ct_),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)} @@ -25384,30 +25180,28 @@ :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)} + if(32 !== c$0)return check_this_char(ib,c$0); + for(;;) + {var c=peek_char(ib),_jN_=1 - ib[1]; + if(! _jN_)return _jN_; + var _jO_=c - 9 | 0,switch$0=0; + if(4 < _jO_ >>> 0) + {if(23 === _jO_)switch$0 = 1} + else + if(1 < _jO_ - 2 >>> 0)switch$0 = 1; + if(! switch$0)return 0; + invalidate_current_char(ib)}} 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)) + ?bad_input(caml_call1(sprintf(_cu_),s)) :1 :0} function integer_conversion_of_char(param) {var switcher=param - 88 | 0; - if(! (32 < switcher >>> 0)) + if(32 >= switcher >>> 0) switch(switcher) {case 10:return 0; case 12:return 1; @@ -25417,7 +25211,7 @@ case 0: case 32:return 5 } - throw [0,Assert_failure,_cx_]} + throw [0,Assert_failure,_cv_]} function token_int_literal(conv,ib) {switch(conv) {case 0:var tok=cat(cst_0b,token_string(ib));break; @@ -25446,42 +25240,41 @@ 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)); + if(9 < c - 48 >>> 0)return bad_input(caml_call1(sprintf(_cw_),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))} + if(! caml_call1(digitp,c$0)) + return bad_input(caml_call2(sprintf(_cx_),c$0,basis)); + 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)return width; + var width$1=ignore_char(width,ib),width=width$1}} 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 scan_binary_int(_jL_,_jM_) + {return scan_digit_plus(cst_binary,is_binary_digit,_jL_,_jM_)} 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 scan_octal_int(_jJ_,_jK_) + {return scan_digit_plus(cst_octal,is_octal_digit,_jJ_,_jK_)} 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} + {var _jI_=param - 48 | 0,switch$0=0; + if(22 < _jI_ >>> 0) + {if(5 >= _jI_ - 49 >>> 0)switch$0 = 1} else - if(6 < _jL_ - 10 >>> 0)switch$0 = 1; + if(6 < _jI_ - 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_hexadecimal_int(_jG_,_jH_) + {return scan_digit_plus(cst_hexadecimal,is_hexa_digit,_jG_,_jH_)} function scan_sign(width,ib) {var c=checked_peek_char(ib),switcher=c - 43 | 0; - if(! (2 < switcher >>> 0)) + if(2 >= switcher >>> 0) switch(switcher) {case 0:return store_char(width,ib,c); case 1:break; @@ -25496,25 +25289,23 @@ 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); + if(48 !== c)return scan_unsigned_decimal_int(width$0,ib); + 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); 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)}} @@ -25539,55 +25330,54 @@ 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]} + if(46 !== c)return [0,scan_exponent_part(width$0,ib),precision]; + 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]} 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_; + _jD_=len - 1 | 0, + _jC_=0; + if(_jD_ >= 0) + {var i=_jC_; for(;;) - {var c=peek_char(ib),_jH_=lowercase(caml_string_get(str,i)); - if(lowercase(c) !== _jH_)caml_call1(error,0); + {var c=peek_char(ib),_jE_=lowercase(caml_string_get(str,i)); + if(lowercase(c) !== _jE_)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} + var _jF_=i + 1 | 0; + if(_jD_ !== i){var i=_jF_;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 _jp_=0 === width?1:0,_jq_=_jp_ || end_of_input(ib); + if(_jq_)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); + _jr_=0 === width$0?1:0, + _js_=_jr_ || end_of_input(ib); + if(_js_)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)) + {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); + _jt_=0 === width$1?1:0, + _ju_=_jt_ || end_of_input(ib); + if(_ju_)bad_hex_float(0); return check_case_insensitive_string (width$1,ib,bad_hex_float,cst_an)}} else @@ -25596,18 +25386,18 @@ {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); + _jx_=0 === width$3?1:0, + _jy_=_jx_ || end_of_input(ib); + if(_jy_)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} + {var match=peek_char(ib),_jz_=match - 46 | 0,switch$1=0; + if(34 < _jz_ >>> 0) + {if(66 === _jz_)switch$1 = 1} else - if(32 < _jC_ - 1 >>> 0)switch$1 = 1; + if(32 < _jz_ - 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); @@ -25637,31 +25427,30 @@ 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); + _jA_=0 === width$9?1:0, + _jB_=_jA_ || end_of_input(ib); + if(_jB_)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)} + if(! switch$0)return bad_hex_float(0); + var + width$2=store_char(width$0,ib,c), + _jv_=0 === width$2?1:0, + _jw_=_jv_ || end_of_input(ib); + if(_jw_)bad_hex_float(0); + return check_case_insensitive_string + (width$2,ib,bad_hex_float,cst_nfinity)} 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 _jl_=0 === width?1:0,_jm_=_jl_ || end_of_input(ib); + if(_jm_)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); + _jn_=0 === width$0?1:0, + _jo_=_jn_ || end_of_input(ib); + if(_jo_)bad_float(0); var c=peek_char(ib),switcher=c - 69 | 0; if(32 < switcher >>> 0) {if(-23 === switcher) @@ -25676,42 +25465,42 @@ 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 _i9_=0 === width?1:0,_i__=_i9_ || end_of_input(ib); + if(_i__)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); + _i$_=0 === width$0?1:0, + _ja_=_i$_ || end_of_input(ib); + if(_ja_)bad_float(0); var c=peek_char(ib); if(49 <= c) - {if(! (58 <= 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); + _jb_=0 === width$1?1:0, + _jc_=_jb_ || end_of_input(ib); + if(_jc_)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); + _jd_=0 === width$2?1:0, + _je_=_jd_ || end_of_input(ib); + if(_je_)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); + _jf_=0 === width$3?1:0, + _jg_=_jf_ || end_of_input(ib); + if(_jg_)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); + _jh_=0 === width$4?1:0, + _ji_=_jh_ || end_of_input(ib); + if(_ji_)bad_float(0); var c$1=peek_char(ib),switcher=c$1 - 80 | 0,switch$0=0; if(32 < switcher >>> 0) if(-34 === switcher) @@ -25743,9 +25532,9 @@ 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); + _jj_=0 === width$9?1:0, + _jk_=_jj_ || end_of_input(ib); + if(_jk_)bad_hex_float(0); return scan_optionally_signed_decimal(width$9,ib)} return width$8} return bad_float(0)} @@ -25760,14 +25549,13 @@ 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} + var _i8_=c - 9 | 0,switch$0=0; + if(4 < _i8_ >>> 0) + {if(23 === _i8_)switch$0 = 1} else - if(1 < _i$_ - 2 >>> 0)switch$0 = 1; + if(1 < _i8_ - 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}} + var width$2=store_char(width$0,ib,c),width$0=width$2}} function scan_char(width,ib) {return store_char(width,ib,checked_peek_char(ib))} function hexadecimal_value_of_char(d) @@ -25775,38 +25563,38 @@ 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_)} + return ib[1]?bad_input(caml_call1(sprintf(_cs_),message)):c} + function check_next_char_for_char(_i6_,_i7_) + {return check_next_char(cst_a_Char,_i6_,_i7_)} + function check_next_char_for_string(_i4_,_i5_) + {return check_next_char(cst_a_String,_i4_,_i5_)} 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)) + 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} + {var c=next_char(ib),_i3_=c - 48 | 0,switch$0=0; + if(22 < _i3_ >>> 0) + {if(5 >= _i3_ - 49 >>> 0)switch$0 = 1} else - if(6 < _i6_ - 10 >>> 0)switch$0 = 1; + if(6 < _i3_ - 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, + _iZ_=hexadecimal_value_of_char(c2), + c$0=(16 * hexadecimal_value_of_char(c1) | 0) + _iZ_ | 0, switch$1=0; - if(0 <= c$0 && ! (255 < c$0)) - {var _i4_=char_of_int(c$0);switch$1 = 1} + if(0 <= c$0 && 255 >= c$0) + {var _i1_=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_); + var _i1_=bad_input(caml_call2(sprintf(_cz_),c1,c2)); + return store_char(width - 2 | 0,ib,_i1_); case 0: case 6: case 18: @@ -25829,83 +25617,79 @@ | 0, switch$2=0; - if(0 <= c && ! (255 < c)){var _i5_=char_of_int(c);switch$2 = 1} + if(0 <= c && 255 >= c){var _i2_=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_)}} + var _i2_=bad_input(caml_call3(sprintf(_cy_),c0,c1$0,c2$0)); + return store_char(width - 2 | 0,ib,_i2_)}} 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)} + if(! switch$0)return bad_input_escape(c0); + var switch$3=0; + if(110 <= c0) + if(117 <= c0) + switch$3 = 1; + else + switch(c0 - 110 | 0) + {case 0:var _i0_=10;break; + case 4:var _i0_=13;break; + case 6:var _i0_=9;break; + default:switch$3 = 1} + else + if(98 === c0)var _i0_=8;else switch$3 = 1; + if(switch$3)var _i0_=c0; + return store_char(width,ib,_i0_)} 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)} + if(39 !== c)return character_mismatch(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))} 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; + if(92 !== c) + {var width$2=store_char(width$0,ib,c),width$0=width$2;continue} + var + width$1=ignore_char(width$0,ib), + match=check_next_char_for_string(width$1,ib); + if(10 === match) + {var _iX_=ignore_char(width$1,ib); + if(counter >= 50) + return caml_trampoline_return(skip_spaces,[0,_iX_]); + var counter$0=counter + 1 | 0; + return skip_spaces(counter$0,_iX_)} + if(13 !== match) + {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}} + var + width$3=ignore_char(width$1,ib), + match$0=check_next_char_for_string(width$3,ib); + if(10 !== match$0) + {var width$5=store_char(width$3,ib,13),width$0=width$5;continue} + var _iY_=ignore_char(width$3,ib); + if(counter >= 50) + return caml_trampoline_return(skip_spaces,[0,_iY_]); + var counter$1=counter + 1 | 0; + return skip_spaces(counter$1,_iY_)}} 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])}} + if(counter >= 50) + return caml_trampoline_return(find_stop$0,[0,width$0]); + var counter$0=counter + 1 | 0; + return find_stop$0(counter$0,width$0)}} function find_stop(width){return caml_trampoline(find_stop$0(0,width))} var c=checked_peek_char(ib); return 34 === c @@ -25915,41 +25699,39 @@ {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_; + {var c=peek_char(ib),_iT_=0 < i$0?1:0; + if(_iT_) + {var _iU_=1 - ib[1]; + if(_iU_) + var _iV_=is_in_char_set(char_set,c),_iW_=_iV_?c !== stp?1:0:_iV_; else - var _iZ_=_iX_} + var _iW_=_iU_} 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)} + var _iW_=_iT_; + if(! _iW_)return _iW_; + store_char(max_int,ib,c); + var i$1=i$0 - 1 | 0,i$0=i$1}} + if(! scan_indic)return scan_chars(width,-1); + var c=scan_indic[1]; + scan_chars(width,c); + var _iS_=1 - ib[1]; + if(! _iS_)return _iS_; + var ci=peek_char(ib); + return c === ci?invalidate_current_char(ib):character_mismatch(c,ci)} 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))} + return bad_input(caml_call2(sprintf(_cB_),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} + {if(! pad_opt)return max_int;var width=pad_opt[1];return width} function stopper_of_formatting_lit(fmting) - {if(6 === fmting)return _cE_; + {if(6 === fmting)return _cC_; var str=string_of_formatting_lit(fmting), stp=caml_string_get(str,1), @@ -25958,9 +25740,7 @@ function take_format_readers$0(counter,k,fmt) {var fmt$0=fmt; for(;;) - if(typeof fmt$0 === "number") - return caml_call1(k,0); - else + {if(typeof fmt$0 === "number")return caml_call1(k,0); 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; @@ -25977,28 +25757,28 @@ 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]); + var rest=fmt$0[3],fmtty=fmt$0[2],_iQ_=erase_rel(symm(fmtty)); + if(counter >= 50) + return caml_trampoline_return + (take_fmtty_format_readers$0,[0,k,_iQ_,rest]); + var counter$0=counter + 1 | 0; + return take_fmtty_format_readers$0(counter$0,k,_iQ_,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 _iR_=fmt$0[1]; + if(0 === _iR_[0]) {var rest$0=fmt$0[2], - match=_iU_[1], + match=_iR_[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], + match$0=_iR_[1], fmt$20=match$0[1], fmt$21=concat_fmt(fmt$20,rest$1), fmt$0=fmt$21; @@ -26024,81 +25804,99 @@ {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)} + 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) 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}} + var counter$1=counter + 1 | 0; + return take_fmtty_format_readers$0(counter$1,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)}}} + {if(typeof fmtty$0 !== "number") + 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)}} + if(counter >= 50) + return caml_trampoline_return(take_format_readers$0,[0,k,fmt]); + var counter$0=counter + 1 | 0; + return take_format_readers$0(counter$0,k,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 pad_prec_scanf(ib,fmt,readers,pad,prec,scan,token) + {if(typeof pad === "number") + {if(typeof prec !== "number") + {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)]} + 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)]} + if(0 !== pad[0])return invalid_arg(cst_scanf_bad_conversion$2); + if(! pad[1])return invalid_arg(cst_scanf_bad_conversion$1); + var _iP_=pad[2]; + if(typeof prec !== "number") + {var p$0=prec[1]; + caml_call3(scan,_iP_,p$0,ib); + var x$2=caml_call1(token,ib); + return [0,x$2,make_scanf(ib,fmt,readers)]} + if(prec)return invalid_arg(cst_scanf_bad_conversion$0); + caml_call3(scan,_iP_,max_int,ib); + var x$1=caml_call1(token,ib); + return [0,x$1,make_scanf(ib,fmt,readers)]} function make_scanf(ib,fmt,readers) {var fmt$0=fmt; for(;;) - if(typeof fmt$0 === "number") - return 0; - else + {if(typeof fmt$0 === "number")return 0; switch(fmt$0[0]) {case 0: var rest=fmt$0[1]; @@ -26111,13 +25909,13 @@ 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]) + var _iC_=fmt$0[1],_iD_=fmt$0[2]; + if(typeof _iD_ !== "number") + switch(_iD_[0]) {case 17: var - rest$2=_iH_[2], - fmting_lit=_iH_[1], + rest$2=_iD_[2], + fmting_lit=_iD_[1], match=stopper_of_formatting_lit(fmting_lit), str=match[2], stp=match[1], @@ -26126,35 +25924,35 @@ {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); + (ib,str_rest,readers,_iC_,0,scan$0,token_string); case 18: - var _iI_=_iH_[1]; - if(0 === _iI_[0]) + var _iE_=_iD_[1]; + if(0 === _iE_[0]) {var - rest$3=_iH_[2], - match$0=_iI_[1], + rest$3=_iD_[2], + match$0=_iE_[1], fmt$1=match$0[1], scan$1= - function(width,param,ib){return scan_string(_cF_,width,ib)}; + function(width,param,ib){return scan_string(_cD_,width,ib)}; return pad_prec_scanf (ib, concat_fmt(fmt$1,rest$3), readers, - _iG_, + _iC_, 0, scan$1, token_string)} var - rest$4=_iH_[2], - match$1=_iI_[1], + rest$4=_iD_[2], + match$1=_iE_[1], fmt$2=match$1[1], scan$2= - function(width,param,ib){return scan_string(_cG_,width,ib)}; + function(width,param,ib){return scan_string(_cE_,width,ib)}; return pad_prec_scanf (ib, concat_fmt(fmt$2,rest$4), readers, - _iG_, + _iC_, 0, scan$2, token_string) @@ -26162,7 +25960,7 @@ 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); + return pad_prec_scanf(ib,rest$1,readers,_iC_,0,scan,token_string); case 3: var rest$5=fmt$0[2], @@ -26272,22 +26070,23 @@ rest$13=fmt$0[2], pad$7=fmt$0[1], scan$8= - function(param,_iS_,ib) + function(param,_iO_,ib) {var c=checked_peek_char(ib), m= 102 === c ?5 - :116 === c?4:bad_input(caml_call1(sprintf(_cC_),c)); + :116 === c?4:bad_input(caml_call1(sprintf(_cA_),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); + if(! end_of_input(ib))return bad_input(cst_end_of_input_not_found); + var fmt$0=rest$14; + continue; case 11: var rest$15=fmt$0[2],str$0=fmt$0[1]; - iter$4(function(_iR_){return check_char(ib,_iR_)},str$0); + iter$4(function(_iN_){return check_char(ib,_iN_)},str$0); var fmt$0=rest$15; continue; case 12: @@ -26300,7 +26099,7 @@ 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_} + {var _iF_=format_of_string_fmtty(s,fmtty),fmt$3=_iF_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] !== Failure)throw exn; @@ -26317,17 +26116,17 @@ 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)), + _iH_=type_format(fmt$6,erase_rel(fmtty$0)), fmt$5=fmt$8, - fmt$4=_iL_} + fmt$4=_iH_} 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]} + _iG_=bad_input(msg$0), + fmt$5=_iG_[2], + fmt$4=_iG_[1]} return [0, [0,fmt$4,s$0], make_scanf(ib,concat_fmt(fmt$5,rest$18),readers)]; @@ -26337,50 +26136,49 @@ 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_); + _iI_=string_of_formatting_lit(formatting_lit); + iter$4(function(_iM_){return check_char(ib,_iM_)},_iI_); 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]; + var _iJ_=fmt$0[1]; + if(0 === _iJ_[0]) + {var rest$20=fmt$0[2],match$4=_iJ_[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]; + var rest$21=fmt$0[2],match$5=_iJ_[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); + if(! readers)return invalid_arg(cst_scanf_missing_reader); + var + readers_rest=readers[2], + reader=readers[1], + x=caml_call1(reader,ib); + return [0,x,make_scanf(ib,fmt_rest,readers_rest)]; case 20: - var _iO_=fmt$0[1],_iP_=fmt$0[3]; - if(typeof _iP_ !== "number" && 17 === _iP_[0]) + var _iK_=fmt$0[1],_iL_=fmt$0[3]; + if(typeof _iL_ !== "number" && 17 === _iL_[0]) {var - rest$23=_iP_[2], - fmting_lit$0=_iP_[1], + rest$23=_iL_[2], + fmting_lit$0=_iL_[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_); + width$0=width_of_pad_opt(_iK_); 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_); + width=width_of_pad_opt(_iK_); 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)]; @@ -26400,53 +26198,21 @@ 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)}} + if(! match$8)throw [0,Assert_failure,_cF_]; + var arg_rest=match$8[2]; + return arg_rest; + default:return invalid_arg(cst_scanf_bad_conversion_custo)}}} 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}} + {if(! args$0)return f$0; + var r=args$0[2],x=args$0[1],f$1=caml_call1(f$0,x),f$0=f$1,args$0=r}} function k(readers,f) {reset_token(ib); try - {var _iE_=[0,make_scanf(ib,fmt,readers)],_iD_=_iE_} + {var _iB_=[0,make_scanf(ib,fmt,readers)],_iA_=_iB_} catch(exc) {exc = caml_wrap_exception(exc); var switch$0=0; @@ -26465,14 +26231,14 @@ {if(exc[1] !== Invalid_argument)throw exc; var msg=exc[2], - _iC_= + _iz_= 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]; + if(! switch$0)var _iz_=[1,exc]; + var _iA_=_iz_} + if(0 === _iA_[0]){var args=_iA_[1];return apply(f,args)} + var exc=_iA_[1]; return caml_call2(ef,ib,exc)} return take_format_readers(k,fmt)} function bscanf(ib,fmt){return kscanf(ib,scanf_bad_input,fmt)} @@ -26484,7 +26250,7 @@ {scan_caml_string(max_int,ib); var str=token_string(ib); try - {var _iB_=format_of_string_format(str,format),fmt=_iB_} + {var _iy_=format_of_string_format(str,format),fmt=_iy_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] !== Failure)throw exn; @@ -26493,11 +26259,11 @@ 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 _ix_(x){return x} + return sscanf_format(cat(cst$90,cat(escaped$1(s),cst$89)),fmt,_ix_)} function unescaped(s) - {function _iz_(x){return x} - return caml_call1(sscanf(cat(cst$92,cat(s,cst$91)),_cI_),_iz_)} + {function _iw_(x){return x} + return caml_call1(sscanf(cat(cst$92,cat(s,cst$91)),_cG_),_iw_)} 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)} @@ -26540,14 +26306,14 @@ 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_; + {var accu=[0,0],_it_=caml_ml_string_length(s) - 1 | 0,_is_=0; + if(_it_ >= 0) + {var i=_is_; 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} + {var _iu_=caml_string_get(s,i); + accu[1] = (223 * accu[1] | 0) + _iu_ | 0; + var _iv_=i + 1 | 0; + if(_it_ !== i){var i=_iv_;continue} break}} accu[1] = accu[1] & 2147483647; var tag=1073741823 < accu[1]?accu[1] + 2147483648 | 0:accu[1]; @@ -26569,30 +26335,30 @@ 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_; + var _im_=((fit_size(len) * 32 | 0) / 8 | 0) - 1 | 0; + caml_check_bound(methods,1)[2] = _im_; + var _io_=len - 1 | 0,_in_=0; + if(_io_ >= 0) + {var i=_in_; 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} + _iq_=(i * 2 | 0) + 3 | 0, + _ip_=caml_check_bound(pub_labels,i)[1 + i]; + caml_check_bound(methods,_iq_)[1 + _iq_] = _ip_; + var _ir_=i + 1 | 0; + if(_io_ !== i){var i=_ir_;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 old_size=array[2].length - 1,_ik_=old_size < new_size?1:0; + if(_ik_) {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} + var _il_=0} else - var _io_=_in_; - return _io_} + var _il_=_ik_; + return _il_} var method_count=[0,0],inst_var_count=[0,0]; function new_method(table) {var index=table[2].length - 1; @@ -26600,17 +26366,16 @@ 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_}} + {var _ii_=caml_call2(Meths[28],name,table[3]);return _ii_} + catch(_ij_) + {_ij_ = caml_wrap_exception(_ij_); + if(_ij_ !== Not_found)throw _ij_; + 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}} function get_method_labels(table,names) - {return map$7(function(_ik_){return get_method_label(table,_ik_)},names)} + {return map$7(function(_ih_){return get_method_label(table,_ih_)},names)} function set_method(table,label,element) {method_count[1]++; return caml_call2(Labs[28],label,table[4]) @@ -26622,12 +26387,12 @@ :(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) + {var _if_=assoc(label,table[6]);return _if_} + catch(_ig_) + {_ig_ = caml_wrap_exception(_ig_); + if(_ig_ === Not_found) return caml_check_bound(table[2],label)[1 + label]; - throw _ij_}} + throw _ig_}} function to_list$3(arr){return 0 === arr?0:to_list$1(arr)} function narrow(table,vars,virt_meths,concr_meths) {var @@ -26636,31 +26401,31 @@ concr_meths$0=to_list$3(concr_meths), virt_meth_labs= map$4 - (function(_ih_){return get_method_label(table,_ih_)},virt_meths$0), + (function(_ie_){return get_method_label(table,_ie_)},virt_meths$0), concr_meth_labs= map$4 - (function(_ig_){return get_method_label(table,_ig_)},concr_meths$0); + (function(_id_){return get_method_label(table,_id_)},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) + var _h6_=Vars[1],_h7_=table[7]; + function _h8_(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_); + table[7] = caml_call3(Vars[13],_h8_,_h7_,_h6_); 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]; + var _h$_=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_); + {var _ib_=caml_call2(Labs[28],label,table[4]),_ia_=_ib_} + catch(_ic_) + {_ic_ = caml_wrap_exception(_ic_); + if(_ic_ !== Not_found)throw _ic_; + var _ia_=1} + by_label[1] = caml_call3(Labs[4],label,_ia_,_h$_); return 0}, concr_meths$0, concr_meth_labs); @@ -26673,14 +26438,14 @@ virt_meth_labs); table[3] = by_name[1]; table[4] = by_label[1]; - var _ia_=0,_ib_=table[6]; + var _h9_=0,_h__=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_); + _h__, + _h9_); return 0} function widen(table) {var @@ -26696,34 +26461,33 @@ = fold_left$0 (function(s,v) - {var _h8_=caml_call2(Vars[28],v,table[7]); - return caml_call3(Vars[4],v,_h8_,s)}, + {var _h5_=caml_call2(Vars[28],v,table[7]); + return caml_call3(Vars[4],v,_h5_,s)}, saved_vars, vars); table[3] = by_name; table[4] = by_label; - var _h7_=table[6]; + var _h4_=table[6]; table[6] = fold_right (function(met,hm) {var lab=met[1];return mem(lab,virt_meths)?hm:[0,met,hm]}, - _h7_, + _h4_, 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_}} + {var _h2_=caml_call2(Vars[28],name,table[7]);return _h2_} + catch(_h3_) + {_h3_ = caml_wrap_exception(_h3_); + if(_h3_ !== Not_found)throw _h3_; + var index=new_slot(table); + if(caml_string_notequal(name,cst$93)) + table[7] = caml_call3(Vars[4],name,index,table[7]); + return index}} function to_array(arr){return caml_equal(arr,0)?[0]:arr} function new_methods_variables(table,meths,vals) {var @@ -26731,39 +26495,39 @@ 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_; + _hU_=nmeths - 1 | 0, + _hT_=0; + if(_hU_ >= 0) + {var i$0=_hT_; for(;;) {var - _h3_= + _h0_= 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} + caml_check_bound(res,i$0)[1 + i$0] = _h0_; + var _h1_=i$0 + 1 | 0; + if(_hU_ !== i$0){var i$0=_h1_;continue} break}} - var _hZ_=nvals - 1 | 0,_hY_=0; - if(! (_hZ_ < 0)) - {var i=_hY_; + var _hW_=nvals - 1 | 0,_hV_=0; + if(_hW_ >= 0) + {var i=_hV_; 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} + _hY_=i + nmeths | 0, + _hX_=new_variable(table,caml_check_bound(vals,i)[1 + i]); + caml_check_bound(res,_hY_)[1 + _hY_] = _hX_; + var _hZ_=i + 1 | 0; + if(_hW_ !== i){var i=_hZ_;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_}} + {var _hR_=caml_call2(Vars[28],name,table[7]);return _hR_} + catch(_hS_) + {_hS_ = caml_wrap_exception(_hS_); + if(_hS_ === Not_found)throw [0,Assert_failure,_cH_]; + throw _hS_}} function get_variables(table,names) - {return map$7(function(_hT_){return get_variable(table,_hT_)},names)} + {return map$7(function(_hQ_){return get_variable(table,_hQ_)},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]); @@ -26790,20 +26554,20 @@ 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_= + _hL_=0, + _hM_=to_array(concr_meths), + _hN_= [0, map$7 - (function(nm){return get_method(cla,get_method_label(cla,nm))},_hP_), - _hO_], - _hR_=to_array(vals); + (function(nm){return get_method(cla,get_method_label(cla,nm))},_hM_), + _hL_], + _hO_=to_array(vals); return caml_array_concat ([0, [0,init], [0, - map$7(function(_hS_){return get_variable(cla,_hS_)},_hR_), - _hQ_]])} + map$7(function(_hP_){return get_variable(cla,_hP_)},_hO_), + _hN_]])} function make_class(pub_meths,class_init) {var table=create_table(pub_meths),env_init=caml_call1(class_init,table); init_class(table); @@ -26829,15 +26593,13 @@ 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}} + {if(! param$0)return 0; + var l=param$0[2],f=param$0[1]; + caml_call1(f,obj); + var param$0=l}} function run_initializers(obj,table) - {var inits=table[8],_hN_=0 !== inits?1:0; - return _hN_?iter_f(obj,inits):_hN_} + {var inits=table[8],_hK_=0 !== inits?1:0; + return _hK_?iter_f(obj,inits):_hK_} function run_initializers_opt(obj_0,obj,table) {if(obj_0)return obj; var inits=table[8]; @@ -26849,46 +26611,43 @@ run_initializers(obj,table); return obj} function get_data$0(param) - {if(param)return param[2];throw [0,Assert_failure,_cN_]} + {if(param)return param[2];throw [0,Assert_failure,_cL_]} function build_path(n,keys,tables) - {var res=[0,0,0,0],r=[0,res],_hJ_=0; - if(! (n < 0)) - {var i=_hJ_; + {var res=[0,0,0,0],r=[0,res],_hG_=0; + if(n >= 0) + {var i=_hG_; 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} + {var _hI_=r[1]; + r[1] = [0,caml_check_bound(keys,i)[1 + i],_hI_,0]; + var _hJ_=i + 1 | 0; + if(n !== i){var i=_hJ_;continue} break}} - var _hK_=r[1]; - if(tables){tables[2] = _hK_;return res} - throw [0,Assert_failure,_cK_]} + var _hH_=r[1]; + if(! tables)throw [0,Assert_failure,_cI_]; + tables[2] = _hH_; + return res} 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: + if(! tables$2)return build_path(keys.length - 1 - 1 | 0,keys,root); + var i$1=keys.length - 1 - 1 | 0,i=i$1,tables=tables$2; + a: + for(;;) + {if(0 > i)return tables; + var key=caml_check_bound(keys,i)[1 + i],tables$0=tables; 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)} + {if(! tables$0)throw [0,Assert_failure,_cK_]; + if(tables$0[1] === key) + {var tables$1=get_data$0(tables$0); + if(! tables$1)throw [0,Assert_failure,_cN_]; + var i$0=i - 1 | 0,i=i$0,tables=tables$1; + continue a} + if(! tables$0)throw [0,Assert_failure,_cM_]; + var _hF_=tables$0[3]; + if(_hF_){var tables$0=_hF_;continue} + var v=[0,key,0,0]; + if(! tables$0)throw [0,Assert_failure,_cJ_]; + tables$0[3] = v; + return build_path(i - 1 | 0,keys,v)}}} function new_cache(table) {var n=new_method(table),switch$0=0; if @@ -26896,8 +26655,9 @@ !== (n % 2 | 0) && - ! - ((2 + ((caml_check_bound(table[2],1)[2] * 16 | 0) / 32 | 0) | 0) < n)) + (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; @@ -26905,255 +26665,250 @@ 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}} + {if(i[1] >= len)return 0; + var + _hz_=i[1], + label=caml_check_bound(methods,_hz_)[1 + _hz_], + next= + function(param) + {i[1]++; + var _hE_=i[1]; + return caml_check_bound(methods,_hE_)[1 + _hE_]}, + 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 _hC_=caml_call1(obj[1][1 + m],obj); + return caml_call2(obj[1][1 + n],obj,_hC_)}} + (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 _hB_=obj[1 + n]; + return caml_call1(caml_get_public_method(_hB_,m,0),_hB_)}} + (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 _hA_=obj[1 + e][1 + n]; + return caml_call1(caml_get_public_method(_hA_,m,0),_hA_)}} + (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 _hD_=caml_call1(obj[1][1 + n],obj); + return caml_call1(caml_get_public_method(_hD_,m,0),_hD_)}} + (m$5,n$18)} + else + var clo$0=clo; + set_method(table,label,clo$0); + i[1]++}} function stats$0(param) {return [0,table_count[1],method_count[1],inst_var_count[1]]} var @@ -27196,10 +26951,10 @@ {var length=comps$0.length - 1, modu=caml_obj_block(0,length), - _hy_=length - 1 | 0, - _hx_=0; - if(! (_hy_ < 0)) - {var i=_hx_; + _hv_=length - 1 | 0, + _hu_=0; + if(_hv_ >= 0) + {var i=_hu_; for(;;) {var shape=caml_check_bound(comps$0,i)[1 + i]; if(typeof shape === "number") @@ -27222,13 +26977,13 @@ (l, [246, function(l,i) - {return function(_hA_) + {return function(_hx_) {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_ + var _hy_=caml_obj_tag(l$0); + return 250 === _hy_ ?l$0[1] - :246 === _hB_?force_lazy_block(l$0):l$0}} + :246 === _hy_?force_lazy_block(l$0):l$0}} (l,i)]); var init=l; break; @@ -27239,8 +26994,8 @@ else var v=shape[1],init=v; modu[1 + i] = init; - var _hz_=i + 1 | 0; - if(_hy_ !== i){var i=_hz_;continue} + var _hw_=i + 1 | 0; + if(_hv_ !== i){var i=_hw_;continue} break}} return modu} function init_mod(loc,shape) @@ -27249,9 +27004,9 @@ 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_; + {var _hs_=comps$0.length - 1 - 1 | 0,_hr_=0; + if(_hs_ >= 0) + {var i=_hr_; for(;;) {var n$0=n[1 + i],shape=caml_check_bound(comps$0,i)[1 + i]; if(typeof shape === "number") @@ -27261,22 +27016,22 @@ {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} + var _hq_=j + 1 | 0; + if(3 !== j){var j=_hq_;continue} break}} else switch$0 = 1; - if(switch$0)throw [0,Assert_failure,_cQ_]} + if(switch$0)throw [0,Assert_failure,_cO_]} 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} + var _ht_=i + 1 | 0; + if(_hs_ !== i){var i=_ht_;continue} break}} return 0} - throw [0,Assert_failure,_cR_]} + throw [0,Assert_failure,_cP_]} function update_mod(shape,o,n) {if(typeof shape !== "number" && 0 === shape[0]) {var comps=shape[1];return update_mod_block(comps,o,n)} @@ -27308,147 +27063,76 @@ 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_}} + {var _ho_=caml_call2(Stdlib_Hashtbl[6],kwd_table,id);return _ho_} + catch(_hp_) + {_hp_ = caml_wrap_exception(_hp_); + if(_hp_ === Not_found)return [1,id]; + throw _hp_}} 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} + {var _hm_=caml_call2(Stdlib_Hashtbl[6],kwd_table,s);return _hm_} + catch(_hn_) + {_hn_ = caml_wrap_exception(_hn_); + if(_hn_ === Not_found)throw [0,Error,cat(cst_Illegal_character,s)]; + throw _hn_}} 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}} + {var _hl_=match[1]; + if(9 >= _hl_ - 48 >>> 0){junk(strm);store(_hl_);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; + {var _hk_=match[1],switch$0=0; + if(43 !== _hk_ && 45 !== _hk_)switch$0 = 1; if(! switch$0) - {junk(strm);store(_hj_);return end_exponent_part(strm)}} + {junk(strm);store(_hk_);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 _hh_=match[1]; + if(58 <= _hh_) {var switch$0=0; - if(69 === _hg_ || 101 === _hg_)switch$0 = 1; + if(69 === _hh_ || 101 === _hh_)switch$0 = 1; if(switch$0){junk(s);store(69);return exponent_part(s)}} else - {if(46 === _hg_) + {if(46 === _hh_) {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}} + {var _hi_=match$0[1],_hj_=_hi_ - 69 | 0; + if(32 < _hj_ >>> 0) + {if(9 >= _hj_ + 21 >>> 0){junk(s);store(_hi_);continue}} else - if(30 < _hi_ - 1 >>> 0) + if(30 < _hj_ - 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}}} + if(48 <= _hh_){junk(s);store(_hh_);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} + {var _hf_=match[1],switch$0=0; + if(94 <= _hf_) + {var _hg_=_hf_ - 95 | 0; + if(30 < _hg_ >>> 0) + {if(32 > _hg_)switch$0 = 1} else - if(29 === _hf_)switch$0 = 1} + if(29 === _hg_)switch$0 = 1} else - if(65 <= _he_) - {if(92 === _he_)switch$0 = 1} + if(65 <= _hf_) + {if(92 === _hf_)switch$0 = 1} else - if(33 <= _he_) - switch(_he_ - 33 | 0) + if(33 <= _hf_) + switch(_hf_ - 33 | 0) {case 0: case 2: case 3: @@ -27465,14 +27149,14 @@ case 30: case 31:switch$0 = 1;break } - if(switch$0){junk(strm);store(_he_);continue}} + if(switch$0){junk(strm);store(_hf_);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)}} + {var _he_=match[1]; + if(9 >= _he_ - 48 >>> 0) + {junk(s);reset_buffer(0);store(45);store(_he_);return number(s)}} reset_buffer(0); store(45); return ident2(s)} @@ -27480,152 +27164,210 @@ {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} + {var _hc_=match[1],switch$0=0; + if(91 <= _hc_) + {var _hd_=_hc_ - 95 | 0; + if(27 < _hd_ >>> 0) + {if(97 <= _hd_)switch$0 = 1} else - if(1 !== _hc_)switch$0 = 1} + if(1 !== _hd_)switch$0 = 1} else - if(48 <= _hb_) - {if(6 < _hb_ - 58 >>> 0)switch$0 = 1} + if(48 <= _hc_) + {if(6 < _hc_ - 58 >>> 0)switch$0 = 1} else - if(39 === _hb_)switch$0 = 1; - if(switch$0){junk(strm);store(_hb_);continue}} + if(39 === _hc_)switch$0 = 1; + if(switch$0){junk(strm);store(_hc_);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} + if(! match)return 0; + var _g5_=match[1],switch$0=0; + if(124 <= _g5_) + {if(127 <= _g5_) + {if(192 <= _g5_)switch$0 = 1} 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: + if(125 !== _g5_)switch$0 = 2} + else + {var _g6_=_g5_ - 65 | 0; + if(57 < _g6_ >>> 0) + {if(58 > _g6_) + switch(_g6_ + 65 | 0) + {case 34: + junk(strm); + reset_buffer(0); + for(;;) + {var match$1=peek$0(strm); + if(! match$1)throw Failure$0; + var _g8_=match$1[1]; + if(34 === _g8_){junk(strm);return [0,[4,get_string(0)]]} + if(92 !== _g8_){junk(strm);store(_g8_);continue} 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 - }} + {var c$0=escape(strm)} + catch(_hb_) + {_hb_ = caml_wrap_exception(_hb_); + if(_hb_ === Failure$0)throw [0,Error,cst$96]; + throw _hb_} + store(c$0)} + case 39: + junk(strm); + try + {var match$2=peek$0(strm); + if(! match$2)throw Failure$0; + var _g9_=match$2[1]; + if(92 === _g9_) + {junk(strm); + try + {var _g__=escape(strm)} + catch(_ha_) + {_ha_ = caml_wrap_exception(_ha_); + if(_ha_ === Failure$0)throw [0,Error,cst$97]; + throw _ha_} + var c=_g__} + else + {junk(strm);var c=_g9_}} + 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) + return caml_trampoline_return(maybe_comment,[0,strm]); + var counter$0=counter + 1 | 0; + return maybe_comment(counter$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(_g5_);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 _g7_=_g6_ - 26 | 0; + if(5 < _g7_ >>> 0) + switch$0 = 1; 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}} + switch(_g7_) + {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(_g5_)]; + case 1:junk(strm);reset_buffer(0);store(_g5_);return ident(strm); + default:junk(strm);reset_buffer(0);store(_g5_);return ident2(strm)}}} 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])} + if(counter >= 50) + return caml_trampoline_return(next_token$0,[0,strm]); + var counter$0=counter + 1 | 0; + return next_token$0(counter$0,strm)} return [0,keyword_or_error(40)]} function next_token(strm){return caml_trampoline(next_token$0(0,strm))} + function escape(strm) + {var match=peek$0(strm); + if(! match)throw Failure$0; + var _g2_=match[1]; + if(58 <= _g2_) + {var switcher=_g2_ - 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 <= _g2_) + {junk(strm); + var match$0=peek$0(strm); + if(match$0) + {var _g3_=match$0[1]; + if(9 >= _g3_ - 48 >>> 0) + {junk(strm); + var match$1=peek$0(strm); + if(match$1) + {var _g4_=match$1[1]; + if(9 >= _g4_ - 48 >>> 0) + {junk(strm); + return chr + ((((_g2_ - 48 | 0) * 100 | 0) + + + ((_g3_ - 48 | 0) * 10 | 0) + | + 0) + + + (_g4_ - 48 | 0) + | + 0)}} + throw [0,Error,cst$99]}} + throw [0,Error,cst$98]} + junk(strm); + return _g2_} + function comment(strm) + {a: + for(;;) + {var match=peek$0(strm); + if(! match)throw Failure$0; + 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)throw Failure$0; + if(42 === match$0[1]){junk(strm);comment(strm);continue} + junk(strm); + continue; + case 1:break; + default: + junk(strm); + for(;;) + {var match$1=peek$0(strm); + if(! match$1)throw Failure$0; + var _g1_=match$1[1]; + if(41 === _g1_){junk(strm);return 0} + if(42 === _g1_){junk(strm);continue} + junk(strm); + continue a}} + junk(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)}]; + {var prng=[246,function(_g0_){return caml_call1(_cg_[2],0)}]; function create(opt,initial_size) {if(opt) var sth=opt[1],random=sth; @@ -27633,25 +27375,25 @@ var random=caml_call1(Stdlib_Hashtbl[17],0); var x=16; for(;;) - {if(! (initial_size <= x) && ! (max_array_length < (x * 2 | 0))) + {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_); + _gY_=caml_obj_tag(prng), + _gZ_=250 === _gY_?prng[1]:246 === _gY_?force_lazy_block(prng):prng, + seed=caml_call1(_cg_[4],_gZ_); 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_; + var len=h[2].length - 1,_gW_=len - 1 | 0,_gV_=0; + if(_gW_ >= 0) + {var i=_gV_; for(;;) {caml_check_bound(h[2],i)[1 + i] = 0; - var _gZ_=i + 1 | 0; - if(_gY_ !== i){var i=_gZ_;continue} + var _gX_=i + 1 | 0; + if(_gW_ !== i){var i=_gX_;continue} break}} return 0} function reset(h) @@ -27660,66 +27402,63 @@ ?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_]} + {var _gS_=init[4],_gT_=init[3],_gU_=copy$1(init[2]); + return [0,init[1],_gU_,_gT_,_gS_]} 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_; + {if(! param$0)return 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}} + var d=h[2],_gP_=d.length - 1 - 1 | 0,_gO_=0; + if(_gP_ >= 0) + {var i=_gO_; 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} + {var _gQ_=do_bucket(caml_check_bound(d,i)[1 + i]); + caml_check_bound(d,i)[1 + i] = _gQ_; + var _gR_=i + 1 | 0; + if(_gP_ !== i){var i=_gR_;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_) + _gH_=nsize < max_array_length?1:0, + _gI_=_gH_?(osize >>> 1 | 0) <= h[1]?1:0:_gH_; + if(_gI_) {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} + {if(! param)return 0; + var rest=param[3],data=param[2],hkey=param[1]; + insert_bucket(rest); + var + nidx=key_index(h,hkey), + _gN_=[0,hkey,data,caml_check_bound(ndata,nidx)[1 + nidx]]; + caml_check_bound(ndata,nidx)[1 + nidx] = _gN_; return 0}, - _gM_=osize - 1 | 0, - _gL_=0; - if(! (_gM_ < 0)) - {var i=_gL_; + _gK_=osize - 1 | 0, + _gJ_=0; + if(_gK_ >= 0) + {var i=_gJ_; for(;;) {insert_bucket(caml_check_bound(odata,i)[1 + i]); - var _gO_=i + 1 | 0; - if(_gM_ !== i){var i=_gO_;continue} + var _gM_=i + 1 | 0; + if(_gK_ !== i){var i=_gM_;continue} break}} - var _gN_=0} + var _gL_=0} else - var _gN_=_gK_; - return _gN_} + var _gL_=_gI_; + return _gL_} function add(h,key,info) {var hkey=caml_call2(H[2],h[3],key), @@ -27728,142 +27467,121 @@ 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_} + var _gG_=h[2].length - 1 << 1 < h[1]?1:0; + return _gG_?resize(h):_gG_} 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}} + {if(! param$0)return 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)]}} 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_; + _gF_=remove_bucket(caml_check_bound(h[2],i)[1 + i]); + caml_check_bound(h[2],i)[1 + i] = _gF_; 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_], + _gE_=key_index(h,hkey), + param$1=caml_check_bound(h[2],_gE_)[1 + _gE_], 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}} + {if(! param)throw Not_found; + var hk=param[1],rest=param[3],c=param[2]; + if(hkey !== hk){var param$0=param[3],param=param$0;continue} + 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}}} 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_], + _gD_=key_index(h,hkey), + param$1=caml_check_bound(h[2],_gD_)[1 + _gD_], 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}} + {if(! param)return 0; + var hk=param[1],rest=param[3],c=param[2]; + if(hkey !== hk){var param$0=param[3],param=param$0;continue} + 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}}} 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_])} + {if(! param$0)return 0; + var hk=param$0[1],rest=param$0[3],c=param$0[2]; + if(hkey !== hk){var param$1=param$0[3],param$0=param$1;continue} + 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 _gC_=key_index(h,hkey); + return find_in_bucket(caml_check_bound(h[2],_gC_)[1 + _gC_])} 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}} + {if(! param$0)throw Not_found; + var hk=param$0[1],next=param$0[3],c=param$0[2]; + if(hkey !== hk){var param$1=param$0[3],param$0=param$1;continue} + var match=caml_call2(H[3],c,key); + if(! match)return caml_call3(H[6],c,key,info); + var param$0=next}} 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_}} + {var _gA_=replace_bucket(l);return _gA_} + catch(_gB_) + {_gB_ = caml_wrap_exception(_gB_); + if(_gB_ !== Not_found)throw _gB_; + 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 _gz_=h[2].length - 1 << 1 < h[1]?1:0; + return _gz_?resize(h):_gz_}} 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_], + _gy_=key_index(h,hkey), + param$1=caml_check_bound(h[2],_gy_)[1 + _gy_], 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}} + {if(! param)return 0; + var hk=param[1],rest=param[3],c=param[2]; + if(hk !== hkey){var param$0=param[3],param=param$0;continue} + var match=caml_call2(H[3],c,key); + if(! match)return 1; + var param=rest}} 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_; + {var d$0=h[2],_gw_=d$0.length - 1 - 1 | 0,_gv_=0; + if(_gw_ >= 0) + {var i=_gv_; a: for(;;) {var param$0=caml_check_bound(d$0,i)[1 + i],param=param$0; @@ -27879,22 +27597,22 @@ {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} + var _gx_=i + 1 | 0; + if(_gw_ !== i){var i=_gx_;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_; + {var d$0=h[2],accu$1=[0,init],_gs_=d$0.length - 1 - 1 | 0,_gr_=0; + if(_gs_ >= 0) + {var i=_gr_; a: for(;;) {var - _gv_=accu$1[1], + _gt_=accu$1[1], b$0=caml_check_bound(d$0,i)[1 + i], b=b$0, - accu=_gv_; + accu=_gt_; for(;;) {if(b) {var @@ -27910,8 +27628,8 @@ var b=rest,accu=accu$0; continue} accu$1[1] = accu; - var _gw_=i + 1 | 0; - if(_gu_ !== i){var i=_gw_;continue a} + var _gu_=i + 1 | 0; + if(_gs_ !== i){var i=_gu_;continue a} break} break}} return accu$1[1]} @@ -27919,128 +27637,121 @@ {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} + {if(! param$0)return 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} - return 0}} - var d=h[2],_gq_=d.length - 1 - 1 | 0,_gp_=0; - if(! (_gq_ < 0)) - {var i=_gp_; + var param$0=rest}} + var d=h[2],_go_=d.length - 1 - 1 | 0,_gn_=0; + if(_go_ >= 0) + {var i=_gn_; 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} + {var _gp_=do_bucket(caml_check_bound(d,i)[1 + i]); + caml_check_bound(d,i)[1 + i] = _gp_; + var _gq_=i + 1 | 0; + if(_go_ !== i){var i=_gq_;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}} + {if(! param$0)return accu$0; + var + param$1=param$0[3], + accu$1=accu$0 + 1 | 0, + accu$0=accu$1, + param$0=param$1}} function stats(h) {var - _gl_=h[2], - _gm_=0, + _gj_=h[2], + _gk_=0, mbl= fold_left$3 - (function(m,b){return max$1(m,bucket_length(0,b))},_gm_,_gl_), + (function(m,b){return max$1(m,bucket_length(0,b))},_gk_,_gj_), histo=caml_make_vect(mbl + 1 | 0,0), - _gn_=h[2]; + _gl_=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_; + _gm_=caml_check_bound(histo,l)[1 + l] + 1 | 0; + caml_check_bound(histo,l)[1 + l] = _gm_; return 0}, - _gn_); + _gl_); 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}} + {if(! param$0)return accu$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}} function stats_alive(h) {var size=[0,0], - _gh_=h[2], - _gi_=0, + _gf_=h[2], + _gg_=0, mbl= fold_left$3 - (function(m,b){return max$1(m,bucket_length_alive(0,b))},_gi_,_gh_), + (function(m,b){return max$1(m,bucket_length_alive(0,b))},_gg_,_gf_), histo=caml_make_vect(mbl + 1 | 0,0), - _gj_=h[2]; + _gh_=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_; + var _gi_=caml_check_bound(histo,l)[1 + l] + 1 | 0; + caml_check_bound(histo,l)[1 + l] = _gi_; return 0}, - _gj_); + _gh_); 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; + {if(! buck$0) + {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} - 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_)}} + 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(_ge_){return aux(i$0,next,_ge_)}]} + var buck$0=next}} + var _gb_=0,_gc_=0; + return function(_gd_){return aux(_gc_,_gb_,_gd_)}} 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_)}} + {var _f9_=to_seq(m); + function _f__(_ga_){return _ga_[1]} + return function(_f$_){return map$1(_f__,_f9_,_f$_)}} 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_)}} + {var _f5_=to_seq(m); + function _f6_(_f8_){return _f8_[2]} + return function(_f7_){return map$1(_f6_,_f5_,_f7_)}} function add_seq(tbl,i) {return iter (function(param) @@ -28077,33 +27788,35 @@ 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 create$5(param){return caml_call1(_o_[1],1)} + function get_key$0(t){return caml_call2(_o_[3],t,0)} + function get_key_copy$0(t){return caml_call2(_o_[4],t,0)} + function set_key$0(t,k){return caml_call3(_o_[5],t,0,k)} + function unset_key$0(t){return caml_call2(_o_[6],t,0)} + function check_key$0(t){return caml_call2(_o_[7],t,0)} + function blit_key$0(t1,t2){return caml_call5(_o_[8],t1,0,t2,0,1)} + function get_data$1(t){return caml_call1(_o_[9],t)} + function get_data_copy(t){return caml_call1(_o_[10],t)} + function set_data(t,d){return caml_call2(_o_[11],t,d)} + function unset_data(t){return caml_call1(_o_[12],t)} + function check_data(t){return caml_call1(_o_[13],t)} + function blit_data(t1,t2){return caml_call2(_o_[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} + if(! match)return 0; + var k=match[1]; + return k === key?get_data$1(eph):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} + if(! match)return 2; + var k$0=match[1]; + return caml_call2(H[1],k,k$0)?0:1} function set_key_data(c,k,d) {unset_data(c);set_key$0(c,k);return set_data(c,d)} return MakeSeeded$0 @@ -28142,8 +27855,8 @@ replace_seq=include[21], clean=include[23], stats_alive=include[24], - _f6_=include[1]; - function create(sz){return caml_call2(_f6_,_cS_,sz)} + _f4_=include[1]; + function create(sz){return caml_call2(_f4_,_cQ_,sz)} function of_seq(i) {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} return [0, @@ -28172,7 +27885,7 @@ 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 add$1(b,k,d){var _f3_=b[1];b[1] = [0,make$4(k,d),_f3_];return 0} function test_key(k,e) {var match=get_key$0(e); if(match){var x=match[1];if(x === k)return 1} @@ -28180,40 +27893,39 @@ 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}} + {if(! l)return 0; + 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}} 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} + _f1_=b[1], + match=find_opt(function(_f2_){return test_key(k,_f2_)},_f1_); + if(! match)return 0; + var e=match[1]; + return get_data$1(e)} 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 create$6(param){return caml_call1(_o_[1],2)} + function get_key1(t){return caml_call2(_o_[3],t,0)} + function get_key1_copy(t){return caml_call2(_o_[4],t,0)} + function set_key1(t,k){return caml_call3(_o_[5],t,0,k)} + function unset_key1(t){return caml_call2(_o_[6],t,0)} + function check_key1(t){return caml_call2(_o_[7],t,0)} + function get_key2(t){return caml_call2(_o_[3],t,1)} + function get_key2_copy(t){return caml_call2(_o_[4],t,1)} + function set_key2(t,k){return caml_call3(_o_[5],t,1,k)} + function unset_key2(t){return caml_call2(_o_[6],t,1)} + function check_key2(t){return caml_call2(_o_[7],t,1)} + function blit_key1(t1,t2){return caml_call5(_o_[8],t1,0,t2,0,1)} + function blit_key2(t1,t2){return caml_call5(_o_[8],t1,1,t2,1,1)} + function blit_key12(t1,t2){return caml_call5(_o_[8],t1,0,t2,0,2)} + function get_data$2(t){return caml_call1(_o_[9],t)} + function get_data_copy$0(t){return caml_call1(_o_[10],t)} + function set_data$0(t,d){return caml_call2(_o_[11],t,d)} + function unset_data$0(t){return caml_call1(_o_[12],t)} + function check_data$0(t){return caml_call1(_o_[13],t)} + function blit_data$0(t1,t2){return caml_call2(_o_[14],t1,t2)} function make$6(key1,key2,data) {var eph=create$6(0); set_data$0(eph,data); @@ -28222,15 +27934,13 @@ 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} + if(! match)return 0; + var k=match[1]; + if(k !== key1)return 0; + var match$0=get_key2(eph); + if(! match$0)return 0; + var k$0=match$0[1]; + return k$0 === key2?get_data$2(eph):0} function MakeSeeded$2(H1,H2) {function create(param,d) {var k2=param[2],k1=param[1],c=create$6(0); @@ -28242,8 +27952,8 @@ {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} + _f0_=caml_call2(H2[2],seed,k2) * 65599 | 0; + return caml_call2(H1[2],seed,k1) + _f0_ | 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) @@ -28263,16 +27973,16 @@ 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_} + {var _fZ_=check_key1(c);return _fZ_?check_key2(c):_fZ_} 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]; + var equal$0=H1[1],_fX_=[0,equal,hash]; function hash$0(seed,x){return caml_call1(H1[2],x)} var - include=MakeSeeded$2([0,equal$0,hash$0],_fZ_), + include=MakeSeeded$2([0,equal$0,hash$0],_fX_), clear=include[2], reset=include[3], copy=include[4], @@ -28295,8 +28005,8 @@ replace_seq=include[21], clean=include[23], stats_alive=include[24], - _f0_=include[1]; - function create(sz){return caml_call2(_f0_,_cT_,sz)} + _fY_=include[1]; + function create(sz){return caml_call2(_fY_,_cR_,sz)} function of_seq(i) {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} return [0, @@ -28326,7 +28036,7 @@ 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} + {var _fW_=b[1];b[1] = [0,make$6(k1,k2,d),_fW_];return 0} function test_keys(k1,k2,e) {var match=get_key1(e),match$0=get_key2(e); if(match && match$0) @@ -28335,88 +28045,87 @@ 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}} + {if(! l)return 0; + 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}} 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} + _fU_=b[1], + match=find_opt(function(_fV_){return test_keys(k1,k2,_fV_)},_fU_); + if(! match)return 0; + var e=match[1]; + return get_data$2(e)} 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 create$7(n){return caml_call1(_o_[1],n)} + function length$9(k){return caml_call1(_o_[2],k)} + function get_key$1(t,n){return caml_call2(_o_[3],t,n)} + function get_key_copy$1(t,n){return caml_call2(_o_[4],t,n)} + function set_key$1(t,n,k){return caml_call3(_o_[5],t,n,k)} + function unset_key$1(t,n){return caml_call2(_o_[6],t,n)} + function check_key$1(t,n){return caml_call2(_o_[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)} + {return caml_call5(_o_[8],t1,o1,t2,o2,l)} + function get_data$3(t){return caml_call1(_o_[9],t)} + function get_data_copy$1(t){return caml_call1(_o_[10],t)} + function set_data$1(t,d){return caml_call2(_o_[11],t,d)} + function unset_data$1(t){return caml_call1(_o_[12],t)} + function check_data$1(t){return caml_call1(_o_[13],t)} + function blit_data$1(t1,t2){return caml_call2(_o_[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_; + var _fS_=l - 1 | 0,_fR_=0; + if(_fS_ >= 0) + {var i=_fR_; 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} + var _fT_=i + 1 | 0; + if(_fS_ !== i){var i=_fT_;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_; + var _fN_=l - 1 | 0,_fM_=0; + if(_fN_ >= 0) + {var i=_fM_; 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} + var _fP_=i + 1 | 0; + if(_fN_ !== i){var i=_fP_;continue} break}} - var _fQ_=get_data$3(eph); - return _fQ_} - catch(_fS_) - {_fS_ = caml_wrap_exception(_fS_);if(_fS_ === Exit)return 0;throw _fS_}} + var _fO_=get_data$3(eph); + return _fO_} + catch(_fQ_) + {_fQ_ = caml_wrap_exception(_fQ_);if(_fQ_ === Exit)return 0;throw _fQ_}} 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_; + var _fK_=k.length - 1 - 1 | 0,_fJ_=0; + if(_fK_ >= 0) + {var i=_fJ_; 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} + var _fL_=i + 1 | 0; + if(_fK_ !== i){var i=_fL_;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_; + {var h=[0,0],_fF_=k.length - 1 - 1 | 0,_fE_=0; + if(_fF_ >= 0) + {var i=_fE_; 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} + {var _fG_=h[1],_fH_=caml_check_bound(k,i)[1 + i]; + h[1] = (caml_call2(H[2],seed,_fH_) * 65599 | 0) + _fG_ | 0; + var _fI_=i + 1 | 0; + if(_fF_ !== i){var i=_fI_;continue} break}} return h[1]} function equal(c,k) @@ -28424,53 +28133,47 @@ 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}} + {if(0 > i)return 0; + var match=get_key$1(c,i); + if(! match)return 2; + var ki=match[1],_fD_=caml_check_bound(k,i)[1 + i]; + if(! caml_call2(H[1],_fD_,ki))return 1; + var i$0=i - 1 | 0,i=i$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} + if(! match)return 0; + var k0=match[1],a=caml_make_vect(len,k0),i$1=len - 1 | 0,i=i$1; + for(;;) + {if(1 > i)return [0,a]; + var match$0=get_key$1(c,i); + if(! match$0)return 0; + var ki=match$0[1]; + caml_check_bound(a,i)[1 + i] = ki; + var i$0=i - 1 | 0,i=i$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_; + var _fB_=k.length - 1 - 1 | 0,_fA_=0; + if(_fB_ >= 0) + {var i=_fA_; 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} + var _fC_=i + 1 | 0; + if(_fB_ !== i){var i=_fC_;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_; + {var _fx_=i < 0?1:0; + if(_fx_) + var _fy_=_fx_; 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_}} + {var _fz_=check_key$1(c,i); + if(_fz_){var i$0=i - 1 | 0,i=i$0;continue} + var _fy_=_fz_} + return _fy_}} return MakeSeeded$0 ([0,create,hash,equal,get_data$3,get_key,set_key_data,check_key])} function Make$4(H) @@ -28500,8 +28203,8 @@ replace_seq=include[21], clean=include[23], stats_alive=include[24], - _fy_=include[1]; - function create(sz){return caml_call2(_fy_,_cU_,sz)} + _fw_=include[1]; + function create(sz){return caml_call2(_fw_,_cS_,sz)} function of_seq(i) {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} return [0, @@ -28530,42 +28233,41 @@ 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 add$3(b,k,d){var _fv_=b[1];b[1] = [0,make$8(k,d),_fv_];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_; + var _fr_=k.length - 1 - 1 | 0,_fq_=0; + if(_fr_ >= 0) + {var i=_fq_; 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} + {var _ft_=i + 1 | 0; + if(_fr_ !== i){var i=_ft_;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_}} + var _fs_=1; + return _fs_} + catch(_fu_) + {_fu_ = caml_wrap_exception(_fu_);if(_fu_ === Exit)return 0;throw _fu_}} 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}} + {if(! l)return 0; + 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}} 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} + _fo_=b[1], + match=find_opt(function(_fp_){return test_keys$0(k,_fp_)},_fo_); + if(! match)return 0; + var e=match[1]; + return get_data$3(e)} function length$10(b){return length$1(b[1])} function clear$5(b){b[1] = 0;return 0} var @@ -28636,97 +28338,89 @@ MakeSeeded$3, [0,make$9,add$3,remove$2,find$4,length$10,clear$5]], [0, - function(_fp_) + function(_fn_) {return MakeSeeded$0 - ([0,_fp_[3],_fp_[1],_fp_[2],_fp_[5],_fp_[4],_fp_[6],_fp_[7]])}]]; + ([0,_fn_[3],_fn_[1],_fn_[2],_fn_[5],_fn_[4],_fn_[6],_fn_[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)}} + {if(0 > n)return sub$0(name,0,1); + 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)return sub$0(name,0,p); + 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}}} 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; + {if(0 > n)return sub$0(name,0,1); + 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)return current_dir_name; + if(! caml_call2(is_dir_sep,name,n$1)) + {var n$2=n$1 - 1 | 0,n$1=n$2;continue} + var n$3=n$1; 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)}} + {if(0 > n$3)return sub$0(name,0,1); + if(! caml_call2(is_dir_sep,name,n$3)) + return sub$0(name,0,n$3 + 1 | 0); + var n$4=n$3 - 1 | 0,n$3=n$4}}}} 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_; + _fl_=caml_ml_string_length(n) < 1?1:0, + _fm_=_fl_ || (47 !== caml_string_get(n,0)?1:0); return _fm_} + function is_implicit(n) + {var _fg_=is_relative(n); + if(_fg_) + {var + _fh_=caml_ml_string_length(n) < 2?1:0, + _fi_=_fh_ || caml_string_notequal(sub$0(n,0,2),cst$103); + if(_fi_) + var + _fj_=caml_ml_string_length(n) < 3?1:0, + _fk_=_fj_ || caml_string_notequal(sub$0(n,0,3),cst$102); + else + var _fk_=_fi_} + else + var _fk_=_fg_; + return _fk_} 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} + if(len_s > len_f)return 0; + 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} 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} + {var _c1_=caml_sys_getenv(cst_TMPDIR),_cT_=_c1_} + catch(_ff_) + {_ff_ = caml_wrap_exception(_ff_); + if(_ff_ !== Not_found)throw _ff_; + var _cT_=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_; + var _fd_=l - 1 | 0,_fc_=0; + if(_fd_ >= 0) + {var i=_fc_; 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} + var _fe_=i + 1 | 0; + if(_fd_ !== i){var i=_fe_;continue} break}} add_char(b,39); return contents(b)} @@ -28734,25 +28428,25 @@ {if(stderr) var f=stderr[1], - _e__=caml_equal(stderr,stdout)?cst_2_1:cat(cst_2,quote(f)), - _e$_=_e__; + _e8_=caml_equal(stderr,stdout)?cst_2_1:cat(cst_2,quote(f)), + _e9_=_e8_; else - var _e$_=cst$109; + var _e9_=cst$109; if(stdout) - var f$0=stdout[1],_fa_=cat(cst$104,quote(f$0)); + var f$0=stdout[1],_e__=cat(cst$104,quote(f$0)); else - var _fa_=cst$108; - var _fb_=cat(_fa_,_e$_); + var _e__=cst$108; + var _e$_=cat(_e__,_e9_); if(stdin) - var f$1=stdin[1],_fc_=cat(cst$105,quote(f$1)); + var f$1=stdin[1],_fa_=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 _fa_=cst$107; + var _fb_=cat(_fa_,_e$_); + return cat(concat$1(cst$106,map$4(quote,[0,cmd,args])),_fb_)} + function basename(_e7_) + {return generic_basename(is_dir_sep,current_dir_name,_e7_)} + function dirname(_e6_) + {return generic_dirname(is_dir_sep,current_dir_name,_e6_)} var Unix= [0, @@ -28765,105 +28459,104 @@ is_implicit, check_suffix, chop_suffix_opt, - _cV_, + _cT_, 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_; + {var c=caml_string_get(s,i),_e3_=47 === c?1:0; + if(_e3_) + var _e4_=_e3_; else - var _e7_=92 === c?1:0,_e6_=_e7_ || (58 === c?1:0); - return _e6_} + var _e5_=92 === c?1:0,_e4_=_e5_ || (58 === c?1:0); + return _e4_} 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_) + _eX_=caml_ml_string_length(n) < 1?1:0, + _eY_=_eX_ || (47 !== caml_string_get(n,0)?1:0); + if(_eY_) {var - _e1_=caml_ml_string_length(n) < 1?1:0, - _e2_=_e1_ || (92 !== caml_string_get(n,0)?1:0); - if(_e2_) + _eZ_=caml_ml_string_length(n) < 1?1:0, + _e0_=_eZ_ || (92 !== caml_string_get(n,0)?1:0); + if(_e0_) var - _e3_=caml_ml_string_length(n) < 2?1:0, - _e4_=_e3_ || (58 !== caml_string_get(n,1)?1:0); + _e1_=caml_ml_string_length(n) < 2?1:0, + _e2_=_e1_ || (58 !== caml_string_get(n,1)?1:0); else - var _e4_=_e2_} + var _e2_=_e0_} else - var _e4_=_e0_; - return _e4_} + var _e2_=_eY_; + return _e2_} function is_implicit$0(n) - {var _eQ_=is_relative$0(n); - if(_eQ_) + {var _eO_=is_relative$0(n); + if(_eO_) {var - _eR_=caml_ml_string_length(n) < 2?1:0, - _eS_=_eR_ || caml_string_notequal(sub$0(n,0,2),cst$113); - if(_eS_) + _eP_=caml_ml_string_length(n) < 2?1:0, + _eQ_=_eP_ || caml_string_notequal(sub$0(n,0,2),cst$113); + if(_eQ_) {var - _eT_=caml_ml_string_length(n) < 2?1:0, - _eU_=_eT_ || caml_string_notequal(sub$0(n,0,2),cst$112); - if(_eU_) + _eR_=caml_ml_string_length(n) < 2?1:0, + _eS_=_eR_ || caml_string_notequal(sub$0(n,0,2),cst$112); + if(_eS_) {var - _eV_=caml_ml_string_length(n) < 3?1:0, - _eW_=_eV_ || caml_string_notequal(sub$0(n,0,3),cst$111); - if(_eW_) + _eT_=caml_ml_string_length(n) < 3?1:0, + _eU_=_eT_ || caml_string_notequal(sub$0(n,0,3),cst$111); + if(_eU_) var - _eX_=caml_ml_string_length(n) < 3?1:0, - _eY_=_eX_ || caml_string_notequal(sub$0(n,0,3),cst$110); + _eV_=caml_ml_string_length(n) < 3?1:0, + _eW_=_eV_ || caml_string_notequal(sub$0(n,0,3),cst$110); else - var _eY_=_eW_} + var _eW_=_eU_} else - var _eY_=_eU_} + var _eW_=_eS_} else - var _eY_=_eS_} + var _eW_=_eQ_} else - var _eY_=_eQ_; - return _eY_} + var _eW_=_eO_; + return _eW_} function check_suffix$0(name,suff) - {var _eN_=caml_ml_string_length(suff) <= caml_ml_string_length(name)?1:0; - if(_eN_) + {var _eL_=caml_ml_string_length(suff) <= caml_ml_string_length(name)?1:0; + if(_eL_) 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_); + _eM_=lowercase_ascii$1(suff), + _eN_=caml_string_equal(lowercase_ascii$1(s),_eM_); else - var _eP_=_eN_; - return _eP_} + var _eN_=_eL_; + return _eN_} 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} + if(len_s > len_f)return 0; + var + r=sub$0(filename,len_f - len_s | 0,len_s), + _eK_=lowercase_ascii$1(suffix); + return caml_string_equal(lowercase_ascii$1(r),_eK_) + ?[0,sub$0(filename,0,len_f - len_s | 0)] + :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 _c0_=caml_sys_getenv(cst_TEMP),temp_dir_name=_c0_} + catch(_eJ_) + {_eJ_ = caml_wrap_exception(_eJ_); + if(_eJ_ !== Not_found)throw _eJ_; 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_; + {var _eH_=1; + if(n >= 1) + {var j=_eH_; for(;;) {add_char(b,92); - var _eK_=j + 1 | 0; - if(n !== j){var j=_eK_;continue} + var _eI_=j + 1 | 0; + if(n !== j){var j=_eI_;continue} break}} return 0} function loop$0(counter,i) @@ -28872,20 +28565,17 @@ {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}} + {var _eF_=0; + if(counter >= 50) + return caml_trampoline_return(loop_bs,[0,_eF_,i$0]); + var counter$1=counter + 1 | 0; + return loop_bs(counter$1,_eF_,i$0)} + if(92 !== c){add_char(b,c);var i$1=i$0 + 1 | 0,i$0=i$1;continue} + var _eG_=0; + if(counter >= 50) + return caml_trampoline_return(loop_bs,[0,_eG_,i$0]); + var counter$0=counter + 1 | 0; + return loop_bs(counter$0,_eG_,i$0)}} function loop_bs(counter,n,i) {var n$0=n,i$0=i; for(;;) @@ -28894,16 +28584,16 @@ 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_])} + var _eE_=i$0 + 1 | 0; + if(counter >= 50)return caml_trampoline_return(loop$0,[0,_eE_]); + var counter$1=counter + 1 | 0; + return loop$0(counter$1,_eE_)} 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])}} + if(counter >= 50)return caml_trampoline_return(loop$0,[0,i$0]); + var counter$0=counter + 1 | 0; + return loop$0(counter$0,i$0)}} function loop(i){return caml_trampoline(loop$0(0,i))} loop(0); return contents(b)} @@ -28915,36 +28605,36 @@ {if(stderr) var f=stderr[1], - _ex_= + _ev_= caml_equal(stderr,stdout) ?cst_2_1$0 :cat(cst_2$0,quote_cmd_filename(f)), - _ey_=_ex_; + _ew_=_ev_; else - var _ey_=cst$125; - var _ez_=[0,_ey_,_cW_]; + var _ew_=cst$125; + var _ex_=[0,_ew_,_cU_]; if(stdout) - var f$0=stdout[1],_eA_=cat(cst$117,quote_cmd_filename(f$0)); + var f$0=stdout[1],_ey_=cat(cst$117,quote_cmd_filename(f$0)); else - var _eA_=cst$124; - var _eB_=[0,_eA_,_ez_]; + var _ey_=cst$124; + var _ez_=[0,_ey_,_ex_]; if(stdin) - var f$1=stdin[1],_eC_=cat(cst$118,quote_cmd_filename(f$1)); + var f$1=stdin[1],_eA_=cat(cst$118,quote_cmd_filename(f$1)); else - var _eC_=cst$123; + var _eA_=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_]; + _eB_=[0,_eA_,_ez_]; 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} + {var _eD_=c - 63 | 0; + if(60 < _eD_ >>> 0) + {if(62 > _eD_)switch$0 = 1} else - if(31 === _eF_)switch$0 = 1} + if(31 === _eD_)switch$0 = 1} else if(42 <= c) {if(60 === c)switch$0 = 1} @@ -28954,23 +28644,22 @@ {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_]])} + var _eC_=[0,cst$120,[0,contents(b),_eB_]]; + return concat$1(cst$122,[0,cst$121,[0,quote_cmd_filename(cmd),_eC_]])} function drive_and_path(s) - {var _et_=2 <= caml_ml_string_length(s)?1:0; - if(_et_) + {var _er_=2 <= caml_ml_string_length(s)?1:0; + if(_er_) {var param=caml_string_get(s,0),switch$0=0; if(91 <= param) - {if(! (25 < param - 97 >>> 0))switch$0 = 1} + {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_} + var _es_=switch$0?1:0,_et_=_es_?58 === caml_string_get(s,1)?1:0:_es_} 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]} + var _et_=_er_; + if(! _et_)return [0,cst$126,s]; + var _eu_=sub$0(s,2,caml_ml_string_length(s) - 2 | 0); + return [0,sub$0(s,0,2),_eu_]} function dirname$0(s) {var match=drive_and_path(s), @@ -28998,10 +28687,10 @@ 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_)} + function basename$1(_eq_) + {return generic_basename(is_dir_sep$0,current_dir_name$1,_eq_)} + function dirname$1(_ep_) + {return generic_dirname(is_dir_sep$0,current_dir_name$1,_ep_)} var Cygwin= [0, @@ -29014,7 +28703,7 @@ is_implicit$0, check_suffix$0, chop_suffix_opt$0, - _cV_, + _cT_, quote, quote_command, basename$1, @@ -29053,16 +28742,16 @@ {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} + {if(46 !== caml_string_get(name,i$1)) + {var i$3=i$1 - 1 | 0,i$1=i$3;continue} + 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)) + return caml_ml_string_length(name) - i$1 | 0; + var i$0=i - 1 | 0,i=i$0; + continue} + return 0}} return 0}} function extension(name) {var l=extension_len(name); @@ -29075,14 +28764,14 @@ 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)}]; + var prng$0=[246,function(_eo_){return caml_call1(_cg_[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))} + _em_=caml_obj_tag(prng$0), + _en_= + 250 === _em_?prng$0[1]:246 === _em_?force_lazy_block(prng$0):prng$0, + rnd=caml_call1(_cg_[4],_en_) & 16777215; + return concat$4(temp_dir,caml_call3(sprintf(_cV_),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]} @@ -29096,20 +28785,19 @@ for(;;) {var name=temp_file_name(temp_dir,prefix,suffix); try - {runtime.caml_sys_close(caml_sys_open(name,_cY_,384));return name} + {runtime.caml_sys_close(caml_sys_open(name,_cW_,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}}} + if(e[1] !== Sys_error)throw e; + if(1000 <= counter$0)throw e; + var counter$1=counter$0 + 1 | 0,counter$0=counter$1; + continue}}} 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; + function open_temp_file(opt,_ek_,_ej_,prefix,suffix) + {if(opt)var sth=opt[1],mode=sth;else var mode=_cX_; + if(_ek_)var sth$0=_ek_[1],perms=sth$0;else var perms=384; + if(_ej_) + var sth$1=_ej_[1],temp_dir=sth$1; else var temp_dir=current_temp_dir_name[1]; function try_name(counter) @@ -29117,15 +28805,14 @@ 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_} + {var _el_=[0,name,open_gen([0,1,[0,3,[0,5,mode]]],perms,name)]; + return _el_} 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}}} + if(e[1] !== Sys_error)throw e; + if(1000 <= counter$0)throw e; + var counter$1=counter$0 + 1 | 0,counter$0=counter$1; + continue}}} return try_name(0)} var Stdlib_Filename= @@ -29177,7 +28864,7 @@ 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_; + {if(x[1] == 0. && x[2] == 0.)return _cY_; var r=Math.abs(x[1]),i=Math.abs(x[2]); if(i <= r) var @@ -29193,7 +28880,7 @@ 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_]} + {var _ei_=Math.atan2(x[2],x[1]);return [254,Math.log(norm(x)),_ei_]} function pow(x,y){return exp(mul(y,log(x)))} var Stdlib_Complex= @@ -29528,29 +29215,28 @@ 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_; + var _eg_=caml_check_bound(max,col)[1 + col] - 1 | 0,_ef_=0; + if(_eg_ >= 0) + {var j=_ef_; 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} + var _eh_=j + 1 | 0; + if(_eg_ !== j){var j=_eh_;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))} + {if(0 > col)return caml_ba_set_generic(arr,idx,caml_call1(f,idx)); + var _ed_=caml_check_bound(max,col)[1 + col],_ec_=1; + if(_ed_ >= 1) + {var j=_ec_; + for(;;) + {caml_check_bound(idx,col)[1 + col] = j; + floop(arr,idx,f,col - 1 | 0,max); + var _ee_=j + 1 | 0; + if(_ed_ !== j){var j=_ee_;continue} + break}} + return 0} function init$6(kind,layout,dims,f) {var arr=caml_ba_create(kind,layout,dims),dlen=dims.length - 1; return 0 === dlen @@ -29559,24 +29245,24 @@ ?(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_; + {var n=caml_ba_num_dims(a),d=caml_make_vect(n,0),_d$_=n - 1 | 0,_d__=0; + if(_d$_ >= 0) + {var i=_d__; 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} + {var _ea_=runtime.caml_ba_dim(a,i); + caml_check_bound(d,i)[1 + i] = _ea_; + var _eb_=i + 1 | 0; + if(_d$_ !== i){var i=_eb_;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$_)} + {var _d9_=fold_left$3(caml_mul,1,dims(arr)); + return caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_d9_)} 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__)}} + {var _d7_=[0]; + return function(_d8_){return caml_ba_set_generic(arr,_d7_,_d8_)}} function size_in_bytes$0(arr) {return kind_size_in_bytes(caml_ba_kind(arr))} function of_value(kind,layout,v) @@ -29584,87 +29270,87 @@ 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_)} + {var _d6_=caml_ba_dim_1(arr); + return caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_d6_)} 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_; + {var _d4_=1; + if(dim >= 1) + {var i$0=_d4_; 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} + var _d5_=i$0 + 1 | 0; + if(dim !== i$0){var i$0=_d5_;continue} break}} return arr} - var _d4_=dim - 1 | 0,_d3_=0; - if(! (_d4_ < 0)) - {var i=_d3_; + var _d2_=dim - 1 | 0,_d1_=0; + if(_d2_ >= 0) + {var i=_d1_; for(;;) {caml_ba_set_1(arr,i,caml_call1(f,i)); - var _d5_=i + 1 | 0; - if(_d4_ !== i){var i=_d5_;continue} + var _d3_=i + 1 | 0; + if(_d2_ !== i){var i=_d3_;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_; + _dZ_=data.length - 1 - 1 | 0, + _dY_=0; + if(_dZ_ >= 0) + {var i=_dY_; 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} + var _d0_=i + 1 | 0; + if(_dZ_ !== i){var i=_d0_;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); + {var _dW_=caml_ba_dim_2(arr),_dX_=caml_ba_dim_1(arr); return caml_mul - (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dZ_),_dY_)} + (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dX_),_dW_)} 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_; + {var _dS_=1; + if(dim2 >= 1) + {var j$0=_dS_; for(;;) - {var _dV_=1; - if(! (dim1 < 1)) - {var i$0=_dV_; + {var _dT_=1; + if(dim1 >= 1) + {var i$0=_dT_; 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} + var _dV_=i$0 + 1 | 0; + if(dim1 !== i$0){var i$0=_dV_;continue} break}} - var _dW_=j$0 + 1 | 0; - if(dim2 !== j$0){var j$0=_dW_;continue} + var _dU_=j$0 + 1 | 0; + if(dim2 !== j$0){var j$0=_dU_;continue} break}} return arr} - var _dP_=dim1 - 1 | 0,_dO_=0; - if(! (_dP_ < 0)) - {var i=_dO_; + var _dN_=dim1 - 1 | 0,_dM_=0; + if(_dN_ >= 0) + {var i=_dM_; for(;;) - {var _dR_=dim2 - 1 | 0,_dQ_=0; - if(! (_dR_ < 0)) - {var j=_dQ_; + {var _dP_=dim2 - 1 | 0,_dO_=0; + if(_dP_ >= 0) + {var j=_dO_; 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} + var _dR_=j + 1 | 0; + if(_dP_ !== j){var j=_dR_;continue} break}} - var _dS_=i + 1 | 0; - if(_dP_ !== i){var i=_dS_;continue} + var _dQ_=i + 1 | 0; + if(_dN_ !== i){var i=_dQ_;continue} break}} return arr} function of_array$0(kind,layout,data) @@ -29673,38 +29359,38 @@ 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_; + _dH_=dim1 - 1 | 0, + _dG_=0; + if(_dH_ >= 0) + {var i=_dG_; 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_; + var _dJ_=dim2 - 1 | 0,_dI_=0; + if(_dJ_ >= 0) + {var j=_dI_; 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} + var _dL_=j + 1 | 0; + if(_dJ_ !== j){var j=_dL_;continue} break}} - var _dM_=i + 1 | 0; - if(_dJ_ !== i){var i=_dM_;continue} + var _dK_=i + 1 | 0; + if(_dH_ !== i){var i=_dK_;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); + _dD_=runtime.caml_ba_dim_3(arr), + _dE_=caml_ba_dim_2(arr), + _dF_=caml_ba_dim_1(arr); return caml_mul (caml_mul - (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dH_),_dG_), - _dF_)} + (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dF_),_dE_), + _dD_)} 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])} @@ -29712,50 +29398,50 @@ 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_; + {var _dx_=1; + if(dim3 >= 1) + {var k$0=_dx_; for(;;) - {var _dA_=1; - if(! (dim2 < 1)) - {var j$0=_dA_; + {var _dy_=1; + if(dim2 >= 1) + {var j$0=_dy_; for(;;) - {var _dC_=1; - if(! (dim1 < 1)) - {var i$0=_dC_; + {var _dA_=1; + if(dim1 >= 1) + {var i$0=_dA_; 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} + var _dC_=i$0 + 1 | 0; + if(dim1 !== i$0){var i$0=_dC_;continue} break}} - var _dD_=j$0 + 1 | 0; - if(dim2 !== j$0){var j$0=_dD_;continue} + var _dB_=j$0 + 1 | 0; + if(dim2 !== j$0){var j$0=_dB_;continue} break}} - var _dB_=k$0 + 1 | 0; - if(dim3 !== k$0){var k$0=_dB_;continue} + var _dz_=k$0 + 1 | 0; + if(dim3 !== k$0){var k$0=_dz_;continue} break}} return arr} - var _dr_=dim1 - 1 | 0,_dq_=0; - if(! (_dr_ < 0)) - {var i=_dq_; + var _dp_=dim1 - 1 | 0,_do_=0; + if(_dp_ >= 0) + {var i=_do_; for(;;) - {var _dt_=dim2 - 1 | 0,_ds_=0; - if(! (_dt_ < 0)) - {var j=_ds_; + {var _dr_=dim2 - 1 | 0,_dq_=0; + if(_dr_ >= 0) + {var j=_dq_; for(;;) - {var _dw_=dim3 - 1 | 0,_dv_=0; - if(! (_dw_ < 0)) - {var k=_dv_; + {var _du_=dim3 - 1 | 0,_dt_=0; + if(_du_ >= 0) + {var k=_dt_; 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} + var _dw_=k + 1 | 0; + if(_du_ !== k){var k=_dw_;continue} break}} - var _dx_=j + 1 | 0; - if(_dt_ !== j){var j=_dx_;continue} + var _dv_=j + 1 | 0; + if(_dr_ !== j){var j=_dv_;continue} break}} - var _du_=i + 1 | 0; - if(_dr_ !== i){var i=_du_;continue} + var _ds_=i + 1 | 0; + if(_dp_ !== i){var i=_ds_;continue} break}} return arr} function of_array$1(kind,layout,data) @@ -29768,24 +29454,24 @@ :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_; + _dg_=dim1 - 1 | 0, + _df_=0; + if(_dg_ >= 0) + {var i=_df_; 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_; + var _di_=dim2 - 1 | 0,_dh_=0; + if(_di_ >= 0) + {var j=_dh_; 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_; + var _dl_=dim3 - 1 | 0,_dk_=0; + if(_dl_ >= 0) + {var k=_dk_; for(;;) {caml_ba_set_3 (ba, @@ -29793,14 +29479,14 @@ 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} + var _dn_=k + 1 | 0; + if(_dl_ !== k){var k=_dn_;continue} break}} - var _do_=j + 1 | 0; - if(_dk_ !== j){var j=_do_;continue} + var _dm_=j + 1 | 0; + if(_di_ !== j){var j=_dm_;continue} break}} - var _dl_=i + 1 | 0; - if(_di_ !== i){var i=_dl_;continue} + var _dj_=i + 1 | 0; + if(_dg_ !== i){var i=_dj_;continue} break}} return ba} function array0_of_genarray(a) @@ -29889,52 +29575,52 @@ 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 _de_(param){return caml_call1(f,ic)} + return protect(function(param){return close_noerr$0(ic)},_de_)} 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)} + {return with_open(function(_dd_){return open_gen$0(flags,perm,_dd_)},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) + return [0,c]} + function input_byte$0(ic) {try - {really_input(ic,buf,pos,len);return _c1_} + {var n=caml_ml_input_char(ic)} catch(_db_) {_db_ = caml_wrap_exception(_db_); if(_db_ === End_of_file)return 0; - throw _db_}} - function really_input_string$0(ic,len) + throw _db_} + return [0,n]} + function input_line$0(ic) {try - {var s=really_input_string(ic,len)} + {var s=input_line(ic)} catch(_da_) {_da_ = caml_wrap_exception(_da_); if(_da_ === End_of_file)return 0; throw _da_} return [0,s]} + function really_input$0(ic,buf,pos,len) + {try + {really_input(ic,buf,pos,len);return _cZ_} + catch(_c$_) + {_c$_ = caml_wrap_exception(_c$_); + if(_c$_ === End_of_file)return 0; + throw _c$_}} + function really_input_string$0(ic,len) + {try + {var s=really_input_string(ic,len)} + catch(_c__) + {_c__ = caml_wrap_exception(_c__); + if(_c__ === End_of_file)return 0; + throw _c__} + return [0,s]} function read_upto(ic,buf,ofs,len) {var ofs$0=ofs,len$0=len; for(;;) @@ -29970,12 +29656,12 @@ {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$_; + _c6_=caml_ml_pos_in(ic), + _c7_=caml_ml_channel_size(ic) - _c6_ | 0, + initial_size=_c7_} + catch(_c9_) + {_c9_ = caml_wrap_exception(_c9_); + if(_c9_[1] !== Sys_error)throw _c9_; var initial_size=-1} var initial_size$0=0 <= initial_size?initial_size:chunk_size, @@ -29986,10 +29672,10 @@ 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__} + catch(_c8_) + {_c8_ = caml_wrap_exception(_c8_); + if(_c8_ === End_of_file)return caml_string_of_bytes(buf); + throw _c8_} function loop(buf,ofs) {var buf$0=buf,ofs$0=ofs; for(;;) @@ -29998,8 +29684,7 @@ 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 ofs$1=ofs$0 + rem | 0,buf$0=buf$1,ofs$0=ofs$1}} var buf$0=ensure(buf,nread,65537); caml_bytes_set(buf$0,nread,c); return loop(buf$0,nread + 1 | 0)} @@ -30029,12 +29714,12 @@ 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 _c5_(param){return caml_call1(f,oc)} + return protect(function(param){return close_noerr(oc)},_c5_)} 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)} + {return with_open$0(function(_c4_){return open_gen(flags,perm,_c4_)},s,f)} var seek$0=_m_[1], pos$0=_m_[2], @@ -30071,7 +29756,9 @@ //# 1 "../../.js/dates_calc/dates_calc.cma.js" -(function(globalThis) +// Generated by js_of_ocaml +(function + (globalThis) {"use strict"; var runtime=globalThis.jsoo_runtime, @@ -30180,7 +29867,7 @@ {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(1 <= new_month && 12 >= new_month)return [0,year$0,new_month]; if(12 < new_month) {var months$1=months$0 - 12 | 0, @@ -30192,8 +29879,7 @@ months$2=months$0 + 12 | 0, year$2=year$0 - 1 | 0, year$0=year$2, - months$0=months$2; - continue}} + months$0=months$2}} function add_dates(opt,d) {if(opt)var sth=opt[1],round=sth;else var round=2; return function(p) @@ -30211,7 +29897,7 @@ 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(1 <= new_date[3] && 31 >= new_date[3]) if(is_valid_date(new_date)) {var _p_=new_date;switch$1 = 1} else @@ -30231,7 +29917,7 @@ 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(1 <= new_date[3] && 31 >= new_date[3]) if(is_valid_date(new_date)) {var _p_=new_date;switch$3 = 1} else @@ -30275,8 +29961,7 @@ new_month$2, days_in_month(new_month$2,is_leap_year(new_year$2))], d$0=d$2, - days=days$1; - continue}}} + days=days$1}}} 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]) @@ -30289,26 +29974,24 @@ {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_]} + {if(! is_valid_date(d))throw [0,Assert_failure,_h_]; + var _l_=is_leap_year(d[1]),days_month=days_in_month(d[2],_l_); + return make_date(d[1],d[2],days_month)} 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))} + if(0 > cmp)return neg_period(sub_dates(d2,d1)); + 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_)} 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 @@ -30339,7 +30022,9 @@ //# 1 "../../.js/zarith/zarith.cma.js" -(function(globalThis) +// Generated by js_of_ocaml +(function + (globalThis) {"use strict"; var runtime=globalThis.jsoo_runtime, @@ -30550,12 +30235,12 @@ _fS_=runtime.ml_z_sign(_fR_), _fT_=runtime.ml_z_sign(_fQ_), _fU_=_fS_ + 1 | 0; - if(! (2 < _fU_ >>> 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)) + if(2 >= _fY_ >>> 0) switch(_fY_) {case 0:return [0,_b_(_fQ_),_t_,_v_]; case 1:return [0,_t_,_t_,_t_]; @@ -30601,11 +30286,10 @@ 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_))} + if(63 >= _fy_)return caml_int64_to_float(runtime.ml_z_to_int64(_fx_)); + var _fz_=_fy_ - 55 | 0,_fA_=_q_(_fx_,_fz_); + return caml_ldexp_float + (_R_(_fA_,runtime.ml_z_equal(_fx_,_p_(_fA_,_fz_))),_fz_)} 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_)} @@ -30728,12 +30412,11 @@ _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} + {if(_eW_[2] !== 0)return _eW_[1] === 0?0:4; + 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} function _ap_(_eV_){return _eV_[2] !== 0?1:0} function _aq_(_eU_){return _eU_[1]} function _ar_(_eT_){return _eT_[2]} @@ -30752,7 +30435,7 @@ switch(_eI_) {case 1: var _eM_=_eJ_ - 1 | 0; - if(! (2 < _eM_ >>> 0)) + if(2 >= _eM_ >>> 0) switch(_eM_) {case 0:switch$0 = 2;break;case 1:break;default:switch$0 = 1} break; @@ -30770,7 +30453,7 @@ switch(switch$0) {case 1: var _eK_=_eJ_ - 1 | 0; - if(! (2 < _eK_ >>> 0)) + if(2 >= _eK_ >>> 0) switch(_eK_) {case 0:switch$1 = 1;break;case 1:break;default:return 1} break; @@ -30778,7 +30461,7 @@ default:return 0} if(! switch$1) {var switch$2=0; - if(! (4 <= _eI_)) + if(4 > _eI_) switch(_eI_) {case 0:break;case 2:switch$2 = 1;break;default:switch$2 = 2} var switch$3=0; @@ -30801,14 +30484,14 @@ {var _ey_=_ao_(_ex_),_ez_=_ao_(_ew_); if(3 !== _ey_) {var _eA_=_ez_ - 1 | 0,switch$0=0; - if(! (2 < _eA_ >>> 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_)) + if(4 > _ey_) switch(_ey_) {case 0:break; case 2:switch$1 = 1;switch$2 = 2;break; @@ -30840,7 +30523,7 @@ switch(switch$0) {case 0: var switch$2=0; - if(! (4 <= _et_)) + if(4 > _et_) switch(_et_) {case 0:break; case 1:switch$1 = 1;switch$2 = 2;break; @@ -30893,7 +30576,7 @@ _d1_=_dZ_[2], _d2_=runtime.ml_z_numbits(_d0_), _d3_=runtime.ml_z_numbits(_d1_); - if(! (53 < _d2_) && ! (53 < _d3_)) + 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; @@ -30906,14 +30589,13 @@ 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)}} + if(-1080 >= _d9_)return caml_ldexp_float(_d4_,-1080); + 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)}} 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_) @@ -30954,7 +30636,7 @@ default:switch$1 = 3} var switch$2=0; switch(switch$1) - {case 0:if(! (3 <= _dN_))switch$2 = 1;break; + {case 0:if(3 > _dN_)switch$2 = 1;break; case 1:break; case 2:switch$2 = 1;break; default:return _al_} @@ -30992,7 +30674,7 @@ default:switch$1 = 3} var switch$2=0; switch(switch$1) - {case 0:if(! (3 <= _dJ_))switch$2 = 1;break; + {case 0:if(3 > _dJ_)switch$2 = 1;break; case 1:break; case 2:switch$2 = 1;break; default:return _al_} @@ -31004,7 +30686,7 @@ 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)) + if(2 >= _dB_ >>> 0) switch(_dB_) {case 0:var _dC_=_b_(_dA_[1]);return [0,_b_(_dA_[2]),_dC_]; case 1:break; @@ -31031,175 +30713,170 @@ for(;;) {if(_dm_ <= _dp_)return 0; if(caml_call1(_dl_,caml_string_get(_do_,_dp_)))return [0,_dp_]; - var _dp_=_dp_ + 1 | 0; - continue}} + var _dp_=_dp_ + 1 | 0}} 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_]; + {if(! caml_string_notequal(_cy_,cst$0))return _ah_; + 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))return _am_; + 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])throw _df_; + 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 - {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; + 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(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; + if(95 === _c5_){var _c6_=_c3_;switch$4 = 2}} + else + if(58 <= _c5_) + {if(65 <= _c5_)switch$4 = 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_} + 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_}}} + return _ak_} function _aW_(_cw_) {var _cx_=_aB_(_cw_);return caml_call1(Stdlib[42],_cx_)} function _aX_(_cu_,_ct_) @@ -31404,7 +31081,9 @@ //# 1 "../../.js/zarith_stubs_js/zarith_stubs_js.cma.js" -(function(globalThis) +// Generated by js_of_ocaml +(function + (globalThis) {"use strict"; var runtime=globalThis.jsoo_runtime,Zarith_stubs_js=[0]; runtime.caml_register_global(0,Zarith_stubs_js,"Zarith_stubs_js"); @@ -31412,2522 +31091,10 @@ (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) +// Generated by js_of_ocaml +(function + (globalThis) {"use strict"; var runtime=globalThis.jsoo_runtime, @@ -33939,12 +31106,12 @@ caml_equal=runtime.caml_equal, caml_float_of_string=runtime.caml_float_of_string, caml_fresh_oo_id=runtime.caml_fresh_oo_id, + caml_get_public_method=runtime.caml_get_public_method, 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, @@ -33968,39 +31135,13 @@ :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$10=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$77=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"), @@ -34079,9 +31220,9 @@ 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_Infinity$15=caml_string_of_jsbytes("-Infinity"), + cst_Infinity$16=caml_string_of_jsbytes("Infinity"), + cst_NaN$7=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"), @@ -34184,7 +31325,7 @@ 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$78=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"), @@ -34200,7 +31341,7 @@ 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$79=caml_string_of_jsbytes("/*"), cst_Expected_or_but_found$42= caml_string_of_jsbytes("Expected ',' or '}' but found"), cst_Unexpected_end_of_input$135= @@ -34221,7 +31362,7 @@ 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$80=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"), @@ -34230,22 +31371,37 @@ 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_null$8=caml_string_of_jsbytes("null"), + cst$70=caml_string_of_jsbytes(","), + cst$71=caml_string_of_jsbytes("{}"), + 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$76=caml_string_of_jsbytes(","), + cst$69=caml_string_of_jsbytes("\n"), + cst$68=caml_string_of_jsbytes("\n"), + cst$67=caml_string_of_jsbytes("\n"), + cst$66=caml_string_of_jsbytes("\n"), + cst$65=caml_string_of_jsbytes("\n"), + cst$64=caml_string_of_jsbytes(""), + cst$63=caml_string_of_jsbytes(""), + cst$62=caml_string_of_jsbytes(""), + cst$61=caml_string_of_jsbytes(""), + cst_true$2=caml_string_of_jsbytes("true"), + cst_false$2=caml_string_of_jsbytes("false"), + cst_null$7=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$60=caml_string_of_jsbytes('\\"'), + cst$59=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$55=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"), @@ -34324,9 +31480,9 @@ 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_Infinity$13=caml_string_of_jsbytes("-Infinity"), + cst_Infinity$14=caml_string_of_jsbytes("Infinity"), + cst_NaN$6=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"), @@ -34429,7 +31585,7 @@ 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$56=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"), @@ -34445,7 +31601,7 @@ 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$57=caml_string_of_jsbytes("/*"), cst_Expected_or_but_found$26= caml_string_of_jsbytes("Expected ',' or '}' but found"), cst_Unexpected_end_of_input$87= @@ -34466,7 +31622,7 @@ 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$58=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"), @@ -34497,7 +31653,7 @@ 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_null$6=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"), @@ -34514,50 +31670,54 @@ 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= + cst_null$5=caml_string_of_jsbytes("null"), + cst$50=caml_string_of_jsbytes(","), + cst$51=caml_string_of_jsbytes("{}"), + cst$52=caml_string_of_jsbytes(","), + cst$53=caml_string_of_jsbytes(","), + cst$54=caml_string_of_jsbytes("[]"), + cst$48=caml_string_of_jsbytes("()"), + cst$49=caml_string_of_jsbytes(","), + cst$47=caml_string_of_jsbytes("\n"), + cst$46=caml_string_of_jsbytes("\n"), + cst$45=caml_string_of_jsbytes("\n"), + cst$44=caml_string_of_jsbytes("\n"), + cst$43=caml_string_of_jsbytes("\n"), + cst$42=caml_string_of_jsbytes(""), + cst$41=caml_string_of_jsbytes(""), + cst$40=caml_string_of_jsbytes(""), + cst$39=caml_string_of_jsbytes(""), + cst_NaN_value_not_allowed_in_s$4= caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$15= + cst_Infinity_value_not_allowed$9= caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$16= + cst_Infinity_value_not_allowed$10= caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - cst_NaN_value_not_allowed_in_s$6= + cst_NaN_value_not_allowed_in_s$3= 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= + cst_0$7=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$14= + cst_Infinity_value_not_allowed$8= 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_NaN$5=caml_string_of_jsbytes("NaN"), + cst_Infinity$11=caml_string_of_jsbytes("Infinity"), + cst_Infinity$12=caml_string_of_jsbytes("-Infinity"), + cst_0$6=caml_string_of_jsbytes(".0"), + cst_NaN$4=caml_string_of_jsbytes("NaN"), + cst_0$5=caml_string_of_jsbytes(".0"), + cst_Infinity$9=caml_string_of_jsbytes("Infinity"), + cst_Infinity$10=caml_string_of_jsbytes("-Infinity"), + cst_true$1=caml_string_of_jsbytes("true"), + cst_false$1=caml_string_of_jsbytes("false"), + cst_null$4=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$38=caml_string_of_jsbytes('\\"'), + cst$37=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"), @@ -34636,9 +31796,9 @@ 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_Infinity$7=caml_string_of_jsbytes("-Infinity"), + cst_Infinity$8=caml_string_of_jsbytes("Infinity"), + cst_NaN$3=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"), @@ -34739,7 +31899,7 @@ 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$34=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"), @@ -34751,7 +31911,7 @@ 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$35=caml_string_of_jsbytes("/*"), cst_Expected_or_but_found$11= caml_string_of_jsbytes("Expected ',' or '}' but found"), cst_Unexpected_end_of_input$41= @@ -34764,7 +31924,7 @@ 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$36=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"), @@ -34795,7 +31955,7 @@ 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_null$3=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"), @@ -34814,105 +31974,87 @@ 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_null$2=caml_string_of_jsbytes("null"), + cst$29=caml_string_of_jsbytes(","), + 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$28=caml_string_of_jsbytes("\n"), + cst$27=caml_string_of_jsbytes("\n"), + cst$26=caml_string_of_jsbytes("\n"), + cst$25=caml_string_of_jsbytes("\n"), + cst$24=caml_string_of_jsbytes("\n"), + cst$23=caml_string_of_jsbytes(""), + cst$22=caml_string_of_jsbytes(""), + cst$21=caml_string_of_jsbytes(""), + cst$20=caml_string_of_jsbytes(""), 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_NaN_value_not_allowed_in_s$1= + caml_string_of_jsbytes("NaN value not allowed in standard JSON"), cst_0$4=caml_string_of_jsbytes(".0"), + 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$2=caml_string_of_jsbytes("NaN"), 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_0$3=caml_string_of_jsbytes(".0"), + cst_NaN$1=caml_string_of_jsbytes("NaN"), + cst_0$2=caml_string_of_jsbytes(".0"), + cst_Infinity$3=caml_string_of_jsbytes("Infinity"), + cst_Infinity$4=caml_string_of_jsbytes("-Infinity"), + cst_true$0=caml_string_of_jsbytes("true"), + cst_false$0=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$19=caml_string_of_jsbytes('\\"'), + cst$18=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$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$9=caml_string_of_jsbytes("\n"), + cst$8=caml_string_of_jsbytes("\n"), + cst$7=caml_string_of_jsbytes("\n"), + cst$6=caml_string_of_jsbytes("\n"), + cst$5=caml_string_of_jsbytes("\n"), + cst$4=caml_string_of_jsbytes(""), + cst$3=caml_string_of_jsbytes(""), + cst$2=caml_string_of_jsbytes(""), + cst$1=caml_string_of_jsbytes(""), 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_0$1=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_0$0=caml_string_of_jsbytes(".0"), cst_NaN=caml_string_of_jsbytes("NaN"), cst_0=caml_string_of_jsbytes(".0"), cst_Infinity=caml_string_of_jsbytes("Infinity"), @@ -34928,7 +32070,7 @@ 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"), + version=caml_string_of_jsbytes("2.0.2"), 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"), @@ -35005,46 +32147,41 @@ 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_Buffer=global_data.Stdlib__Buffer, 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_Seq=global_data.Stdlib__Seq, Stdlib_Char=global_data.Stdlib__Char, Stdlib_Lexing=global_data.Stdlib__Lexing, - _a_=[0,951901561,0], - _b_=[0,848054398,0], - _c_=[0,848054398,0], - ___= + Json_error=[248,cst_Yojson_Json_error,caml_fresh_oo_id(0)], + _V_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _S_= + _N_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _G_= + _B_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _H_= + _C_= [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_= + _D_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _E_= [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_= + _F_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _z_= [0, [11, caml_string_of_jsbytes("`Assoc ("), @@ -35055,7 +32192,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Assoc (@[")], - _F_= + _A_= [0, [18, [1, @@ -35064,12 +32201,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _L_= + _G_= [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_= + _H_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _I_= [0, [11, caml_string_of_jsbytes("`Floatlit ("), @@ -35080,34 +32217,34 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Floatlit (@[")], - _O_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _J_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _K_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _L_= + [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 (@[")], + _M_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _O_= + [0, + [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], + caml_string_of_jsbytes("@,]@]")], _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 ("), @@ -35118,9 +32255,9 @@ 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_= + _R_=[0,[9,0,0],caml_string_of_jsbytes("%B")], + _S_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _T_= [0, [11, caml_string_of_jsbytes("`Tuple ("), @@ -35131,7 +32268,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Tuple (@[")], - _Z_= + _U_= [0, [18, [1, @@ -35140,12 +32277,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _$_= + _W_= [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_= + _X_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _Y_= [0, [11, caml_string_of_jsbytes("`Variant ("), @@ -35156,18 +32293,18 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Variant (@[")], - _ac_= + _Z_= [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,[3,0,0],caml_string_of_jsbytes("%S")], + _$_= [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_= + _aa_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ab_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _af_= [0, [11, caml_string_of_jsbytes("`Float ("), @@ -35178,9 +32315,9 @@ 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_= + _ag_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")], + _ah_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ai_= [0, [11, caml_string_of_jsbytes("`Int ("), @@ -35191,9 +32328,9 @@ 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_= + _aj_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _ak_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _al_= [0, [11, caml_string_of_jsbytes("`Stringlit ("), @@ -35204,9 +32341,9 @@ 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_= + _am_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _an_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ao_= [0, [11, caml_string_of_jsbytes("`String ("), @@ -35217,9 +32354,9 @@ 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_= + _ap_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _aq_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ac_= [0, [11, caml_string_of_jsbytes("`Intlit ("), @@ -35230,31 +32367,31 @@ 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_= + _ad_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _ae_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _d2_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _c8_= + _dU_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _cW_= + _dI_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _cX_= + _dJ_= [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_= + _dK_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _dL_= [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_= + _dM_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dG_= [0, [11, caml_string_of_jsbytes("`Assoc ("), @@ -35265,7 +32402,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Assoc (@[")], - _cV_= + _dH_= [0, [18, [1, @@ -35274,12 +32411,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _c1_= + _dN_= [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_= + _dO_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dP_= [0, [11, caml_string_of_jsbytes("`Floatlit ("), @@ -35290,9 +32427,9 @@ 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_= + _dQ_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _dR_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dS_= [0, [11, caml_string_of_jsbytes("`List ("), @@ -35303,7 +32440,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`List (@[")], - _c7_= + _dT_= [0, [18, [1, @@ -35312,12 +32449,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _c9_= + _dV_= [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$_= + _dW_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dX_= [0, [11, caml_string_of_jsbytes("`Bool ("), @@ -35328,9 +32465,9 @@ 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_= + _dY_=[0,[9,0,0],caml_string_of_jsbytes("%B")], + _dZ_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _d0_= [0, [11, caml_string_of_jsbytes("`Tuple ("), @@ -35341,7 +32478,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Tuple (@[")], - _dd_= + _d1_= [0, [18, [1, @@ -35350,12 +32487,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _df_= + _d3_= [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_= + _d4_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _d5_= [0, [11, caml_string_of_jsbytes("`Variant ("), @@ -35366,18 +32503,18 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Variant (@[")], - _di_= + _d6_= [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_= + _d7_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _d8_= [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_= + _d9_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _d__=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _d$_= [0, [11, caml_string_of_jsbytes("`Stringlit ("), @@ -35388,9 +32525,9 @@ 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_= + _ea_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _eb_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ec_= [0, [11, caml_string_of_jsbytes("`Intlit ("), @@ -35401,37 +32538,37 @@ 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_= + _ed_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _ee_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _eq_=[0,737456202,1], + _er_=[0,737456202,0], + _es_=[0,928231259,caml_string_of_jsbytes("NaN")], + _et_=[0,928231259,caml_string_of_jsbytes("Infinity")], + _eu_=[0,928231259,caml_string_of_jsbytes("-Infinity")], + _en_= [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_= + _em_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], + _el_= [0, [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], caml_string_of_jsbytes("%s '%s'")], - _dv_= + _eh_= [0, [11, caml_string_of_jsbytes("File "), [2,0,[11,caml_string_of_jsbytes(", line"),0]]], caml_string_of_jsbytes("File %s, line")], - _dw_= + _ei_= [0, [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], caml_string_of_jsbytes("byte %i")], - _dy_= + _ek_= [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_= + _ej_= [0, [2, 0, @@ -35445,9 +32582,119 @@ 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_= + _eg_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13], + _ef_=[0,[15,0],caml_string_of_jsbytes("%a")], + _dq_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _dr_= + [0, + [12, + 123, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [15,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,125,0]]]]], + caml_string_of_jsbytes("{@;<1 0>%a@;<1 -2>}")], + _ds_=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _dt_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _du_= + [0, + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15, + [17,0,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,0]]]]]]], + caml_string_of_jsbytes("[@;<1 0>@[%a@]@;<1 -2>]")], + _dw_= + [0, + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15, + [17,0,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,0]]]]]]], + caml_string_of_jsbytes("[@;<1 0>@[%a@]@;<1 -2>]")], + _dv_=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _dx_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _dy_= + [0, + [12, + 40, + [17, + [0,caml_string_of_jsbytes("@,"),0,0], + [15,[17,[0,caml_string_of_jsbytes("@;<0 -2>"),0,-2],[12,41,0]]]]], + caml_string_of_jsbytes("(@,%a@;<0 -2>)")], + _dz_=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _dA_= + [0, + [12, + 60, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [2,0,[11,caml_string_of_jsbytes(": "),[15,[17,0,[12,62,0]]]]]]], + caml_string_of_jsbytes("<@[%s: %a@]>")], + _dB_=[0,[12,60,[2,0,[12,62,0]]],caml_string_of_jsbytes("<%s>")], + _dC_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [2,0,[11,caml_string_of_jsbytes(": "),[15,[17,0,0]]]]], + caml_string_of_jsbytes("@[%s: %a@]")], + _dF_=[0,[15,[17,2,0]],caml_string_of_jsbytes("%a@?")], + _dE_=[0,[15,0],caml_string_of_jsbytes("%a")], + _dD_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15,[17,0,0]]], + caml_string_of_jsbytes("@[%a@]")], + _dp_= + [0, + [2,0,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes("%s@ ")], + _dm_= [0, [11, caml_string_of_jsbytes("src="), @@ -35461,29 +32708,29 @@ 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_= + _cz_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _cg_= + _cN_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _b9_= + _cE_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _b__= + _cF_= [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_= + _cG_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _cH_= [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_= + _cI_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cC_= [0, [11, caml_string_of_jsbytes("`Assoc ("), @@ -35494,7 +32741,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Assoc (@[")], - _b8_= + _cD_= [0, [18, [1, @@ -35503,12 +32750,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _cc_= + _cJ_= [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_= + _cK_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cL_= [0, [11, caml_string_of_jsbytes("`List ("), @@ -35519,7 +32766,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`List (@[")], - _cf_= + _cM_= [0, [18, [1, @@ -35528,12 +32775,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _ch_= + _cO_= [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_= + _cP_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cQ_= [0, [11, caml_string_of_jsbytes("`Bool ("), @@ -35544,9 +32791,9 @@ 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_= + _cR_=[0,[9,0,0],caml_string_of_jsbytes("%B")], + _cS_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cT_= [0, [11, caml_string_of_jsbytes("`Variant ("), @@ -35557,18 +32804,18 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Variant (@[")], - _cn_= + _cU_= [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_= + _cV_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _cW_= [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_= + _cX_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cY_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cx_= [0, [11, caml_string_of_jsbytes("`Tuple ("), @@ -35579,7 +32826,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Tuple (@[")], - _b3_= + _cy_= [0, [18, [1, @@ -35588,12 +32835,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _b5_= + _cA_= [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_= + _cB_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cZ_= [0, [11, caml_string_of_jsbytes("`Float ("), @@ -35604,9 +32851,9 @@ 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_= + _c0_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")], + _c1_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _c2_= [0, [11, caml_string_of_jsbytes("`Int ("), @@ -35617,9 +32864,9 @@ 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_= + _c3_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _c4_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _c5_= [0, [11, caml_string_of_jsbytes("`Intlit ("), @@ -35630,9 +32877,9 @@ 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_= + _c6_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _c7_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _c8_= [0, [11, caml_string_of_jsbytes("`String ("), @@ -35643,34 +32890,34 @@ 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_= + _c9_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _c__=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dk_=[0,737456202,1], + _dl_=[0,737456202,0], + _dh_= [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_= + _dg_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], + _df_= [0, [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], caml_string_of_jsbytes("%s '%s'")], - _cG_= + _db_= [0, [11, caml_string_of_jsbytes("File "), [2,0,[11,caml_string_of_jsbytes(", line"),0]]], caml_string_of_jsbytes("File %s, line")], - _cH_= + _dc_= [0, [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], caml_string_of_jsbytes("byte %i")], - _cJ_= + _de_= [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_= + _dd_= [0, [2, 0, @@ -35684,32 +32931,140 @@ 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")], + _da_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13], + _c$_=[0,[15,0],caml_string_of_jsbytes("%a")], + _ck_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _cl_= + [0, + [12, + 123, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [15,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,125,0]]]]], + caml_string_of_jsbytes("{@;<1 0>%a@;<1 -2>}")], + _cm_=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _cn_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _co_= + [0, + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15, + [17,0,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,0]]]]]]], + caml_string_of_jsbytes("[@;<1 0>@[%a@]@;<1 -2>]")], + _cq_= + [0, + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15, + [17,0,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,0]]]]]]], + caml_string_of_jsbytes("[@;<1 0>@[%a@]@;<1 -2>]")], + _cp_=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _cr_= + [0, + [12, + 60, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [2,0,[11,caml_string_of_jsbytes(": "),[15,[17,0,[12,62,0]]]]]]], + caml_string_of_jsbytes("<@[%s: %a@]>")], + _cs_=[0,[12,60,[2,0,[12,62,0]]],caml_string_of_jsbytes("<%s>")], + _ch_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _ci_= + [0, + [12, + 40, + [17, + [0,caml_string_of_jsbytes("@,"),0,0], + [15,[17,[0,caml_string_of_jsbytes("@;<0 -2>"),0,-2],[12,41,0]]]]], + caml_string_of_jsbytes("(@,%a@;<0 -2>)")], + _cj_=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _ct_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [2,0,[11,caml_string_of_jsbytes(": "),[15,[17,0,0]]]]], + caml_string_of_jsbytes("@[%s: %a@]")], + _cw_=[0,[15,[17,2,0]],caml_string_of_jsbytes("%a@?")], + _cv_=[0,[15,0],caml_string_of_jsbytes("%a")], + _cu_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15,[17,0,0]]], + caml_string_of_jsbytes("@[%a@]")], + _cg_= + [0, + [2,0,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes("%s@ ")], + _ce_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _cf_=[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_= + _b0_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")], + _b1_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")], + _b2_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")], + _b3_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")], + _b4_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")], + _b5_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")], + _b6_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")], + _b7_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")], + _b8_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")], + _b9_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")], + _b__=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")], + _b$_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")], + _ca_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")], + _cb_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")], + _cc_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")], + _cd_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _bX_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _bY_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _bU_= [0, [11, caml_string_of_jsbytes("src="), @@ -35723,25 +33078,25 @@ 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_= + _bs_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _a3_= + _bj_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _a4_= + _bk_= [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_= + _bl_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _bm_= [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_= + _bn_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bh_= [0, [11, caml_string_of_jsbytes("`Assoc ("), @@ -35752,7 +33107,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Assoc (@[")], - _a2_= + _bi_= [0, [18, [1, @@ -35761,12 +33116,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _a8_= + _bo_= [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__= + _bp_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bq_= [0, [11, caml_string_of_jsbytes("`List ("), @@ -35777,176 +33132,361 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`List (@[")], + _br_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _bt_= + [0, + [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], + caml_string_of_jsbytes("@,]@]")], + _bu_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bv_= + [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 (@[")], + _bw_=[0,[9,0,0],caml_string_of_jsbytes("%B")], + _bx_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _by_= + [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 (@[")], + _bz_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")], + _bA_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bB_= + [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 (@[")], + _bC_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _bD_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bE_= + [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 (@[")], + _bF_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _bG_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bS_=[0,737456202,1], + _bT_=[0,737456202,0], + _bP_= + [0, + [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[2,0,[12,39,0]]]]], + caml_string_of_jsbytes("%s '%s%s'")], + _bO_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], + _bN_= + [0, + [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], + caml_string_of_jsbytes("%s '%s'")], + _bJ_= + [0, + [11, + caml_string_of_jsbytes("File "), + [2,0,[11,caml_string_of_jsbytes(", line"),0]]], + caml_string_of_jsbytes("File %s, line")], + _bK_= + [0, + [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], + caml_string_of_jsbytes("byte %i")], + _bM_= + [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")], + _bL_= + [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")], + _bI_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13], + _bH_=[0,[15,0],caml_string_of_jsbytes("%a")], + _a8_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _a9_= + [0, + [12, + 123, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [15,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,125,0]]]]], + caml_string_of_jsbytes("{@;<1 0>%a@;<1 -2>}")], + _a__=[0,[17,0,0],caml_string_of_jsbytes("@]")], _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_= + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _ba_= [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("@])")], + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15, + [17,0,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,0]]]]]]], + caml_string_of_jsbytes("[@;<1 0>@[%a@]@;<1 -2>]")], + _bc_= + [0, + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15, + [17,0,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,0]]]]]]], + caml_string_of_jsbytes("[@;<1 0>@[%a@]@;<1 -2>]")], + _bb_=[0,[17,0,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_= + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [2,0,[11,caml_string_of_jsbytes(": "),[15,[17,0,0]]]]], + caml_string_of_jsbytes("@[%s: %a@]")], + _bg_=[0,[15,[17,2,0]],caml_string_of_jsbytes("%a@?")], + _bf_=[0,[15,0],caml_string_of_jsbytes("%a")], + _be_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15,[17,0,0]]], + caml_string_of_jsbytes("@[%a@]")], + _a7_= + [0, + [2,0,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes("%s@ ")], + _a5_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _a6_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _aO_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _aP_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")], + _aQ_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")], + _aR_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")], + _aS_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")], + _aT_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")], + _aU_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")], + _aV_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")], + _aW_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")], + _aX_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")], + _aY_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")], + _aZ_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")], + _a0_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")], + _a1_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")], + _a2_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")], + _a3_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")], + _a4_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _aM_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _aN_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _aJ_= [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_= + 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%!")], + _at_= [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_= + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _au_= [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_= + [12, + 123, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [15,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,125,0]]]]], + caml_string_of_jsbytes("{@;<1 0>%a@;<1 -2>}")], + _av_=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _aw_= [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_= + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _ax_= [0, - [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], - caml_string_of_jsbytes("%s '%s'")], - _br_= + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15, + [17,0,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,0]]]]]]], + caml_string_of_jsbytes("[@;<1 0>@[%a@]@;<1 -2>]")], + _az_= [0, - [11, - caml_string_of_jsbytes("File "), - [2,0,[11,caml_string_of_jsbytes(", line"),0]]], - caml_string_of_jsbytes("File %s, line")], - _bs_= + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15, + [17,0,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,0]]]]]]], + caml_string_of_jsbytes("[@;<1 0>@[%a@]@;<1 -2>]")], + _ay_=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _aA_= [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")], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], _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_= + [12, + 40, + [17, + [0,caml_string_of_jsbytes("@,"),0,0], + [15,[17,[0,caml_string_of_jsbytes("@;<0 -2>"),0,-2],[12,41,0]]]]], + caml_string_of_jsbytes("(@,%a@;<0 -2>)")], + _aC_=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _aD_= + [0, + [12, + 60, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [2,0,[11,caml_string_of_jsbytes(": "),[15,[17,0,[12,62,0]]]]]]], + caml_string_of_jsbytes("<@[%s: %a@]>")], + _aE_=[0,[12,60,[2,0,[12,62,0]]],caml_string_of_jsbytes("<%s>")], + _aF_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [2,0,[11,caml_string_of_jsbytes(": "),[15,[17,0,0]]]]], + caml_string_of_jsbytes("@[%s: %a@]")], + _aI_=[0,[15,[17,2,0]],caml_string_of_jsbytes("%a@?")], + _aH_=[0,[15,0],caml_string_of_jsbytes("%a")], + _aG_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15,[17,0,0]]], + caml_string_of_jsbytes("@[%a@]")], + _as_= + [0, + [2,0,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes("%s@ ")], + _ar_=[0,[15,0],caml_string_of_jsbytes("%a")], + _x_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _y_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _g_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _h_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")], + _i_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")], + _j_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")], + _k_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")], + _l_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")], + _m_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")], + _n_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")], + _o_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")], + _p_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")], + _q_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")], + _r_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")], + _s_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")], + _t_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")], + _u_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")], + _v_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")], + _w_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _e_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _f_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _b_= [0, [11, caml_string_of_jsbytes("src="), @@ -35960,157 +33500,7 @@ 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)]; + _a_=[0,caml_string_of_jsbytes("common.ml"),57,4]; function json_error(s){throw [0,Json_error,s]} var End_of_array=[248,cst_Yojson_End_of_array,caml_fresh_oo_id(0)], @@ -36118,7 +33508,7 @@ 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]; + {var add=Stdlib_Buffer[12]; 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)) @@ -36149,73 +33539,61 @@ 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_]} + if(! maxbits(31,x))throw [0,Assert_failure,_a_]; + 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))} 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); + var buf$1=caml_call1(Stdlib_Buffer[1],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_)} + {var _pl_=10 <= n?n + 87 | 0:n + 48 | 0; + return caml_call1(Stdlib_Char[1],_pl_)} 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); + {caml_call4(Stdlib_Buffer[18],ob,src,start[1],stop - start[1] | 0); + caml_call2(Stdlib_Buffer[16],ob,str); start[1] = stop + 1 | 0; return 0} function finish_string(src,start,ob) {try {var - _k0_= + _pk_= caml_call4 - (Bi_outbuf[14], + (Stdlib_Buffer[18], ob, src, start[1], caml_ml_string_length(src) - start[1] | 0); - return _k0_} + return _pk_} catch(exc) {exc = caml_wrap_exception(exc); caml_call4 (Stdlib_Printf[3], - _e_, + _b_, 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_; + {caml_call2(Stdlib_Buffer[12],ob,34); + var start=[0,0],_pi_=caml_ml_string_length(s) - 1 | 0,_ph_=0; + if(_pi_ >= 0) + {var i=_ph_; for(;;) - {var c=caml_string_get(s,i$0); + {var c=caml_string_get(s,i); if(92 === c) - write_special(s,start,i$0,ob,cst); + write_special(s,start,i,ob,cst); else {var switch$0=0; if(35 <= c) @@ -36224,12 +33602,12 @@ 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 0:write_special(s,start,i,ob,cst_b);break; + case 1:write_special(s,start,i,ob,cst_t);break; + case 2:write_special(s,start,i,ob,cst_n);break; + case 4:write_special(s,start,i,ob,cst_f);break; + case 5:write_special(s,start,i,ob,cst_r);break; + case 26:write_special(s,start,i,ob,cst$0);break; case 24: case 25:switch$0 = 2;switch$1 = 1;break; default:switch$0 = 1;switch$1 = 1}} @@ -36238,526 +33616,520 @@ 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; + caml_call4(Stdlib_Buffer[18],ob,s,start[1],i - start[1] | 0); + caml_call2(Stdlib_Buffer[16],ob,cst_u00); + var _pf_=hex(c >>> 4 | 0); + caml_call2(Stdlib_Buffer[12],ob,_pf_); + var _pg_=hex(c & 15); + caml_call2(Stdlib_Buffer[12],ob,_pg_); + start[1] = i + 1 | 0; break }} - var _kZ_=i$0 + 1 | 0; - if(_kY_ !== i$0){var i$0=_kZ_;continue} + var _pj_=i + 1 | 0; + if(_pi_ !== i){var i=_pj_;continue} break}} finish_string(s,start,ob); - return caml_call2(Bi_outbuf[15],ob,34)} + return caml_call2(Stdlib_Buffer[12],ob,34)} function json_string_of_string(s) - {var ob=caml_call3(Bi_outbuf[3],0,0,10); + {var ob=caml_call1(Stdlib_Buffer[1],10); write_string(ob,s); - return caml_call1(Bi_outbuf[4],ob)} + return caml_call1(Stdlib_Buffer[2],ob)} function write_null(ob,param) - {return caml_call2(Bi_outbuf[13],ob,cst_null)} + {return caml_call2(Stdlib_Buffer[16],ob,cst_null)} function write_bool(ob,x) - {var _kW_=x?cst_true:cst_false;return caml_call2(Bi_outbuf[13],ob,_kW_)} + {var _pe_=x?cst_true:cst_false; + return caml_call2(Stdlib_Buffer[16],ob,_pe_)} 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; + _c_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), + _d_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])); + caml_call2(Stdlib[17],_d_,_c_); + function write_digits(s,x) + {if(0 === x)return 0; + var d=x % 10 | 0; + write_digits(s,x / 10 | 0); 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} + n=caml_call1(Stdlib[18],d), + _pd_=caml_call1(Stdlib_Char[1],n + 48 | 0); + return caml_call2(Stdlib_Buffer[12],s,_pd_)} 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} + {return 0 < x + ?write_digits(ob,x) + :0 <= x + ?caml_call2(Stdlib_Buffer[12],ob,48) + :(caml_call2(Stdlib_Buffer[12],ob,45),write_digits(ob,x))} function float_needs_period(s) {try - {var _kS_=caml_ml_string_length(s) - 1 | 0,_kR_=0; - if(! (_kS_ < 0)) - {var i=_kR_; + {var _o$_=caml_ml_string_length(s) - 1 | 0,_o__=0; + if(_o$_ >= 0) + {var i=_o__; for(;;) {var match=caml_string_get(s,i),switch$0=0; if(48 <= match) - {if(! (58 <= match))switch$0 = 1} + {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} + var _pb_=i + 1 | 0; + if(_o$_ !== i){var i=_pb_;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_} + var _pa_=1; + return _pa_} + catch(_pc_) + {_pc_ = caml_wrap_exception(_pc_); + if(_pc_ === Stdlib[3])return 0; + throw _pc_}} 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 _o8_=0. < x?cst_Infinity:cst_Infinity$0; + return caml_call2(Stdlib_Buffer[16],ob,_o8_)} + if(4 <= match)return caml_call2(Stdlib_Buffer[16],ob,cst_NaN); 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_} + s1=caml_call2(Stdlib_Printf[4],_e_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_f_,x); + caml_call2(Stdlib_Buffer[16],ob,s); + var _o9_=float_needs_period(s); + return _o9_?caml_call2(Stdlib_Buffer[16],ob,cst_0):_o9_} 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); + var s=caml_call2(Stdlib_Printf[4],_g_,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_} + {case 0:var s=caml_call2(Stdlib_Printf[4],_h_,x);break; + case 1:var s=caml_call2(Stdlib_Printf[4],_i_,x);break; + case 2:var s=caml_call2(Stdlib_Printf[4],_j_,x);break; + case 3:var s=caml_call2(Stdlib_Printf[4],_k_,x);break; + case 4:var s=caml_call2(Stdlib_Printf[4],_l_,x);break; + case 5:var s=caml_call2(Stdlib_Printf[4],_m_,x);break; + case 6:var s=caml_call2(Stdlib_Printf[4],_n_,x);break; + case 7:var s=caml_call2(Stdlib_Printf[4],_o_,x);break; + case 8:var s=caml_call2(Stdlib_Printf[4],_p_,x);break; + case 9:var s=caml_call2(Stdlib_Printf[4],_q_,x);break; + case 10:var s=caml_call2(Stdlib_Printf[4],_r_,x);break; + case 11:var s=caml_call2(Stdlib_Printf[4],_s_,x);break; + case 12:var s=caml_call2(Stdlib_Printf[4],_t_,x);break; + case 13:var s=caml_call2(Stdlib_Printf[4],_u_,x);break; + case 14:var s=caml_call2(Stdlib_Printf[4],_v_,x);break; + default:var s=caml_call2(Stdlib_Printf[4],_w_,x)} + caml_call2(Stdlib_Buffer[16],ob,s); + var _o7_=float_needs_period(s); + return _o7_?caml_call2(Stdlib_Buffer[16],ob,cst_0$0):_o7_} 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_} + if(3 !== match) + return 4 <= match + ?caml_call2(Stdlib_Buffer[16],ob,cst_NaN$0) + :write_normal_float_prec(significant_figures,ob,x); + var _o6_=0. < x?cst_Infinity$1:cst_Infinity$2; + return caml_call2(Stdlib_Buffer[16],ob,_o6_)} function write_std_float(ob,x) {var match=caml_classify_float(x); if(3 === match) {var - _kH_= + _o4_= 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); + ?cst_Infinity_value_not_allowed + :cst_Infinity_value_not_allowed$0; + return json_error(_o4_)} + if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s); 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_} + s1=caml_call2(Stdlib_Printf[4],_x_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_y_,x); + caml_call2(Stdlib_Buffer[16],ob,s); + var _o5_=float_needs_period(s); + return _o5_?caml_call2(Stdlib_Buffer[16],ob,cst_0$1):_o5_} 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)} + if(3 !== match) + return 4 <= match + ?json_error(cst_NaN_value_not_allowed_in_s$0) + :write_normal_float_prec(significant_figures,ob,x); + var + _o3_= + 0. < x + ?cst_Infinity_value_not_allowed$1 + :cst_Infinity_value_not_allowed$2; + return json_error(_o3_)} var - write_intlit=Bi_outbuf[13], - write_floatlit=Bi_outbuf[13], - write_stringlit=Bi_outbuf[13]; + write_intlit=Stdlib_Buffer[16], + write_floatlit=Stdlib_Buffer[16], + write_stringlit=Stdlib_Buffer[16]; 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)} + {if(! param$0)return 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)return 0; + var l=param[2],y=param[1]; + caml_call1(f_sep,x); + caml_call2(f_elt,x,y); + var param=l}} + function f_sep(ob){return caml_call2(Stdlib_Buffer[12],ob,44)} + function write_variant(ob,s,o) + {caml_call2(Stdlib_Buffer[12],ob,60); + write_string(ob,s); + if(o){var x=o[1];caml_call2(Stdlib_Buffer[12],ob,58);write_t(ob,x)} + return caml_call2(Stdlib_Buffer[12],ob,62)} function write_tuple(ob,l) - {caml_call2(Bi_outbuf[15],ob,40); + {caml_call2(Stdlib_Buffer[12],ob,40); iter2(write_t,f_sep,ob,l); - return caml_call2(Bi_outbuf[15],ob,41)} + return caml_call2(Stdlib_Buffer[12],ob,41)} function write_list(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); + {caml_call2(Stdlib_Buffer[12],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)} + return caml_call2(Stdlib_Buffer[12],ob,93)} 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); + caml_call2(Stdlib_Buffer[12],ob,58); return write_t(ob,x)} - caml_call2(Bi_outbuf[15],ob,123); + caml_call2(Stdlib_Buffer[12],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) + return caml_call2(Stdlib_Buffer[12],ob,125)} + function write_t(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 _o2_=x[1]; + if(708012133 <= _o2_) + {if(737456202 > _o2_) + {if(726928360 <= _o2_){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(928231259 <= _o2_) + {if(963043957 <= _o2_){var l=x[2];return write_assoc(ob,l)} + var s=x[2]; + return caml_call2(Stdlib_Buffer[16],ob,s)} + if(848054398 <= _o2_){var l$0=x[2];return write_list(ob,l$0)} + var b=x[2]; + return write_bool(ob,b)} + if(-752863768 === _o2_) + {var s$1=x[2];return caml_call2(Stdlib_Buffer[16],ob,s$1)} + if(3654863 <= _o2_) + {if(365180284 <= _o2_){var f=x[2];return write_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)} + if(-375152890 <= _o2_) + {var s$2=x[2];return caml_call2(Stdlib_Buffer[16],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(! o)return write_string(ob,s); + var x=o[1]; + caml_call2(Stdlib_Buffer[12],ob,91); + write_string(ob,s); + caml_call2(Stdlib_Buffer[12],ob,44); + write_std_json(ob,x); + return caml_call2(Stdlib_Buffer[12],ob,93)} + function write_std_tuple(ob,l) + {caml_call2(Stdlib_Buffer[12],ob,91); + iter2(write_std_json,f_sep,ob,l); + return caml_call2(Stdlib_Buffer[12],ob,93)} + function write_std_json(ob,x) + {if(typeof x === "number")return write_null(ob,0); + var _o1_=x[1]; + if(708012133 <= _o1_) + {if(737456202 > _o1_) + {if(726928360 <= _o1_){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(928231259 <= _o1_) + {if(963043957 <= _o1_) + {var + l=x[2], + f_elt= + function(ob,param) + {var x=param[2],s=param[1]; + write_string(ob,s); + caml_call2(Stdlib_Buffer[12],ob,58); + return write_std_json(ob,x)}; + caml_call2(Stdlib_Buffer[12],ob,123); + iter2(f_elt,f_sep,ob,l); + return caml_call2(Stdlib_Buffer[12],ob,125)} + var s=x[2]; + return caml_call2(Stdlib_Buffer[16],ob,s)} + if(848054398 <= _o1_) + {var l$0=x[2]; + caml_call2(Stdlib_Buffer[12],ob,91); + iter2(write_std_json,f_sep,ob,l$0); + return caml_call2(Stdlib_Buffer[12],ob,93)} + var b=x[2]; + return write_bool(ob,b)} + if(-752863768 === _o1_) + {var s$1=x[2];return caml_call2(Stdlib_Buffer[16],ob,s$1)} + if(3654863 <= _o1_) + {if(365180284 <= _o1_){var f=x[2];return write_std_float(ob,f)} + var i=x[2]; + return write_int(ob,i)} + if(-375152890 <= _o1_) + {var s$2=x[2];return caml_call2(Stdlib_Buffer[16],ob,s$2)} + var s$3=x[2]; + return write_string(ob,s$3)} + function to_buffer(opt,_o0_,ob,x) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$1; + if(_o0_)var sth$0=_o0_[1],std=sth$0;else var std=0; + if(std)write_std_json(ob,x);else write_t(ob,x); + return caml_call2(Stdlib_Buffer[16],ob,suf)} + function to_string(buf,opt,_oZ_,std,x) {if(opt)var sth=opt[1],len=sth;else var len=256; + if(_oZ_)var sth$0=_oZ_[1],suf=sth$0;else var suf=cst$2; if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],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); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer([0,suf],std,ob$0,x); + var s=caml_call1(Stdlib_Buffer[2],ob$0); + caml_call1(Stdlib_Buffer[8],ob$0); return s} - function to_channel(buf,len,std,oc,x) - {if(buf) - var ob=buf[1],ob$0=ob; + function to_channel(buf,opt,_oY_,std,oc,x) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + if(_oY_)var sth$0=_oY_[1],suf=sth$0;else var suf=cst$3; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var 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; + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer([0,suf],std,ob$0,x); + caml_call2(Stdlib_Buffer[10],oc,ob$0); + return caml_call1(Stdlib_Buffer[8],ob$0)} + function to_output(buf,opt,_oW_,std,out,x) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + if(_oW_)var sth$0=_oW_[1],suf=sth$0;else var suf=cst$4; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var 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); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer([0,suf],std,ob$0,x); + var _oX_=caml_call1(Stdlib_Buffer[7],ob$0); + caml_call4 + (caml_get_public_method(out,209784577,1), + out, + caml_call1(Stdlib_Buffer[2],ob$0), + 0, + _oX_); + return caml_call1(Stdlib_Buffer[8],ob$0)} + function to_file(len,std,opt,file,x) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$5; + var oc=caml_call1(Stdlib[60],file); try - {to_channel(0,len,std,oc,x); - var _kD_=caml_call1(Stdlib[76],oc); - return _kD_} + {to_channel(0,len,[0,suf],std,oc,x); + var _oV_=caml_call1(Stdlib[76],oc); + return _oV_} 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) + function seq_to_buffer(opt,std,ob,st) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$6; + var _oS_=[0,suf]; + function _oT_(_oU_){return to_buffer(_oS_,std,ob,_oU_)} + return caml_call2(Stdlib_Seq[4],_oT_,st)} + function seq_to_string(buf,opt,_oR_,std,st) {if(opt)var sth=opt[1],len=sth;else var len=256; + if(_oR_)var sth$0=_oR_[1],suf=sth$0;else var suf=cst$7; if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],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); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + seq_to_buffer([0,suf],std,ob$0,st); + var s=caml_call1(Stdlib_Buffer[2],ob$0); + caml_call1(Stdlib_Buffer[8],ob$0); return s} - function stream_to_channel(buf,len,std,oc,st) - {if(buf) - var ob=buf[1],ob$0=ob; + function seq_to_channel(buf,opt,_oP_,std,oc,seq) + {if(opt)var sth=opt[1],len=sth;else var len=2096; + if(_oP_)var sth$0=_oP_[1],suf=sth$0;else var suf=cst$8; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var 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); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + function _oQ_(json) + {to_buffer([0,suf],std,ob$0,json); + caml_call2(Stdlib_Buffer[10],oc,ob$0); + return caml_call1(Stdlib_Buffer[8],ob$0)} + return caml_call2(Stdlib_Seq[4],_oQ_,seq)} + function seq_to_file(len,opt,std,file,st) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$9; + 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_} + {seq_to_channel(0,len,[0,suf],std,oc,st); + var _oO_=caml_call1(Stdlib[76],oc); + return _oO_} 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 _oF_=x[1]; + if(726928361 <= _oF_) + {if(848054398 === _oF_) + {var l=x[2],_oG_=caml_call2(Stdlib_List[21],sort,l); + return [0,848054398,caml_call1(Stdlib_List[9],_oG_)]} + if(963043957 === _oF_) {var l$0=x[2], - _kt_= + _oH_= 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]; + _oI_=caml_call2(Stdlib_List[21],_oH_,l$0), + l$1=caml_call1(Stdlib_List[9],_oI_), + _oJ_= + function(param,_oN_) + {var b=_oN_[1],a=param[1]; return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_kv_,l$1)]}} + return [0,963043957,caml_call2(Stdlib_List[57],_oJ_,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); + if(708012133 === _oF_) + {var _oK_=x[2],_oL_=_oK_[2]; + if(_oL_) + {var v=_oL_[1],k=_oK_[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_)]}} + if(726928360 <= _oF_) + {var l$2=x[2],_oM_=caml_call2(Stdlib_List[21],sort,l$2); + return [0,726928360,caml_call1(Stdlib_List[9],_oM_)]}} 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); + var _oy_=param[1]; + if(708012133 <= _oy_) + {if(737456202 > _oy_) + {if(726928360 <= _oy_) + {var tup=param[2]; 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,_U_); + var + _oD_=0, + _oE_= + function(sep,e) + {if(sep)caml_call2(Stdlib_Format[129],fmt,_V_); + pp(fmt,e); + return 1}; + caml_call3(Stdlib_List[25],_oE_,_oD_,tup); + caml_call2(Stdlib_Format[129],fmt,_W_); + return caml_call2(Stdlib_Format[129],fmt,_X_)} + var match=param[2],value=match[2],name=match[1]; 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_call3(Stdlib_Format[129],fmt,___,name); 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_) + 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$10)} + else + caml_call2(Stdlib_Format[13],fmt,cst_None); + caml_call2(Stdlib_Format[129],fmt,_aa_); + return caml_call2(Stdlib_Format[129],fmt,_ab_)} + if(928231259 <= _oy_) + {if(963043957 <= _oy_) + {var xs=param[2]; + caml_call2(Stdlib_Format[129],fmt,_z_); + caml_call2(Stdlib_Format[129],fmt,_A_); + var + _oz_=0, + _oA_= + function(sep,param) + {var value=param[2],key=param[1]; + if(sep)caml_call2(Stdlib_Format[129],fmt,_B_); + caml_call2(Stdlib_Format[129],fmt,_C_); + caml_call3(Stdlib_Format[129],fmt,_D_,key); + caml_call2(Stdlib_Format[129],fmt,_E_); + pp(fmt,value); + caml_call2(Stdlib_Format[129],fmt,_F_); + return 1}; + caml_call3(Stdlib_List[25],_oA_,_oz_,xs); + caml_call2(Stdlib_Format[129],fmt,_G_); + return caml_call2(Stdlib_Format[129],fmt,_H_)} + var x=param[2]; + caml_call2(Stdlib_Format[129],fmt,_I_); + caml_call3(Stdlib_Format[129],fmt,_J_,x); + return caml_call2(Stdlib_Format[129],fmt,_K_)} + if(848054398 <= _oy_) + {var xs$0=param[2]; + caml_call2(Stdlib_Format[129],fmt,_L_); + caml_call2(Stdlib_Format[129],fmt,_M_); + var + _oB_=0, + _oC_= + function(sep,x) + {if(sep)caml_call2(Stdlib_Format[129],fmt,_N_); + pp(fmt,x); + return 1}; + caml_call3(Stdlib_List[25],_oC_,_oB_,xs$0); + caml_call2(Stdlib_Format[129],fmt,_O_); + return caml_call2(Stdlib_Format[129],fmt,_P_)} + var x$0=param[2]; + caml_call2(Stdlib_Format[129],fmt,_Q_); + caml_call3(Stdlib_Format[129],fmt,_R_,x$0); + return caml_call2(Stdlib_Format[129],fmt,_S_)} + if(-752863768 === _oy_) {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_) + caml_call2(Stdlib_Format[129],fmt,_ac_); + caml_call3(Stdlib_Format[129],fmt,_ad_,x$2); + return caml_call2(Stdlib_Format[129],fmt,_ae_)} + if(3654863 <= _oy_) + {if(365180284 <= _oy_) {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_)} + caml_call2(Stdlib_Format[129],fmt,_af_); + caml_call3(Stdlib_Format[129],fmt,_ag_,x$3); + return caml_call2(Stdlib_Format[129],fmt,_ah_)} 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_) + caml_call2(Stdlib_Format[129],fmt,_ai_); + caml_call3(Stdlib_Format[129],fmt,_aj_,x$4); + return caml_call2(Stdlib_Format[129],fmt,_ak_)} + if(-375152890 <= _oy_) {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_)} + caml_call2(Stdlib_Format[129],fmt,_al_); + caml_call3(Stdlib_Format[129],fmt,_am_,x$5); + return caml_call2(Stdlib_Format[129],fmt,_an_)} 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)} + caml_call2(Stdlib_Format[129],fmt,_ao_); + caml_call3(Stdlib_Format[129],fmt,_ap_,x$6); + return caml_call2(Stdlib_Format[129],fmt,_aq_)} + function show(x){return caml_call3(Stdlib_Format[133],_ar_,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 _or_=a$0[1]; + if(708012133 <= _or_) {var switch$0=0; - if(848054398 <= _kd_) - {if(928231259 === _kd_) + if(848054398 <= _or_) + {if(928231259 === _or_) {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(963043957 === _or_) {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]; + function(param,_ox_) + {var key=_ox_[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_) + _os_= + function(param,_ow_) {var - value=_ki_[2], - key=_ki_[1], + value=_ow_[2], + key=_ow_[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); + result=caml_call3(Stdlib_List[34],_os_,xs$0,ys$0); return result} - catch(_kh_) - {_kh_ = caml_wrap_exception(_kh_); - if(_kh_[1] === Stdlib[6])return 0; - throw _kh_}}} + catch(_ov_) + {_ov_ = caml_wrap_exception(_ov_); + if(_ov_[1] === Stdlib[6])return 0; + throw _ov_}}} else if - (! - (848054399 <= _kd_) + (848054399 + > + _or_ && typeof b$0 !== @@ -36768,17 +34140,18 @@ b$0[1]) {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} else - if(726928360 === _kd_) + if(726928360 === _or_) {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(737456202 === _or_) {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_) + (708012134 + > + _or_ && typeof b$0 !== @@ -36788,42 +34161,42 @@ === b$0[1]) {var - _kf_=b$0[2], - value=_kf_[2], - name=_kf_[1], + _ot_=b$0[2], + value=_ot_[2], + name=_ot_[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} + if(! match$0)return 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} 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_}} + catch(_ou_) + {_ou_ = caml_wrap_exception(_ou_); + if(_ou_[1] === Stdlib[6])return 0; + throw _ou_}} else - if(-375152890 <= _kd_) - {if(3654863 === _kd_) + if(-375152890 <= _or_) + {if(3654863 === _or_) {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(365180284 === _or_) {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_) + (-375152889 + > + _or_ && typeof b$0 !== @@ -36834,14 +34207,14 @@ 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(-976970511 === _or_) {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_ + _or_ && typeof b$0 !== @@ -36852,180 +34225,168 @@ 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) + function pp_list(sep,ppx,out,l) + {function pp_sep(out,param) + {return caml_call3(Stdlib_Format[129],out,_as_,sep)} + return caml_call4(Stdlib_Format[123],[0,pp_sep],ppx,out,l)} + function is_atom(x) + {if(typeof x !== "number") + {var _oq_=x[1],switch$0=0; + if(737456202 <= _oq_) + {if(848054398 === _oq_) + {if(x[2])switch$0 = 1} + else + if(963043957 <= _oq_ && x[2])switch$0 = 1} + else + if(708012133 === _oq_) + {if(x[2][2])switch$0 = 1} + else + if(726928360 <= _oq_ && x[2])switch$0 = 1; + if(switch$0)return 0} + return 1} + function format(inside_box,std,out,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(typeof x$0 === "number") + return caml_call2(Stdlib_Format[13],out,cst_null$0); + var _nJ_=x$0[1]; + if(708012133 > _nJ_) + {if(-752863768 === _nJ_) + {var s$0=x$0[2];return caml_call2(Stdlib_Format[13],out,s$0)} + if(3654863 <= _nJ_) + {if(365180284 > _nJ_) + {var x$7=x$0[2],_nI_=caml_call1(Stdlib[33],x$7); + return caml_call2(Stdlib_Format[13],out,_nI_)} + var x$6=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)} + {var ob$0=caml_call1(Stdlib_Buffer[1],20); + write_std_float(ob$0,x$6); + var s$1=caml_call1(Stdlib_Buffer[2],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) + {var ob=caml_call1(Stdlib_Buffer[1],20); + write_float(ob,x$6); + var s$1=caml_call1(Stdlib_Buffer[2],ob)} + return caml_call2(Stdlib_Format[13],out,s$1)} + if(-375152890 <= _nJ_) + {var s$2=x$0[2];return caml_call2(Stdlib_Format[13],out,s$2)} + var s$3=x$0[2],_n6_=json_string_of_string(s$3); + return caml_call2(Stdlib_Format[13],out,_n6_)} + if(737456202 <= _nJ_) + {if(928231259 <= _nJ_) + {if(963043957 > _nJ_) + {var s=x$0[2];return caml_call2(Stdlib_Format[13],out,s)} + var _nK_=x$0[2]; + if(! _nK_)return caml_call2(Stdlib_Format[13],out,cst$12); + if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_at_); + var + _nL_= + function(out,param) + {var x=param[2],name=param[1],_ol_=1; + function _om_(_oo_,_op_){return format(_ol_,std,_oo_,_op_)} + var _on_=json_string_of_string(name); + return caml_call5(Stdlib_Format[129],out,_aF_,_on_,_om_,x)}, + _nM_=function(_oj_,_ok_){return pp_list(cst$11,_nL_,_oj_,_ok_)}; + caml_call4(Stdlib_Format[129],out,_au_,_nM_,_nK_); + var _nN_=1 - inside_box; + return _nN_?caml_call2(Stdlib_Format[129],out,_av_):_nN_} + if(848054398 > _nJ_) + {var x$1=x$0[2];return caml_call2(Stdlib_Format[25],out,x$1)} + var _nO_=x$0[2]; + if(! _nO_)return caml_call2(Stdlib_Format[13],out,cst$15); + if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_aw_); + if(caml_call2(Stdlib_List[32],is_atom,_nO_)) + {var + _nP_=0, + _nQ_=function(_od_,_oe_){return format(_nP_,std,_od_,_oe_)}, + _nR_=function(_ob_,_oc_){return pp_list(cst$13,_nQ_,_ob_,_oc_)}; + caml_call4(Stdlib_Format[129],out,_ax_,_nR_,_nO_)} + else + {var + _nT_=0, + _nU_=function(_oh_,_oi_){return format(_nT_,std,_oh_,_oi_)}, + _nV_=function(_of_,_og_){return pp_list(cst$14,_nU_,_of_,_og_)}; + caml_call4(Stdlib_Format[129],out,_az_,_nV_,_nO_)} + var _nS_=1 - inside_box; + return _nS_?caml_call2(Stdlib_Format[129],out,_ay_):_nS_} + if(726928360 <= _nJ_) + {var l=x$0[2]; + if(std){var x$2=[0,848054398,l],x$0=x$2;continue} + if(0 === l)return caml_call2(Stdlib_Format[13],out,cst$16); + if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_aA_); + var + _nW_=0, + _nX_=function(_n$_,_oa_){return format(_nW_,std,_n$_,_oa_)}, + _nY_=function(_n9_,_n__){return pp_list(cst$17,_nX_,_n9_,_n__)}; + caml_call4(Stdlib_Format[129],out,_aB_,_nY_,l); + var _nZ_=1 - inside_box; + return _nZ_?caml_call2(Stdlib_Format[129],out,_aC_):_nZ_} + var _n0_=x$0[2],_n1_=_n0_[2],_n2_=_n0_[1]; + if(_n1_) + {var x$3=_n1_[1]; + if(std) + {var + representation=[0,-976970511,_n2_], + x$4=[0,848054398,[0,representation,[0,x$3,0]]], + x$0=x$4; + continue} + var + op=json_string_of_string(_n2_), + _n3_=1, + _n4_=function(_n7_,_n8_){return format(_n3_,std,_n7_,_n8_)}; + return caml_call5(Stdlib_Format[129],out,_aD_,op,_n4_,x$3)} + if(std){var x$5=[0,-976970511,_n2_],x$0=x$5;continue} + var _n5_=json_string_of_string(_n2_); + return caml_call3(Stdlib_Format[129],out,_aE_,_n5_)}} + function pp$0(opt,out,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)} + var _nE_=1; + function _nF_(_nG_,_nH_){return format(_nE_,std,_nG_,_nH_)} + return caml_call4(Stdlib_Format[129],out,_aG_,_nF_,x)} + function pretty_print(std,out,x){return pp$0(std,out,x)} + function pretty_to_string(std,x) + {function _nB_(_nC_,_nD_){return pp$0(std,_nC_,_nD_)} + return caml_call3(Stdlib_Format[133],_aH_,_nB_,x)} + function pretty_to_channel(std,oc,x) + {var fmt=caml_call1(Stdlib_Format[108],oc); + function _ny_(_nz_,_nA_){return pp$0(std,_nz_,_nA_)} + return caml_call4(Stdlib_Format[129],fmt,_aI_,_ny_,x)} function hex$0(n) - {var _jP_=10 <= n?n + 87 | 0:n + 48 | 0; - return caml_call1(Stdlib_Char[1],_jP_)} + {var _nx_=10 <= n?n + 87 | 0:n + 48 | 0; + return caml_call1(Stdlib_Char[1],_nx_)} 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); + {caml_call4(Stdlib_Buffer[18],ob,src,start[1],stop - start[1] | 0); + caml_call2(Stdlib_Buffer[16],ob,str); start[1] = stop + 1 | 0; return 0} function finish_string$0(src,start,ob) {try {var - _jO_= + _nw_= caml_call4 - (Bi_outbuf[14], + (Stdlib_Buffer[18], ob, src, start[1], caml_ml_string_length(src) - start[1] | 0); - return _jO_} + return _nw_} catch(exc) {exc = caml_wrap_exception(exc); caml_call4 (Stdlib_Printf[3], - _aB_, + _aJ_, 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_; + {caml_call2(Stdlib_Buffer[12],ob,34); + var start=[0,0],_nu_=caml_ml_string_length(s) - 1 | 0,_nt_=0; + if(_nu_ >= 0) + {var i=_nt_; for(;;) - {var c=caml_string_get(s,i$0); + {var c=caml_string_get(s,i); if(92 === c) - write_special$0(s,start,i$0,ob,cst$20); + write_special$0(s,start,i,ob,cst$18); else {var switch$0=0; if(35 <= c) @@ -37034,12 +34395,12 @@ 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 0:write_special$0(s,start,i,ob,cst_b$0);break; + case 1:write_special$0(s,start,i,ob,cst_t$0);break; + case 2:write_special$0(s,start,i,ob,cst_n$0);break; + case 4:write_special$0(s,start,i,ob,cst_f$0);break; + case 5:write_special$0(s,start,i,ob,cst_r$0);break; + case 26:write_special$0(s,start,i,ob,cst$19);break; case 24: case 25:switch$0 = 2;switch$1 = 1;break; default:switch$0 = 1;switch$1 = 1}} @@ -37048,397 +34409,473 @@ 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; + caml_call4(Stdlib_Buffer[18],ob,s,start[1],i - start[1] | 0); + caml_call2(Stdlib_Buffer[16],ob,cst_u00$0); + var _nr_=hex$0(c >>> 4 | 0); + caml_call2(Stdlib_Buffer[12],ob,_nr_); + var _ns_=hex$0(c & 15); + caml_call2(Stdlib_Buffer[12],ob,_ns_); + start[1] = i + 1 | 0; break }} - var _jN_=i$0 + 1 | 0; - if(_jM_ !== i$0){var i$0=_jN_;continue} + var _nv_=i + 1 | 0; + if(_nu_ !== i){var i=_nv_;continue} break}} finish_string$0(s,start,ob); - return caml_call2(Bi_outbuf[15],ob,34)} + return caml_call2(Stdlib_Buffer[12],ob,34)} + function json_string_of_string$0(s) + {var ob=caml_call1(Stdlib_Buffer[1],10); + write_string$0(ob,s); + return caml_call1(Stdlib_Buffer[2],ob)} function write_null$0(ob,param) - {return caml_call2(Bi_outbuf[13],ob,cst_null$1)} + {return caml_call2(Stdlib_Buffer[16],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 _nq_=x?cst_true$0:cst_false$0; + return caml_call2(Stdlib_Buffer[16],ob,_nq_)} 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; + _aK_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), + _aL_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])); + caml_call2(Stdlib[17],_aL_,_aK_); + function write_digits$0(s,x) + {if(0 === x)return 0; + var d=x % 10 | 0; + write_digits$0(s,x / 10 | 0); 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} + n=caml_call1(Stdlib[18],d), + _np_=caml_call1(Stdlib_Char[1],n + 48 | 0); + return caml_call2(Stdlib_Buffer[12],s,_np_)} 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} + {return 0 < x + ?write_digits$0(ob,x) + :0 <= x + ?caml_call2(Stdlib_Buffer[12],ob,48) + :(caml_call2(Stdlib_Buffer[12],ob,45),write_digits$0(ob,x))} function float_needs_period$0(s) {try - {var _jG_=caml_ml_string_length(s) - 1 | 0,_jF_=0; - if(! (_jG_ < 0)) - {var i=_jF_; + {var _nl_=caml_ml_string_length(s) - 1 | 0,_nk_=0; + if(_nl_ >= 0) + {var i=_nk_; for(;;) {var match=caml_string_get(s,i),switch$0=0; if(48 <= match) - {if(! (58 <= match))switch$0 = 1} + {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} + var _nn_=i + 1 | 0; + if(_nl_ !== i){var i=_nn_;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_} + var _nm_=1; + return _nm_} + catch(_no_) + {_no_ = caml_wrap_exception(_no_); + if(_no_ === Stdlib[3])return 0; + throw _no_}} 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 _ni_=0. < x?cst_Infinity$3:cst_Infinity$4; + return caml_call2(Stdlib_Buffer[16],ob,_ni_)} + if(4 <= match)return caml_call2(Stdlib_Buffer[16],ob,cst_NaN$1); 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_} + s1=caml_call2(Stdlib_Printf[4],_aM_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_aN_,x); + caml_call2(Stdlib_Buffer[16],ob,s); + var _nj_=float_needs_period$0(s); + return _nj_?caml_call2(Stdlib_Buffer[16],ob,cst_0$2):_nj_} 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); + var s=caml_call2(Stdlib_Printf[4],_aO_,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_} + {case 0:var s=caml_call2(Stdlib_Printf[4],_aP_,x);break; + case 1:var s=caml_call2(Stdlib_Printf[4],_aQ_,x);break; + case 2:var s=caml_call2(Stdlib_Printf[4],_aR_,x);break; + case 3:var s=caml_call2(Stdlib_Printf[4],_aS_,x);break; + case 4:var s=caml_call2(Stdlib_Printf[4],_aT_,x);break; + case 5:var s=caml_call2(Stdlib_Printf[4],_aU_,x);break; + case 6:var s=caml_call2(Stdlib_Printf[4],_aV_,x);break; + case 7:var s=caml_call2(Stdlib_Printf[4],_aW_,x);break; + case 8:var s=caml_call2(Stdlib_Printf[4],_aX_,x);break; + case 9:var s=caml_call2(Stdlib_Printf[4],_aY_,x);break; + case 10:var s=caml_call2(Stdlib_Printf[4],_aZ_,x);break; + case 11:var s=caml_call2(Stdlib_Printf[4],_a0_,x);break; + case 12:var s=caml_call2(Stdlib_Printf[4],_a1_,x);break; + case 13:var s=caml_call2(Stdlib_Printf[4],_a2_,x);break; + case 14:var s=caml_call2(Stdlib_Printf[4],_a3_,x);break; + default:var s=caml_call2(Stdlib_Printf[4],_a4_,x)} + caml_call2(Stdlib_Buffer[16],ob,s); + var _nh_=float_needs_period$0(s); + return _nh_?caml_call2(Stdlib_Buffer[16],ob,cst_0$3):_nh_} 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_} + if(3 !== match) + return 4 <= match + ?caml_call2(Stdlib_Buffer[16],ob,cst_NaN$2) + :write_normal_float_prec$0(significant_figures,ob,x); + var _ng_=0. < x?cst_Infinity$5:cst_Infinity$6; + return caml_call2(Stdlib_Buffer[16],ob,_ng_)} function write_std_float$0(ob,x) {var match=caml_classify_float(x); if(3 === match) {var - _jv_= + _ne_= 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); + ?cst_Infinity_value_not_allowed$3 + :cst_Infinity_value_not_allowed$4; + return json_error(_ne_)} + if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$1); 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_} + s1=caml_call2(Stdlib_Printf[4],_a5_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_a6_,x); + caml_call2(Stdlib_Buffer[16],ob,s); + var _nf_=float_needs_period$0(s); + return _nf_?caml_call2(Stdlib_Buffer[16],ob,cst_0$4):_nf_} 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)} + if(3 !== match) + return 4 <= match + ?json_error(cst_NaN_value_not_allowed_in_s$2) + :write_normal_float_prec$0(significant_figures,ob,x); + var + _nd_= + 0. < x + ?cst_Infinity_value_not_allowed$5 + :cst_Infinity_value_not_allowed$6; + return json_error(_nd_)} 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)} + {if(! param$0)return 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)return 0; + var l=param[2],y=param[1]; + caml_call1(f_sep,x); + caml_call2(f_elt,x,y); + var param=l}} + function f_sep$0(ob){return caml_call2(Stdlib_Buffer[12],ob,44)} function write_list$0(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); + {caml_call2(Stdlib_Buffer[12],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)} + return caml_call2(Stdlib_Buffer[12],ob,93)} 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); + caml_call2(Stdlib_Buffer[12],ob,58); return write_t$0(ob,x)} - caml_call2(Bi_outbuf[15],ob,123); + caml_call2(Stdlib_Buffer[12],ob,123); iter2$0(f_elt,f_sep$0,ob,l); - return caml_call2(Bi_outbuf[15],ob,125)} + return caml_call2(Stdlib_Buffer[12],ob,125)} + function write_t$0(ob,x) + {if(typeof x === "number")return write_null$0(ob,0); + var _nc_=x[1]; + if(365180284 > _nc_) + {if(3654863 <= _nc_){var i=x[2];return write_int$0(ob,i)} + var s=x[2]; + return write_string$0(ob,s)} + if(848054398 <= _nc_) + {if(963043957 <= _nc_){var l=x[2];return write_assoc$0(ob,l)} + var l$0=x[2]; + return write_list$0(ob,l$0)} + if(737456202 <= _nc_){var b=x[2];return write_bool$0(ob,b)} + var f=x[2]; + return write_float$0(ob,f)} 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) + var _nb_=x[1]; + if(365180284 > _nb_) + {if(3654863 <= _nb_){var i=x[2];return write_int$0(ob,i)} + var s=x[2]; + return write_string$0(ob,s)} + if(848054398 <= _nb_) + {if(963043957 <= _nb_) + {var + l=x[2], + f_elt= + function(ob,param) + {var x=param[2],s=param[1]; + write_string$0(ob,s); + caml_call2(Stdlib_Buffer[12],ob,58); + return write_std_json$0(ob,x)}; + caml_call2(Stdlib_Buffer[12],ob,123); + iter2$0(f_elt,f_sep$0,ob,l); + return caml_call2(Stdlib_Buffer[12],ob,125)} + var l$0=x[2]; + caml_call2(Stdlib_Buffer[12],ob,91); + iter2$0(write_std_json$0,f_sep$0,ob,l$0); + return caml_call2(Stdlib_Buffer[12],ob,93)} + if(737456202 <= _nb_){var b=x[2];return write_bool$0(ob,b)} + var f=x[2]; + return write_std_float$0(ob,f)} + function to_buffer$0(opt,_na_,ob,x) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$20; + if(_na_)var sth$0=_na_[1],std=sth$0;else var std=0; + if(std)write_std_json$0(ob,x);else write_t$0(ob,x); + return caml_call2(Stdlib_Buffer[16],ob,suf)} + function to_string$0(buf,opt,_m$_,std,x) {if(opt)var sth=opt[1],len=sth;else var len=256; + if(_m$_)var sth$0=_m$_[1],suf=sth$0;else var suf=cst$21; if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],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); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer$0([0,suf],std,ob$0,x); + var s=caml_call1(Stdlib_Buffer[2],ob$0); + caml_call1(Stdlib_Buffer[8],ob$0); return s} - function to_channel$1(buf,len,std,oc,x) - {if(buf) - var ob=buf[1],ob$0=ob; + function to_channel$0(buf,opt,_m__,std,oc,x) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + if(_m__)var sth$0=_m__[1],suf=sth$0;else var suf=cst$22; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var 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; + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer$0([0,suf],std,ob$0,x); + caml_call2(Stdlib_Buffer[10],oc,ob$0); + return caml_call1(Stdlib_Buffer[8],ob$0)} + function to_output$0(buf,opt,_m8_,std,out,x) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + if(_m8_)var sth$0=_m8_[1],suf=sth$0;else var suf=cst$23; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var 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); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer$0([0,suf],std,ob$0,x); + var _m9_=caml_call1(Stdlib_Buffer[7],ob$0); + caml_call4 + (caml_get_public_method(out,209784577,2), + out, + caml_call1(Stdlib_Buffer[2],ob$0), + 0, + _m9_); + return caml_call1(Stdlib_Buffer[8],ob$0)} + function to_file$0(len,std,opt,file,x) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$24; + 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_} + {to_channel$0(0,len,[0,suf],std,oc,x); + var _m7_=caml_call1(Stdlib[76],oc); + return _m7_} 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) + function seq_to_buffer$0(opt,std,ob,st) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$25; + var _m4_=[0,suf]; + function _m5_(_m6_){return to_buffer$0(_m4_,std,ob,_m6_)} + return caml_call2(Stdlib_Seq[4],_m5_,st)} + function seq_to_string$0(buf,opt,_m3_,std,st) {if(opt)var sth=opt[1],len=sth;else var len=256; + if(_m3_)var sth$0=_m3_[1],suf=sth$0;else var suf=cst$26; if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],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); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + seq_to_buffer$0([0,suf],std,ob$0,st); + var s=caml_call1(Stdlib_Buffer[2],ob$0); + caml_call1(Stdlib_Buffer[8],ob$0); return s} - function stream_to_channel$0(buf,len,std,oc,st) - {if(buf) - var ob=buf[1],ob$0=ob; + function seq_to_channel$0(buf,opt,_m1_,std,oc,seq) + {if(opt)var sth=opt[1],len=sth;else var len=2096; + if(_m1_)var sth$0=_m1_[1],suf=sth$0;else var suf=cst$27; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var 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); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + function _m2_(json) + {to_buffer$0([0,suf],std,ob$0,json); + caml_call2(Stdlib_Buffer[10],oc,ob$0); + return caml_call1(Stdlib_Buffer[8],ob$0)} + return caml_call2(Stdlib_Seq[4],_m2_,seq)} + function seq_to_file$0(len,opt,std,file,st) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$28; + 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_} + {seq_to_channel$0(0,len,[0,suf],std,oc,st); + var _m0_=caml_call1(Stdlib[76],oc); + return _m0_} 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 _mU_=x[1]; + if(848054398 === _mU_) + {var l=x[2],_mV_=caml_call2(Stdlib_List[21],sort$0,l); + return [0,848054398,caml_call1(Stdlib_List[9],_mV_)]} + if(963043957 === _mU_) {var l$0=x[2], - _jk_= + _mW_= 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]; + _mX_=caml_call2(Stdlib_List[21],_mW_,l$0), + l$1=caml_call1(Stdlib_List[9],_mX_), + _mY_= + function(param,_mZ_) + {var b=_mZ_[1],a=param[1]; return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_jm_,l$1)]}} + return [0,963043957,caml_call2(Stdlib_List[57],_mY_,l$1)]}} return x} - function pp$0(fmt,param) + function pp_list$0(sep,ppx,out,l) + {function pp_sep(out,param) + {return caml_call3(Stdlib_Format[129],out,_a7_,sep)} + return caml_call4(Stdlib_Format[123],[0,pp_sep],ppx,out,l)} + function is_atom$0(x) + {if(typeof x !== "number") + {var _mT_=x[1],switch$0=0; + if(737456202 <= _mT_) + {if(848054398 === _mT_) + {if(x[2])switch$0 = 1} + else + if(963043957 <= _mT_ && x[2])switch$0 = 1} + else + if(708012133 === _mT_) + {if(x[2][2])switch$0 = 1} + else + if(726928360 <= _mT_ && x[2])switch$0 = 1; + if(switch$0)return 0} + return 1} + function format$0(inside_box,std,out,x) + {if(typeof x === "number") + return caml_call2(Stdlib_Format[13],out,cst_null$2); + var _mq_=x[1]; + if(365180284 > _mq_) + {if(3654863 <= _mq_) + {var x$2=x[2],_mp_=caml_call1(Stdlib[33],x$2); + return caml_call2(Stdlib_Format[13],out,_mp_)} + var s$0=x[2],_mD_=json_string_of_string$0(s$0); + return caml_call2(Stdlib_Format[13],out,_mD_)} + if(848054398 > _mq_) + {if(737456202 <= _mq_) + {var x$0=x[2];return caml_call2(Stdlib_Format[25],out,x$0)} + var x$1=x[2]; + if(std) + {var ob$0=caml_call1(Stdlib_Buffer[1],20); + write_std_float$0(ob$0,x$1); + var s=caml_call1(Stdlib_Buffer[2],ob$0)} + else + {var ob=caml_call1(Stdlib_Buffer[1],20); + write_float$0(ob,x$1); + var s=caml_call1(Stdlib_Buffer[2],ob)} + return caml_call2(Stdlib_Format[13],out,s)} + if(963043957 <= _mq_) + {var _mr_=x[2]; + if(! _mr_)return caml_call2(Stdlib_Format[13],out,cst$30); + if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_a8_); + var + _ms_= + function(out,param) + {var x=param[2],name=param[1],_mO_=1; + function _mP_(_mR_,_mS_){return format$0(_mO_,std,_mR_,_mS_)} + var _mQ_=json_string_of_string$0(name); + return caml_call5(Stdlib_Format[129],out,_bd_,_mQ_,_mP_,x)}, + _mt_=function(_mM_,_mN_){return pp_list$0(cst$29,_ms_,_mM_,_mN_)}; + caml_call4(Stdlib_Format[129],out,_a9_,_mt_,_mr_); + var _mu_=1 - inside_box; + return _mu_?caml_call2(Stdlib_Format[129],out,_a__):_mu_} + var _mv_=x[2]; + if(! _mv_)return caml_call2(Stdlib_Format[13],out,cst$33); + if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_a$_); + if(caml_call2(Stdlib_List[32],is_atom$0,_mv_)) + {var + _mw_=0, + _mx_=function(_mG_,_mH_){return format$0(_mw_,std,_mG_,_mH_)}, + _my_=function(_mE_,_mF_){return pp_list$0(cst$31,_mx_,_mE_,_mF_)}; + caml_call4(Stdlib_Format[129],out,_ba_,_my_,_mv_)} + else + {var + _mA_=0, + _mB_=function(_mK_,_mL_){return format$0(_mA_,std,_mK_,_mL_)}, + _mC_=function(_mI_,_mJ_){return pp_list$0(cst$32,_mB_,_mI_,_mJ_)}; + caml_call4(Stdlib_Format[129],out,_bc_,_mC_,_mv_)} + var _mz_=1 - inside_box; + return _mz_?caml_call2(Stdlib_Format[129],out,_bb_):_mz_} + function pp$1(opt,out,x) + {if(opt)var sth=opt[1],std=sth;else var std=0; + var _ml_=1; + function _mm_(_mn_,_mo_){return format$0(_ml_,std,_mn_,_mo_)} + return caml_call4(Stdlib_Format[129],out,_be_,_mm_,x)} + function pp$2(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 _mg_=param[1]; + if(365180284 > _mg_) + {if(3654863 <= _mg_) + {var x$1=param[2]; + caml_call2(Stdlib_Format[129],fmt,_bB_); + caml_call3(Stdlib_Format[129],fmt,_bC_,x$1); + return caml_call2(Stdlib_Format[129],fmt,_bD_)} + var x$2=param[2]; + caml_call2(Stdlib_Format[129],fmt,_bE_); + caml_call3(Stdlib_Format[129],fmt,_bF_,x$2); + return caml_call2(Stdlib_Format[129],fmt,_bG_)} + if(848054398 <= _mg_) + {if(963043957 <= _mg_) + {var xs=param[2]; + caml_call2(Stdlib_Format[129],fmt,_bh_); + caml_call2(Stdlib_Format[129],fmt,_bi_); var - _jg_=0, - _jh_= - function(sep,x) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_ba_); - pp$0(fmt,x); + _mh_=0, + _mi_= + function(sep,param) + {var value=param[2],key=param[1]; + if(sep)caml_call2(Stdlib_Format[129],fmt,_bj_); + caml_call2(Stdlib_Format[129],fmt,_bk_); + caml_call3(Stdlib_Format[129],fmt,_bl_,key); + caml_call2(Stdlib_Format[129],fmt,_bm_); + pp$2(fmt,value); + caml_call2(Stdlib_Format[129],fmt,_bn_); 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)} + caml_call3(Stdlib_List[25],_mi_,_mh_,xs); + caml_call2(Stdlib_Format[129],fmt,_bo_); + return caml_call2(Stdlib_Format[129],fmt,_bp_)} + var xs$0=param[2]; + caml_call2(Stdlib_Format[129],fmt,_bq_); + caml_call2(Stdlib_Format[129],fmt,_br_); + var + _mj_=0, + _mk_= + function(sep,x) + {if(sep)caml_call2(Stdlib_Format[129],fmt,_bs_); + pp$2(fmt,x); + return 1}; + caml_call3(Stdlib_List[25],_mk_,_mj_,xs$0); + caml_call2(Stdlib_Format[129],fmt,_bt_); + return caml_call2(Stdlib_Format[129],fmt,_bu_)} + if(737456202 <= _mg_) + {var x=param[2]; + caml_call2(Stdlib_Format[129],fmt,_bv_); + caml_call3(Stdlib_Format[129],fmt,_bw_,x); + return caml_call2(Stdlib_Format[129],fmt,_bx_)} + var x$0=param[2]; + caml_call2(Stdlib_Format[129],fmt,_by_); + caml_call3(Stdlib_Format[129],fmt,_bz_,x$0); + return caml_call2(Stdlib_Format[129],fmt,_bA_)} + function show$0(x){return caml_call3(Stdlib_Format[133],_bH_,pp$2,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_) + {var _ma_=a[1]; + if(365180285 <= _ma_) + {if(737456202 === _ma_) {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(848054398 === _ma_) {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$_}}} + catch(_mc_) + {_mc_ = caml_wrap_exception(_mc_); + if(_mc_[1] === Stdlib[6])return 0; + throw _mc_}}} else if (963043957 === - _i9_ + _ma_ && typeof b !== @@ -37451,47 +34888,49 @@ ys$0=b[2], xs$0=a[2], compare_keys= - function(param,_jc_) - {var key=_jc_[1],key$0=param[1]; + function(param,_mf_) + {var key=_mf_[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_) + _mb_= + function(param,_me_) {var - value=_jb_[2], - key=_jb_[1], + value=_me_[2], + key=_me_[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); + result$0=caml_call3(Stdlib_List[34],_mb_,xs$1,ys$1); return result$0} - catch(_ja_) - {_ja_ = caml_wrap_exception(_ja_); - if(_ja_[1] === Stdlib[6])return 0; - throw _ja_}}} + catch(_md_) + {_md_ = caml_wrap_exception(_md_); + if(_md_[1] === Stdlib[6])return 0; + throw _md_}}} else - if(-976970511 === _i9_) + if(-976970511 === _ma_) {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(3654863 === _ma_) {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]) + (365180284 <= _ma_ && 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)} + function pretty_print$0(std,out,x){return pp$1(std,out,x)} + function pretty_to_string$0(std,x) + {function _l9_(_l__,_l$_){return pp$1(std,_l__,_l$_)} + return caml_call3(Stdlib_Format[133],_bf_,_l9_,x)} + function pretty_to_channel$0(std,oc,x) + {var fmt=caml_call1(Stdlib_Format[108],oc); + function _l6_(_l7_,_l8_){return pp$1(std,_l7_,_l8_)} + return caml_call4(Stdlib_Format[129],fmt,_bg_,_l6_,x)} var from_channel=Stdlib_Lexing[2], from_string=Stdlib_Lexing[3], @@ -37501,48 +34940,48 @@ function hex$1(c) {if(65 <= c) {if(97 <= c) - {if(! (103 <= c))return (c - 97 | 0) + 10 | 0} + {if(103 > c)return (c - 97 | 0) + 10 | 0} else - if(! (71 <= c))return (c - 65 | 0) + 10 | 0} + if(71 > c)return (c - 65 | 0) + 10 | 0} else - if(! (9 < c - 48 >>> 0))return c - 48 | 0; - throw [0,Assert_failure,_bq_]} + if(9 >= c - 48 >>> 0)return c - 48 | 0; + throw [0,Assert_failure,_bI_]} 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); + _l5_=v[4]; + if(_l5_) + var s=_l5_[1],file_line=caml_call2(Stdlib_Printf[4],_bJ_,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); + ?caml_call2(Stdlib_Printf[4],_bK_,pos1 + 1 | 0) + :caml_call3(Stdlib_Printf[4],_bM_,pos1 + 1 | 0,pos2 + 1 | 0), + msg=caml_call5(Stdlib_Printf[4],_bL_,file_line,v[2],bytes,descr); return json_error(msg)} function lexer_error(descr,v,lexbuf) - {var _i6_=caml_call1(lexeme,lexbuf); + {var _l4_=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_]}]; + (caml_call3(Stdlib_Printf[4],_bN_,descr,_l4_),v,lexbuf)} + var read_junk=[0,function(param){throw [0,Assert_failure,_bO_]}]; 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), + (caml_call4(Stdlib_Printf[4],_bP_,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, + _bQ_=0 === (Stdlib[20] % 10 | 0)?0:1, + min10=(Stdlib[20] / 10 | 0) - _bQ_ | 0, + _bR_=0 === (Stdlib[19] % 10 | 0)?0:1, + max10=(Stdlib[19] / 10 | 0) + _bR_ | 0, Int_overflow=[248,cst_Yojson_Basic_Int_overflow,caml_fresh_oo_id(0)]; function extract_positive_int(lexbuf) {var @@ -37550,15 +34989,15 @@ stop=lexbuf[6], s=lexbuf[2], n=[0,0], - _i3_=stop - 1 | 0; - if(! (_i3_ < start)) + _l1_=stop - 1 | 0; + if(_l1_ >= 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} + var _l2_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) + _l2_ | 0; + var _l3_=i + 1 | 0; + if(_l1_ !== i){var i=_l3_;continue} break}} if(0 <= n[1])return n[1]; throw Int_overflow} @@ -37568,15 +35007,15 @@ stop=lexbuf[6], s=lexbuf[2], n=[0,0], - _i0_=stop - 1 | 0; - if(! (_i0_ < start)) + _lY_=stop - 1 | 0; + if(_lY_ >= 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} + var _lZ_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) - _lZ_ | 0; + var _l0_=i + 1 | 0; + if(_lY_ !== i){var i=_l0_;continue} break}} if(0 < n[1])throw Int_overflow; return n[1]} @@ -37584,73 +35023,162 @@ {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; + return caml_call4(Stdlib_Buffer[19],buf,lexbuf[2],lexbuf[5],len)} + function read_json$2(counter,v,lexbuf) + {var _lX_=0; + if(counter >= 50) + return caml_trampoline_return + (ocaml_lex_read_json_rec,[0,v,lexbuf,_lX_]); + var counter$0=counter + 1 | 0; + return ocaml_lex_read_json_rec(counter$0,v,lexbuf,_lX_)} + 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$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) + 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=ocaml_lex_state$0; + var ocaml_lex_state$0=ocaml_lex_state$1; 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; + switch(ocaml_lex_state$1) + {case 0:return _bS_; + case 1:return _bT_; + 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(Stdlib_Buffer[8],v[1]); + return [0,-976970511,finish_string$1(v,lexbuf)]; + case 7: + try + {var _lN_=[0,3654863,extract_positive_int(lexbuf)];return _lN_} + catch(_lW_) + {_lW_ = caml_wrap_exception(_lW_); + if(_lW_ === Int_overflow) + return lexer_error(cst_Int_overflow,v,lexbuf); + throw _lW_} + case 8: + try + {var _lO_=[0,3654863,extract_negative_int(lexbuf)];return _lO_} + catch(_lV_) + {_lV_ = caml_wrap_exception(_lV_); + if(_lV_ === Int_overflow) + return lexer_error(cst_Int_overflow$0,v,lexbuf); + throw _lV_} + 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 _lP_=acc[1]; + acc[1] = [0,[0,field_name,read_json(v,lexbuf)],_lP_]; + 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 _lQ_=acc[1]; + acc[1] = [0,[0,field_name$0,read_json(v,lexbuf)],_lQ_]}} + catch(_lU_) + {_lU_ = caml_wrap_exception(_lU_); + if(_lU_ === End_of_object) + return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; + throw _lU_} + case 11: + var acc$0=[0,0]; + try + {read_space(v,lexbuf); + read_array_end(lexbuf); + var _lR_=acc$0[1]; + acc$0[1] = [0,read_json(v,lexbuf),_lR_]; + for(;;) + {read_space(v,lexbuf); + read_array_sep(v,lexbuf); + read_space(v,lexbuf); + var _lS_=acc$0[1]; + acc$0[1] = [0,read_json(v,lexbuf),_lS_]}} + catch(_lT_) + {_lT_ = caml_wrap_exception(_lT_); + if(_lT_ === End_of_array) + return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; + throw _lT_} + 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) + return caml_trampoline_return(read_json$2,[0,v,lexbuf]); + var counter$0=counter + 1 | 0; + return read_json$2(counter$0,v,lexbuf); + case 15: + finish_comment(v,lexbuf); + if(counter >= 50) + return caml_trampoline_return(read_json$2,[0,v,lexbuf]); + var counter$1=counter + 1 | 0; + return read_json$2(counter$1,v,lexbuf); + case 16: + newline(v,lexbuf); + if(counter >= 50) + return caml_trampoline_return(read_json$2,[0,v,lexbuf]); + var counter$2=counter + 1 | 0; + return read_json$2(counter$2,v,lexbuf); + case 17: + if(counter >= 50) + return caml_trampoline_return(read_json$2,[0,v,lexbuf]); + var counter$3=counter + 1 | 0; + return read_json$2(counter$3,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 finish_string$1(v,lexbuf) + {a: 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; + {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) + switch(ocaml_lex_state$0) + {case 0:return caml_call1(Stdlib_Buffer[2],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}}} + function map_string(v,f,lexbuf) + {a: 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}} + {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) + switch(ocaml_lex_state$0) + {case 0: + var b=v[1],_lM_=caml_call1(Stdlib_Buffer[7],b); + return caml_call3(f,caml_call1(Stdlib_Buffer[2],b),0,_lM_); + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}}} function finish_escaped_char(v,lexbuf) {var ocaml_lex_state=68; for(;;) @@ -37664,23 +35192,23 @@ 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); + return caml_call2(Stdlib_Buffer[12],v[1],c); + case 1:return caml_call2(Stdlib_Buffer[12],v[1],8); + case 2:return caml_call2(Stdlib_Buffer[12],v[1],12); + case 3:return caml_call2(Stdlib_Buffer[12],v[1],10); + case 4:return caml_call2(Stdlib_Buffer[12],v[1],13); + case 5:return caml_call2(Stdlib_Buffer[12],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)) + _lG_=hex$1(d), + _lH_=hex$1(c$0) << 4, + _lI_=hex$1(b) << 8, + x=hex$1(a) << 12 | _lI_ | _lH_ | _lG_; + if(55296 <= x && 56319 >= x) {var ocaml_lex_state$1=82; for(;;) {var @@ -37697,11 +35225,11 @@ 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)) + _lJ_=hex$1(d$0), + _lK_=hex$1(c$1) << 4, + _lL_=hex$1(b$0) << 8, + y=hex$1(a$0) << 12 | _lL_ | _lK_ | _lJ_; + 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: @@ -37711,41 +35239,97 @@ 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; + 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(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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + switch(ocaml_lex_state$0) + {case 0:return -154522342; + case 1:caml_call1(Stdlib_Buffer[8],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} function finish_comment(v,lexbuf) {a: for(;;) @@ -37754,268 +35338,14 @@ {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)}}} + if(3 >= ocaml_lex_state$0 >>> 0) + 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} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}}} function read_eof(lexbuf) {var ocaml_lex_state=131; for(;;) @@ -38025,22 +35355,38 @@ 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}} + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + 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} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} function read_null_if_possible(v,lexbuf) {var ocaml_lex_state=147; for(;;) @@ -38050,25 +35396,24 @@ 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}} + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(5 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} function ocaml_lex_read_int_rec(v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -38082,26 +35427,26 @@ 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) + {var _lA_=extract_positive_int(lexbuf);return _lA_} + catch(_lF_) + {_lF_ = caml_wrap_exception(_lF_); + if(_lF_ === Int_overflow) return lexer_error(cst_Int_overflow$1,v,lexbuf); - throw _iH_} + throw _lF_} case 1: try - {var _iD_=extract_negative_int(lexbuf);return _iD_} - catch(_iG_) - {_iG_ = caml_wrap_exception(_iG_); - if(_iG_ === Int_overflow) + {var _lB_=extract_negative_int(lexbuf);return _lB_} + catch(_lE_) + {_lE_ = caml_wrap_exception(_lE_); + if(_lE_ === Int_overflow) return lexer_error(cst_Int_overflow$2,v,lexbuf); - throw _iG_} + throw _lE_} case 2: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$1(v,lexbuf); try - {var _iE_=caml_int_of_string(s);return _iE_} - catch(_iF_) + {var _lC_=caml_int_of_string(s);return _lC_} + catch(_lD_) {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)}}} @@ -38119,15 +35464,15 @@ 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)} + {var _lw_=caml_int_of_string(caml_call1(lexeme,lexbuf)); + return _lw_} + catch(_lz_){return lexer_error(cst_Int32_overflow,v,lexbuf)} case 1: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$1(v,lexbuf); try - {var _iz_=caml_int_of_string(s);return _iz_} - catch(_iA_) + {var _lx_=caml_int_of_string(s);return _lx_} + catch(_ly_) {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)}}} @@ -38146,15 +35491,15 @@ 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)} + {var _ls_=caml_int64_of_string(caml_call1(lexeme,lexbuf)); + return _ls_} + catch(_lv_){return lexer_error(cst_Int32_overflow$0,v,lexbuf)} case 1: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$1(v,lexbuf); try - {var _iv_=caml_int64_of_string(s);return _iv_} - catch(_iw_) + {var _lt_=caml_int64_of_string(s);return _lt_} + catch(_lu_) {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)}}} @@ -38176,14 +35521,14 @@ 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]); + caml_call1(Stdlib_Buffer[8],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) + {var _lq_=caml_float_of_string(s);return _lq_} + catch(_lr_) + {return caml_string_notequal(s,cst_Infinity$7) + ?caml_string_notequal(s,cst_Infinity$8) + ?caml_string_notequal(s,cst_NaN$3) ?custom_error(cst_Expected_a_number_but_foun,v,lexbuf) :Stdlib[24] :Stdlib[22] @@ -38198,32 +35543,57 @@ {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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Stdlib_Buffer[8],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Stdlib_Buffer[8],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(3 >= ocaml_lex_state$0 >>> 0) + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Stdlib_Buffer[8],v[1]);return map_string(v,f,lexbuf); + case 1: + var len=lexbuf[6] - lexbuf[5] | 0; + return caml_call3 + (f, + caml_call3(Stdlib_Bytes[8],lexbuf[2],lexbuf[5],len), + 0, + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} function ocaml_lex_read_sequence_rec (read_cell,init_acc,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; @@ -38246,12 +35616,11 @@ {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_} + acc[1] = caml_call3(read_cell,acc[1],v,lexbuf)}} + catch(_lp_) + {_lp_ = caml_wrap_exception(_lp_); + if(_lp_ === End_of_array)return acc[1]; + throw _lp_} 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) @@ -38272,37 +35641,61 @@ try {read_space(v,lexbuf); read_array_end(lexbuf); - var _in_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_in_]; + var _lm_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_lm_]; 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_} + var _ln_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_ln_]}} + catch(_lo_) + {_lo_ = caml_wrap_exception(_lo_); + if(_lo_ === End_of_array)return acc[1]; + throw _lo_} 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_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}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} function read_tuple_end(lexbuf) {var ocaml_lex_state=266; for(;;) @@ -38312,8 +35705,7 @@ 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}} + var ocaml_lex_state=ocaml_lex_state$0}} function read_tuple_end2(v,std,lexbuf) {var ocaml_lex_state=268; for(;;) @@ -38338,15 +35730,15 @@ {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)}}} + if(3 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} function read_tuple_sep2(v,std,lexbuf) {var ocaml_lex_state=276; for(;;) @@ -38397,12 +35789,11 @@ 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_} + acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf)}} + catch(_ll_) + {_ll_ = caml_wrap_exception(_ll_); + if(_ll_ === End_of_object)return acc[1]; + throw _ll_} 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) @@ -38414,120 +35805,145 @@ {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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(3 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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_])} + {var _lk_=322; + if(counter >= 50) + return caml_trampoline_return + (ocaml_lex_skip_json_rec,[0,v,lexbuf,_lk_]); + var counter$0=counter + 1 | 0; + return ocaml_lex_skip_json_rec(counter$0,v,lexbuf,_lk_)} function ocaml_lex_skip_json_rec(counter,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -38565,12 +35981,11 @@ 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_} + skip_json(v,lexbuf)}} + catch(_lj_) + {_lj_ = caml_wrap_exception(_lj_); + if(_lj_ === End_of_object)return 0; + throw _lj_} case 10: try {read_space(v,lexbuf); @@ -38580,36 +35995,35 @@ {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_} + skip_json(v,lexbuf)}} + catch(_li_) + {_li_ = caml_wrap_exception(_li_); + if(_li_ === End_of_array)return 0; + throw _li_} 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]); + if(counter >= 50) + return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); + var counter$0=counter + 1 | 0; + return skip_json$2(counter$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]); + if(counter >= 50) + return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); + var counter$1=counter + 1 | 0; + return skip_json$2(counter$1,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]); + if(counter >= 50) + return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); + var counter$2=counter + 1 | 0; + return skip_json$2(counter$2,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]); + if(counter >= 50) + return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); + var counter$3=counter + 1 | 0; + return skip_json$2(counter$3,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)}}} @@ -38621,161 +36035,55 @@ {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; + if(3 >= ocaml_lex_state$0 >>> 0) + 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)} 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; + var ocaml_lex_state=ocaml_lex_state$0}} + 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 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; + if(3 >= ocaml_lex_state$0 >>> 0) + 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)} 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}}}} + var ocaml_lex_state=ocaml_lex_state$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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + switch(ocaml_lex_state$0) + {case 0: + caml_call2(Stdlib_Buffer[12],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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_])} + {var _lh_=399; + if(counter >= 50) + return caml_trampoline_return + (ocaml_lex_buffer_json_rec,[0,v,lexbuf,_lh_]); + var counter$0=counter + 1 | 0; + return ocaml_lex_buffer_json_rec(counter$0,v,lexbuf,_lh_)} function ocaml_lex_buffer_json_rec(counter,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -38791,7 +36099,7 @@ case 1:return finish_buffer_stringlit(v,lexbuf); case 2: try - {caml_call2(Bi_outbuf[15],v[1],123); + {caml_call2(Stdlib_Buffer[12],v[1],123); buffer_space(v,lexbuf); buffer_object_end(v,lexbuf); buffer_ident(v,lexbuf); @@ -38807,15 +36115,14 @@ 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_} + buffer_json(v,lexbuf)}} + catch(_lg_) + {_lg_ = caml_wrap_exception(_lg_); + if(_lg_ === End_of_object)return 0; + throw _lg_} case 3: try - {caml_call2(Bi_outbuf[15],v[1],91); + {caml_call2(Stdlib_Buffer[12],v[1],91); buffer_space(v,lexbuf); buffer_array_end(v,lexbuf); buffer_json(v,lexbuf); @@ -38823,45 +36130,168 @@ {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_} + buffer_json(v,lexbuf)}} + catch(_lf_) + {_lf_ = caml_wrap_exception(_lf_); + if(_lf_ === End_of_array)return 0; + throw _lf_} 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]); + if(counter >= 50) + return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); + var counter$0=counter + 1 | 0; + return buffer_json$2(counter$0,v,lexbuf); case 7: - caml_call2(Bi_outbuf[13],v[1],cst$22); + caml_call2(Stdlib_Buffer[16],v[1],cst$34); 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]); + if(counter >= 50) + return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); + var counter$1=counter + 1 | 0; + return buffer_json$2(counter$1,v,lexbuf); case 8: - caml_call2(Bi_outbuf[15],v[1],10); + caml_call2(Stdlib_Buffer[12],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]); + if(counter >= 50) + return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); + var counter$2=counter + 1 | 0; + return buffer_json$2(counter$2,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]); + if(counter >= 50) + return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); + var counter$3=counter + 1 | 0; + return buffer_json$2(counter$3,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 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + switch(ocaml_lex_state$0) + {case 0:add_lexeme(v[1],lexbuf);newline(v,lexbuf);continue a; + case 1: + caml_call2(Stdlib_Buffer[16],v[1],cst$35); + finish_buffer_comment(v,lexbuf); + continue a; + case 2: + caml_call2(Stdlib_Buffer[12],v[1],10); + newline(v,lexbuf); + continue a; + case 3:add_lexeme(v[1],lexbuf);continue a; + default:return 0} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}}} + 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(Stdlib_Buffer[12],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}} + 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) + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],44); + case 1:caml_call2(Stdlib_Buffer[12],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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(Stdlib_Buffer[12],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}} + 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) + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],44); + case 1:caml_call2(Stdlib_Buffer[12],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[12],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[16],v[1],cst$36); + case 1:return long_error(cst_Unterminated_comment$0,v,lexbuf); + case 2: + caml_call2(Stdlib_Buffer[12],v[1],10); + newline(v,lexbuf); + continue a; + default:add_lexeme(v[1],lexbuf);continue a} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}}} function junk(lexbuf) {var ocaml_lex_state=513; for(;;) @@ -38870,40 +36300,38 @@ 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}} + var ocaml_lex_state=ocaml_lex_state$0}} 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); + 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_)} + {var _le_=read_list_rev(read_cell,v,lexbuf); + return caml_call1(Stdlib_List[9],_le_)} 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]} + if(! l)return [0]; + var + tl=l[2], + x=l[1], + len=caml_call1(Stdlib_List[1],l), + a=caml_make_vect(len,x), + r=[0,tl], + _lb_=len - 2 | 0; + if(_lb_ >= 0) + {var i=_lb_; + for(;;) + {var _lc_=caml_call1(Stdlib_List[5],r[1]); + caml_check_bound(a,i)[1 + i] = _lc_; + r[1] = caml_call1(Stdlib_List[6],r[1]); + var _ld_=i - 1 | 0; + if(0 !== i){var i=_ld_;continue} + break}} + return a} function read_fields(read_field,init_acc,v) - {return function(_ib_) - {return read_abstract_fields(read_ident,read_field,init_acc,v,_ib_)}} + {return function(_la_) + {return read_abstract_fields(read_ident,read_field,init_acc,v,_la_)}} function from_lexbuf(v,opt,lexbuf) {if(opt)var sth=opt[1],stream=sth;else var stream=0; read_space(v,lexbuf); @@ -38919,23 +36347,23 @@ {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_}} + _k__=from_lexbuf(v,0,lexbuf); + return _k__} + catch(_k$_) + {_k$_ = caml_wrap_exception(_k$_); + if(_k$_ === End_of_input)return json_error(cst_Blank_input_data); + throw _k$_}} 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__}} + _k8_=from_lexbuf(v,0,lexbuf); + return _k8_} + catch(_k9_) + {_k9_ = caml_wrap_exception(_k9_); + if(_k9_ === End_of_input)return json_error(cst_Blank_input_data$0); + throw _k9_}} function from_file(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); try @@ -38944,11 +36372,11 @@ 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) + function seq_from_lexbuf(v,opt,lexbuf) {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - function f(i) + function f(param) {try - {var _h8_=[0,from_lexbuf(v,stream,lexbuf)];return _h8_} + {var _k7_=[0,from_lexbuf(v,stream,lexbuf),f];return _k7_} catch(e) {e = caml_wrap_exception(e); if(e === End_of_input){caml_call1(fin,0);return 0} @@ -38957,93 +36385,96 @@ 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) + return f} + function seq_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) + return seq_from_lexbuf(v,0,caml_call2(from_string,0,s))} + function seq_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) + return seq_from_lexbuf(v,fin,lexbuf)} + function seq_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) + return seq_from_lexbuf(v,[0,fin],lexbuf)} + function lineseq_from_channel(buf,opt,fname,_kZ_,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) + if(_kZ_)var sth$0=_kZ_[1],lnum0=sth$0;else var lnum0=1; + var buf$0=buf || [0,caml_call1(Stdlib_Buffer[1],256)]; + function f(lnum,param) {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_} + _k2_=lnum + 1 | 0, + _k3_=function(_k6_){return f(_k2_,_k6_)}, + _k4_= + [0,[0,826371656,from_string$0(buf$0,fname,[0,lnum],line)],_k3_]; + return _k4_} 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) + if(e === Stdlib[12]){caml_call1(fin,0);return 0} + var _k1_=lnum + 1 | 0; + return [0,[0,3458171,e],function(_k5_){return f(_k1_,_k5_)}]}} + return function(_k0_){return f(lnum0,_k0_)}} + function lineseq_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)} + return lineseq_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} + function compact(std,s) + {return to_string$0(0,0,0,0,from_string$0(0,0,0,s))} 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; + var _kY_=cst_null$3; else var - _h4_=js[1], - _h5_= - 708012133 <= _h4_ - ?726928360 === _h4_ + _kX_=js[1], + _kY_= + 708012133 <= _kX_ + ?726928360 === _kX_ ?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]} + :848054398 <= _kX_ + ?963043957 <= _kX_?cst_object:cst_array + :737456202 <= _kX_?cst_bool:cst_variant + :3654863 <= _kX_ + ?365180284 <= _kX_?cst_float:cst_int + :-752863768 <= _kX_?cst_intlit:cst_string; + throw [0,Type_error,caml_call2(Stdlib[28],msg,_kY_),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_}} + {var _kV_=caml_call2(Stdlib_List[46],name,obj);return _kV_} + catch(_kW_) + {_kW_ = caml_wrap_exception(_kW_); + if(_kW_ === Stdlib[8])return 870828711; + throw _kW_}} 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)} + var _kU_=caml_call2(Stdlib[28],name,cst_of_non_object_type); + return typerr(caml_call2(Stdlib[28],cst_Can_t_get_member,_kU_),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)) + 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]} + _kS_=caml_call1(Stdlib[33],i), + _kT_=caml_call2(Stdlib[28],_kS_,cst_out_of_bounds); + throw [0,Undefined,caml_call2(Stdlib[28],cst_Index,_kT_),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)} + _kQ_=caml_call1(Stdlib[33],i), + _kR_=caml_call2(Stdlib[28],_kQ_,cst_of_non_array_type); + return typerr(caml_call2(Stdlib[28],cst_Can_t_get_index,_kR_),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)]} @@ -39064,17 +36495,17 @@ 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}} + {var _kP_=js[1]; + if(3654863 === _kP_){var i=js[2];return i} + if(365180284 === _kP_){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]}} + {var _kO_=js[1]; + if(3654863 === _kO_){var i=js[2];return [0,i]} + if(365180284 === _kO_){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} @@ -39097,7 +36528,7 @@ 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) + function to_string$1(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) @@ -39113,35 +36544,27 @@ 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)}} + {if(! l)return caml_call1(Stdlib_List[9],acc); + 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}} 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; + {if(! l)return caml_call1(Stdlib_List[9],acc); + 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} - return caml_call1(Stdlib_List[9],acc)}} + var l=tl}} 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}} + {var _kM_=[0,caml_call2(Stdlib_List[7],l,i)];return _kM_} + catch(_kN_){return 0}} return 0}, l)} function filter_list(l) @@ -39157,8 +36580,8 @@ {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}} + {var _kK_=[0,caml_call2(Stdlib_List[46],k,l)];return _kK_} + catch(_kL_){return 0}} return 0}, l)} function filter_assoc(l) @@ -39193,9 +36616,9 @@ {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]}} + {var _kJ_=param[1]; + if(3654863 === _kJ_){var x=param[2];return [0,x]} + if(365180284 === _kJ_){var x$0=param[2];return [0,x$0]}} return 0}, l)} function filter_string(l) @@ -39206,13 +36629,13 @@ 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_)} + {var _kH_=to_assoc(o); + function _kI_(param){var key=param[1];return key} + return caml_call1(caml_call1(Stdlib_List[19],_kI_),_kH_)} 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_)} + {var _kF_=to_assoc(o); + function _kG_(param){var value=param[2];return value} + return caml_call1(caml_call1(Stdlib_List[19],_kG_),_kF_)} function combine(first,second) {if (typeof first @@ -39235,65 +36658,64 @@ 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 _ky_=x[1]; + if(726928360 <= _ky_) + {if(737456202 !== _ky_) + {if(963043957 <= _ky_) {var l=x[2], - _hE_= + _kz_= 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_)]}} + _kA_=caml_call2(Stdlib_List[21],_kz_,l); + return [0,963043957,caml_call1(Stdlib_List[9],_kA_)]} + var l$0=x[2],_kB_=caml_call2(Stdlib_List[21],to_basic,l$0); + return [0,848054398,caml_call1(Stdlib_List[9],_kB_)]}} 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_]}}} + {if(-752863768 === _ky_){var s=x[2];return [0,-976970511,s]} + if(708012133 <= _ky_) + {var _kC_=x[2],_kD_=_kC_[2],_kE_=_kC_[1]; + if(! _kD_)return [0,-976970511,_kE_]; + var v=_kD_[1]; + return [0,848054398,[0,[0,-976970511,_kE_],[0,to_basic(v),0]]]}}} return x} function hex$2(n) - {var _hC_=10 <= n?n + 87 | 0:n + 48 | 0; - return caml_call1(Stdlib_Char[1],_hC_)} + {var _kx_=10 <= n?n + 87 | 0:n + 48 | 0; + return caml_call1(Stdlib_Char[1],_kx_)} 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); + {caml_call4(Stdlib_Buffer[18],ob,src,start[1],stop - start[1] | 0); + caml_call2(Stdlib_Buffer[16],ob,str); start[1] = stop + 1 | 0; return 0} function finish_string$2(src,start,ob) {try {var - _hB_= + _kw_= caml_call4 - (Bi_outbuf[14], + (Stdlib_Buffer[18], ob, src, start[1], caml_ml_string_length(src) - start[1] | 0); - return _hB_} + return _kw_} catch(exc) {exc = caml_wrap_exception(exc); caml_call4 (Stdlib_Printf[3], - _bC_, + _bU_, 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_; + {caml_call2(Stdlib_Buffer[12],ob,34); + var start=[0,0],_ku_=caml_ml_string_length(s) - 1 | 0,_kt_=0; + if(_ku_ >= 0) + {var i=_kt_; for(;;) - {var c=caml_string_get(s,i$0); + {var c=caml_string_get(s,i); if(92 === c) - write_special$1(s,start,i$0,ob,cst$25); + write_special$1(s,start,i,ob,cst$37); else {var switch$0=0; if(35 <= c) @@ -39302,12 +36724,12 @@ 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 0:write_special$1(s,start,i,ob,cst_b$1);break; + case 1:write_special$1(s,start,i,ob,cst_t$1);break; + case 2:write_special$1(s,start,i,ob,cst_n$1);break; + case 4:write_special$1(s,start,i,ob,cst_f$1);break; + case 5:write_special$1(s,start,i,ob,cst_r$1);break; + case 26:write_special$1(s,start,i,ob,cst$38);break; case 24: case 25:switch$0 = 2;switch$1 = 1;break; default:switch$0 = 1;switch$1 = 1}} @@ -39316,471 +36738,580 @@ 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; + caml_call4(Stdlib_Buffer[18],ob,s,start[1],i - start[1] | 0); + caml_call2(Stdlib_Buffer[16],ob,cst_u00$1); + var _kr_=hex$2(c >>> 4 | 0); + caml_call2(Stdlib_Buffer[12],ob,_kr_); + var _ks_=hex$2(c & 15); + caml_call2(Stdlib_Buffer[12],ob,_ks_); + start[1] = i + 1 | 0; break }} - var _hA_=i$0 + 1 | 0; - if(_hz_ !== i$0){var i$0=_hA_;continue} + var _kv_=i + 1 | 0; + if(_ku_ !== i){var i=_kv_;continue} break}} finish_string$2(s,start,ob); - return caml_call2(Bi_outbuf[15],ob,34)} + return caml_call2(Stdlib_Buffer[12],ob,34)} + function json_string_of_string$1(s) + {var ob=caml_call1(Stdlib_Buffer[1],10); + write_string$1(ob,s); + return caml_call1(Stdlib_Buffer[2],ob)} function write_null$1(ob,param) - {return caml_call2(Bi_outbuf[13],ob,cst_null$3)} + {return caml_call2(Stdlib_Buffer[16],ob,cst_null$4)} function write_bool$1(ob,x) - {var _hx_=x?cst_true$2:cst_false$2; - return caml_call2(Bi_outbuf[13],ob,_hx_)} + {var _kq_=x?cst_true$1:cst_false$1; + return caml_call2(Stdlib_Buffer[16],ob,_kq_)} 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; + _bV_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), + _bW_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])); + caml_call2(Stdlib[17],_bW_,_bV_); + function write_digits$1(s,x) + {if(0 === x)return 0; + var d=x % 10 | 0; + write_digits$1(s,x / 10 | 0); 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} + n=caml_call1(Stdlib[18],d), + _kp_=caml_call1(Stdlib_Char[1],n + 48 | 0); + return caml_call2(Stdlib_Buffer[12],s,_kp_)} 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} + {return 0 < x + ?write_digits$1(ob,x) + :0 <= x + ?caml_call2(Stdlib_Buffer[12],ob,48) + :(caml_call2(Stdlib_Buffer[12],ob,45),write_digits$1(ob,x))} function float_needs_period$1(s) {try - {var _ht_=caml_ml_string_length(s) - 1 | 0,_hs_=0; - if(! (_ht_ < 0)) - {var i=_hs_; + {var _kl_=caml_ml_string_length(s) - 1 | 0,_kk_=0; + if(_kl_ >= 0) + {var i=_kk_; for(;;) {var match=caml_string_get(s,i),switch$0=0; if(48 <= match) - {if(! (58 <= match))switch$0 = 1} + {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} + var _kn_=i + 1 | 0; + if(_kl_ !== i){var i=_kn_;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_} + var _km_=1; + return _km_} + catch(_ko_) + {_ko_ = caml_wrap_exception(_ko_); + if(_ko_ === Stdlib[3])return 0; + throw _ko_}} 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 _ki_=0. < x?cst_Infinity$9:cst_Infinity$10; + return caml_call2(Stdlib_Buffer[16],ob,_ki_)} + if(4 <= match)return caml_call2(Stdlib_Buffer[16],ob,cst_NaN$4); 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_} + s1=caml_call2(Stdlib_Printf[4],_bX_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_bY_,x); + caml_call2(Stdlib_Buffer[16],ob,s); + var _kj_=float_needs_period$1(s); + return _kj_?caml_call2(Stdlib_Buffer[16],ob,cst_0$5):_kj_} 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); + var s=caml_call2(Stdlib_Printf[4],_bZ_,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_} + {case 0:var s=caml_call2(Stdlib_Printf[4],_b0_,x);break; + case 1:var s=caml_call2(Stdlib_Printf[4],_b1_,x);break; + case 2:var s=caml_call2(Stdlib_Printf[4],_b2_,x);break; + case 3:var s=caml_call2(Stdlib_Printf[4],_b3_,x);break; + case 4:var s=caml_call2(Stdlib_Printf[4],_b4_,x);break; + case 5:var s=caml_call2(Stdlib_Printf[4],_b5_,x);break; + case 6:var s=caml_call2(Stdlib_Printf[4],_b6_,x);break; + case 7:var s=caml_call2(Stdlib_Printf[4],_b7_,x);break; + case 8:var s=caml_call2(Stdlib_Printf[4],_b8_,x);break; + case 9:var s=caml_call2(Stdlib_Printf[4],_b9_,x);break; + case 10:var s=caml_call2(Stdlib_Printf[4],_b__,x);break; + case 11:var s=caml_call2(Stdlib_Printf[4],_b$_,x);break; + case 12:var s=caml_call2(Stdlib_Printf[4],_ca_,x);break; + case 13:var s=caml_call2(Stdlib_Printf[4],_cb_,x);break; + case 14:var s=caml_call2(Stdlib_Printf[4],_cc_,x);break; + default:var s=caml_call2(Stdlib_Printf[4],_cd_,x)} + caml_call2(Stdlib_Buffer[16],ob,s); + var _kh_=float_needs_period$1(s); + return _kh_?caml_call2(Stdlib_Buffer[16],ob,cst_0$6):_kh_} 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_} + if(3 !== match) + return 4 <= match + ?caml_call2(Stdlib_Buffer[16],ob,cst_NaN$5) + :write_normal_float_prec$1(significant_figures,ob,x); + var _kg_=0. < x?cst_Infinity$11:cst_Infinity$12; + return caml_call2(Stdlib_Buffer[16],ob,_kg_)} function write_std_float$1(ob,x) {var match=caml_classify_float(x); if(3 === match) {var - _hi_= + _ke_= 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); + ?cst_Infinity_value_not_allowed$7 + :cst_Infinity_value_not_allowed$8; + return json_error(_ke_)} + if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$3); 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_} + s1=caml_call2(Stdlib_Printf[4],_ce_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_cf_,x); + caml_call2(Stdlib_Buffer[16],ob,s); + var _kf_=float_needs_period$1(s); + return _kf_?caml_call2(Stdlib_Buffer[16],ob,cst_0$7):_kf_} 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]; + if(3 !== match) + return 4 <= match + ?json_error(cst_NaN_value_not_allowed_in_s$4) + :write_normal_float_prec$1(significant_figures,ob,x); + var + _kd_= + 0. < x + ?cst_Infinity_value_not_allowed$9 + :cst_Infinity_value_not_allowed$10; + return json_error(_kd_)} + var write_intlit$0=Stdlib_Buffer[16]; 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)} + {if(! param$0)return 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)return 0; + var l=param[2],y=param[1]; + caml_call1(f_sep,x); + caml_call2(f_elt,x,y); + var param=l}} + function f_sep$1(ob){return caml_call2(Stdlib_Buffer[12],ob,44)} + function write_variant$0(ob,s,o) + {caml_call2(Stdlib_Buffer[12],ob,60); + write_string$1(ob,s); + if(o){var x=o[1];caml_call2(Stdlib_Buffer[12],ob,58);write_t$1(ob,x)} + return caml_call2(Stdlib_Buffer[12],ob,62)} function write_tuple$0(ob,l) - {caml_call2(Bi_outbuf[15],ob,40); + {caml_call2(Stdlib_Buffer[12],ob,40); iter2$1(write_t$1,f_sep$1,ob,l); - return caml_call2(Bi_outbuf[15],ob,41)} + return caml_call2(Stdlib_Buffer[12],ob,41)} function write_list$1(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); + {caml_call2(Stdlib_Buffer[12],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)} + return caml_call2(Stdlib_Buffer[12],ob,93)} 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); + caml_call2(Stdlib_Buffer[12],ob,58); return write_t$1(ob,x)} - caml_call2(Bi_outbuf[15],ob,123); + caml_call2(Stdlib_Buffer[12],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); + return caml_call2(Stdlib_Buffer[12],ob,125)} + function write_t$1(ob,x) + {if(typeof x === "number")return write_null$1(ob,0); + var _kc_=x[1]; + if(708012133 <= _kc_) + {if(726928360 === _kc_){var l=x[2];return write_tuple$0(ob,l)} + if(848054398 <= _kc_) + {if(963043957 <= _kc_){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 <= _kc_){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 <= _kc_) + {if(365180284 <= _kc_){var f=x[2];return write_float$1(ob,f)} + var i=x[2]; + return write_int$1(ob,i)} + if(-752863768 <= _kc_) + {var s$0=x[2];return caml_call2(Stdlib_Buffer[16],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)return write_string$1(ob,s); + var x=o[1]; + caml_call2(Stdlib_Buffer[12],ob,91); 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)} + caml_call2(Stdlib_Buffer[12],ob,44); + write_std_json$1(ob,x); + return caml_call2(Stdlib_Buffer[12],ob,93)} function write_std_tuple$0(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); + {caml_call2(Stdlib_Buffer[12],ob,91); iter2$1(write_std_json$1,f_sep$1,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} + return caml_call2(Stdlib_Buffer[12],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 _kb_=x[1]; + if(708012133 <= _kb_) + {if(726928360 === _kb_){var l=x[2];return write_std_tuple$0(ob,l)} + if(848054398 <= _kb_) + {if(963043957 <= _kb_) {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); + caml_call2(Stdlib_Buffer[12],ob,58); return write_std_json$1(ob,x)}; - caml_call2(Bi_outbuf[15],ob,123); + caml_call2(Stdlib_Buffer[12],ob,123); iter2$1(f_elt,f_sep$1,ob,l$0); - return caml_call2(Bi_outbuf[15],ob,125)} + return caml_call2(Stdlib_Buffer[12],ob,125)} var l$1=x[2]; - caml_call2(Bi_outbuf[15],ob,91); + caml_call2(Stdlib_Buffer[12],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)} + return caml_call2(Stdlib_Buffer[12],ob,93)} + if(737456202 <= _kb_){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)} + if(3654863 <= _kb_) + {if(365180284 <= _kb_){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)} + if(-752863768 <= _kb_) + {var s$0=x[2];return caml_call2(Stdlib_Buffer[16],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) + function to_buffer$1(opt,_ka_,ob,x) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$39; + if(_ka_)var sth$0=_ka_[1],std=sth$0;else var std=0; + if(std)write_std_json$1(ob,x);else write_t$1(ob,x); + return caml_call2(Stdlib_Buffer[16],ob,suf)} + function to_string$2(buf,opt,_j$_,std,x) {if(opt)var sth=opt[1],len=sth;else var len=256; + if(_j$_)var sth$0=_j$_[1],suf=sth$0;else var suf=cst$40; if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],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); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer$1([0,suf],std,ob$0,x); + var s=caml_call1(Stdlib_Buffer[2],ob$0); + caml_call1(Stdlib_Buffer[8],ob$0); return s} - function to_channel$2(buf,len,std,oc,x) - {if(buf) - var ob=buf[1],ob$0=ob; + function to_channel$1(buf,opt,_j__,std,oc,x) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + if(_j__)var sth$0=_j__[1],suf=sth$0;else var suf=cst$41; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var 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; + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer$1([0,suf],std,ob$0,x); + caml_call2(Stdlib_Buffer[10],oc,ob$0); + return caml_call1(Stdlib_Buffer[8],ob$0)} + function to_output$1(buf,opt,_j8_,std,out,x) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + if(_j8_)var sth$0=_j8_[1],suf=sth$0;else var suf=cst$42; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var 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); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer$1([0,suf],std,ob$0,x); + var _j9_=caml_call1(Stdlib_Buffer[7],ob$0); + caml_call4 + (caml_get_public_method(out,209784577,3), + out, + caml_call1(Stdlib_Buffer[2],ob$0), + 0, + _j9_); + return caml_call1(Stdlib_Buffer[8],ob$0)} + function to_file$1(len,std,opt,file,x) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$43; + 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_} + {to_channel$1(0,len,[0,suf],std,oc,x); + var _j7_=caml_call1(Stdlib[76],oc); + return _j7_} 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) + function seq_to_buffer$1(opt,std,ob,st) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$44; + var _j4_=[0,suf]; + function _j5_(_j6_){return to_buffer$1(_j4_,std,ob,_j6_)} + return caml_call2(Stdlib_Seq[4],_j5_,st)} + function seq_to_string$1(buf,opt,_j3_,std,st) {if(opt)var sth=opt[1],len=sth;else var len=256; + if(_j3_)var sth$0=_j3_[1],suf=sth$0;else var suf=cst$45; if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],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); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + seq_to_buffer$1([0,suf],std,ob$0,st); + var s=caml_call1(Stdlib_Buffer[2],ob$0); + caml_call1(Stdlib_Buffer[8],ob$0); return s} - function stream_to_channel$1(buf,len,std,oc,st) - {if(buf) - var ob=buf[1],ob$0=ob; + function seq_to_channel$1(buf,opt,_j1_,std,oc,seq) + {if(opt)var sth=opt[1],len=sth;else var len=2096; + if(_j1_)var sth$0=_j1_[1],suf=sth$0;else var suf=cst$46; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var 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); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + function _j2_(json) + {to_buffer$1([0,suf],std,ob$0,json); + caml_call2(Stdlib_Buffer[10],oc,ob$0); + return caml_call1(Stdlib_Buffer[8],ob$0)} + return caml_call2(Stdlib_Seq[4],_j2_,seq)} + function seq_to_file$1(len,opt,std,file,st) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$47; + 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_} + {seq_to_channel$1(0,len,[0,suf],std,oc,st); + var _j0_=caml_call1(Stdlib[76],oc); + return _j0_} 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 _jR_=x[1]; + if(726928361 <= _jR_) + {if(848054398 === _jR_) + {var l=x[2],_jS_=caml_call2(Stdlib_List[21],sort$1,l); + return [0,848054398,caml_call1(Stdlib_List[9],_jS_)]} + if(963043957 === _jR_) {var l$0=x[2], - _g6_= + _jT_= 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]; + _jU_=caml_call2(Stdlib_List[21],_jT_,l$0), + l$1=caml_call1(Stdlib_List[9],_jU_), + _jV_= + function(param,_jZ_) + {var b=_jZ_[1],a=param[1]; return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_g8_,l$1)]}} + return [0,963043957,caml_call2(Stdlib_List[57],_jV_,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); + if(708012133 === _jR_) + {var _jW_=x[2],_jX_=_jW_[2]; + if(_jX_) + {var v=_jX_[1],k=_jW_[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$_)]}} + if(726928360 <= _jR_) + {var l$2=x[2],_jY_=caml_call2(Stdlib_List[21],sort$1,l$2); + return [0,726928360,caml_call1(Stdlib_List[9],_jY_)]}} return x} - function pp$1(fmt,param) + function pp_list$1(sep,ppx,out,l) + {function pp_sep(out,param) + {return caml_call3(Stdlib_Format[129],out,_cg_,sep)} + return caml_call4(Stdlib_Format[123],[0,pp_sep],ppx,out,l)} + function is_atom$1(x) + {if(typeof x !== "number") + {var _jQ_=x[1],switch$0=0; + if(737456202 <= _jQ_) + {if(848054398 === _jQ_) + {if(x[2])switch$0 = 1} + else + if(963043957 <= _jQ_ && x[2])switch$0 = 1} + else + if(708012133 === _jQ_) + {if(x[2][2])switch$0 = 1} + else + if(726928360 <= _jQ_ && x[2])switch$0 = 1; + if(switch$0)return 0} + return 1} + function format$1(inside_box,std,out,x) + {var x$0=x; + for(;;) + {if(typeof x$0 === "number") + return caml_call2(Stdlib_Format[13],out,cst_null$5); + var _i9_=x$0[1]; + if(708012133 > _i9_) + {if(3654863 <= _i9_) + {if(365180284 > _i9_) + {var x$7=x$0[2],_i8_=caml_call1(Stdlib[33],x$7); + return caml_call2(Stdlib_Format[13],out,_i8_)} + var x$6=x$0[2]; + if(std) + {var ob$0=caml_call1(Stdlib_Buffer[1],20); + write_std_float$1(ob$0,x$6); + var s=caml_call1(Stdlib_Buffer[2],ob$0)} + else + {var ob=caml_call1(Stdlib_Buffer[1],20); + write_float$1(ob,x$6); + var s=caml_call1(Stdlib_Buffer[2],ob)} + return caml_call2(Stdlib_Format[13],out,s)} + if(-752863768 <= _i9_) + {var s$0=x$0[2];return caml_call2(Stdlib_Format[13],out,s$0)} + var s$1=x$0[2],_ju_=json_string_of_string$1(s$1); + return caml_call2(Stdlib_Format[13],out,_ju_)} + if(726928360 === _i9_) + {var l=x$0[2]; + if(std){var x$1=[0,848054398,l],x$0=x$1;continue} + if(0 === l)return caml_call2(Stdlib_Format[13],out,cst$48); + if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_ch_); + var + _i__=0, + _i$_=function(_jO_,_jP_){return format$1(_i__,std,_jO_,_jP_)}, + _ja_=function(_jM_,_jN_){return pp_list$1(cst$49,_i$_,_jM_,_jN_)}; + caml_call4(Stdlib_Format[129],out,_ci_,_ja_,l); + var _jb_=1 - inside_box; + return _jb_?caml_call2(Stdlib_Format[129],out,_cj_):_jb_} + if(848054398 <= _i9_) + {if(963043957 <= _i9_) + {var _jc_=x$0[2]; + if(! _jc_)return caml_call2(Stdlib_Format[13],out,cst$51); + if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_ck_); + var + _jd_= + function(out,param) + {var x=param[2],name=param[1],_jH_=1; + function _jI_(_jK_,_jL_){return format$1(_jH_,std,_jK_,_jL_)} + var _jJ_=json_string_of_string$1(name); + return caml_call5(Stdlib_Format[129],out,_ct_,_jJ_,_jI_,x)}, + _je_=function(_jF_,_jG_){return pp_list$1(cst$50,_jd_,_jF_,_jG_)}; + caml_call4(Stdlib_Format[129],out,_cl_,_je_,_jc_); + var _jf_=1 - inside_box; + return _jf_?caml_call2(Stdlib_Format[129],out,_cm_):_jf_} + var _jg_=x$0[2]; + if(! _jg_)return caml_call2(Stdlib_Format[13],out,cst$54); + if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_cn_); + if(caml_call2(Stdlib_List[32],is_atom$1,_jg_)) + {var + _jh_=0, + _ji_=function(_jz_,_jA_){return format$1(_jh_,std,_jz_,_jA_)}, + _jj_=function(_jx_,_jy_){return pp_list$1(cst$52,_ji_,_jx_,_jy_)}; + caml_call4(Stdlib_Format[129],out,_co_,_jj_,_jg_)} + else + {var + _jl_=0, + _jm_=function(_jD_,_jE_){return format$1(_jl_,std,_jD_,_jE_)}, + _jn_=function(_jB_,_jC_){return pp_list$1(cst$53,_jm_,_jB_,_jC_)}; + caml_call4(Stdlib_Format[129],out,_cq_,_jn_,_jg_)} + var _jk_=1 - inside_box; + return _jk_?caml_call2(Stdlib_Format[129],out,_cp_):_jk_} + if(737456202 <= _i9_) + {var x$2=x$0[2];return caml_call2(Stdlib_Format[25],out,x$2)} + var _jo_=x$0[2],_jp_=_jo_[2],_jq_=_jo_[1]; + if(_jp_) + {var x$3=_jp_[1]; + if(std) + {var + representation=[0,-976970511,_jq_], + x$4=[0,848054398,[0,representation,[0,x$3,0]]], + x$0=x$4; + continue} + var + op=json_string_of_string$1(_jq_), + _jr_=1, + _js_=function(_jv_,_jw_){return format$1(_jr_,std,_jv_,_jw_)}; + return caml_call5(Stdlib_Format[129],out,_cr_,op,_js_,x$3)} + if(std){var x$5=[0,-976970511,_jq_],x$0=x$5;continue} + var _jt_=json_string_of_string$1(_jq_); + return caml_call3(Stdlib_Format[129],out,_cs_,_jt_)}} + function pp$3(opt,out,x) + {if(opt)var sth=opt[1],std=sth;else var std=0; + var _i4_=1; + function _i5_(_i6_,_i7_){return format$1(_i4_,std,_i6_,_i7_)} + return caml_call4(Stdlib_Format[129],out,_cu_,_i5_,x)} + function pp$4(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 _iX_=param[1]; + if(708012133 <= _iX_) + {if(726928360 === _iX_) {var tup=param[2]; - caml_call2(Stdlib_Format[129],fmt,_b2_); - caml_call2(Stdlib_Format[129],fmt,_b3_); + caml_call2(Stdlib_Format[129],fmt,_cx_); + caml_call2(Stdlib_Format[129],fmt,_cy_); var - _gY_=0, - _gZ_= + _iY_=0, + _iZ_= function(sep,e) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_b4_); - pp$1(fmt,e); + {if(sep)caml_call2(Stdlib_Format[129],fmt,_cz_); + pp$4(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_) + caml_call3(Stdlib_List[25],_iZ_,_iY_,tup); + caml_call2(Stdlib_Format[129],fmt,_cA_); + return caml_call2(Stdlib_Format[129],fmt,_cB_)} + if(848054398 <= _iX_) + {if(963043957 <= _iX_) {var xs=param[2]; - caml_call2(Stdlib_Format[129],fmt,_b7_); - caml_call2(Stdlib_Format[129],fmt,_b8_); + caml_call2(Stdlib_Format[129],fmt,_cC_); + caml_call2(Stdlib_Format[129],fmt,_cD_); var - _g0_=0, - _g1_= + _i0_=0, + _i1_= 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_); + if(sep)caml_call2(Stdlib_Format[129],fmt,_cE_); + caml_call2(Stdlib_Format[129],fmt,_cF_); + caml_call3(Stdlib_Format[129],fmt,_cG_,key); + caml_call2(Stdlib_Format[129],fmt,_cH_); + pp$4(fmt,value); + caml_call2(Stdlib_Format[129],fmt,_cI_); 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_)} + caml_call3(Stdlib_List[25],_i1_,_i0_,xs); + caml_call2(Stdlib_Format[129],fmt,_cJ_); + return caml_call2(Stdlib_Format[129],fmt,_cK_)} var xs$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_ce_); - caml_call2(Stdlib_Format[129],fmt,_cf_); + caml_call2(Stdlib_Format[129],fmt,_cL_); + caml_call2(Stdlib_Format[129],fmt,_cM_); var - _g2_=0, - _g3_= + _i2_=0, + _i3_= function(sep,x) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_cg_); - pp$1(fmt,x); + {if(sep)caml_call2(Stdlib_Format[129],fmt,_cN_); + pp$4(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_) + caml_call3(Stdlib_List[25],_i3_,_i2_,xs$0); + caml_call2(Stdlib_Format[129],fmt,_cO_); + return caml_call2(Stdlib_Format[129],fmt,_cP_)} + if(737456202 <= _iX_) {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_)} + caml_call2(Stdlib_Format[129],fmt,_cQ_); + caml_call3(Stdlib_Format[129],fmt,_cR_,x); + return caml_call2(Stdlib_Format[129],fmt,_cS_)} 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_); + caml_call2(Stdlib_Format[129],fmt,_cT_); + caml_call2(Stdlib_Format[129],fmt,_cU_); + caml_call3(Stdlib_Format[129],fmt,_cV_,name); + caml_call2(Stdlib_Format[129],fmt,_cW_); 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)} + pp$4(fmt,x$0); + caml_call2(Stdlib_Format[13],fmt,cst$55)} 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_) + caml_call2(Stdlib_Format[129],fmt,_cX_); + return caml_call2(Stdlib_Format[129],fmt,_cY_)} + if(3654863 <= _iX_) + {if(365180284 <= _iX_) {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_)} + caml_call2(Stdlib_Format[129],fmt,_cZ_); + caml_call3(Stdlib_Format[129],fmt,_c0_,x$1); + return caml_call2(Stdlib_Format[129],fmt,_c1_)} 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_) + caml_call2(Stdlib_Format[129],fmt,_c2_); + caml_call3(Stdlib_Format[129],fmt,_c3_,x$2); + return caml_call2(Stdlib_Format[129],fmt,_c4_)} + if(-752863768 <= _iX_) {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_)} + caml_call2(Stdlib_Format[129],fmt,_c5_); + caml_call3(Stdlib_Format[129],fmt,_c6_,x$3); + return caml_call2(Stdlib_Format[129],fmt,_c7_)} 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)} + caml_call2(Stdlib_Format[129],fmt,_c8_); + caml_call3(Stdlib_Format[129],fmt,_c9_,x$4); + return caml_call2(Stdlib_Format[129],fmt,_c__)} + function show$1(x){return caml_call3(Stdlib_Format[133],_c$_,pp$4,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 _iQ_=a$0[1]; + if(708012133 <= _iQ_) {var switch$0=0; - if(737456203 <= _gQ_) - {if(848054398 === _gQ_) + if(737456203 <= _iQ_) + {if(848054398 === _iQ_) {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_ + _iQ_ && typeof b$0 !== @@ -39793,38 +37324,38 @@ ys$0=b$0[2], xs$0=a$0[2], compare_keys= - function(param,_gW_) - {var key=_gW_[1],key$0=param[1]; + function(param,_iW_) + {var key=_iW_[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_) + _iR_= + function(param,_iV_) {var - value=_gV_[2], - key=_gV_[1], + value=_iV_[2], + key=_iV_[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); + result$0=caml_call3(Stdlib_List[34],_iR_,xs$1,ys$1); return result$0} - catch(_gU_) - {_gU_ = caml_wrap_exception(_gU_); - if(_gU_[1] === Stdlib[6])return 0; - throw _gU_}}} + catch(_iU_) + {_iU_ = caml_wrap_exception(_iU_); + if(_iU_[1] === Stdlib[6])return 0; + throw _iU_}}} else - if(726928360 === _gQ_) + if(726928360 === _iQ_) {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(708012134 <= _iQ_) {if (737456202 <= - _gQ_ + _iQ_ && typeof b$0 !== @@ -39837,39 +37368,38 @@ else if(typeof b$0 !== "number" && 708012133 === b$0[1]) {var - _gS_=b$0[2], - value=_gS_[2], - name=_gS_[1], + _iS_=b$0[2], + value=_iS_[2], + name=_iS_[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} + if(! match$0)return 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} 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_}} + catch(_iT_) + {_iT_ = caml_wrap_exception(_iT_); + if(_iT_[1] === Stdlib[6])return 0; + throw _iT_}} else - if(-752863767 <= _gQ_) - {if(3654863 === _gQ_) + if(-752863767 <= _iQ_) + {if(3654863 === _iQ_) {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_ + _iQ_ && typeof b$0 !== @@ -39880,14 +37410,14 @@ 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(-976970511 === _iQ_) {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_ + _iQ_ && typeof b$0 !== @@ -39898,12 +37428,14 @@ 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)} + function pretty_print$1(std,out,x){return pp$3(std,out,x)} + function pretty_to_string$1(std,x) + {function _iN_(_iO_,_iP_){return pp$3(std,_iO_,_iP_)} + return caml_call3(Stdlib_Format[133],_cv_,_iN_,x)} + function pretty_to_channel$1(std,oc,x) + {var fmt=caml_call1(Stdlib_Format[108],oc); + function _iK_(_iL_,_iM_){return pp$3(std,_iL_,_iM_)} + return caml_call4(Stdlib_Format[129],fmt,_cw_,_iK_,x)} var from_channel$1=Stdlib_Lexing[2], from_string$1=Stdlib_Lexing[3], @@ -39913,48 +37445,48 @@ function hex$3(c) {if(65 <= c) {if(97 <= c) - {if(! (103 <= c))return (c - 97 | 0) + 10 | 0} + {if(103 > c)return (c - 97 | 0) + 10 | 0} else - if(! (71 <= c))return (c - 65 | 0) + 10 | 0} + if(71 > c)return (c - 65 | 0) + 10 | 0} else - if(! (9 < c - 48 >>> 0))return c - 48 | 0; - throw [0,Assert_failure,_cF_]} + if(9 >= c - 48 >>> 0)return c - 48 | 0; + throw [0,Assert_failure,_da_]} 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); + _iJ_=v[4]; + if(_iJ_) + var s=_iJ_[1],file_line=caml_call2(Stdlib_Printf[4],_db_,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); + ?caml_call2(Stdlib_Printf[4],_dc_,pos1 + 1 | 0) + :caml_call3(Stdlib_Printf[4],_de_,pos1 + 1 | 0,pos2 + 1 | 0), + msg=caml_call5(Stdlib_Printf[4],_dd_,file_line,v[2],bytes,descr); return json_error(msg)} function lexer_error$0(descr,v,lexbuf) - {var _gN_=caml_call1(lexeme$0,lexbuf); + {var _iI_=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_]}]; + (caml_call3(Stdlib_Printf[4],_df_,descr,_iI_),v,lexbuf)} + var read_junk$0=[0,function(param){throw [0,Assert_failure,_dg_]}]; 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), + (caml_call4(Stdlib_Printf[4],_dh_,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, + _di_=0 === (Stdlib[20] % 10 | 0)?0:1, + min10$0=(Stdlib[20] / 10 | 0) - _di_ | 0, + _dj_=0 === (Stdlib[19] % 10 | 0)?0:1, + max10$0=(Stdlib[19] / 10 | 0) + _dj_ | 0, Int_overflow$0=[248,cst_Yojson_Safe_Int_overflow,caml_fresh_oo_id(0)]; function extract_positive_int$0(lexbuf) {var @@ -39962,15 +37494,15 @@ stop=lexbuf[6], s=lexbuf[2], n=[0,0], - _gK_=stop - 1 | 0; - if(! (_gK_ < start)) + _iF_=stop - 1 | 0; + if(_iF_ >= 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} + var _iG_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) + _iG_ | 0; + var _iH_=i + 1 | 0; + if(_iF_ !== i){var i=_iH_;continue} break}} if(0 <= n[1])return n[1]; throw Int_overflow$0} @@ -39980,15 +37512,15 @@ stop=lexbuf[6], s=lexbuf[2], n=[0,0], - _gH_=stop - 1 | 0; - if(! (_gH_ < start)) + _iC_=stop - 1 | 0; + if(_iC_ >= 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} + var _iD_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) - _iD_ | 0; + var _iE_=i + 1 | 0; + if(_iC_ !== i){var i=_iE_;continue} break}} if(0 < n[1])throw Int_overflow$0; return n[1]} @@ -39996,103 +37528,184 @@ {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; + return caml_call4(Stdlib_Buffer[19],buf,lexbuf[2],lexbuf[5],len)} + function read_json$3(counter,v,lexbuf) + {var _iB_=0; + if(counter >= 50) + return caml_trampoline_return + (ocaml_lex_read_json_rec$0,[0,v,lexbuf,_iB_]); + var counter$0=counter + 1 | 0; + return ocaml_lex_read_json_rec$0(counter$0,v,lexbuf,_iB_)} + 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$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) + 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=ocaml_lex_state$0; + var ocaml_lex_state$0=ocaml_lex_state$1; 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; + switch(ocaml_lex_state$1) + {case 0:return _dk_; + case 1:return _dl_; + 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(Stdlib_Buffer[8],v[1]); + return [0,-976970511,finish_string$3(v,lexbuf)]; + case 7: + try + {var _io_=[0,3654863,extract_positive_int$0(lexbuf)];return _io_} + catch(_iA_) + {_iA_ = caml_wrap_exception(_iA_); + if(_iA_ === Int_overflow$0) + return [0,-752863768,caml_call1(lexeme$0,lexbuf)]; + throw _iA_} + case 8: + try + {var _ip_=[0,3654863,extract_negative_int$0(lexbuf)];return _ip_} + catch(_iz_) + {_iz_ = caml_wrap_exception(_iz_); + if(_iz_ === Int_overflow$0) + return [0,-752863768,caml_call1(lexeme$0,lexbuf)]; + throw _iz_} + 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 _iq_=acc[1]; + acc[1] = [0,[0,field_name,read_json$0(v,lexbuf)],_iq_]; + 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 _ir_=acc[1]; + acc[1] = [0,[0,field_name$0,read_json$0(v,lexbuf)],_ir_]}} + catch(_iy_) + {_iy_ = caml_wrap_exception(_iy_); + if(_iy_ === End_of_object) + return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; + throw _iy_} + case 11: + var acc$0=[0,0]; + try + {read_space$0(v,lexbuf); + read_array_end$0(lexbuf); + var _is_=acc$0[1]; + acc$0[1] = [0,read_json$0(v,lexbuf),_is_]; + for(;;) + {read_space$0(v,lexbuf); + read_array_sep$0(v,lexbuf); + read_space$0(v,lexbuf); + var _it_=acc$0[1]; + acc$0[1] = [0,read_json$0(v,lexbuf),_it_]}} + catch(_ix_) + {_ix_ = caml_wrap_exception(_ix_); + if(_ix_ === End_of_array) + return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; + throw _ix_} + case 12: + var acc$1=[0,0]; + try + {read_space$0(v,lexbuf); + read_tuple_end$0(lexbuf); + var _iu_=acc$1[1]; + acc$1[1] = [0,read_json$0(v,lexbuf),_iu_]; + for(;;) + {read_space$0(v,lexbuf); + read_tuple_sep$0(v,lexbuf); + read_space$0(v,lexbuf); + var _iv_=acc$1[1]; + acc$1[1] = [0,read_json$0(v,lexbuf),_iv_]}} + catch(_iw_) + {_iw_ = caml_wrap_exception(_iw_); + if(_iw_ === End_of_tuple) + return [0,726928360,caml_call1(Stdlib_List[9],acc$1[1])]; + throw _iw_} + 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) + return caml_trampoline_return(read_json$3,[0,v,lexbuf]); + var counter$0=counter + 1 | 0; + return read_json$3(counter$0,v,lexbuf); + case 15: + finish_comment$0(v,lexbuf); + if(counter >= 50) + return caml_trampoline_return(read_json$3,[0,v,lexbuf]); + var counter$1=counter + 1 | 0; + return read_json$3(counter$1,v,lexbuf); + case 16: + newline$0(v,lexbuf); + if(counter >= 50) + return caml_trampoline_return(read_json$3,[0,v,lexbuf]); + var counter$2=counter + 1 | 0; + return read_json$3(counter$2,v,lexbuf); + case 17: + if(counter >= 50) + return caml_trampoline_return(read_json$3,[0,v,lexbuf]); + var counter$3=counter + 1 | 0; + return read_json$3(counter$3,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 read_json$0(v,lexbuf) + {return caml_trampoline(read_json$3(0,v,lexbuf))} + function finish_string$3(v,lexbuf) + {a: 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; + {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) + switch(ocaml_lex_state$0) + {case 0:return caml_call1(Stdlib_Buffer[2],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}}} + function map_string$0(v,f,lexbuf) + {a: 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}} + {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) + switch(ocaml_lex_state$0) + {case 0: + var b=v[1],_in_=caml_call1(Stdlib_Buffer[7],b); + return caml_call3(f,caml_call1(Stdlib_Buffer[2],b),0,_in_); + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}}} function finish_escaped_char$0(v,lexbuf) {var ocaml_lex_state=68; for(;;) @@ -40106,23 +37719,23 @@ 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); + return caml_call2(Stdlib_Buffer[12],v[1],c); + case 1:return caml_call2(Stdlib_Buffer[12],v[1],8); + case 2:return caml_call2(Stdlib_Buffer[12],v[1],12); + case 3:return caml_call2(Stdlib_Buffer[12],v[1],10); + case 4:return caml_call2(Stdlib_Buffer[12],v[1],13); + case 5:return caml_call2(Stdlib_Buffer[12],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)) + _ih_=hex$3(d), + _ii_=hex$3(c$0) << 4, + _ij_=hex$3(b) << 8, + x=hex$3(a) << 12 | _ij_ | _ii_ | _ih_; + if(55296 <= x && 56319 >= x) {var ocaml_lex_state$1=82; for(;;) {var @@ -40139,11 +37752,11 @@ 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)) + _ik_=hex$3(d$0), + _il_=hex$3(c$1) << 4, + _im_=hex$3(b$0) << 8, + y=hex$3(a$0) << 12 | _im_ | _il_ | _ik_; + 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); @@ -40157,43 +37770,103 @@ 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; + 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(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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + switch(ocaml_lex_state$0) + {case 0:return -154522342; + case 1:caml_call1(Stdlib_Buffer[8],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} function finish_comment$0(v,lexbuf) {a: for(;;) @@ -40202,298 +37875,14 @@ {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)}}} + if(3 >= ocaml_lex_state$0 >>> 0) + 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} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}}} function read_eof$0(lexbuf) {var ocaml_lex_state=131; for(;;) @@ -40503,23 +37892,38 @@ 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}} + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + 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} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} function read_null_if_possible$0(v,lexbuf) {var ocaml_lex_state=147; for(;;) @@ -40529,27 +37933,25 @@ 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}} + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(5 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} function ocaml_lex_read_int_rec$0(v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -40563,26 +37965,26 @@ 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) + {var _ib_=extract_positive_int$0(lexbuf);return _ib_} + catch(_ig_) + {_ig_ = caml_wrap_exception(_ig_); + if(_ig_ === Int_overflow$0) return lexer_error$0(cst_Int_overflow$3,v,lexbuf); - throw _gl_} + throw _ig_} case 1: try - {var _gh_=extract_negative_int$0(lexbuf);return _gh_} - catch(_gk_) - {_gk_ = caml_wrap_exception(_gk_); - if(_gk_ === Int_overflow$0) + {var _ic_=extract_negative_int$0(lexbuf);return _ic_} + catch(_if_) + {_if_ = caml_wrap_exception(_if_); + if(_if_ === Int_overflow$0) return lexer_error$0(cst_Int_overflow$4,v,lexbuf); - throw _gk_} + throw _if_} case 2: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$3(v,lexbuf); try - {var _gi_=caml_int_of_string(s);return _gi_} - catch(_gj_) + {var _id_=caml_int_of_string(s);return _id_} + catch(_ie_) {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); @@ -40603,15 +38005,15 @@ 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)} + {var _h9_=caml_int_of_string(caml_call1(lexeme$0,lexbuf)); + return _h9_} + catch(_ia_){return lexer_error$0(cst_Int32_overflow$1,v,lexbuf)} case 1: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$3(v,lexbuf); try - {var _gd_=caml_int_of_string(s);return _gd_} - catch(_ge_) + {var _h__=caml_int_of_string(s);return _h__} + catch(_h$_) {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: @@ -40631,15 +38033,15 @@ 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)} + {var _h5_=caml_int64_of_string(caml_call1(lexeme$0,lexbuf)); + return _h5_} + catch(_h8_){return lexer_error$0(cst_Int32_overflow$2,v,lexbuf)} case 1: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$3(v,lexbuf); try - {var _f$_=caml_int64_of_string(s);return _f$_} - catch(_ga_) + {var _h6_=caml_int64_of_string(s);return _h6_} + catch(_h7_) {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: @@ -40662,14 +38064,14 @@ 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]); + caml_call1(Stdlib_Buffer[8],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) + {var _h3_=caml_float_of_string(s);return _h3_} + catch(_h4_) + {return caml_string_notequal(s,cst_Infinity$13) + ?caml_string_notequal(s,cst_Infinity$14) + ?caml_string_notequal(s,cst_NaN$6) ?custom_error$0(cst_Expected_a_number_but_foun$0,v,lexbuf) :Stdlib[24] :Stdlib[22] @@ -40686,36 +38088,59 @@ {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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Stdlib_Buffer[8],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Stdlib_Buffer[8],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(3 >= ocaml_lex_state$0 >>> 0) + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Stdlib_Buffer[8],v[1]);return map_string$0(v,f,lexbuf); + case 1: + var len=lexbuf[6] - lexbuf[5] | 0; + return caml_call3 + (f, + caml_call3(Stdlib_Bytes[8],lexbuf[2],lexbuf[5],len), + 0, + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} function ocaml_lex_read_sequence_rec$0 (read_cell,init_acc,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; @@ -40738,12 +38163,11 @@ {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_} + acc[1] = caml_call3(read_cell,acc[1],v,lexbuf)}} + catch(_h2_) + {_h2_ = caml_wrap_exception(_h2_); + if(_h2_ === End_of_array)return acc[1]; + throw _h2_} 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)}}} @@ -40765,24 +38189,48 @@ 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_]; + var _hZ_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_hZ_]; 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_} + var _h0_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_h0_]}} + catch(_h1_) + {_h1_ = caml_wrap_exception(_h1_); + if(_h1_ === End_of_array)return acc[1]; + throw _h1_} 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 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}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} function ocaml_lex_read_tuple_rec (read_cell,init_acc,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; @@ -40807,17 +38255,26 @@ 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_} + pos[1]++}} + catch(_hY_) + {_hY_ = caml_wrap_exception(_hY_); + if(_hY_ === End_of_tuple)return acc[1]; + throw _hY_} 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_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}} function read_tuple_end2$0(v,std,lexbuf) {var ocaml_lex_state=268; for(;;) @@ -40836,6 +38293,21 @@ if(std)throw End_of_tuple; return long_error$0(cst_Expected_or_but_found$17,v,lexbuf); default:return 0}}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} function read_tuple_sep2$0(v,std,lexbuf) {var ocaml_lex_state=276; for(;;) @@ -40887,12 +38359,11 @@ 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_} + acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf)}} + catch(_hX_) + {_hX_ = caml_wrap_exception(_hX_); + if(_hX_ === End_of_object)return acc[1]; + throw _hX_} 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)}}} @@ -40905,130 +38376,163 @@ {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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(3 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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_])} + {var _hW_=322; + if(counter >= 50) + return caml_trampoline_return + (ocaml_lex_skip_json_rec$0,[0,v,lexbuf,_hW_]); + var counter$0=counter + 1 | 0; + return ocaml_lex_skip_json_rec$0(counter$0,v,lexbuf,_hW_)} function ocaml_lex_skip_json_rec$0(counter,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -41066,12 +38570,11 @@ 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_} + skip_json$0(v,lexbuf)}} + catch(_hV_) + {_hV_ = caml_wrap_exception(_hV_); + if(_hV_ === End_of_object)return 0; + throw _hV_} case 10: try {read_space$0(v,lexbuf); @@ -41081,12 +38584,11 @@ {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_} + skip_json$0(v,lexbuf)}} + catch(_hU_) + {_hU_ = caml_wrap_exception(_hU_); + if(_hU_ === End_of_array)return 0; + throw _hU_} case 11: try {read_space$0(v,lexbuf); @@ -41096,46 +38598,61 @@ {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_} + skip_json$0(v,lexbuf)}} + catch(_hT_) + {_hT_ = caml_wrap_exception(_hT_); + if(_hT_ === End_of_tuple)return 0; + throw _hT_} 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]); + if(counter >= 50) + return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); + var counter$0=counter + 1 | 0; + return skip_json$3(counter$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]); + if(counter >= 50) + return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); + var counter$1=counter + 1 | 0; + return skip_json$3(counter$1,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]); + if(counter >= 50) + return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); + var counter$2=counter + 1 | 0; + return skip_json$3(counter$2,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]); + if(counter >= 50) + return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); + var counter$3=counter + 1 | 0; + return skip_json$3(counter$3,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; + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + function finish_buffer_variant(v,lexbuf) + {var ocaml_lex_state=461; for(;;) {var ocaml_lex_state$0= @@ -41146,192 +38663,51 @@ 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); + caml_call2(Stdlib_Buffer[12],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) + switch(ocaml_lex_state$2) + {case 0:return caml_call2(Stdlib_Buffer[12],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$1=ocaml_lex_state$2} + case 1:return caml_call2(Stdlib_Buffer[12],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$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}}}} + return custom_error$0(cst_Unexpected_end_of_input$85,v,lexbuf)}}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + switch(ocaml_lex_state$0) + {case 0: + caml_call2(Stdlib_Buffer[12],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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_])} + {var _hS_=399; + if(counter >= 50) + return caml_trampoline_return + (ocaml_lex_buffer_json_rec$0,[0,v,lexbuf,_hS_]); + var counter$0=counter + 1 | 0; + return ocaml_lex_buffer_json_rec$0(counter$0,v,lexbuf,_hS_)} function ocaml_lex_buffer_json_rec$0(counter,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -41347,7 +38723,7 @@ case 1:return finish_buffer_stringlit$0(v,lexbuf); case 2: try - {caml_call2(Bi_outbuf[15],v[1],123); + {caml_call2(Stdlib_Buffer[12],v[1],123); buffer_space$0(v,lexbuf); buffer_object_end$0(v,lexbuf); buffer_ident$0(v,lexbuf); @@ -41363,15 +38739,14 @@ 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_} + buffer_json$0(v,lexbuf)}} + catch(_hR_) + {_hR_ = caml_wrap_exception(_hR_); + if(_hR_ === End_of_object)return 0; + throw _hR_} case 3: try - {caml_call2(Bi_outbuf[15],v[1],91); + {caml_call2(Stdlib_Buffer[12],v[1],91); buffer_space$0(v,lexbuf); buffer_array_end$0(v,lexbuf); buffer_json$0(v,lexbuf); @@ -41379,15 +38754,14 @@ {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_} + buffer_json$0(v,lexbuf)}} + catch(_hQ_) + {_hQ_ = caml_wrap_exception(_hQ_); + if(_hQ_ === End_of_array)return 0; + throw _hQ_} case 4: try - {caml_call2(Bi_outbuf[15],v[1],40); + {caml_call2(Stdlib_Buffer[12],v[1],40); buffer_space$0(v,lexbuf); buffer_tuple_end(v,lexbuf); buffer_json$0(v,lexbuf); @@ -41395,82 +38769,198 @@ {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_} + buffer_json$0(v,lexbuf)}} + catch(_hP_) + {_hP_ = caml_wrap_exception(_hP_); + if(_hP_ === End_of_tuple)return 0; + throw _hP_} case 5: - caml_call2(Bi_outbuf[15],v[1],60); + caml_call2(Stdlib_Buffer[12],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]); + if(counter >= 50) + return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); + var counter$0=counter + 1 | 0; + return buffer_json$3(counter$0,v,lexbuf); case 7: - caml_call2(Bi_outbuf[13],v[1],cst$28); + caml_call2(Stdlib_Buffer[16],v[1],cst$56); 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]); + if(counter >= 50) + return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); + var counter$1=counter + 1 | 0; + return buffer_json$3(counter$1,v,lexbuf); case 8: - caml_call2(Bi_outbuf[15],v[1],10); + caml_call2(Stdlib_Buffer[12],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]); + if(counter >= 50) + return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); + var counter$2=counter + 1 | 0; + return buffer_json$3(counter$2,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]); + if(counter >= 50) + return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); + var counter$3=counter + 1 | 0; + return buffer_json$3(counter$3,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; + 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: - 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)}}} + if(3 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + switch(ocaml_lex_state$0) + {case 0:add_lexeme$0(v[1],lexbuf);newline$0(v,lexbuf);continue a; + case 1: + caml_call2(Stdlib_Buffer[16],v[1],cst$57); + finish_buffer_comment$0(v,lexbuf); + continue a; + case 2: + caml_call2(Stdlib_Buffer[12],v[1],10); + newline$0(v,lexbuf); + continue a; + case 3:add_lexeme$0(v[1],lexbuf);continue a; + default:return 0} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}}} + 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(Stdlib_Buffer[12],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}} + 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) + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],44); + case 1:caml_call2(Stdlib_Buffer[12],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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(Stdlib_Buffer[12],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}} + 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) + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],44); + case 1:caml_call2(Stdlib_Buffer[12],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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(Stdlib_Buffer[12],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}} + 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) + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],44); + case 1:caml_call2(Stdlib_Buffer[12],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[12],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[16],v[1],cst$58); + case 1:return long_error$0(cst_Unterminated_comment$2,v,lexbuf); + case 2: + caml_call2(Stdlib_Buffer[12],v[1],10); + newline$0(v,lexbuf); + continue a; + default:add_lexeme$0(v[1],lexbuf);continue a} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}}} function junk$0(lexbuf) {var ocaml_lex_state=513; for(;;) @@ -41479,40 +38969,38 @@ 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}} + var ocaml_lex_state=ocaml_lex_state$0}} 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); + 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_)} + {var _hO_=read_list_rev$0(read_cell,v,lexbuf); + return caml_call1(Stdlib_List[9],_hO_)} 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]} + if(! l)return [0]; + var + tl=l[2], + x=l[1], + len=caml_call1(Stdlib_List[1],l), + a=caml_make_vect(len,x), + r=[0,tl], + _hL_=len - 2 | 0; + if(_hL_ >= 0) + {var i=_hL_; + for(;;) + {var _hM_=caml_call1(Stdlib_List[5],r[1]); + caml_check_bound(a,i)[1 + i] = _hM_; + r[1] = caml_call1(Stdlib_List[6],r[1]); + var _hN_=i - 1 | 0; + if(0 !== i){var i=_hN_;continue} + break}} + return a} 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_)}} + {return function(_hK_) + {return read_abstract_fields$0(read_ident$0,read_field,init_acc,v,_hK_)}} function from_lexbuf$0(v,opt,lexbuf) {if(opt)var sth=opt[1],stream=sth;else var stream=0; read_space$0(v,lexbuf); @@ -41528,23 +39016,23 @@ {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_}} + _hI_=from_lexbuf$0(v,0,lexbuf); + return _hI_} + catch(_hJ_) + {_hJ_ = caml_wrap_exception(_hJ_); + if(_hJ_ === End_of_input)return json_error(cst_Blank_input_data$1); + throw _hJ_}} 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_}} + _hG_=from_lexbuf$0(v,0,lexbuf); + return _hG_} + catch(_hH_) + {_hH_ = caml_wrap_exception(_hH_); + if(_hH_ === End_of_input)return json_error(cst_Blank_input_data$2); + throw _hH_}} function from_file$0(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); try @@ -41553,11 +39041,11 @@ 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) + function seq_from_lexbuf$0(v,opt,lexbuf) {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - function f(i) + function f(param) {try - {var _fJ_=[0,from_lexbuf$0(v,stream$0,lexbuf)];return _fJ_} + {var _hF_=[0,from_lexbuf$0(v,stream$0,lexbuf),f];return _hF_} catch(e) {e = caml_wrap_exception(e); if(e === End_of_input){caml_call1(fin,0);return 0} @@ -41566,96 +39054,98 @@ 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) + return f} + function seq_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) + return seq_from_lexbuf$0(v,0,caml_call2(from_string$1,0,s))} + function seq_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) + return seq_from_lexbuf$0(v,fin,lexbuf)} + function seq_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) + return seq_from_lexbuf$0(v,[0,fin],lexbuf)} + function lineseq_from_channel$0(buf,opt,fname,_hx_,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) + if(_hx_)var sth$0=_hx_[1],lnum0=sth$0;else var lnum0=1; + var buf$0=buf || [0,caml_call1(Stdlib_Buffer[1],256)]; + function f(lnum,param) {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_} + _hA_=lnum + 1 | 0, + _hB_=function(_hE_){return f(_hA_,_hE_)}, + _hC_= + [0,[0,826371656,from_string$2(buf$0,fname,[0,lnum],line)],_hB_]; + return _hC_} 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) + if(e === Stdlib[12]){caml_call1(fin,0);return 0} + var _hz_=lnum + 1 | 0; + return [0,[0,3458171,e],function(_hD_){return f(_hz_,_hD_)}]}} + return function(_hy_){return f(lnum0,_hy_)}} + function lineseq_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)} + return lineseq_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} + {return to_string$2(0,0,0,0,from_string$2(0,0,0,s))} 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; + var _hw_=cst_null$6; else var - _fF_=js[1], - _fG_= - 708012133 <= _fF_ - ?726928360 === _fF_ + _hv_=js[1], + _hw_= + 708012133 <= _hv_ + ?726928360 === _hv_ ?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]} + :848054398 <= _hv_ + ?963043957 <= _hv_?cst_object$0:cst_array$0 + :737456202 <= _hv_?cst_bool$0:cst_variant$0 + :3654863 <= _hv_ + ?365180284 <= _hv_?cst_float$0:cst_int$0 + :-752863768 <= _hv_?cst_intlit$0:cst_string$0; + throw [0,Type_error$0,caml_call2(Stdlib[28],msg,_hw_),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_}} + {var _ht_=caml_call2(Stdlib_List[46],name,obj);return _ht_} + catch(_hu_) + {_hu_ = caml_wrap_exception(_hu_); + if(_hu_ === Stdlib[8])return 870828711; + throw _hu_}} 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)} + var _hs_=caml_call2(Stdlib[28],name,cst_of_non_object_type$0); + return typerr$0(caml_call2(Stdlib[28],cst_Can_t_get_member$0,_hs_),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)) + 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]} + _hq_=caml_call1(Stdlib[33],i), + _hr_=caml_call2(Stdlib[28],_hq_,cst_out_of_bounds$0); + throw [0,Undefined$0,caml_call2(Stdlib[28],cst_Index$0,_hr_),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)} + _ho_=caml_call1(Stdlib[33],i), + _hp_=caml_call2(Stdlib[28],_ho_,cst_of_non_array_type$0); + return typerr$0(caml_call2(Stdlib[28],cst_Can_t_get_index$0,_hp_),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)]} @@ -41676,17 +39166,17 @@ 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}} + {var _hn_=js[1]; + if(3654863 === _hn_){var i=js[2];return i} + if(365180284 === _hn_){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]}} + {var _hm_=js[1]; + if(3654863 === _hm_){var i=js[2];return [0,i]} + if(365180284 === _hm_){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} @@ -41709,7 +39199,7 @@ 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) + function to_string$3(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) @@ -41725,35 +39215,27 @@ 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)}} + {if(! l)return caml_call1(Stdlib_List[9],acc); + 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}} 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; + {if(! l)return caml_call1(Stdlib_List[9],acc); + 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} - return caml_call1(Stdlib_List[9],acc)}} + var l=tl}} 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}} + {var _hk_=[0,caml_call2(Stdlib_List[7],l,i)];return _hk_} + catch(_hl_){return 0}} return 0}, l)} function filter_list$0(l) @@ -41769,8 +39251,8 @@ {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}} + {var _hi_=[0,caml_call2(Stdlib_List[46],k,l)];return _hi_} + catch(_hj_){return 0}} return 0}, l)} function filter_assoc$0(l) @@ -41805,9 +39287,9 @@ {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]}} + {var _hh_=param[1]; + if(3654863 === _hh_){var x=param[2];return [0,x]} + if(365180284 === _hh_){var x$0=param[2];return [0,x$0]}} return 0}, l)} function filter_string$0(l) @@ -41818,13 +39300,13 @@ 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_)} + {var _hf_=to_assoc$0(o); + function _hg_(param){var key=param[1];return key} + return caml_call1(caml_call1(Stdlib_List[19],_hg_),_hf_)} 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_)} + {var _hd_=to_assoc$0(o); + function _he_(param){var value=param[2];return value} + return caml_call1(caml_call1(Stdlib_List[19],_he_),_hd_)} function combine$0(first,second) {if (typeof first @@ -41846,42 +39328,42 @@ 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_)} + {var _hc_=10 <= n?n + 87 | 0:n + 48 | 0; + return caml_call1(Stdlib_Char[1],_hc_)} 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); + {caml_call4(Stdlib_Buffer[18],ob,src,start[1],stop - start[1] | 0); + caml_call2(Stdlib_Buffer[16],ob,str); start[1] = stop + 1 | 0; return 0} function finish_string$4(src,start,ob) {try {var - _fj_= + _hb_= caml_call4 - (Bi_outbuf[14], + (Stdlib_Buffer[18], ob, src, start[1], caml_ml_string_length(src) - start[1] | 0); - return _fj_} + return _hb_} catch(exc) {exc = caml_wrap_exception(exc); caml_call4 (Stdlib_Printf[3], - _cR_, + _dm_, 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_; + {caml_call2(Stdlib_Buffer[12],ob,34); + var start=[0,0],_g$_=caml_ml_string_length(s) - 1 | 0,_g__=0; + if(_g$_ >= 0) + {var i=_g__; for(;;) - {var c=caml_string_get(s,i$0); + {var c=caml_string_get(s,i); if(92 === c) - write_special$2(s,start,i$0,ob,cst$31); + write_special$2(s,start,i,ob,cst$59); else {var switch$0=0; if(35 <= c) @@ -41890,12 +39372,12 @@ 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 0:write_special$2(s,start,i,ob,cst_b$2);break; + case 1:write_special$2(s,start,i,ob,cst_t$2);break; + case 2:write_special$2(s,start,i,ob,cst_n$2);break; + case 4:write_special$2(s,start,i,ob,cst_f$2);break; + case 5:write_special$2(s,start,i,ob,cst_r$2);break; + case 26:write_special$2(s,start,i,ob,cst$60);break; case 24: case 25:switch$0 = 2;switch$1 = 1;break; default:switch$0 = 1;switch$1 = 1}} @@ -41904,334 +39386,457 @@ 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; + caml_call4(Stdlib_Buffer[18],ob,s,start[1],i - start[1] | 0); + caml_call2(Stdlib_Buffer[16],ob,cst_u00$2); + var _g8_=hex$4(c >>> 4 | 0); + caml_call2(Stdlib_Buffer[12],ob,_g8_); + var _g9_=hex$4(c & 15); + caml_call2(Stdlib_Buffer[12],ob,_g9_); + start[1] = i + 1 | 0; break }} - var _fi_=i$0 + 1 | 0; - if(_fh_ !== i$0){var i$0=_fi_;continue} + var _ha_=i + 1 | 0; + if(_g$_ !== i){var i=_ha_;continue} break}} finish_string$4(s,start,ob); - return caml_call2(Bi_outbuf[15],ob,34)} + return caml_call2(Stdlib_Buffer[12],ob,34)} + function json_string_of_string$2(s) + {var ob=caml_call1(Stdlib_Buffer[1],10); + write_string$2(ob,s); + return caml_call1(Stdlib_Buffer[2],ob)} function write_null$2(ob,param) - {return caml_call2(Bi_outbuf[13],ob,cst_null$5)} + {return caml_call2(Stdlib_Buffer[16],ob,cst_null$7)} function write_bool$2(ob,x) - {var _ff_=x?cst_true$3:cst_false$3; - return caml_call2(Bi_outbuf[13],ob,_ff_)} + {var _g7_=x?cst_true$2:cst_false$2; + return caml_call2(Stdlib_Buffer[16],ob,_g7_)} 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_); + _dn_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), + _do_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])); + caml_call2(Stdlib[17],_do_,_dn_); var - write_intlit$1=Bi_outbuf[13], - write_floatlit$0=Bi_outbuf[13], - write_stringlit$0=Bi_outbuf[13]; + write_intlit$1=Stdlib_Buffer[16], + write_floatlit$0=Stdlib_Buffer[16], + write_stringlit$0=Stdlib_Buffer[16]; 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)} + {if(! param$0)return 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)return 0; + var l=param[2],y=param[1]; + caml_call1(f_sep,x); + caml_call2(f_elt,x,y); + var param=l}} + function f_sep$2(ob){return caml_call2(Stdlib_Buffer[12],ob,44)} + function write_variant$1(ob,s,o) + {caml_call2(Stdlib_Buffer[12],ob,60); + write_string$2(ob,s); + if(o){var x=o[1];caml_call2(Stdlib_Buffer[12],ob,58);write_t$2(ob,x)} + return caml_call2(Stdlib_Buffer[12],ob,62)} function write_tuple$1(ob,l) - {caml_call2(Bi_outbuf[15],ob,40); + {caml_call2(Stdlib_Buffer[12],ob,40); iter2$2(write_t$2,f_sep$2,ob,l); - return caml_call2(Bi_outbuf[15],ob,41)} + return caml_call2(Stdlib_Buffer[12],ob,41)} function write_list$2(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); + {caml_call2(Stdlib_Buffer[12],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)} + return caml_call2(Stdlib_Buffer[12],ob,93)} 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); + caml_call2(Stdlib_Buffer[12],ob,58); return write_t$2(ob,x)} - caml_call2(Bi_outbuf[15],ob,123); + caml_call2(Stdlib_Buffer[12],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); + return caml_call2(Stdlib_Buffer[12],ob,125)} + function write_t$2(ob,x) + {if(typeof x === "number")return write_null$2(ob,0); + var _g6_=x[1]; + if(737456202 <= _g6_) + {if(928231259 <= _g6_) + {if(963043957 <= _g6_){var l=x[2];return write_assoc$2(ob,l)} + var s=x[2]; + return caml_call2(Stdlib_Buffer[16],ob,s)} + if(848054398 <= _g6_){var l$0=x[2];return write_list$2(ob,l$0)} + var b=x[2]; + return write_bool$2(ob,b)} + if(708012133 <= _g6_) + {if(726928360 <= _g6_){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 <= _g6_) + {var s$1=x[2];return caml_call2(Stdlib_Buffer[16],ob,s$1)} + var s$2=x[2]; + return caml_call2(Stdlib_Buffer[16],ob,s$2)} + function write_std_variant$1(ob,s,o) + {if(! o)return write_string$2(ob,s); + var x=o[1]; + caml_call2(Stdlib_Buffer[12],ob,91); 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)} + caml_call2(Stdlib_Buffer[12],ob,44); + write_std_json$2(ob,x); + return caml_call2(Stdlib_Buffer[12],ob,93)} function write_std_tuple$1(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); + {caml_call2(Stdlib_Buffer[12],ob,91); iter2$2(write_std_json$2,f_sep$2,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} + return caml_call2(Stdlib_Buffer[12],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 _g5_=x[1]; + if(737456202 <= _g5_) + {if(928231259 <= _g5_) + {if(963043957 <= _g5_) {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); + caml_call2(Stdlib_Buffer[12],ob,58); return write_std_json$2(ob,x)}; - caml_call2(Bi_outbuf[15],ob,123); + caml_call2(Stdlib_Buffer[12],ob,123); iter2$2(f_elt,f_sep$2,ob,l); - return caml_call2(Bi_outbuf[15],ob,125)} + return caml_call2(Stdlib_Buffer[12],ob,125)} var s=x[2]; - return caml_call2(Bi_outbuf[13],ob,s)} - if(848054398 <= _fd_) + return caml_call2(Stdlib_Buffer[16],ob,s)} + if(848054398 <= _g5_) {var l$0=x[2]; - caml_call2(Bi_outbuf[15],ob,91); + caml_call2(Stdlib_Buffer[12],ob,91); iter2$2(write_std_json$2,f_sep$2,ob,l$0); - return caml_call2(Bi_outbuf[15],ob,93)} + return caml_call2(Stdlib_Buffer[12],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)} + if(708012133 <= _g5_) + {if(726928360 <= _g5_){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)} + if(-375152890 <= _g5_) + {var s$1=x[2];return caml_call2(Stdlib_Buffer[16],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) + return caml_call2(Stdlib_Buffer[16],ob,s$2)} + function to_buffer$2(opt,_g4_,ob,x) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$61; + if(_g4_)var sth$0=_g4_[1],std=sth$0;else var std=0; + if(std)write_std_json$2(ob,x);else write_t$2(ob,x); + return caml_call2(Stdlib_Buffer[16],ob,suf)} + function to_string$4(buf,opt,_g3_,std,x) {if(opt)var sth=opt[1],len=sth;else var len=256; + if(_g3_)var sth$0=_g3_[1],suf=sth$0;else var suf=cst$62; if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],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); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer$2([0,suf],std,ob$0,x); + var s=caml_call1(Stdlib_Buffer[2],ob$0); + caml_call1(Stdlib_Buffer[8],ob$0); return s} - function to_channel$3(buf,len,std,oc,x) - {if(buf) - var ob=buf[1],ob$0=ob; + function to_channel$2(buf,opt,_g2_,std,oc,x) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + if(_g2_)var sth$0=_g2_[1],suf=sth$0;else var suf=cst$63; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var 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; + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer$2([0,suf],std,ob$0,x); + caml_call2(Stdlib_Buffer[10],oc,ob$0); + return caml_call1(Stdlib_Buffer[8],ob$0)} + function to_output$2(buf,opt,_g0_,std,out,x) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + if(_g0_)var sth$0=_g0_[1],suf=sth$0;else var suf=cst$64; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var 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); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer$2([0,suf],std,ob$0,x); + var _g1_=caml_call1(Stdlib_Buffer[7],ob$0); + caml_call4 + (caml_get_public_method(out,209784577,4), + out, + caml_call1(Stdlib_Buffer[2],ob$0), + 0, + _g1_); + return caml_call1(Stdlib_Buffer[8],ob$0)} + function to_file$2(len,std,opt,file,x) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$65; + 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_} + {to_channel$2(0,len,[0,suf],std,oc,x); + var _gZ_=caml_call1(Stdlib[76],oc); + return _gZ_} 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) + function seq_to_buffer$2(opt,std,ob,st) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$66; + var _gW_=[0,suf]; + function _gX_(_gY_){return to_buffer$2(_gW_,std,ob,_gY_)} + return caml_call2(Stdlib_Seq[4],_gX_,st)} + function seq_to_string$2(buf,opt,_gV_,std,st) {if(opt)var sth=opt[1],len=sth;else var len=256; + if(_gV_)var sth$0=_gV_[1],suf=sth$0;else var suf=cst$67; if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],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); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + seq_to_buffer$2([0,suf],std,ob$0,st); + var s=caml_call1(Stdlib_Buffer[2],ob$0); + caml_call1(Stdlib_Buffer[8],ob$0); return s} - function stream_to_channel$2(buf,len,std,oc,st) - {if(buf) - var ob=buf[1],ob$0=ob; + function seq_to_channel$2(buf,opt,_gT_,std,oc,seq) + {if(opt)var sth=opt[1],len=sth;else var len=2096; + if(_gT_)var sth$0=_gT_[1],suf=sth$0;else var suf=cst$68; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var 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); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + function _gU_(json) + {to_buffer$2([0,suf],std,ob$0,json); + caml_call2(Stdlib_Buffer[10],oc,ob$0); + return caml_call1(Stdlib_Buffer[8],ob$0)} + return caml_call2(Stdlib_Seq[4],_gU_,seq)} + function seq_to_file$2(len,opt,std,file,st) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$69; + 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$_} + {seq_to_channel$2(0,len,[0,suf],std,oc,st); + var _gS_=caml_call1(Stdlib[76],oc); + return _gS_} 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 _gJ_=x[1]; + if(726928361 <= _gJ_) + {if(848054398 === _gJ_) + {var l=x[2],_gK_=caml_call2(Stdlib_List[21],sort$2,l); + return [0,848054398,caml_call1(Stdlib_List[9],_gK_)]} + if(963043957 === _gJ_) {var l$0=x[2], - _e4_= + _gL_= 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]; + _gM_=caml_call2(Stdlib_List[21],_gL_,l$0), + l$1=caml_call1(Stdlib_List[9],_gM_), + _gN_= + function(param,_gR_) + {var b=_gR_[1],a=param[1]; return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_e6_,l$1)]}} + return [0,963043957,caml_call2(Stdlib_List[57],_gN_,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); + if(708012133 === _gJ_) + {var _gO_=x[2],_gP_=_gO_[2]; + if(_gP_) + {var v=_gP_[1],k=_gO_[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_)]}} + if(726928360 <= _gJ_) + {var l$2=x[2],_gQ_=caml_call2(Stdlib_List[21],sort$2,l$2); + return [0,726928360,caml_call1(Stdlib_List[9],_gQ_)]}} return x} - function pp$2(fmt,param) + function pp_list$2(sep,ppx,out,l) + {function pp_sep(out,param) + {return caml_call3(Stdlib_Format[129],out,_dp_,sep)} + return caml_call4(Stdlib_Format[123],[0,pp_sep],ppx,out,l)} + function is_atom$2(x) + {if(typeof x !== "number") + {var _gI_=x[1],switch$0=0; + if(737456202 <= _gI_) + {if(848054398 === _gI_) + {if(x[2])switch$0 = 1} + else + if(963043957 <= _gI_ && x[2])switch$0 = 1} + else + if(708012133 === _gI_) + {if(x[2][2])switch$0 = 1} + else + if(726928360 <= _gI_ && x[2])switch$0 = 1; + if(switch$0)return 0} + return 1} + function format$2(inside_box,std,out,x) + {var x$0=x; + for(;;) + {if(typeof x$0 === "number") + return caml_call2(Stdlib_Format[13],out,cst_null$8); + var _f2_=x$0[1]; + if(737456202 <= _f2_) + {if(928231259 <= _f2_) + {if(963043957 > _f2_) + {var s=x$0[2];return caml_call2(Stdlib_Format[13],out,s)} + var _f3_=x$0[2]; + if(! _f3_)return caml_call2(Stdlib_Format[13],out,cst$71); + if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_dq_); + var + _f4_= + function(out,param) + {var x=param[2],name=param[1],_gD_=1; + function _gE_(_gG_,_gH_){return format$2(_gD_,std,_gG_,_gH_)} + var _gF_=json_string_of_string$2(name); + return caml_call5(Stdlib_Format[129],out,_dC_,_gF_,_gE_,x)}, + _f5_=function(_gB_,_gC_){return pp_list$2(cst$70,_f4_,_gB_,_gC_)}; + caml_call4(Stdlib_Format[129],out,_dr_,_f5_,_f3_); + var _f6_=1 - inside_box; + return _f6_?caml_call2(Stdlib_Format[129],out,_ds_):_f6_} + if(848054398 > _f2_) + {var x$1=x$0[2];return caml_call2(Stdlib_Format[25],out,x$1)} + var _f7_=x$0[2]; + if(! _f7_)return caml_call2(Stdlib_Format[13],out,cst$74); + if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_dt_); + if(caml_call2(Stdlib_List[32],is_atom$2,_f7_)) + {var + _f8_=0, + _f9_=function(_gv_,_gw_){return format$2(_f8_,std,_gv_,_gw_)}, + _f__=function(_gt_,_gu_){return pp_list$2(cst$72,_f9_,_gt_,_gu_)}; + caml_call4(Stdlib_Format[129],out,_du_,_f__,_f7_)} + else + {var + _ga_=0, + _gb_=function(_gz_,_gA_){return format$2(_ga_,std,_gz_,_gA_)}, + _gc_=function(_gx_,_gy_){return pp_list$2(cst$73,_gb_,_gx_,_gy_)}; + caml_call4(Stdlib_Format[129],out,_dw_,_gc_,_f7_)} + var _f$_=1 - inside_box; + return _f$_?caml_call2(Stdlib_Format[129],out,_dv_):_f$_} + if(708012133 > _f2_) + {if(-375152890 <= _f2_) + {var s$0=x$0[2];return caml_call2(Stdlib_Format[13],out,s$0)} + var s$1=x$0[2]; + return caml_call2(Stdlib_Format[13],out,s$1)} + if(726928360 <= _f2_) + {var l=x$0[2]; + if(std){var x$2=[0,848054398,l],x$0=x$2;continue} + if(0 === l)return caml_call2(Stdlib_Format[13],out,cst$75); + if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_dx_); + var + _gd_=0, + _ge_=function(_gr_,_gs_){return format$2(_gd_,std,_gr_,_gs_)}, + _gf_=function(_gp_,_gq_){return pp_list$2(cst$76,_ge_,_gp_,_gq_)}; + caml_call4(Stdlib_Format[129],out,_dy_,_gf_,l); + var _gg_=1 - inside_box; + return _gg_?caml_call2(Stdlib_Format[129],out,_dz_):_gg_} + var _gh_=x$0[2],_gi_=_gh_[2],_gj_=_gh_[1]; + if(_gi_) + {var x$3=_gi_[1]; + if(std) + {var + representation=[0,-375152890,_gj_], + x$4=[0,848054398,[0,representation,[0,x$3,0]]], + x$0=x$4; + continue} + var + op=json_string_of_string$2(_gj_), + _gk_=1, + _gl_=function(_gn_,_go_){return format$2(_gk_,std,_gn_,_go_)}; + return caml_call5(Stdlib_Format[129],out,_dA_,op,_gl_,x$3)} + if(std){var x$5=[0,-375152890,_gj_],x$0=x$5;continue} + var _gm_=json_string_of_string$2(_gj_); + return caml_call3(Stdlib_Format[129],out,_dB_,_gm_)}} + function pp$5(opt,out,x) + {if(opt)var sth=opt[1],std=sth;else var std=0; + var _fY_=1; + function _fZ_(_f0_,_f1_){return format$2(_fY_,std,_f0_,_f1_)} + return caml_call4(Stdlib_Format[129],out,_dD_,_fZ_,x)} + function pp$6(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 _fR_=param[1]; + if(737456202 <= _fR_) + {if(928231259 <= _fR_) + {if(963043957 <= _fR_) {var xs=param[2]; - caml_call2(Stdlib_Format[129],fmt,_cU_); - caml_call2(Stdlib_Format[129],fmt,_cV_); + caml_call2(Stdlib_Format[129],fmt,_dG_); + caml_call2(Stdlib_Format[129],fmt,_dH_); var - _eW_=0, - _eX_= + _fS_=0, + _fT_= 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_); + if(sep)caml_call2(Stdlib_Format[129],fmt,_dI_); + caml_call2(Stdlib_Format[129],fmt,_dJ_); + caml_call3(Stdlib_Format[129],fmt,_dK_,key); + caml_call2(Stdlib_Format[129],fmt,_dL_); + pp$6(fmt,value); + caml_call2(Stdlib_Format[129],fmt,_dM_); 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_)} + caml_call3(Stdlib_List[25],_fT_,_fS_,xs); + caml_call2(Stdlib_Format[129],fmt,_dN_); + return caml_call2(Stdlib_Format[129],fmt,_dO_)} 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_) + caml_call2(Stdlib_Format[129],fmt,_dP_); + caml_call3(Stdlib_Format[129],fmt,_dQ_,x); + return caml_call2(Stdlib_Format[129],fmt,_dR_)} + if(848054398 <= _fR_) {var xs$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_c6_); - caml_call2(Stdlib_Format[129],fmt,_c7_); + caml_call2(Stdlib_Format[129],fmt,_dS_); + caml_call2(Stdlib_Format[129],fmt,_dT_); var - _eY_=0, - _eZ_= + _fU_=0, + _fV_= function(sep,x) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_c8_); - pp$2(fmt,x); + {if(sep)caml_call2(Stdlib_Format[129],fmt,_dU_); + pp$6(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__)} + caml_call3(Stdlib_List[25],_fV_,_fU_,xs$0); + caml_call2(Stdlib_Format[129],fmt,_dV_); + return caml_call2(Stdlib_Format[129],fmt,_dW_)} 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_) + caml_call2(Stdlib_Format[129],fmt,_dX_); + caml_call3(Stdlib_Format[129],fmt,_dY_,x$0); + return caml_call2(Stdlib_Format[129],fmt,_dZ_)} + if(708012133 <= _fR_) + {if(726928360 <= _fR_) {var tup=param[2]; - caml_call2(Stdlib_Format[129],fmt,_dc_); - caml_call2(Stdlib_Format[129],fmt,_dd_); + caml_call2(Stdlib_Format[129],fmt,_d0_); + caml_call2(Stdlib_Format[129],fmt,_d1_); var - _e0_=0, - _e1_= + _fW_=0, + _fX_= function(sep,e) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_de_); - pp$2(fmt,e); + {if(sep)caml_call2(Stdlib_Format[129],fmt,_d2_); + pp$6(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_)} + caml_call3(Stdlib_List[25],_fX_,_fW_,tup); + caml_call2(Stdlib_Format[129],fmt,_d3_); + return caml_call2(Stdlib_Format[129],fmt,_d4_)} 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_); + caml_call2(Stdlib_Format[129],fmt,_d5_); + caml_call2(Stdlib_Format[129],fmt,_d6_); + caml_call3(Stdlib_Format[129],fmt,_d7_,name); + caml_call2(Stdlib_Format[129],fmt,_d8_); 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)} + pp$6(fmt,x$1); + caml_call2(Stdlib_Format[13],fmt,cst$77)} 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_) + caml_call2(Stdlib_Format[129],fmt,_d9_); + return caml_call2(Stdlib_Format[129],fmt,_d__)} + if(-375152890 <= _fR_) {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_)} + caml_call2(Stdlib_Format[129],fmt,_d$_); + caml_call3(Stdlib_Format[129],fmt,_ea_,x$2); + return caml_call2(Stdlib_Format[129],fmt,_eb_)} 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)} + caml_call2(Stdlib_Format[129],fmt,_ec_); + caml_call3(Stdlib_Format[129],fmt,_ed_,x$3); + return caml_call2(Stdlib_Format[129],fmt,_ee_)} + function show$2(x){return caml_call3(Stdlib_Format[133],_ef_,pp$6,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_) + {var _fK_=a$0[1],switch$0=0; + if(726928361 <= _fK_) + {if(848054399 <= _fK_) + {if(928231259 === _fK_) {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_ + _fK_ && typeof b$0 !== @@ -42244,37 +39849,37 @@ ys=b$0[2], xs=a$0[2], compare_keys= - function(param,_eU_) - {var key=_eU_[1],key$0=param[1]; + function(param,_fQ_) + {var key=_fQ_[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_) + _fL_= + function(param,_fP_) {var - value=_eT_[2], - key=_eT_[1], + value=_fP_[2], + key=_fP_[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); + result=caml_call3(Stdlib_List[34],_fL_,xs$0,ys$0); return result} - catch(_eS_) - {_eS_ = caml_wrap_exception(_eS_); - if(_eS_[1] === Stdlib[6])return 0; - throw _eS_}}} + catch(_fO_) + {_fO_ = caml_wrap_exception(_fO_); + if(_fO_[1] === Stdlib[6])return 0; + throw _fO_}}} else - if(737456202 === _eO_) + if(737456202 === _fK_) {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_ + _fK_ && typeof b$0 !== @@ -42285,30 +39890,29 @@ 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(-375152889 <= _fK_) + {if(708012133 === _fK_) {if(typeof b$0 !== "number" && 708012133 === b$0[1]) {var - _eQ_=b$0[2], - value=_eQ_[2], - name=_eQ_[1], + _fM_=b$0[2], + value=_fM_[2], + name=_fM_[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} + if(! match$0)return 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}} else if (726928360 <= - _eO_ + _fK_ && typeof b$0 !== @@ -42319,14 +39923,14 @@ b$0[1]) {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} else - if(-752863768 === _eO_) + if(-752863768 === _fK_) {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_ + _fK_ && typeof b$0 !== @@ -42340,17 +39944,19 @@ 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_}} + catch(_fN_) + {_fN_ = caml_wrap_exception(_fN_); + if(_fN_[1] === Stdlib[6])return 0; + throw _fN_}} 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)} + function pretty_print$2(std,out,x){return pp$5(std,out,x)} + function pretty_to_string$2(std,x) + {function _fH_(_fI_,_fJ_){return pp$5(std,_fI_,_fJ_)} + return caml_call3(Stdlib_Format[133],_dE_,_fH_,x)} + function pretty_to_channel$2(std,oc,x) + {var fmt=caml_call1(Stdlib_Format[108],oc); + function _fE_(_fF_,_fG_){return pp$5(std,_fF_,_fG_)} + return caml_call4(Stdlib_Format[129],fmt,_dF_,_fE_,x)} var from_channel$3=Stdlib_Lexing[2], from_string$3=Stdlib_Lexing[3], @@ -42360,48 +39966,48 @@ function hex$5(c) {if(65 <= c) {if(97 <= c) - {if(! (103 <= c))return (c - 97 | 0) + 10 | 0} + {if(103 > c)return (c - 97 | 0) + 10 | 0} else - if(! (71 <= c))return (c - 65 | 0) + 10 | 0} + if(71 > c)return (c - 65 | 0) + 10 | 0} else - if(! (9 < c - 48 >>> 0))return c - 48 | 0; - throw [0,Assert_failure,_du_]} + if(9 >= c - 48 >>> 0)return c - 48 | 0; + throw [0,Assert_failure,_eg_]} 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); + _fD_=v[4]; + if(_fD_) + var s=_fD_[1],file_line=caml_call2(Stdlib_Printf[4],_eh_,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); + ?caml_call2(Stdlib_Printf[4],_ei_,pos1 + 1 | 0) + :caml_call3(Stdlib_Printf[4],_ek_,pos1 + 1 | 0,pos2 + 1 | 0), + msg=caml_call5(Stdlib_Printf[4],_ej_,file_line,v[2],bytes,descr); return json_error(msg)} function lexer_error$1(descr,v,lexbuf) - {var _eL_=caml_call1(lexeme$1,lexbuf); + {var _fC_=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_]}]; + (caml_call3(Stdlib_Printf[4],_el_,descr,_fC_),v,lexbuf)} + var read_junk$1=[0,function(param){throw [0,Assert_failure,_em_]}]; 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), + (caml_call4(Stdlib_Printf[4],_en_,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, + _eo_=0 === (Stdlib[20] % 10 | 0)?0:1, + min10$1=(Stdlib[20] / 10 | 0) - _eo_ | 0, + _ep_=0 === (Stdlib[19] % 10 | 0)?0:1, + max10$1=(Stdlib[19] / 10 | 0) + _ep_ | 0, Int_overflow$1=[248,cst_Yojson_Raw_Int_overflow,caml_fresh_oo_id(0)]; function extract_positive_int$1(lexbuf) {var @@ -42409,15 +40015,15 @@ stop=lexbuf[6], s=lexbuf[2], n=[0,0], - _eI_=stop - 1 | 0; - if(! (_eI_ < start)) + _fz_=stop - 1 | 0; + if(_fz_ >= 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} + var _fA_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) + _fA_ | 0; + var _fB_=i + 1 | 0; + if(_fz_ !== i){var i=_fB_;continue} break}} if(0 <= n[1])return n[1]; throw Int_overflow$1} @@ -42429,15 +40035,15 @@ stop=lexbuf[6], s=lexbuf[2], n=[0,0], - _eF_=stop - 1 | 0; - if(! (_eF_ < start)) + _fw_=stop - 1 | 0; + if(_fw_ >= 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} + var _fx_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) - _fx_ | 0; + var _fy_=i + 1 | 0; + if(_fw_ !== i){var i=_fy_;continue} break}} if(0 < n[1])throw Int_overflow$1; return n[1]} @@ -42447,103 +40053,165 @@ {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; + return caml_call4(Stdlib_Buffer[19],buf,lexbuf[2],lexbuf[5],len)} + function read_json$4(counter,v,lexbuf) + {var _fv_=0; + if(counter >= 50) + return caml_trampoline_return + (ocaml_lex_read_json_rec$1,[0,v,lexbuf,_fv_]); + var counter$0=counter + 1 | 0; + return ocaml_lex_read_json_rec$1(counter$0,v,lexbuf,_fv_)} + 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$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) + 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=ocaml_lex_state$0; + var ocaml_lex_state$0=ocaml_lex_state$1; 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; + switch(ocaml_lex_state$1) + {case 0:return _eq_; + case 1:return _er_; + case 2:return 870828711; + case 3:return _es_; + case 4:return _et_; + case 5:return _eu_; + 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 _fm_=acc[1]; + acc[1] = [0,[0,field_name,read_json$1(v,lexbuf)],_fm_]; + 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 _fn_=acc[1]; + acc[1] = [0,[0,field_name$0,read_json$1(v,lexbuf)],_fn_]}} + catch(_fu_) + {_fu_ = caml_wrap_exception(_fu_); + if(_fu_ === End_of_object) + return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; + throw _fu_} + case 11: + var acc$0=[0,0]; + try + {read_space$1(v,lexbuf); + read_array_end$1(lexbuf); + var _fo_=acc$0[1]; + acc$0[1] = [0,read_json$1(v,lexbuf),_fo_]; + for(;;) + {read_space$1(v,lexbuf); + read_array_sep$1(v,lexbuf); + read_space$1(v,lexbuf); + var _fp_=acc$0[1]; + acc$0[1] = [0,read_json$1(v,lexbuf),_fp_]}} + catch(_ft_) + {_ft_ = caml_wrap_exception(_ft_); + if(_ft_ === End_of_array) + return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; + throw _ft_} + case 12: + var acc$1=[0,0]; + try + {read_space$1(v,lexbuf); + read_tuple_end$1(lexbuf); + var _fq_=acc$1[1]; + acc$1[1] = [0,read_json$1(v,lexbuf),_fq_]; + for(;;) + {read_space$1(v,lexbuf); + read_tuple_sep$1(v,lexbuf); + read_space$1(v,lexbuf); + var _fr_=acc$1[1]; + acc$1[1] = [0,read_json$1(v,lexbuf),_fr_]}} + catch(_fs_) + {_fs_ = caml_wrap_exception(_fs_); + if(_fs_ === End_of_tuple) + return [0,726928360,caml_call1(Stdlib_List[9],acc$1[1])]; + throw _fs_} + 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) + return caml_trampoline_return(read_json$4,[0,v,lexbuf]); + var counter$0=counter + 1 | 0; + return read_json$4(counter$0,v,lexbuf); + case 15: + finish_comment$1(v,lexbuf); + if(counter >= 50) + return caml_trampoline_return(read_json$4,[0,v,lexbuf]); + var counter$1=counter + 1 | 0; + return read_json$4(counter$1,v,lexbuf); + case 16: + newline$1(v,lexbuf); + if(counter >= 50) + return caml_trampoline_return(read_json$4,[0,v,lexbuf]); + var counter$2=counter + 1 | 0; + return read_json$4(counter$2,v,lexbuf); + case 17: + if(counter >= 50) + return caml_trampoline_return(read_json$4,[0,v,lexbuf]); + var counter$3=counter + 1 | 0; + return read_json$4(counter$3,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 read_json$1(v,lexbuf) + {return caml_trampoline(read_json$4(0,v,lexbuf))} + function finish_string$5(v,lexbuf) + {a: 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; + {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) + switch(ocaml_lex_state$0) + {case 0:return caml_call1(Stdlib_Buffer[2],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}}} + function map_string$1(v,f,lexbuf) + {a: 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}} + {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) + switch(ocaml_lex_state$0) + {case 0: + var b=v[1],_fl_=caml_call1(Stdlib_Buffer[7],b); + return caml_call3(f,caml_call1(Stdlib_Buffer[2],b),0,_fl_); + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}}} function finish_escaped_char$1(v,lexbuf) {var ocaml_lex_state=68; for(;;) @@ -42557,23 +40225,23 @@ 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); + return caml_call2(Stdlib_Buffer[12],v[1],c); + case 1:return caml_call2(Stdlib_Buffer[12],v[1],8); + case 2:return caml_call2(Stdlib_Buffer[12],v[1],12); + case 3:return caml_call2(Stdlib_Buffer[12],v[1],10); + case 4:return caml_call2(Stdlib_Buffer[12],v[1],13); + case 5:return caml_call2(Stdlib_Buffer[12],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)) + _ff_=hex$5(d), + _fg_=hex$5(c$0) << 4, + _fh_=hex$5(b) << 8, + x=hex$5(a) << 12 | _fh_ | _fg_ | _ff_; + if(55296 <= x && 56319 >= x) {var ocaml_lex_state$1=82; for(;;) {var @@ -42590,11 +40258,11 @@ 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)) + _fi_=hex$5(d$0), + _fj_=hex$5(c$1) << 4, + _fk_=hex$5(b$0) << 8, + y=hex$5(a$0) << 12 | _fk_ | _fj_ | _fi_; + 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); @@ -42608,43 +40276,103 @@ 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; + 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(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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + switch(ocaml_lex_state$0) + {case 0:return -154522342; + case 1:caml_call1(Stdlib_Buffer[8],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} function finish_comment$1(v,lexbuf) {a: for(;;) @@ -42653,279 +40381,14 @@ {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)}}} + if(3 >= ocaml_lex_state$0 >>> 0) + 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} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}}} function read_eof$1(lexbuf) {var ocaml_lex_state=131; for(;;) @@ -42935,23 +40398,38 @@ 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}} + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + 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} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} function read_null_if_possible$1(v,lexbuf) {var ocaml_lex_state=147; for(;;) @@ -42961,27 +40439,25 @@ 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}} + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(5 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} function ocaml_lex_read_int_rec$1(v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -42995,26 +40471,26 @@ 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) + {var _e$_=extract_positive_int$1(lexbuf);return _e$_} + catch(_fe_) + {_fe_ = caml_wrap_exception(_fe_); + if(_fe_ === Int_overflow$1) return lexer_error$1(cst_Int_overflow$5,v,lexbuf); - throw _en_} + throw _fe_} case 1: try - {var _ej_=extract_negative_int$1(lexbuf);return _ej_} - catch(_em_) - {_em_ = caml_wrap_exception(_em_); - if(_em_ === Int_overflow$1) + {var _fa_=extract_negative_int$1(lexbuf);return _fa_} + catch(_fd_) + {_fd_ = caml_wrap_exception(_fd_); + if(_fd_ === Int_overflow$1) return lexer_error$1(cst_Int_overflow$6,v,lexbuf); - throw _em_} + throw _fd_} case 2: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$5(v,lexbuf); try - {var _ek_=caml_int_of_string(s);return _ek_} - catch(_el_) + {var _fb_=caml_int_of_string(s);return _fb_} + catch(_fc_) {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); @@ -43035,15 +40511,15 @@ 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)} + {var _e7_=caml_int_of_string(caml_call1(lexeme$1,lexbuf)); + return _e7_} + catch(_e__){return lexer_error$1(cst_Int32_overflow$3,v,lexbuf)} case 1: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$5(v,lexbuf); try - {var _ef_=caml_int_of_string(s);return _ef_} - catch(_eg_) + {var _e8_=caml_int_of_string(s);return _e8_} + catch(_e9_) {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: @@ -43063,15 +40539,15 @@ 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)} + {var _e3_=caml_int64_of_string(caml_call1(lexeme$1,lexbuf)); + return _e3_} + catch(_e6_){return lexer_error$1(cst_Int32_overflow$4,v,lexbuf)} case 1: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$5(v,lexbuf); try - {var _eb_=caml_int64_of_string(s);return _eb_} - catch(_ec_) + {var _e4_=caml_int64_of_string(s);return _e4_} + catch(_e5_) {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: @@ -43094,14 +40570,14 @@ 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]); + caml_call1(Stdlib_Buffer[8],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) + {var _e1_=caml_float_of_string(s);return _e1_} + catch(_e2_) + {return caml_string_notequal(s,cst_Infinity$15) + ?caml_string_notequal(s,cst_Infinity$16) + ?caml_string_notequal(s,cst_NaN$7) ?custom_error$1(cst_Expected_a_number_but_foun$1,v,lexbuf) :Stdlib[24] :Stdlib[22] @@ -43118,36 +40594,59 @@ {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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Stdlib_Buffer[8],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Stdlib_Buffer[8],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(3 >= ocaml_lex_state$0 >>> 0) + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Stdlib_Buffer[8],v[1]);return map_string$1(v,f,lexbuf); + case 1: + var len=lexbuf[6] - lexbuf[5] | 0; + return caml_call3 + (f, + caml_call3(Stdlib_Bytes[8],lexbuf[2],lexbuf[5],len), + 0, + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} function ocaml_lex_read_sequence_rec$1 (read_cell,init_acc,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; @@ -43170,12 +40669,11 @@ {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_} + acc[1] = caml_call3(read_cell,acc[1],v,lexbuf)}} + catch(_e0_) + {_e0_ = caml_wrap_exception(_e0_); + if(_e0_ === End_of_array)return acc[1]; + throw _e0_} 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)}}} @@ -43197,24 +40695,48 @@ 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_]; + var _eX_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_eX_]; 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_} + var _eY_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_eY_]}} + catch(_eZ_) + {_eZ_ = caml_wrap_exception(_eZ_); + if(_eZ_ === End_of_array)return acc[1]; + throw _eZ_} 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 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}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} function ocaml_lex_read_tuple_rec$0 (read_cell,init_acc,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; @@ -43239,17 +40761,26 @@ 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_} + pos[1]++}} + catch(_eW_) + {_eW_ = caml_wrap_exception(_eW_); + if(_eW_ === End_of_tuple)return acc[1]; + throw _eW_} 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_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}} function read_tuple_end2$1(v,std,lexbuf) {var ocaml_lex_state=268; for(;;) @@ -43268,6 +40799,21 @@ if(std)throw End_of_tuple; return long_error$1(cst_Expected_or_but_found$33,v,lexbuf); default:return 0}}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} function read_tuple_sep2$1(v,std,lexbuf) {var ocaml_lex_state=276; for(;;) @@ -43319,12 +40865,11 @@ 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_} + acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf)}} + catch(_eV_) + {_eV_ = caml_wrap_exception(_eV_); + if(_eV_ === End_of_object)return acc[1]; + throw _eV_} 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)}}} @@ -43337,130 +40882,163 @@ {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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(3 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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_])} + {var _eU_=322; + if(counter >= 50) + return caml_trampoline_return + (ocaml_lex_skip_json_rec$1,[0,v,lexbuf,_eU_]); + var counter$0=counter + 1 | 0; + return ocaml_lex_skip_json_rec$1(counter$0,v,lexbuf,_eU_)} function ocaml_lex_skip_json_rec$1(counter,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -43498,12 +41076,11 @@ 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_} + skip_json$1(v,lexbuf)}} + catch(_eT_) + {_eT_ = caml_wrap_exception(_eT_); + if(_eT_ === End_of_object)return 0; + throw _eT_} case 10: try {read_space$1(v,lexbuf); @@ -43513,12 +41090,11 @@ {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_} + skip_json$1(v,lexbuf)}} + catch(_eS_) + {_eS_ = caml_wrap_exception(_eS_); + if(_eS_ === End_of_array)return 0; + throw _eS_} case 11: try {read_space$1(v,lexbuf); @@ -43528,46 +41104,61 @@ {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_} + skip_json$1(v,lexbuf)}} + catch(_eR_) + {_eR_ = caml_wrap_exception(_eR_); + if(_eR_ === End_of_tuple)return 0; + throw _eR_} 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]); + if(counter >= 50) + return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); + var counter$0=counter + 1 | 0; + return skip_json$4(counter$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]); + if(counter >= 50) + return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); + var counter$1=counter + 1 | 0; + return skip_json$4(counter$1,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]); + if(counter >= 50) + return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); + var counter$2=counter + 1 | 0; + return skip_json$4(counter$2,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]); + if(counter >= 50) + return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); + var counter$3=counter + 1 | 0; + return skip_json$4(counter$3,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; + 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) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + function finish_buffer_variant$0(v,lexbuf) + {var ocaml_lex_state=461; for(;;) {var ocaml_lex_state$0= @@ -43578,192 +41169,51 @@ 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); + caml_call2(Stdlib_Buffer[12],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) + switch(ocaml_lex_state$2) + {case 0:return caml_call2(Stdlib_Buffer[12],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$1=ocaml_lex_state$2} + case 1:return caml_call2(Stdlib_Buffer[12],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$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}}}} + return custom_error$1(cst_Unexpected_end_of_input$133,v,lexbuf)}}} 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)}}} + if(2 >= ocaml_lex_state$0 >>> 0) + switch(ocaml_lex_state$0) + {case 0: + caml_call2(Stdlib_Buffer[12],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} 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_])} + {var _eQ_=399; + if(counter >= 50) + return caml_trampoline_return + (ocaml_lex_buffer_json_rec$1,[0,v,lexbuf,_eQ_]); + var counter$0=counter + 1 | 0; + return ocaml_lex_buffer_json_rec$1(counter$0,v,lexbuf,_eQ_)} function ocaml_lex_buffer_json_rec$1(counter,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -43779,7 +41229,7 @@ case 1:return finish_buffer_stringlit$1(v,lexbuf); case 2: try - {caml_call2(Bi_outbuf[15],v[1],123); + {caml_call2(Stdlib_Buffer[12],v[1],123); buffer_space$1(v,lexbuf); buffer_object_end$1(v,lexbuf); buffer_ident$1(v,lexbuf); @@ -43795,15 +41245,14 @@ 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_} + buffer_json$1(v,lexbuf)}} + catch(_eP_) + {_eP_ = caml_wrap_exception(_eP_); + if(_eP_ === End_of_object)return 0; + throw _eP_} case 3: try - {caml_call2(Bi_outbuf[15],v[1],91); + {caml_call2(Stdlib_Buffer[12],v[1],91); buffer_space$1(v,lexbuf); buffer_array_end$1(v,lexbuf); buffer_json$1(v,lexbuf); @@ -43811,15 +41260,14 @@ {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_} + buffer_json$1(v,lexbuf)}} + catch(_eO_) + {_eO_ = caml_wrap_exception(_eO_); + if(_eO_ === End_of_array)return 0; + throw _eO_} case 4: try - {caml_call2(Bi_outbuf[15],v[1],40); + {caml_call2(Stdlib_Buffer[12],v[1],40); buffer_space$1(v,lexbuf); buffer_tuple_end$0(v,lexbuf); buffer_json$1(v,lexbuf); @@ -43827,83 +41275,198 @@ {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_} + buffer_json$1(v,lexbuf)}} + catch(_eN_) + {_eN_ = caml_wrap_exception(_eN_); + if(_eN_ === End_of_tuple)return 0; + throw _eN_} case 5: - caml_call2(Bi_outbuf[15],v[1],60); + caml_call2(Stdlib_Buffer[12],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]); + if(counter >= 50) + return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); + var counter$0=counter + 1 | 0; + return buffer_json$4(counter$0,v,lexbuf); case 7: - caml_call2(Bi_outbuf[13],v[1],cst$34); + caml_call2(Stdlib_Buffer[16],v[1],cst$78); 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]); + if(counter >= 50) + return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); + var counter$1=counter + 1 | 0; + return buffer_json$4(counter$1,v,lexbuf); case 8: - caml_call2(Bi_outbuf[15],v[1],10); + caml_call2(Stdlib_Buffer[12],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]); + if(counter >= 50) + return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); + var counter$2=counter + 1 | 0; + return buffer_json$4(counter$2,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]); + if(counter >= 50) + return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); + var counter$3=counter + 1 | 0; + return buffer_json$4(counter$3,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; + 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: - 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)}}} + if(3 >= ocaml_lex_state$0 >>> 0) + 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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + switch(ocaml_lex_state$0) + {case 0:add_lexeme$1(v[1],lexbuf);newline$1(v,lexbuf);continue a; + case 1: + caml_call2(Stdlib_Buffer[16],v[1],cst$79); + finish_buffer_comment$1(v,lexbuf); + continue a; + case 2: + caml_call2(Stdlib_Buffer[12],v[1],10); + newline$1(v,lexbuf); + continue a; + case 3:add_lexeme$1(v[1],lexbuf);continue a; + default:return 0} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}}} + 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(Stdlib_Buffer[12],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}} + 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) + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],44); + case 1:caml_call2(Stdlib_Buffer[12],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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(Stdlib_Buffer[12],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}} + 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) + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],44); + case 1:caml_call2(Stdlib_Buffer[12],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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(Stdlib_Buffer[12],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}} + 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) + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],44); + case 1:caml_call2(Stdlib_Buffer[12],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[12],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)} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}} + 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) + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[16],v[1],cst$80); + case 1:return long_error$1(cst_Unterminated_comment$4,v,lexbuf); + case 2: + caml_call2(Stdlib_Buffer[12],v[1],10); + newline$1(v,lexbuf); + continue a; + default:add_lexeme$1(v[1],lexbuf);continue a} + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0}}} function junk$1(lexbuf) {var ocaml_lex_state=513; for(;;) @@ -43912,40 +41475,38 @@ 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}} + var ocaml_lex_state=ocaml_lex_state$0}} 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); + 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_)} + {var _eM_=read_list_rev$1(read_cell,v,lexbuf); + return caml_call1(Stdlib_List[9],_eM_)} 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]} + if(! l)return [0]; + var + tl=l[2], + x=l[1], + len=caml_call1(Stdlib_List[1],l), + a=caml_make_vect(len,x), + r=[0,tl], + _eJ_=len - 2 | 0; + if(_eJ_ >= 0) + {var i=_eJ_; + for(;;) + {var _eK_=caml_call1(Stdlib_List[5],r[1]); + caml_check_bound(a,i)[1 + i] = _eK_; + r[1] = caml_call1(Stdlib_List[6],r[1]); + var _eL_=i - 1 | 0; + if(0 !== i){var i=_eL_;continue} + break}} + return a} 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_)}} + {return function(_eI_) + {return read_abstract_fields$1(read_ident$1,read_field,init_acc,v,_eI_)}} function from_lexbuf$1(v,opt,lexbuf) {if(opt)var sth=opt[1],stream=sth;else var stream=0; read_space$1(v,lexbuf); @@ -43961,23 +41522,23 @@ {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_}} + _eG_=from_lexbuf$1(v,0,lexbuf); + return _eG_} + catch(_eH_) + {_eH_ = caml_wrap_exception(_eH_); + if(_eH_ === End_of_input)return json_error(cst_Blank_input_data$3); + throw _eH_}} 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_}} + _eE_=from_lexbuf$1(v,0,lexbuf); + return _eE_} + catch(_eF_) + {_eF_ = caml_wrap_exception(_eF_); + if(_eF_ === End_of_input)return json_error(cst_Blank_input_data$4); + throw _eF_}} function from_file$1(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); try @@ -43986,11 +41547,11 @@ 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) + function seq_from_lexbuf$1(v,opt,lexbuf) {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - function f(i) + function f(param) {try - {var _dL_=[0,from_lexbuf$1(v,stream$1,lexbuf)];return _dL_} + {var _eD_=[0,from_lexbuf$1(v,stream$1,lexbuf),f];return _eD_} catch(e) {e = caml_wrap_exception(e); if(e === End_of_input){caml_call1(fin,0);return 0} @@ -43999,48 +41560,51 @@ 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) + return f} + function seq_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) + return seq_from_lexbuf$1(v,0,caml_call2(from_string$3,0,s))} + function seq_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) + return seq_from_lexbuf$1(v,fin,lexbuf)} + function seq_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) + return seq_from_lexbuf$1(v,[0,fin],lexbuf)} + function lineseq_from_channel$1(buf,opt,fname,_ev_,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) + if(_ev_)var sth$0=_ev_[1],lnum0=sth$0;else var lnum0=1; + var buf$0=buf || [0,caml_call1(Stdlib_Buffer[1],256)]; + function f(lnum,param) {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_} + _ey_=lnum + 1 | 0, + _ez_=function(_eC_){return f(_ey_,_eC_)}, + _eA_= + [0,[0,826371656,from_string$4(buf$0,fname,[0,lnum],line)],_ez_]; + return _eA_} 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) + if(e === Stdlib[12]){caml_call1(fin,0);return 0} + var _ex_=lnum + 1 | 0; + return [0,[0,3458171,e],function(_eB_){return f(_ex_,_eB_)}]}} + return function(_ew_){return f(lnum0,_ew_)}} + function lineseq_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)} + return lineseq_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} + {return to_string$4(0,0,0,0,from_string$4(0,0,0,s))} var Yojson= [0, @@ -44054,15 +41618,15 @@ End_of_tuple, End_of_input, [0, - to_string$1, - to_channel$1, + to_string$0, + to_channel$0, 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, + to_buffer$0, + seq_to_string$0, + seq_to_channel$0, + seq_to_file$0, + seq_to_buffer$0, write_t$0, sort$0, write_null$0, @@ -44070,8 +41634,6 @@ 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, @@ -44079,10 +41641,9 @@ write_list$0, write_t$0, write_std_json$0, - pp$0, + pp$2, show$0, equal$0, - pretty_format$0, pretty_print$0, pretty_to_string$0, pretty_to_channel$0, @@ -44094,12 +41655,12 @@ from_file, init_lexer, from_lexbuf, - stream_from_string, - stream_from_channel, - stream_from_file, - stream_from_lexbuf, - linestream_from_channel, - linestream_from_file, + seq_from_string, + seq_from_channel, + seq_from_file, + seq_from_lexbuf, + lineseq_from_channel, + lineseq_from_file, read_json, finish_string$1, read_string, @@ -44152,11 +41713,9 @@ read_json, skip_json, buffer_json, - validate_json, [0, Type_error, Undefined, - symbol, keys, values, combine, @@ -44174,7 +41733,7 @@ to_int, to_int_option, to_list, - to_string$2, + to_string$1, to_string_option, convert_each, filter_map, @@ -44189,19 +41748,19 @@ filter_number, filter_string]], [0, - pp$1, + pp$4, show$1, equal$1, to_basic, - to_string$3, - to_channel$2, + to_string$2, + to_channel$1, 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, + to_buffer$1, + seq_to_string$1, + seq_to_channel$1, + seq_to_file$1, + seq_to_buffer$1, write_t$1, sort$1, write_null$1, @@ -44209,8 +41768,6 @@ 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, @@ -44223,7 +41780,6 @@ 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, @@ -44235,12 +41791,12 @@ 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, + seq_from_string$0, + seq_from_channel$0, + seq_from_file$0, + seq_from_lexbuf$0, + lineseq_from_channel$0, + lineseq_from_file$0, read_json$0, finish_string$3, read_string$0, @@ -44293,11 +41849,9 @@ 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, @@ -44315,7 +41869,7 @@ to_int$0, to_int_option$0, to_list$0, - to_string$4, + to_string$3, to_string_option$0, convert_each$0, filter_map$0, @@ -44330,18 +41884,18 @@ filter_number$0, filter_string$0]], [0, - pp$2, + pp$6, show$2, equal$2, - to_string$5, - to_channel$3, + to_string$4, + to_channel$2, 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, + to_buffer$2, + seq_to_string$2, + seq_to_channel$2, + seq_to_file$2, + seq_to_buffer$2, write_t$2, sort$2, write_null$2, @@ -44357,7 +41911,6 @@ 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, @@ -44369,12 +41922,12 @@ 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, + seq_from_string$1, + seq_from_channel$1, + seq_from_file$1, + seq_from_lexbuf$1, + lineseq_from_channel$1, + lineseq_from_file$1, read_json$1, finish_string$5, read_string$1, @@ -44426,8 +41979,7 @@ read_colon$1, read_json$1, skip_json$1, - buffer_json$1, - validate_json$1], + buffer_json$1], pp, show, equal, @@ -44435,11 +41987,11 @@ to_channel, to_output, to_file, - to_outbuf, - stream_to_string, - stream_to_channel, - stream_to_file, - stream_to_outbuf, + to_buffer, + seq_to_string, + seq_to_channel, + seq_to_file, + seq_to_buffer, write_t, sort, write_null, @@ -44447,8 +41999,6 @@ write_int, write_float, write_std_float, - write_float_fast, - write_std_float_fast, write_float_prec, write_std_float_prec, write_string, @@ -44463,17 +42013,18 @@ write_std_variant, write_t, write_std_json, - pretty_format, pretty_print, pretty_to_string, pretty_to_channel]; - caml_register_global(1035,Yojson,"Yojson"); + runtime.caml_register_global(1068,Yojson,"Yojson"); return} (globalThis)); //# 1 "../../.js/ppx_yojson_conv_lib/ppx_yojson_conv_lib.cma.js" -(function(globalThis) +// Generated by js_of_ocaml +(function + (globalThis) {"use strict"; var runtime=globalThis.jsoo_runtime, @@ -44671,8 +42222,9 @@ _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} + {if(! param)return 870828711; + var x=param[1]; + return caml_call1(yojson_of_a,x)} 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_]]} @@ -44689,7 +42241,7 @@ 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)) + if(_B_ >= 0) {var i=_B_; for(;;) {var _C_=lst_ref[1]; @@ -44818,22 +42370,19 @@ 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]} + if(! _o_)return [0]; + 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)return res; + 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}} 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]) @@ -44984,20 +42533,19 @@ 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; + {if(! param$0) + {var _i_=caml_call1(Stdlib_ListLabels[9],fields$0); + return caml_call2(Stdlib_StringLabels[6],cst$0,_i_)} + 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 _i_=caml_call1(Stdlib_ListLabels[9],fields$0); - return caml_call2(Stdlib_StringLabels[6],cst$0,_i_)}} + var param$2=param$0[2],param$0=param$2}} function record_undefined_elements(loc,yojson,lst) {var undefined$0=record_get_undefined_loop(0,lst), @@ -45080,7 +42628,9 @@ //# 1 "../../runtimes/ocaml/.runtime_ocaml.objs/runtime_ocaml.cma.js" -(function(globalThis) +// Generated by js_of_ocaml +(function + (globalThis) {"use strict"; var runtime=globalThis.jsoo_runtime, @@ -45705,73 +43255,71 @@ 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]]]}} + {if(typeof param === "number")return 0 === param?_g_:_h_; + 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]} @@ -45786,6 +43334,32 @@ (Ppx_yojson_conv_lib_Yojson_con[45][14], Ppx_yojson_conv_lib_Yojson_con[45][3], v)} + 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]]]}} function yojson_of_var_def(param) {var v_fun_calls=param[4], @@ -45828,32 +43402,6 @@ 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])} @@ -45881,10 +43429,9 @@ 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_)} + {if(! param)return caml_call2(Stdlib_Format[129],ppf,_w_); + var pos=param[1]; + return caml_call5(Stdlib_Format[129],ppf,_v_,pos[1],pos[2],pos[4])} function format_var_defs(ppf) {var _cg_= @@ -45921,54 +43468,53 @@ 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_)}} + 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: @@ -46056,7 +43602,7 @@ value=param[2], name$1=param[1], _bI_=yojson_of_runtime_value(value), - _bJ_=caml_call4(Yojson[11][5],0,0,0,_bI_), + _bJ_=caml_call5(Yojson[11][5],0,0,0,0,_bI_), _bK_=caml_call2(Stdlib_String[6],cst$13,name$1); return caml_call3(Stdlib_Printf[4],_$_,_bK_,_bJ_); default: @@ -46064,52 +43610,245 @@ 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_} + {if(! l)return _ab_; + var t=l[2],h=l[1]; + if(! caml_call1(p,h))return [0,0,l]; + var match=take_while(p,t),rest=match[2],t$0=match[1]; + return [0,[0,h,t$0],rest]} 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_events(ctx) + {var ctx$0=ctx; + a: + for(;;) + {var _a3_=ctx$0[3]; + if(! _a3_) + {var _bz_=ctx$0[3],_bA_=caml_call1(Stdlib_List[9],ctx$0[2]); + return [0,ctx$0[1],_bA_,_bz_]} + var _a4_=_a3_[1]; + switch(_a4_[0]) + {case 0: + var rest=_a3_[2],infos=_a4_[1]; + if(3 === caml_call1(Stdlib_List[1],infos)) + {if(infos) + {var _a5_=infos[2]; + if(_a5_) + {var _a6_=_a5_[2]; + if(_a6_ && ! _a6_[2]) + {var + var_name=_a5_[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=_a3_[2],_a9_=caml_call1(Stdlib_List[9],ctx$0[2]); + return [0,ctx$0[1],_a9_,rest$0]; + case 2: + var rest$1=_a3_[2],name=_a4_[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 _a__=rest$1[1]; + if(0 === _a__[0]) + {var infos$0=_a__[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 _a$_=_a3_[2]; + if(_a$_) + {var _ba_=_a$_[1]; + if(2 === _ba_[0]) + {var + rest$3=_a$_[2], + value=_ba_[2], + name$0=_ba_[1], + pos=_a4_[1], + _a1_=2 === caml_call1(Stdlib_List[1],name$0)?1:0; + if(_a1_) + var + _a2_=caml_call2(Stdlib_List[7],name$0,1), + _bb_=caml_call2(Stdlib_String[14],_a2_,46); + else + var _bb_=_a1_; + if(_bb_) + {if(name$0) + {var _bc_=name$0[2]; + if(_bc_ && ! _bc_[2]) + {var + var_dot_subscope_var_name=_bc_[1], + _bd_= + caml_call2(Stdlib_String[16],46,var_dot_subscope_var_name), + name$1=caml_call2(Stdlib_List[7],_bd_,0), + _bf_=ctx$0[1], + v=[0,[0,pos],name$0,value,0], + _be_=ctx$0[2], + match=caml_call2(StringMap[29],name$1,_bf_); + if(match) + var + ls=match[1], + _bB_=caml_call3(StringMap[4],name$1,[0,v,ls],_bf_); + else + var _bB_=caml_call3(StringMap[4],name$1,[0,v,0],_bf_); + var ctx$4=[0,_bB_,_be_,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 + _aZ_=3 === caml_call1(Stdlib_List[1],name$0)?1:0, + _a0_= + _aZ_ + ?runtime.caml_string_equal + (cst_output$0,caml_call2(Stdlib_List[7],name$0,2)) + :_aZ_; + if(_a0_) + switch$0 = 1; + else + if(rest$3) + {var _bg_=rest$3[1]; + if(0 === _bg_[0]) + {var infos$1=_bg_[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), + _bh_=match$2[2]; + if(_bh_) + {var _bi_=_bh_[1]; + if(0 === _bi_[0]) + {var infos$2=_bi_[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 _bj_=rest$4[1]; + if(2 === _bj_[0]) + var + rest$6=rest$4[2], + value$0=_bj_[2], + name$2=_bj_[1], + var_comp=[0,[0,[0,pos],name$2,value$0,[0,fun_calls$1]]], + rest$5=rest$6; + else + var + _bk_= + (nb_raw_events - caml_call1(Stdlib_List[1],rest$4) | 0) + + + 1 + | + 0, + _bl_=caml_call1(Stdlib[33],_bk_), + _bm_=caml_call2(Stdlib[28],_bl_,cst$14), + _bn_=caml_call2(Stdlib[28],cst$15,_bm_), + _bo_=raw_event_to_string(_bj_), + _bp_=caml_call2(Stdlib[28],_bo_,_bn_), + _bq_= + caml_call2(Stdlib[28],cst_expected_variable_definiti,_bp_), + _br_=caml_call2(Stdlib_String[6],cst$16,infos$1), + _bs_=caml_call2(Stdlib[28],_br_,_bq_), + _bt_=caml_call2(Stdlib[28],cst_Invalid_function_call,_bs_), + _bu_=caml_call1(Stdlib[2],_bt_), + var_comp=_bu_[2], + rest$5=_bu_[1]} + else + var + _bv_=caml_call2(Stdlib_String[6],cst$17,infos$1), + _bw_= + caml_call2(Stdlib[28],_bv_,cst_expected_variable_definiti$0), + _bx_=caml_call2(Stdlib[28],cst_Invalid_function_call$0,_bw_), + _by_=caml_call1(Stdlib[2],_bx_), + var_comp$0=_by_[2], + rest$7=_by_[1], + var_comp=var_comp$0, + rest$5=rest$7; + 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 + _a7_=raw_event_to_string(_a4_), + _a8_=caml_call2(Stdlib[28],cst_Unexpected_event,_a7_); + return caml_call1(Stdlib[2],_a8_)}} 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}, + {if(2 !== param[0])return 0; + var + name=param[1], + _aX_=3 === caml_call1(Stdlib_List[1],name)?1:0; + if(! _aX_)return _aX_; + var _aY_=caml_call2(Stdlib_List[7],name,2); + return caml_call2(Stdlib_String[10],cst_input,_aY_)}, events), - _bw_=match[2]; - if(_bw_) - {var _bx_=_bw_[1]; - if(0 === _bx_[0]) - {var rest=_bw_[2],infos=_bx_[1],inputs=match[1]; + _aT_=match[2]; + if(_aT_) + {var _aU_=_aT_[1]; + if(0 === _aU_[0]) + {var rest=_aT_[2],infos=_aU_[1],inputs=match[1]; if(is_function_call(infos)) {var - _by_= + _aV_= 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), + {if(2 !== param[0])throw [0,Assert_failure,_ac_]; + var value=param[2],name=param[1]; + return [0,0,name,value,0]}, + fun_inputs=caml_call2(Stdlib_ListLabels[19],_aV_,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_), + _aW_=caml_call1(Stdlib_List[6],body_rev), + body=caml_call1(Stdlib_List[9],_aW_), rest$0=body_ctx[3]; if(0 === output[0]) var var_def=output[1],output$0=var_def; @@ -46119,201 +43858,6 @@ 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) @@ -46332,8 +43876,9 @@ {_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} + if(! acc)return new_val; + if(new_val)throw [0,ConflictError,pos]; + return acc} 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); @@ -46344,9 +43889,10 @@ 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} + if(0 !== except[0])return except; + if(0 === just[0])return _af_; + var b=just[1]; + return b?cons:_ag_} function no_input(param){throw EmptyError} function compare_periods(p1,p2) {try @@ -46383,7 +43929,7 @@ {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)) + if(_aw_ >= 1) {var i=_av_; for(;;) {var _ax_=caml_check_bound(a,i)[1 + i]; @@ -46427,10 +43973,10 @@ 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)} + if(! runtime.caml_greaterequal(caml_call2(Z[54],2,remainder),_aq_)) + return caml_call2(Z[54],res,sign_int); + var _ar_=caml_call2(Z[12],res,1); + return caml_call2(Z[54],_ar_,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_)} @@ -46775,22 +44321,34 @@ //# 1 "../../.js/js_of_ocaml-compiler.runtime/jsoo_runtime.cma.js" -(function(globalThis) +// Generated by js_of_ocaml +(function + (globalThis) {"use strict"; var runtime=globalThis.jsoo_runtime, caml_exn_with_js_backtrace=runtime.caml_exn_with_js_backtrace, + caml_register_global=runtime.caml_register_global, 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(), + version=caml_string_of_jsbytes("5.0.1"), + git_version=caml_string_of_jsbytes(""), 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, + Jsoo_runtime=[0]; + caml_register_global(5,Jsoo_runtime,"Jsoo_runtime__"); + var Jsoo_runtime_Runtime_version=[0,version,git_version]; + caml_register_global + (6,Jsoo_runtime_Runtime_version,"Jsoo_runtime__Runtime_version"); + var Js=[0], - Sys=[0], + Config=[0], + Sys=[0,Config,version,git_version], 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} @@ -46805,14 +44363,16 @@ 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"); + Jsoo_runtime$0=[0,Js,Sys,Error,For_compatibility_only,Typed_array,Int64]; + caml_register_global(8,Jsoo_runtime$0,"Jsoo_runtime"); return} (globalThis)); //# 1 "../../.js/js_of_ocaml/js_of_ocaml.cma.js" -(function(globalThis) +// Generated by js_of_ocaml +(function + (globalThis) {"use strict"; var jsoo_exports=typeof module === "object" && module.exports || globalThis, @@ -47208,6 +44768,7 @@ cst_keydown=caml_string_of_jsbytes("keydown"), cst_keyup=caml_string_of_jsbytes("keyup"), cst_mousewheel=caml_string_of_jsbytes("mousewheel"), + cst_wheel=caml_string_of_jsbytes("wheel"), cst_DOMMouseScroll=caml_string_of_jsbytes("DOMMouseScroll"), cst_touchstart=caml_string_of_jsbytes("touchstart"), cst_touchmove=caml_string_of_jsbytes("touchmove"), @@ -47251,6 +44812,10 @@ cst_animationend=caml_string_of_jsbytes("animationend"), cst_animationiteration=caml_string_of_jsbytes("animationiteration"), cst_animationcancel=caml_string_of_jsbytes("animationcancel"), + cst_transitionrun=caml_string_of_jsbytes("transitionrun"), + cst_transitionstart=caml_string_of_jsbytes("transitionstart"), + cst_transitionend=caml_string_of_jsbytes("transitionend"), + cst_transitioncancel=caml_string_of_jsbytes("transitioncancel"), cst_canplay=caml_string_of_jsbytes("canplay"), cst_canplaythrough=caml_string_of_jsbytes("canplaythrough"), cst_durationchange=caml_string_of_jsbytes("durationchange"), @@ -47367,7 +44932,7 @@ cst_Ff_Ii_Ll_Ee= caml_string_of_jsbytes ("^([Ff][Ii][Ll][Ee])://([^\\?#]*)(\\?([^#]*))?(#(.*))?$"), - s=caml_string_of_jsbytes("4.0.0"), + s=caml_string_of_jsbytes("5.0.1"), git_version=caml_string_of_jsbytes(""), cst$38=caml_string_of_jsbytes(""), cst$41=caml_string_of_jsbytes("+"), @@ -47881,32 +45446,31 @@ 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__"); + Stdlib_Printf=global_data.Stdlib__Printf; + global_data.CamlinternalOO; + var Stdlib_Obj=global_data.Stdlib__Obj,Js_of_ocaml=[0]; + caml_register_global(1653,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], + _m_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom_html.ml"),2894,58], + _l_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom_html.ml"),2893,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")], + _p_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/form.ml"),178,13], + _o_=[0,1], + _q_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/regexp.ml"),34,64], + _r_=[0,caml_string_of_jsbytes(""),0], _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")], + _co_=[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")], @@ -47920,7 +45484,8 @@ _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_= + _ck_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _b8_= caml_list_of_js_array ([caml_string_of_jsbytes("aliceblue"), caml_string_of_jsbytes("antiquewhite"), @@ -48069,17 +45634,17 @@ caml_string_of_jsbytes("whitesmoke"), caml_string_of_jsbytes("yellow"), caml_string_of_jsbytes("yellowgreen")]), - _b6_= + _b7_= [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_= + _b1_= [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_= + _b2_= [0, [11, caml_string_of_jsbytes("rgb("), @@ -48089,7 +45654,7 @@ 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_= + _b3_= [0, [11, caml_string_of_jsbytes("rgba("), @@ -48099,7 +45664,7 @@ 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_= + _b4_= [0, [11, caml_string_of_jsbytes("rgba("), @@ -48111,7 +45676,7 @@ 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_= + _b5_= [0, [11, caml_string_of_jsbytes("hsl("), @@ -48121,7 +45686,7 @@ 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_= + _b6_= [0, [11, caml_string_of_jsbytes("hsla("), @@ -48139,153 +45704,153 @@ 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], + _y_=[0,240,248,255], + _z_=[0,250,235,215], + _A_=[0,0,255,255], + _B_=[0,127,255,212], + _C_=[0,240,255,255], + _D_=[0,245,245,220], + _E_=[0,255,228,196], + _F_=[0,0,0,0], + _G_=[0,255,235,205], + _H_=[0,0,0,255], + _I_=[0,138,43,226], + _J_=[0,165,42,42], + _K_=[0,222,184,135], + _L_=[0,95,158,160], + _M_=[0,127,255,0], + _N_=[0,210,105,30], + _O_=[0,255,127,80], + _P_=[0,100,149,237], + _Q_=[0,255,248,220], + _R_=[0,220,20,60], + _S_=[0,0,255,255], + _T_=[0,0,0,139], + _U_=[0,0,139,139], + _V_=[0,184,134,11], + _W_=[0,169,169,169], + _X_=[0,0,100,0], + _Y_=[0,169,169,169], + _Z_=[0,189,183,107], + ___=[0,139,0,139], + _$_=[0,85,107,47], + _aa_=[0,255,140,0], + _ab_=[0,153,50,204], + _ac_=[0,139,0,0], + _ad_=[0,233,150,122], + _ae_=[0,143,188,143], + _af_=[0,72,61,139], _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], + _ah_=[0,47,79,79], + _ai_=[0,0,206,209], + _aj_=[0,148,0,211], + _ak_=[0,255,20,147], + _al_=[0,0,191,255], _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], + _an_=[0,105,105,105], + _ao_=[0,30,144,255], + _ap_=[0,178,34,34], + _aq_=[0,255,250,240], + _ar_=[0,34,139,34], + _as_=[0,255,0,255], + _at_=[0,220,220,220], + _au_=[0,248,248,255], + _av_=[0,255,215,0], + _aw_=[0,218,165,32], _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], + _ay_=[0,128,128,128], + _az_=[0,0,128,0], + _aA_=[0,173,255,47], + _aB_=[0,240,255,240], + _aC_=[0,255,105,180], + _aD_=[0,205,92,92], + _aE_=[0,75,0,130], + _aF_=[0,255,255,240], + _aG_=[0,240,230,140], + _aH_=[0,230,230,250], + _aI_=[0,255,240,245], + _aJ_=[0,124,252,0], + _aK_=[0,255,250,205], + _aL_=[0,173,216,230], + _aM_=[0,240,128,128], + _aN_=[0,224,255,255], + _aO_=[0,250,250,210], + _aP_=[0,211,211,211], + _aQ_=[0,144,238,144], + _aR_=[0,211,211,211], + _aS_=[0,255,182,193], + _aT_=[0,255,160,122], + _aU_=[0,32,178,170], + _aV_=[0,135,206,250], _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], + _aX_=[0,119,136,153], + _aY_=[0,176,196,222], + _aZ_=[0,255,255,224], + _a0_=[0,0,255,0], + _a1_=[0,50,205,50], + _a2_=[0,250,240,230], + _a3_=[0,255,0,255], + _a4_=[0,128,0,0], + _a5_=[0,102,205,170], + _a6_=[0,0,0,205], + _a7_=[0,186,85,211], + _a8_=[0,147,112,219], + _a9_=[0,60,179,113], + _a__=[0,123,104,238], + _a$_=[0,0,250,154], + _ba_=[0,72,209,204], + _bb_=[0,199,21,133], + _bc_=[0,25,25,112], + _bd_=[0,245,255,250], + _be_=[0,255,228,225], + _bf_=[0,255,228,181], + _bg_=[0,255,222,173], + _bh_=[0,0,0,128], + _bi_=[0,253,245,230], + _bj_=[0,128,128,0], + _bk_=[0,107,142,35], + _bl_=[0,255,165,0], + _bm_=[0,255,69,0], + _bn_=[0,218,112,214], + _bo_=[0,238,232,170], + _bp_=[0,152,251,152], + _bq_=[0,175,238,238], + _br_=[0,219,112,147], + _bs_=[0,255,239,213], + _bt_=[0,255,218,185], + _bu_=[0,205,133,63], + _bv_=[0,255,192,203], + _bw_=[0,221,160,221], + _bx_=[0,176,224,230], + _by_=[0,128,0,128], + _bz_=[0,255,0,0], + _bA_=[0,188,143,143], + _bB_=[0,65,105,225], + _bC_=[0,139,69,19], + _bD_=[0,250,128,114], + _bE_=[0,244,164,96], + _bF_=[0,46,139,87], + _bG_=[0,255,245,238], + _bH_=[0,160,82,45], + _bI_=[0,192,192,192], + _bJ_=[0,135,206,235], + _bK_=[0,106,90,205], _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]; + _bM_=[0,112,128,144], + _bN_=[0,255,250,250], + _bO_=[0,0,255,127], + _bP_=[0,70,130,180], + _bQ_=[0,210,180,140], + _bR_=[0,0,128,128], + _bS_=[0,216,191,216], + _bT_=[0,255,99,71], + _bU_=[0,64,224,208], + _bV_=[0,238,130,238], + _bW_=[0,245,222,179], + _bX_=[0,255,255,255], + _bY_=[0,245,245,245], + _bZ_=[0,255,255,0], + _b0_=[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} @@ -48493,21 +46058,21 @@ equal$2, max$0, min$0]; - caml_register_global(1638,Js_of_ocaml_Import,"Js_of_ocaml__Import"); + caml_register_global(1656,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 return$0(_g2_){return _g2_} 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_} + {var _g1_=1 - (x == no_handler?1:0);return _g1_?caml_call1(f,x):_g1_} 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 option(x){if(! x)return no_handler;var x$0=x[1];return x$0} function to_option(x) - {function _gM_(x){return [0,x]} - return case$0(x,function(param){return 0},_gM_)} + {function _g0_(x){return [0,x]} + return case$0(x,function(param){return 0},_g0_)} var Opt= [0, @@ -48521,18 +46086,18 @@ get, option, to_option]; - function return$1(_gL_){return _gL_} + function return$1(_gZ_){return _gZ_} 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_} + {var _gY_=x !== t39?1:0;return _gY_?caml_call1(f,x):_gY_} 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 option$0(x){if(! x)return t39;var x$0=x[1];return x$0} function to_option$0(x) - {function _gJ_(x){return [0,x]} - return case$1(x,function(param){return 0},_gJ_)} + {function _gX_(x){return [0,x]} + return case$1(x,function(param){return 0},_gX_)} var Optdef= [0, @@ -48547,16 +46112,20 @@ 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 _gV_(param){return caml_call1(g,x)} + var _gW_=caml_call1(f,x); + return caml_call2(Opt[8],_gW_,_gV_)} 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_)} + {function _gT_(param){return caml_call1(g,x)} + var _gU_=caml_call2(Opt[4],x,f); + return caml_call2(Opt[8],_gU_,_gT_)} var - t25=true, + t38=true, t4=false, + nfc="NFC", + nfd="NFD", + nfkc="NFKC", + nfkd="NFKD", string_constr=Unsafe[1].String, t11=Unsafe[1].RegExp, t4$0=Unsafe[1].Object; @@ -48573,10 +46142,10 @@ {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_} + function str_array(_gS_){return _gS_} + function match_result(_gR_){return _gR_} var - t122=Unsafe[1].Date, + t116=Unsafe[1].Date, math=Unsafe[1].Math, error_constr=Unsafe[1].Error, include=Jsoo_runtime[3], @@ -48587,8 +46156,8 @@ 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_)} + {var _gQ_=caml_call2(Opt[3],e.stack,caml_string_of_jsstring); + return caml_call1(Opt[10],_gQ_)} 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)} @@ -48607,7 +46176,7 @@ {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} + {if(param[1] !== Error)return 0;var e=param[2];return [0,to_string(e)]} caml_call1(Stdlib_Printexc[9],_a_); function _b_(e) {return e instanceof array_length @@ -48622,10 +46191,10 @@ t27=object_keys(obj), t26= caml_js_wrap_callback - (function(key,param,_gB_){return export_js(key,obj[key])}); + (function(key,param,_gP_){return export_js(key,obj[key])}); return t27.forEach(t26)} var _c_=runtime.caml_js_error_of_exception; - function _d_(_gA_){return _gA_} + function _d_(_gO_){return _gO_} var _e_= [0, @@ -48637,20 +46206,24 @@ attach_js_backtrace, of_exn, Error, - function(_gz_){return _gz_}, + function(_gN_){return _gN_}, _d_]; - function _f_(_gy_){return _gy_} + function _f_(_gM_){return _gM_} var Js_of_ocaml_Js= [0, no_handler, - function(_gx_){return _gx_}, + function(_gL_){return _gL_}, t39, _f_, Opt, Optdef, - t25, + t38, t4, + nfd, + nfc, + nfkd, + nfkc, string_constr, t11, t11, @@ -48664,15 +46237,15 @@ array_mapi, str_array, match_result, - t122, - t122, - t122, - t122, - t122, - t122, - t122, - t122, - t122, + t116, + t116, + t116, + t116, + t116, + t116, + t116, + t116, + t116, math, error_constr, _e_, @@ -48696,18 +46269,17 @@ attach_js_backtrace, _c_, Error]; - caml_register_global(1642,Js_of_ocaml_Js,"Js_of_ocaml__Js"); + caml_register_global(1660,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; + {if(! caml_call2(symbol$5,i,length)) + return caml_call1(Stdlib_List[9],acc); + var _gK_=nodeList.item(i),match=caml_call1(Opt[10],_gK_); + if(match) + {var e=match[1],i$0=i + 1 | 0,acc$0=[0,e,acc],acc=acc$0,i=i$0; continue} - return caml_call1(Stdlib_List[9],acc)}} + var i$1=i + 1 | 0,i=i$1}} var disconnected=1, preceding=2, @@ -48745,14 +46317,15 @@ {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}} + {return runtime.caml_js_wrap_callback_unsafe + (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) @@ -48765,16 +46338,14 @@ 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 _gH_(param) + {function _gJ_(param){throw Stdlib[8]} + return caml_call2(Opt[8],e.srcElement,_gJ_)} + var t27=caml_call2(Opt[8],e.target,_gH_); + if(! (t27 instanceof Unsafe[1].Node))return t27; + if(3 !== t27.nodeType)return t27; + function _gI_(param){throw [0,Assert_failure,_g_]} + return caml_call2(Opt[8],t27.parentNode,_gI_)} function make$0(s){return caml_jsstring_of_string(s)} var Event=[0,make$0]; function addEventListenerWithOptions(t50,t47,capture,once,passive,t48) @@ -48783,13 +46354,13 @@ 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_)}}; + {var _gE_=[0,t48,e,[0]]; + return function(_gF_,_gG_) + {return runtime.caml_js_call(_gE_,_gF_,_gG_)}}; 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} + function iter(t,f){if(! t)return 0;var b=t[1];return caml_call1(f,b)} iter(capture,function(t37){return t49.capture = t37}); iter(once,function(t39){return t49.once = t39}); iter(passive,function(t41){return t49.passive = t41}); @@ -48804,7 +46375,7 @@ 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} + {if(! param)return 0;var x=param[1];return caml_call1(f,x)} var t63={}; opt_iter(function(x){var t55=! ! x;return t63.bubbles = t55},bubbles); opt_iter @@ -48834,7 +46405,7 @@ removeEventListener, preventDefault, createCustomEvent]; - caml_register_global(1645,Js_of_ocaml_Dom,"Js_of_ocaml__Dom"); + caml_register_global(1663,Js_of_ocaml_Dom,"Js_of_ocaml__Dom"); var arrayBuffer=Unsafe[1].ArrayBuffer, int8Array_inBuffer=Unsafe[1].Int8Array, @@ -48910,33 +46481,31 @@ 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"); + (1664,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}} + {if(! param$0)return 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}} function blob_raw(contentType,endings,a) - {var _gm_=0; + {var _gA_=0; if(endings) - var _gn_=116179762 <= endings[1]?_h_:_i_,_go_=_gn_; + var _gB_=116179762 <= endings[1]?_h_:_i_,_gC_=_gB_; else - var _go_=0; + var _gC_=0; var - _gp_=[0,[0,cst_type,contentType],[0,[0,cst_endings,_go_],_gm_]], + _gD_=[0,[0,cst_type,contentType],[0,[0,cst_endings,_gC_],_gA_]], 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_), + if(! v)return 0; + var v$0=v[1]; + return [0,[0,name,caml_jsstring_of_string(v$0)]]}, + _gD_), options$0= options ?runtime.caml_js_object(caml_call1(Stdlib_Array[12],options)) @@ -48946,25 +46515,27 @@ 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} + {function _gy_(param) + {var _gz_=param[1]; + if(155580615 === _gz_){var s=param[2];return s} + if(486041214 <= _gz_) + {if(1037850489 <= _gz_){var a=param[2];return a} var a$0=param[2]; return a$0} - if(288368849 <= _gl_) + if(288368849 <= _gz_) {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); + var l$0=caml_call2(Stdlib_List[19],_gy_,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)} + if(! match$0) + return caml_call1(Stdlib[2],cst_can_t_retrieve_file_name_n); + var name$0=match$0[1]; + return name$0} 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} @@ -48983,12 +46554,12 @@ [0, blob_from_string, blob_from_any, - [0,document,blob,function(_gj_){return _gj_},string,arrayBuffer$0], + [0,document,blob,function(_gx_){return _gx_},string,arrayBuffer$0], ReaderEvent, filename, fileReader, addEventListener]; - caml_register_global(1648,Js_of_ocaml_File,"Js_of_ocaml__File"); + caml_register_global(1666,Js_of_ocaml_File,"Js_of_ocaml__File"); var onIE=runtime.caml_js_on_ie(0) | 0, click=caml_call1(Event[1],cst_click), @@ -49005,6 +46576,7 @@ keydown=caml_call1(Event[1],cst_keydown), keyup=caml_call1(Event[1],cst_keyup), mousewheel=caml_call1(Event[1],cst_mousewheel), + wheel=caml_call1(Event[1],cst_wheel), DOMMouseScroll=caml_call1(Event[1],cst_DOMMouseScroll), touchstart=caml_call1(Event[1],cst_touchstart), touchmove=caml_call1(Event[1],cst_touchmove), @@ -49048,6 +46620,10 @@ animationend=caml_call1(Event[1],cst_animationend), animationiteration=caml_call1(Event[1],cst_animationiteration), animationcancel=caml_call1(Event[1],cst_animationcancel), + transitionrun=caml_call1(Event[1],cst_transitionrun), + transitionstart=caml_call1(Event[1],cst_transitionstart), + transitionend=caml_call1(Event[1],cst_transitionend), + transitioncancel=caml_call1(Event[1],cst_transitioncancel), canplay=caml_call1(Event[1],cst_canplay), canplaythrough=caml_call1(Event[1],cst_canplaythrough), durationchange=caml_call1(Event[1],cst_durationchange), @@ -49078,99 +46654,10 @@ 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) + {function _gv_(o){return o} + function _gw_(param) {var t8=loc.protocol,t7=loc.hostname,t9=loc.port; if (caml_call2(symbol$8,t8.length,0) @@ -49178,33 +46665,33 @@ 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_)} + if(! caml_call2(symbol$9,t9.length,0))return t13; + var t12=loc.port; + return t13.concat(":",t12)} + return caml_call3(Optdef[7],loc.origin,_gw_,_gv_)} 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 _gs_(pnode){return pnode} + function _gt_(param){throw Stdlib[8]} + var t15=caml_jsstring_of_string(id),_gu_=t87.getElementById(t15); + return caml_call3(Opt[7],_gu_,_gt_,_gs_)} 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 _go_(pnode){return pnode} + function _gp_(param) + {var _gr_=caml_call2(Stdlib_Printf[4],_k_,id); + return caml_call1(Stdlib[2],_gr_)} + var t17=caml_jsstring_of_string(id),_gq_=t87.getElementById(t17); + return caml_call3(Opt[7],_gq_,_gp_,_go_)} function getElementById_opt(id) - {var t19=caml_jsstring_of_string(id),_f$_=t87.getElementById(t19); - return caml_call1(Opt[10],_f$_)} + {var t19=caml_jsstring_of_string(id),_gn_=t87.getElementById(t19); + return caml_call1(Opt[10],_gn_)} 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 _gj_(e) + {var _gm_=caml_call1(coerce,e);return caml_call1(Opt[10],_gm_)} + function _gk_(param){return 0} + var t21=caml_jsstring_of_string(id),_gl_=t87.getElementById(t21); + return caml_call3(Opt[7],_gl_,_gk_,_gj_)} + function opt_iter(x,f){if(! x)return 0;var v=x[1];return caml_call1(f,v)} function createElement(t24,name) {var t23=caml_jsstring_of_string(name);return t24.createElement(t23)} function unsafeCreateElement(doc,name){return createElement(doc,name)} @@ -49212,19 +46699,19 @@ function unsafeCreateElementEx(type,name,doc,elt) {for(;;) {if(0 === type && 0 === name)return createElement(doc,elt); - var _f1_=createElementSyntax[1]; - if(785140586 === _f1_) + var _gd_=createElementSyntax[1]; + if(785140586 === _gd_) {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_; + _gg_=el.tagName.toLowerCase() === "input"?1:0, + _gh_=_gg_?el.name === "x"?1:0:_gg_, + _ge_=_gh_} + catch(_gi_){var _ge_=0} + var _gf_=_ge_?982028505:-1003883683; + createElementSyntax[1] = _gf_; continue} - if(982028505 <= _f1_) + if(982028505 <= _gd_) {var t40=new array_length(); t40.push("<",caml_jsstring_of_string(elt)); opt_iter @@ -49345,8 +46832,8 @@ ?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} + {var t56=e.tagName,_gc_=caml_jsstring_of_string(tag); + return t56.toLowerCase() === _gc_?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)} @@ -49421,27 +46908,27 @@ function messageEvent(ev) {return unsafeCoerceEvent(Unsafe[1].MessageEvent,ev)} function eventRelatedTarget(e) - {function _fX_(param) + {function _f$_(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_)} + if(! caml_string_notequal(match,cst_mouseout$0)) + {var _gb_=function(param){throw [0,Assert_failure,_m_]}; + return caml_call2(Optdef[8],e.toElement,_gb_)} + if(caml_string_notequal(match,cst_mouseover$0))return no_handler; + function _ga_(param){throw [0,Assert_failure,_l_]} + return caml_call2(Optdef[8],e.fromElement,_ga_)} + return caml_call2(Optdef[8],e.relatedTarget,_f$_)} 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 _f7_(x) + {function _f9_(y){return [0,x,y]} + function _f__(param){return eventAbsolutePosition(e)} + return caml_call3(Optdef[7],e.pageY,_f__,_f9_)} + function _f8_(param){return eventAbsolutePosition(e)} + return caml_call3(Optdef[7],e.pageX,_f8_,_f7_)} function elementClientPosition(e) {var t80=e.getBoundingClientRect(),t81=t87.body,t82=t87.documentElement; return [0, @@ -49453,43 +46940,32 @@ t88.scrollLeft + t89.scrollLeft | 0, t88.scrollTop + t89.scrollTop | 0]} function buttonPressed(ev) - {function _fR_(x){return x} - function _fS_(param) + {function _f5_(x){return x} + function _f6_(param) {var match=ev.button,switcher=match - 1 | 0; - if(! (3 < switcher >>> 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_)} + return caml_call3(Optdef[7],ev.which,_f6_,_f5_)} 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_)} + {return addEventListenerWithOptions + (e, + wheel, + capture, + once, + passive, + handler + (function(e) + {function _f3_(param){return 0} + var + dx= + (- caml_call2(Optdef[8],e.wheelDeltaX,_f3_) | 0) / 40 | 0; + function _f4_(param){return e.wheelDelta} + var + dy= + (- caml_call2(Optdef[8],e.wheelDeltaY,_f4_) | 0) / 40 | 0; + return caml_call3(h,e,dx,dy)}))} function addMousewheelEventListener(e,h,capt) {return addMousewheelEventListenerWith(e,[0,capt],0,0,h)} function f(v) @@ -49497,16 +46973,16 @@ match=caml_string_of_jsstring(v), switch$0=caml_string_compare(match,cst_KeyH); if(0 <= switch$0) - {if(! (0 < switch$0))return 8; + {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; + {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; + {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(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; @@ -49524,7 +47000,7 @@ else {var switch$4=caml_string_compare(match,cst_NumpadDivide); if(0 <= switch$4) - {if(! (0 < switch$4))return 84; + {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; @@ -49543,10 +47019,10 @@ else {var switch$5=caml_string_compare(match,cst_KeyX); if(0 <= switch$5) - {if(! (0 < switch$5))return 24; + {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(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; @@ -49565,7 +47041,7 @@ else {var switch$7=caml_string_compare(match,cst_KeyP); if(0 <= switch$7) - {if(! (0 < switch$7))return 16; + {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; @@ -49584,13 +47060,13 @@ else {var switch$8=caml_string_compare(match,cst_Digit6); if(0 <= switch$8) - {if(! (0 < switch$8))return 33; + {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; + {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(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; @@ -49608,7 +47084,7 @@ else {var switch$11=caml_string_compare(match,cst_F1); if(0 <= switch$11) - {if(! (0 < switch$11))return 56; + {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; @@ -49627,10 +47103,10 @@ else {var switch$12=caml_string_compare(match,cst_BrowserRefresh); if(0 <= switch$12) - {if(! (0 < switch$12))return 113; + {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(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; @@ -49648,7 +47124,7 @@ else {var switch$14=caml_string_compare(match,cst_Backslash); if(0 <= switch$14) - {if(! (0 < switch$14))return 52; + {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; @@ -49685,7 +47161,7 @@ function try_key_code_numpad(param) {if(47 <= param) {var switcher=param - 96 | 0; - if(! (15 < switcher >>> 0)) + if(15 >= switcher >>> 0) switch(switcher) {case 0:return 68; case 1:return 69; @@ -49722,10 +47198,10 @@ 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_) + if(214 >= switcher >>> 0) + {var _f2_=switcher; + if(67 <= _f2_) + switch(_f2_) {case 67:return 11; case 68:return 12; case 69:return 13; @@ -49769,7 +47245,7 @@ case 214:return 50 } else - switch(_fM_) + switch(_f2_) {case 0:return 43; case 1:return 39; case 5:return 40; @@ -49814,27 +47290,27 @@ 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 _fV_=evt.keyCode; + function _fW_(_f1_){return run_next(_fV_,try_key_code_normal,_f1_)} var match=evt.location,switcher=match - 1 | 0; if(2 < switcher >>> 0) - var _fH_=make_unidentified; + var _fX_=make_unidentified; else switch(switcher) {case 0: var - _fC_=evt.keyCode, - _fH_=function(_fJ_){return run_next(_fC_,try_key_code_left,_fJ_)}; + _fS_=evt.keyCode, + _fX_=function(_fZ_){return run_next(_fS_,try_key_code_left,_fZ_)}; break; case 1: var - _fD_=evt.keyCode, - _fH_=function(_fI_){return run_next(_fD_,try_key_code_right,_fI_)}; + _fT_=evt.keyCode, + _fX_=function(_fY_){return run_next(_fT_,try_key_code_right,_fY_)}; break; default: var - _fE_=evt.keyCode, - _fH_=function(_fK_){return run_next(_fE_,try_key_code_numpad,_fK_)}} + _fU_=evt.keyCode, + _fX_=function(_f0_){return run_next(_fU_,try_key_code_numpad,_f0_)}} var value=evt.code; return symbol$11 (symbol$11 @@ -49842,27 +47318,26 @@ (0, function(v) {return v?v:caml_call3(Optdef[7],value,make_unidentified,f)}), - _fH_), - _fG_)} + _fX_), + _fW_)} 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} + {if(! caml_call2(symbol$5,0,value))return 0; + try + {var _fQ_=[0,caml_call1(Stdlib_Uchar[8],value)];return _fQ_} + catch(_fR_){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; + {var t104=caml_call2(Optdef[8],evt.key,empty_string),match=t104.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_} + :1 === match?char_of_int(t104.charCodeAt(0) | 0):0} + function element$1(_fP_){return _fP_} function tagged(e) - {var t112=e.tagName,tag=caml_string_of_jsbytes(t112.toLowerCase()); + {var t106=e.tagName,tag=caml_string_of_jsbytes(t106.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)) + if(21 >= switcher >>> 0) switch(switcher) {case 0: return caml_string_notequal(tag,cst_a$1) @@ -49985,42 +47460,42 @@ } 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 _fN_(e){return [0,tagged(e)]} + function _fO_(param){return 0} + return caml_call3(Opt[7],e,_fO_,_fN_)} 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 _fv_(ev){return [0,ev]} + function _fw_(param) + {function _fy_(ev){return [1,ev]} + function _fz_(param) + {function _fB_(ev){return [3,ev]} + function _fC_(param) + {function _fE_(ev){return [4,ev]} + function _fF_(param) + {function _fH_(ev){return [5,ev]} + function _fI_(param) + {function _fK_(ev){return [2,ev]} + function _fL_(param){return [6,ev]} + var _fM_=messageEvent(ev); + return caml_call3(Opt[7],_fM_,_fL_,_fK_)} + var _fJ_=popStateEvent(ev); + return caml_call3(Opt[7],_fJ_,_fI_,_fH_)} + var _fG_=mouseScrollEvent(ev); + return caml_call3(Opt[7],_fG_,_fF_,_fE_)} + var _fD_=wheelEvent(ev); + return caml_call3(Opt[7],_fD_,_fC_,_fB_)} + var _fA_=keyboardEvent(ev); + return caml_call3(Opt[7],_fA_,_fz_,_fy_)} + var _fx_=mouseEvent(ev); + return caml_call3(Opt[7],_fx_,_fw_,_fv_)} 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 _ft_(ev){return [0,taggedEvent(ev)]} + function _fu_(param){return 0} + return caml_call3(Opt[7],ev,_fu_,_ft_)} 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_)} + {function _fr_(param){return ev.stopPropagation()} + function _fs_(param){return ev.cancelBubble = t38} + return caml_call3(Optdef[7],ev.stopPropagation,_fs_,_fr_)} var requestAnimationFrame= runtime.caml_js_pure_expr @@ -50038,54 +47513,149 @@ [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]) + _fo_=function(c){return caml_call1(Optdef[5],c)}, + req=caml_call2(Stdlib_List[38],_fo_,l), + _fp_=function(callback){return req(callback)}; + return _fp_} + catch(_fq_) + {_fq_ = caml_wrap_exception(_fq_); + if(_fq_ !== Stdlib[8])throw _fq_; + var + now=function(param){var t117=new t116();return t117.getTime()}, + last=[0,now(0)]; + return function(callback) {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_}}); + 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}}}); function hasPushState(param) - {var t128=_j_.history;return caml_call1(Optdef[5],t128.pushState)} + {var t122=_j_.history;return caml_call1(Optdef[5],t122.pushState)} function hasPlaceholder(param) - {var t129=createInput(0,0,t87); - return caml_call1(Optdef[5],t129.placeholder)} + {var t123=createInput(0,0,t87); + return caml_call1(Optdef[5],t123.placeholder)} function hasRequired(param) - {var t130=createInput(0,0,t87); - return caml_call1(Optdef[5],t130.required)} + {var t124=createInput(0,0,t87); + return caml_call1(Optdef[5],t124.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; + function loop(d,param) + {if(2147483000. < d) + var remain=d - 2147483000.,step=overflow_limit; else - var remain=0.,step$0=step; + var remain=0.,step=d; 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)]; + cb=remain == 0.?callback:function(_fn_){return loop(remain,_fn_)}, + t125=caml_js_wrap_callback(cb); + id[1] = [0,_j_.setTimeout(t125,step)]; 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} + {var _fm_=id[1]; + if(! _fm_)return 0; + var x=_fm_[1]; + id[1] = 0; + return _j_.clearTimeout(x)} function js_array_of_collection(c){return [].slice.call(c)} var + _n_= + [0, + click, + copy$0, + cut, + paste, + dblclick, + mousedown, + mouseup, + mouseover, + mousemove, + mouseout, + keypress, + keydown, + keyup, + mousewheel, + DOMMouseScroll, + wheel, + 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, + transitionrun, + transitionstart, + transitionend, + transitioncancel, + 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], Js_of_ocaml_Dom_html= [0, d, @@ -50102,7 +47672,7 @@ invoke_handler, eventTarget, eventRelatedTarget, - Event$0, + _n_, addEventListenerWithOptions, addEventListener, removeEventListener, @@ -50282,152 +47852,144 @@ hasPushState, hasPlaceholder, hasRequired]; - caml_register_global(1651,Js_of_ocaml_Dom_html,"Js_of_ocaml__Dom_html"); + caml_register_global(1669,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}} + {if(! param$0)return 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}} 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_} + _fk_=caml_call2(symbol$9,t3.length,0), + _fl_=_fk_?1 - (elt.disabled | 0):_fk_; + return _fl_} 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_= + _fb_= 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; + if(! have_content(v))return 0; + 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)return 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 + _ff_=function(t28){return list.item(t28)}, + _fg_=caml_call2(Stdlib_Array[2],list.length,_ff_), + _fh_=caml_call1(Stdlib_Array[11],_fg_); + return filter_map$0 + (function(f) + {var match=caml_call1(Opt[10],f); + if(! match)return 0; + var file=match[1]; + return [0,[0,name$1,[0,781515420,file]]]}, + _fh_)} + var _fi_=list.item(0),match$2=caml_call1(Opt[10],_fi_); + if(! match$2)return 0; + var file=match$2[1]; + return [0,[0,name$1,[0,781515420,file]],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; 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; + if(! have_content(v$0))return 0; + var name$0=caml_string_of_jsstring(v$0.name); + if(! (v$0.multiple | 0)) + return [0,[0,name$0,[0,-976970511,v$0.value]],0]; + var + _fd_= + function(i) + {var t13=v$0.options,_fj_=t13.item(i); + return caml_call1(Opt[10],_fj_)}, + t10=v$0.options, + options=caml_call2(Stdlib_Array[2],t10.length,_fd_), + _fe_=caml_call1(Stdlib_Array[11],options); + return filter_map$0 + (function(param) + {if(! param)return 0; + var e=param[1]; + return e.selected | 0 + ?[0,[0,name$0,[0,-976970511,e.value]]] + :0}, + _fe_); 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; + if(! have_content(v$1))return 0; + var name=caml_string_of_jsstring(v$1.name); + return [0,[0,name,[0,-976970511,v$1.value]],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_); + _fc_=caml_call2(Stdlib_List[19],_fb_,acc); + return caml_call1(Stdlib_List[14],_fc_)} + var t32=form.elements,_fa_=t32.item(i),match=caml_call1(Opt[10],_fa_); 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}} + var i$1=i - i | 0,i=i$1}} 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_); + var f=form_contents[2],_e__=form_elt[2],_e$_=form_elt[1]; + if(781515420 <= _e__[1]) + {var file=_e__[2],t38=caml_jsstring_of_string(_e$_); return f.append(t38,file)} - var s=_eU_[2],t35=caml_jsstring_of_string(_eV_); + var s=_e__[2],t35=caml_jsstring_of_string(_e$_); 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]]} + if(! match)return [0,891486873,[0,0]]; + var constr=match[1]; + return [0,808620462,new constr()]} 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_); + {var contents=empty_form_contents(0),_e7_=form_elements(0,form); + function _e8_(_e9_){return append(contents,_e9_)} + caml_call2(Stdlib_List[17],_e8_,_e7_); 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]; + {var _e4_=form_elements(_o_,form); + function _e5_(param) + {var _e6_=param[2]; + if(typeof _e6_ !== "number" && -976970511 === _e6_[1]) + {var s=_e6_[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_)} + throw [0,Assert_failure,_p_]} + return caml_call2(Stdlib_List[19],_e5_,_e4_)} var Js_of_ocaml_Form= [0, @@ -50438,7 +48000,7 @@ get_form_contents, empty_form_contents, form_elements]; - caml_register_global(1652,Js_of_ocaml_Form,"Js_of_ocaml__Form"); + caml_register_global(1670,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), @@ -50448,7 +48010,7 @@ 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= + Event$0= [0, readystatechange, loadstart$1, @@ -50458,19 +48020,19 @@ load$1, timeout, loadend$0], - Js_of_ocaml_XmlHttpRequest=[0,runtime.caml_xmlhttprequest_create,Event$1]; + Js_of_ocaml_XmlHttpRequest=[0,runtime.caml_xmlhttprequest_create,Event$0]; caml_register_global - (1653,Js_of_ocaml_XmlHttpRequest,"Js_of_ocaml__XmlHttpRequest"); + (1671,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_)} + var _e1_=caml_call1(Stdlib_Array[12],scripts); + function _e2_(s){return caml_jsstring_of_string(s)} + var _e3_=caml_call2(Stdlib_Array[15],_e2_,_e1_); + return runtime.caml_js_fun_call(Unsafe[1].importScripts,_e3_)} function set_onmessage(handler) {if(Unsafe[1].onmessage === t39) caml_call1(Stdlib[1],cst_Worker_onmessage_is_undefi); @@ -50484,27 +48046,27 @@ 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"); + caml_register_global(1672,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"); + (1673,Js_of_ocaml_WebSockets,"Js_of_ocaml__WebSockets"); var defaultContextAttributes= - {"alpha":t25, - "depth":t25, + {"alpha":t38, + "depth":t38, "stencil":t4, - "antialias":t25, + "antialias":t38, "premultipliedAlpha":t4, "preserveDrawingBuffer":t4, "preferLowPowerToHighPerformance":t4, "failIfMajorPerformanceCaveat":t4}, - webglcontextlost=caml_call1(Event$0[87],cst_webglcontextlost), - webglcontextrestored=caml_call1(Event$0[87],cst_webglcontextrestored), + webglcontextlost=caml_call1(_n_[92],cst_webglcontextlost), + webglcontextrestored=caml_call1(_n_[92],cst_webglcontextrestored), webglcontextcreationerror= - caml_call1(Event$0[87],cst_webglcontextcreationerror), - Event$2= + caml_call1(_n_[92],cst_webglcontextcreationerror), + Event$1= [0,webglcontextlost,webglcontextrestored,webglcontextcreationerror]; function getContext(t3) {var ctx=t3.getContext("webgl"); @@ -50514,8 +48076,8 @@ 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"); + [0,defaultContextAttributes,Event$1,getContext,getContextWithAttributes]; + caml_register_global(1674,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) @@ -50526,25 +48088,26 @@ 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 _eZ_(param){throw [0,Assert_failure,_q_]} + var _e0_=a[i]; + return caml_string_of_jsbytes(caml_call2(Optdef[8],_e0_,_eZ_))} 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_)} + _eX_=r.exec(t11), + _eY_=caml_call2(Opt[3],_eX_,match_result); + return caml_call1(Opt[10],_eY_)} 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 _eU_(t17){return [0,t17.index,t17]} + var _eV_=r.exec(t15),_eW_=caml_call2(Opt[3],_eV_,_eU_); + return caml_call1(Opt[10],_eW_)} 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 _eS_=r[i],_eT_=caml_call2(Optdef[3],_eS_,caml_string_of_jsbytes); + return caml_call1(Optdef[10],_eT_)} var t21=new t11("[$]","g"); function quote_repl(s) {var t23=caml_jsbytes_of_string(s);return t23.replace(t21,"$$$$")} @@ -50570,8 +48133,7 @@ idx$0=idx - 1 | 0, accu$0=[0,blunt_str_array_get(a,idx),accu], accu=accu$0, - idx=idx$0; - continue}} + idx=idx$0}} function split(r,s) {r.lastIndex = 0; var t42=caml_jsbytes_of_string(s); @@ -50604,7 +48166,7 @@ replace_first, split, bounded_split]; - caml_register_global(1657,Js_of_ocaml_Regexp,"Js_of_ocaml__Regexp"); + caml_register_global(1675,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"); @@ -50617,10 +48179,10 @@ (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)))} + if(! with_plus) + return caml_string_of_jsbytes(escape(caml_jsbytes_of_string(s))); + var s$0=caml_string_of_jsbytes(escape(caml_jsbytes_of_string(s))); + return global_replace(plus_re,s$0,cst_2B)} var Not_an_http_protocol= [248,cst_Js_of_ocaml_Url_Not_an_htt,caml_fresh_oo_id(0)], @@ -50630,30 +48192,30 @@ {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 _eQ_=caml_call3(String[30],s,i,47),j=_eQ_} + catch(_eR_) + {_eR_ = caml_wrap_exception(_eR_); + if(_eR_ !== Stdlib[8])throw _eR_; 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_} + {var _eP_=a[2]; + if(! _eP_)return 0; + if(! caml_string_notequal(_eP_[1],cst$3) && ! _eP_[2])return _r_} return a} function encode_arguments(l) - {function _ew_(param) + {function _eK_(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_)} + _eM_=urlencode(0,v), + _eN_=caml_call2(Stdlib[28],cst$4,_eM_), + _eO_=urlencode(0,n); + return caml_call2(Stdlib[28],_eO_,_eN_)} + var _eL_=caml_call2(Stdlib_List[19],_eK_,l); + return caml_call2(String[6],cst$5,_eL_)} function decode_arguments_js_string(s) {var t0=caml_jsstring_of_string(caml_call2(String[1],1,38)), @@ -50665,35 +48227,34 @@ {if(caml_call2(symbol$5,idx$0,0))return acc; try {var - _eo_=idx$0 - 1 | 0, - _ep_= + _eB_=idx$0 - 1 | 0, + _eC_= function(s) - {function _eu_(param) + {function _eI_(param) {var y=param[2], x=param[1], - _ev_=urldecode_js_string_string(y); - return [0,urldecode_js_string_string(x),_ev_]} + _eJ_=urldecode_js_string_string(y); + return [0,urldecode_js_string_string(x),_eJ_]} 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; + var _eH_=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_}}} + _eG_=s.slice(t7), + _eH_=[0,s.slice(0,t5),_eG_]; + return caml_call3(Optdef[7],_eH_,interrupt,_eI_)}, + _eD_=t18[idx$0], + _eE_=aux([0,caml_call3(Optdef[7],_eD_,interrupt,_eC_),acc],_eB_); + return _eE_} + catch(_eF_) + {_eF_ = caml_wrap_exception(_eF_); + if(_eF_ !== Local_exn)throw _eF_; + var idx$1=idx$0 - 1 | 0,idx$0=idx$1; + continue}}} return aux(0,len - 1 | 0)} function decode_arguments(s) {return decode_arguments_js_string(caml_jsbytes_of_string(s))} @@ -50703,9 +48264,10 @@ 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) + {function _d$_(res) {var - prot_string=caml_call2(Optdef[8],res[1],interrupt), + _em_=res[1], + prot_string=caml_call2(Optdef[8],_em_,interrupt), match=caml_string_of_jsbytes(prot_string.toLowerCase()); if (caml_string_notequal(match,cst_file$0) @@ -50732,49 +48294,55 @@ default:switch$2 = 1} if(switch$2) {var - _ef_=function(param){return caml_jsbytes_of_string(cst$7)}, + _en_=function(param){return caml_jsbytes_of_string(cst$7)}, + _eo_=res[6], 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_= + urldecode_js_string_string(caml_call2(Optdef[8],_eo_,_en_)), + _ep_=function(param){return caml_jsbytes_of_string(cst$8)}, + _eq_=res[10], + _er_=urldecode_js_string_string(caml_call2(Optdef[8],_eq_,_ep_)), + _es_=function(param){return caml_jsbytes_of_string(cst$9)}, + _et_=res[8], + _eu_=decode_arguments_js_string(caml_call2(Optdef[8],_et_,_es_)), + _ev_=path_of_path_string(path_str), + _ew_=function(param){return caml_jsbytes_of_string(cst$10)}, + _ex_=res[4], + s=caml_string_of_jsbytes(caml_call2(Optdef[8],_ex_,_ew_)), + _ey_= caml_string_notequal(s,cst$6)?caml_int_of_string(s):ssl?443:80, + _ez_=res[2], url= [0, urldecode_js_string_string - (caml_call2(Optdef[8],res[2],interrupt)), - _em_, - _ek_, + (caml_call2(Optdef[8],_ez_,interrupt)), + _ey_, + _ev_, path_str, - _ej_, - _eh_], - _en_=ssl?[1,url]:[0,url]; - return [0,_en_]}} + _eu_, + _er_], + _eA_=ssl?[1,url]:[0,url]; + return [0,_eA_]}} throw Not_an_http_protocol} - function _d8_(param) - {function _d__(res) + function _ea_(param) + {function _ec_(res) {var + _ef_=res[2], 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)} + urldecode_js_string_string(caml_call2(Optdef[8],_ef_,interrupt)); + function _eg_(param){return caml_jsbytes_of_string(cst$11)} 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_)} + _eh_=res[6], + _ei_=caml_string_of_jsbytes(caml_call2(Optdef[8],_eh_,_eg_)); + function _ej_(param){return caml_jsbytes_of_string(cst$12)} + var + _ek_=res[4], + _el_=decode_arguments_js_string(caml_call2(Optdef[8],_ek_,_ej_)); + return [0,[2,[0,path_of_path_string(path_str),path_str,_el_,_ei_]]]} + function _ed_(param){return 0} + var _ee_=t26.exec(s); + return caml_call3(Opt[7],_ee_,_ed_,_ec_)} + var _eb_=t24.exec(s); + return caml_call3(Opt[7],_eb_,_ea_,_d$_)} function url_of_string(s) {return url_of_js_string(caml_jsbytes_of_string(s))} function string_of_url(param) @@ -50788,33 +48356,33 @@ 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_); + var _dy_=urlencode(0,frag),_dz_=caml_call2(Stdlib[28],cst$14,_dy_); else - var _dv_=cst$21; + var _dz_=cst$21; if(args) var - _dw_=encode_arguments(args), - _dx_=caml_call2(Stdlib[28],cst$15,_dw_); + _dA_=encode_arguments(args), + _dB_=caml_call2(Stdlib[28],cst$15,_dA_); else - var _dx_=cst$20; + var _dB_=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_); + _dC_=caml_call2(Stdlib[28],_dB_,_dz_), + _dD_=function(x){return urlencode(0,x)}, + _dE_=caml_call2(Stdlib_List[19],_dD_,path), + _dF_=caml_call2(String[6],cst$16,_dE_), + _dG_=caml_call2(Stdlib[28],_dF_,_dC_), + _dH_=caml_call2(Stdlib[28],cst$17,_dG_); if(80 === port) - var _dE_=cst$18; + var _dI_=cst$18; else var - _dI_=caml_call1(Stdlib[33],port), - _dE_=caml_call2(Stdlib[28],cst$19,_dI_); + _dM_=caml_call1(Stdlib[33],port), + _dI_=caml_call2(Stdlib[28],cst$19,_dM_); 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_); + _dJ_=caml_call2(Stdlib[28],_dI_,_dH_), + _dK_=urlencode(0,host), + _dL_=caml_call2(Stdlib[28],_dK_,_dJ_); + return caml_call2(Stdlib[28],cst_http$1,_dL_); case 1: var match$0=param[1], @@ -50825,34 +48393,34 @@ 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_); + _dN_=urlencode(0,frag$0), + _dO_=caml_call2(Stdlib[28],cst$23,_dN_); else - var _dK_=cst$30; + var _dO_=cst$30; if(args$0) var - _dL_=encode_arguments(args$0), - _dM_=caml_call2(Stdlib[28],cst$24,_dL_); + _dP_=encode_arguments(args$0), + _dQ_=caml_call2(Stdlib[28],cst$24,_dP_); else - var _dM_=cst$29; + var _dQ_=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_); + _dR_=caml_call2(Stdlib[28],_dQ_,_dO_), + _dS_=function(x){return urlencode(0,x)}, + _dT_=caml_call2(Stdlib_List[19],_dS_,path$0), + _dU_=caml_call2(String[6],cst$25,_dT_), + _dV_=caml_call2(Stdlib[28],_dU_,_dR_), + _dW_=caml_call2(Stdlib[28],cst$26,_dV_); if(443 === port$0) - var _dT_=cst$27; + var _dX_=cst$27; else var - _dX_=caml_call1(Stdlib[33],port$0), - _dT_=caml_call2(Stdlib[28],cst$28,_dX_); + _d1_=caml_call1(Stdlib[33],port$0), + _dX_=caml_call2(Stdlib[28],cst$28,_d1_); 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_); + _dY_=caml_call2(Stdlib[28],_dX_,_dW_), + _dZ_=urlencode(0,host$0), + _d0_=caml_call2(Stdlib[28],_dZ_,_dY_); + return caml_call2(Stdlib[28],cst_https$1,_d0_); default: var match$1=param[1], @@ -50861,32 +48429,32 @@ 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_); + _d2_=urlencode(0,frag$1), + _d3_=caml_call2(Stdlib[28],cst$32,_d2_); else - var _dZ_=cst$36; + var _d3_=cst$36; if(args$1) var - _d0_=encode_arguments(args$1), - _d1_=caml_call2(Stdlib[28],cst$33,_d0_); + _d4_=encode_arguments(args$1), + _d5_=caml_call2(Stdlib[28],cst$33,_d4_); else - var _d1_=cst$35; + var _d5_=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; + _d6_=caml_call2(Stdlib[28],_d5_,_d3_), + _d7_=function(x){return urlencode(0,x)}, + _d8_=caml_call2(Stdlib_List[19],_d7_,path$1), + _d9_=caml_call2(String[6],cst$34,_d8_), + _d__=caml_call2(Stdlib[28],_d9_,_d6_); + return caml_call2(Stdlib[28],cst_file$2,_d__)}} + var _s_=caml_call1(Optdef[2],_j_.location); + if(caml_call1(Optdef[5],_s_)) + var _t_=_j_.location; else var - t42=function(param,_dt_){return 0}, - t41$0=function(param,_ds_){return 0}, + t42=function(param,_dx_){return 0}, + t41=function(param,_dw_){return 0}, t40=function(param){return 0}, - _s_= + _t_= {"href":"", "protocol":"", "host":"", @@ -50897,42 +48465,42 @@ "hash":"", "origin":t39, "reload":caml_js_wrap_meth_callback(t40), - "replace":caml_js_wrap_meth_callback(t41$0), + "replace":caml_js_wrap_meth_callback(t41), "assign":caml_js_wrap_meth_callback(t42)}; var - host=urldecode_js_string_string(_s_.hostname), - protocol=urldecode_js_string_string(_s_.protocol), - _t_=0, + host=urldecode_js_string_string(_t_.hostname), + protocol=urldecode_js_string_string(_t_.protocol), + _u_=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), + {var _du_=[0,caml_int_of_string(caml_string_of_jsbytes(_t_.port))]; + return _du_} + catch(_dv_) + {_dv_ = caml_wrap_exception(_dv_); + if(_dv_[1] === Stdlib[7])return 0; + throw _dv_}} + (_u_), + path_string=urldecode_js_string_string(_t_.pathname), path=path_of_path_string(path_string), - t49=_s_.search; + t49=_t_.search; if(t49.charAt(0) === "?") - var t52=_s_.search,_u_=t52.slice(1); + var t52=_t_.search,_v_=t52.slice(1); else - var _u_=_s_.search; - var arguments$0=decode_arguments_js_string(_u_); + var _v_=_t_.search; + var arguments$0=decode_arguments_js_string(_v_); 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 _dr_(res){return caml_string_of_jsstring(res[1])} + function _ds_(param){return cst$37} + var t57=new t11("#(.*)"),t58=_t_.href,_dt_=t58.match(t57); + return caml_call3(Opt[7],_dt_,_ds_,_dr_)} 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)} + {var t59=caml_jsbytes_of_string(urlencode(0,s));return _t_.hash = t59} + function get$2(param){return url_of_js_string(_t_.href)} function set$0(u) - {var t62=caml_jsbytes_of_string(string_of_url(u));return _s_.href = t62} + {var t62=caml_jsbytes_of_string(string_of_url(u));return _t_.href = t62} var - as_string=urldecode_js_string_string(_s_.href), + as_string=urldecode_js_string_string(_t_.href), Js_of_ocaml_Url= [0, urldecode, @@ -50956,10 +48524,10 @@ get$2, set$0, as_string]]; - caml_register_global(1659,Js_of_ocaml_Url,"Js_of_ocaml__Url"); + caml_register_global(1677,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"); + (1678,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); @@ -50983,23 +48551,23 @@ 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_); + _cp_=caml_call2(Stdlib[28],cst$41,git_version), + js_of_ocaml_version=caml_call2(Stdlib[28],s,_cp_); var - _v_=runtime.caml_create_file, - _w_=runtime.caml_read_file_content, + _w_=runtime.caml_create_file, + _x_=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_)}, + function(_dq_){return runtime.caml_list_mount_point(_dq_)}, unmount, mount, + _x_, _w_, - _v_, update_file, js_of_ocaml_version]; - caml_register_global(1661,Js_of_ocaml_Sys_js,"Js_of_ocaml__Sys_js"); + caml_register_global(1679,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)} @@ -51014,15 +48582,15 @@ 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"); + (1680,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_= + _dp_= caml_call1 (caml_call1(Stdlib_List[19],caml_jsstring_of_string),entry_types), - t1=caml_js_from_array(caml_call1(Stdlib_Array[12],_dl_)), + t1=caml_js_from_array(caml_call1(Stdlib_Array[12],_dp_)), t5={}; t5.entryTypes = t1; var t3=caml_js_wrap_callback(f),t6=new t4$1(t3); @@ -51030,7 +48598,7 @@ 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"); + (1681,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)} @@ -51046,7 +48614,7 @@ attribute_filter, param) {function opt_iter(x,f) - {if(x){var x$0=x[1];return caml_call1(f,x$0)}return 0} + {if(! x)return 0;var x$0=x[1];return caml_call1(f,x$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}); @@ -51068,7 +48636,7 @@ 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"); + (1682,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} @@ -51079,23 +48647,24 @@ t10=Unsafe[1].Object, t11=t10.keys(t), res=[0,0], - _dh_=t11.length - 1 | 0, - _dg_=0; - if(! (_dh_ < 0)) - {var i=_dg_; + _dk_=t11.length - 1 | 0, + _dj_=0; + if(_dk_ >= 0) + {var i=_dj_; for(;;) {var - _di_=function(param){return caml_call1(Stdlib[2],cst_Jstable_keys)}, - t15=caml_call2(Optdef[8],t11[i],_di_), + _dl_=function(param){return caml_call1(Stdlib[2],cst_Jstable_keys)}, + _dm_=t11[i], + t15=caml_call2(Optdef[8],_dm_,_dl_), 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} + _dn_=res[1]; + res[1] = [0,t15.substring(0,t14),_dn_]; + var _do_=i + 1 | 0; + if(_dk_ !== i){var i=_do_;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"); + caml_register_global(1683,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); @@ -51109,26 +48678,29 @@ 255 === value[0]) - return runtime.caml_int64_create_lo_mi_hi(value[1],value[2],value[3]); + {var _dh_=value[3],_di_=value[2]; + return runtime.caml_int64_create_lo_mi_hi(value[1],_di_,_dh_)} 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_) + function output_reviver(key,value) + {var _dg_=Stdlib_Obj[13]; + return caml_call2(symbol$8,runtime.caml_obj_tag(value),_dg_) ?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)} + function output(t9) + {var t10=caml_js_wrap_callback(output_reviver); + 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"); + caml_register_global(1685,Js_of_ocaml_Json,"Js_of_ocaml__Json"); function string_of_name(param) - {var _de_=param; - if(74 <= _de_) - {if(111 <= _de_) - switch(_de_) + {var _df_=param; + if(74 <= _df_) + {if(111 <= _df_) + switch(_df_) {case 111:return cst_palevioletred; case 112:return cst_papayawhip; case 113:return cst_peachpuff; @@ -51165,7 +48737,7 @@ case 144:return cst_whitesmoke; case 145:return cst_yellow; default:return cst_yellowgreen} - switch(_de_) + switch(_df_) {case 74:return cst_lightpink; case 75:return cst_lightsalmon; case 76:return cst_lightseagreen; @@ -51203,8 +48775,8 @@ case 108:return cst_palegoldenrod; case 109:return cst_palegreen; default:return cst_paleturquoise}} - if(37 <= _de_) - switch(_de_) + if(37 <= _df_) + switch(_df_) {case 37:return cst_darkslategrey; case 38:return cst_darkturquoise; case 39:return cst_darkviolet; @@ -51242,7 +48814,7 @@ case 71:return cst_lightgray; case 72:return cst_lightgreen; default:return cst_lightgrey} - switch(_de_) + switch(_df_) {case 0:return cst_aliceblue; case 1:return cst_antiquewhite; case 2:return cst_aqua; @@ -51283,16 +48855,16 @@ 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; + {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; + {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; + {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(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; @@ -51313,7 +48885,7 @@ else {var switch$4=caml_string_compare(s,cst_rosybrown$0); if(0 <= switch$4) - {if(! (0 < switch$4))return 120; + {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; @@ -51335,10 +48907,10 @@ else {var switch$5=caml_string_compare(s,cst_mediumslateblue$0); if(0 <= switch$5) - {if(! (0 < switch$5))return 92; + {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(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; @@ -51359,7 +48931,7 @@ else {var switch$7=caml_string_compare(s,cst_limegreen$0); if(0 <= switch$7) - {if(! (0 < switch$7))return 83; + {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; @@ -51381,13 +48953,13 @@ else {var switch$8=caml_string_compare(s,cst_darkslategray$0); if(0 <= switch$8) - {if(! (0 < switch$8))return 36; + {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; + {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(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; @@ -51409,7 +48981,7 @@ else {var switch$11=caml_string_compare(s,cst_floralwhite$0); if(0 <= switch$11) - {if(! (0 < switch$11))return 46; + {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; @@ -51431,10 +49003,10 @@ else {var switch$12=caml_string_compare(s,cst_cornsilk$0); if(0 <= switch$12) - {if(! (0 < switch$12))return 18; + {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(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; @@ -51455,7 +49027,7 @@ else {var switch$14=caml_string_compare(s,cst_blue$0); if(0 <= switch$14) - {if(! (0 < switch$14))return 9; + {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; @@ -51474,177 +49046,177 @@ 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_]} + var _de_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_color_name); + throw [0,Stdlib[6],_de_]} 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_}} + {var _dd_=param; + if(74 <= _dd_) + {if(111 <= _dd_) + switch(_dd_) + {case 111:return _br_; + case 112:return _bs_; + case 113:return _bt_; + case 114:return _bu_; + case 115:return _bv_; + case 116:return _bw_; + case 117:return _bx_; + case 118:return _by_; + case 119:return _bz_; + case 120:return _bA_; + case 121:return _bB_; + case 122:return _bC_; + case 123:return _bD_; + case 124:return _bE_; + case 125:return _bF_; + case 126:return _bG_; + case 127:return _bH_; + case 128:return _bI_; + case 129:return _bJ_; + case 130:return _bK_; + case 131:return _bL_; + case 132:return _bM_; + case 133:return _bN_; + case 134:return _bO_; + case 135:return _bP_; + case 136:return _bQ_; + case 137:return _bR_; + case 138:return _bS_; + case 139:return _bT_; + case 140:return _bU_; + case 141:return _bV_; + case 142:return _bW_; + case 143:return _bX_; + case 144:return _bY_; + case 145:return _bZ_; + default:return _b0_} + switch(_dd_) + {case 74:return _aS_; + case 75:return _aT_; + case 76:return _aU_; + case 77:return _aV_; + case 78:return _aW_; + case 79:return _aX_; + case 80:return _aY_; + case 81:return _aZ_; + case 82:return _a0_; + case 83:return _a1_; + case 84:return _a2_; + case 85:return _a3_; + case 86:return _a4_; + case 87:return _a5_; + case 88:return _a6_; + case 89:return _a7_; + case 90:return _a8_; + case 91:return _a9_; + case 92:return _a__; + case 93:return _a$_; + case 94:return _ba_; + case 95:return _bb_; + case 96:return _bc_; + case 97:return _bd_; + case 98:return _be_; + case 99:return _bf_; + case 100:return _bg_; + case 101:return _bh_; + case 102:return _bi_; + case 103:return _bj_; + case 104:return _bk_; + case 105:return _bl_; + case 106:return _bm_; + case 107:return _bn_; + case 108:return _bo_; + case 109:return _bp_; + default:return _bq_}} + if(37 <= _dd_) + switch(_dd_) + {case 37:return _ah_; + case 38:return _ai_; + case 39:return _aj_; + case 40:return _ak_; + case 41:return _al_; + case 42:return _am_; + case 43:return _an_; + case 44:return _ao_; + case 45:return _ap_; + case 46:return _aq_; + case 47:return _ar_; + case 48:return _as_; + case 49:return _at_; + case 50:return _au_; + case 51:return _av_; + case 52:return _aw_; + case 53:return _ax_; + case 54:return _ay_; + case 55:return _az_; + case 56:return _aA_; + case 57:return _aB_; + case 58:return _aC_; + case 59:return _aD_; + case 60:return _aE_; + case 61:return _aF_; + case 62:return _aG_; + case 63:return _aH_; + case 64:return _aI_; + case 65:return _aJ_; + case 66:return _aK_; + case 67:return _aL_; + case 68:return _aM_; + case 69:return _aN_; + case 70:return _aO_; + case 71:return _aP_; + case 72:return _aQ_; + default:return _aR_} + switch(_dd_) + {case 0:return _y_; + case 1:return _z_; + case 2:return _A_; + case 3:return _B_; + case 4:return _C_; + case 5:return _D_; + case 6:return _E_; + case 7:return _F_; + case 8:return _G_; + case 9:return _H_; + case 10:return _I_; + case 11:return _J_; + case 12:return _K_; + case 13:return _L_; + case 14:return _M_; + case 15:return _N_; + case 16:return _O_; + case 17:return _P_; + case 18:return _Q_; + case 19:return _R_; + case 20:return _S_; + case 21:return _T_; + case 22:return _U_; + case 23:return _V_; + case 24:return _W_; + case 25:return _X_; + case 26:return _Y_; + case 27:return _Z_; + case 28:return ___; + case 29:return _$_; + case 30:return _aa_; + case 31:return _ab_; + case 32:return _ac_; + case 33:return _ad_; + case 34:return _ae_; + case 35:return _af_; + default:return _ag_}} 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]]} + {if(! a)return [1,[0,r,g,b]];var a$0=a[1];return [3,[0,r,g,b,a$0]]} 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]]} + {if(! a)return [5,[0,h,s,l]];var a$0=a[1];return [6,[0,h,s,l,a$0]]} 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); + return caml_call4(Stdlib_Printf[4],_b1_,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); + return caml_call4(Stdlib_Printf[4],_b2_,r$0,g$0,b$0); case 3: var match$1=param[1], @@ -51652,7 +49224,7 @@ 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); + return caml_call5(Stdlib_Printf[4],_b3_,r$1,g$1,b$1,a); case 4: var match$2=param[1], @@ -51660,10 +49232,10 @@ 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); + return caml_call5(Stdlib_Printf[4],_b4_,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); + return caml_call4(Stdlib_Printf[4],_b5_,h,s,l); default: var match$4=param[1], @@ -51671,23 +49243,22 @@ 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)}} + return caml_call5(Stdlib_Printf[4],_b6_,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$_} + _c$_=caml_call2(symbol$5,i,0), + _da_=_c$_ || caml_call2(symbol$9,i,255); + if(! _da_)return _da_; + var + _db_=caml_call1(Stdlib[33],i), + _dc_=caml_call2(Stdlib[28],_db_,cst_is_out_of_valid_range); + throw [0,Stdlib[6],_dc_]} in_range(red); in_range(green); in_range(blue); - return caml_call4(Stdlib_Printf[4],_b6_,red,green,blue)} + return caml_call4(Stdlib_Printf[4],_b7_,red,green,blue)} function js_t_of_js_string(s) {var t0=caml_jsbytes_of_string(cst_rgb_s_d_s_d_s_d), @@ -51720,281 +49291,259 @@ && ! (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); + if(caml_call2(Stdlib_List[36],_c8_,_b8_))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_]} + _c9_=caml_string_of_jsstring(s), + _c__=caml_call2(Stdlib[28],_c9_,cst_is_not_a_valid_color); + throw [0,Stdlib[6],_c__]} 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))} + {if(0 !== c[0])return caml_jsstring_of_string(string_of_t(c)); + var n=c[1]; + return caml_jsstring_of_string(string_of_name(n))} 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 _cV_=[0,name_of_string(s)];return _cV_} + catch(_cW_) + {_cW_ = caml_wrap_exception(_cW_); + if(_cW_[1] !== Stdlib[6])throw _cW_; + var + fail= + function(param) + {var _c7_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_color$0); + throw [0,Stdlib[6],_c7_]}, + 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)return fail(0); + var i=param[1]; + try + {var _c5_=caml_int_of_string(i);return _c5_} + catch(_c6_) + {_c6_ = caml_wrap_exception(_c6_); + if(_c6_[1] === Stdlib[6]) + var s=_c6_[2]; + else + {if(_c6_[1] !== Stdlib[7])throw _c6_;var s=_c6_[2]} + var + _c2_=caml_call2(Stdlib[28],cst$39,s), + _c3_=caml_call2(Stdlib[28],i,_c2_), + _c4_=caml_call2(Stdlib[28],cst_color_conversion_error,_c3_); + throw [0,Stdlib[6],_c4_]}}, + f_of_s= + function(f) + {try + {var _c0_=caml_float_of_string(f);return _c0_} + catch(_c1_) + {_c1_ = caml_wrap_exception(_c1_); + if(_c1_[1] === Stdlib[6]) + var s=_c1_[2]; + else + {if(_c1_[1] !== Stdlib[7])throw _c1_;var s=_c1_[2]} + var + _cX_=caml_call2(Stdlib[28],cst$40,s), + _cY_=caml_call2(Stdlib[28],f,_cX_), + _cZ_=caml_call2(Stdlib[28],cst_color_conversion_error$0,_cY_); + throw [0,Stdlib[6],_cZ_]}}, + match=string_match(re_rgb,s,0); + if(match) {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)} + 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 _cD_=match$0[1]; + if(! caml_string_notequal(_cD_,cst_rgb)) + {if(alpha)return fail(0); + var _cH_=i_of_s_o(blue),_cI_=i_of_s_o(green); + return [1,[0,i_of_s_o(red),_cI_,_cH_]]} + if(! caml_string_notequal(_cD_,cst_rgba)) + {if(! alpha)return fail(0); + var + a=alpha[1], + _cE_=f_of_s(a), + _cF_=i_of_s_o(blue), + _cG_=i_of_s_o(green); + return [3,[0,i_of_s_o(red),_cG_,_cF_,_cE_]]}} return fail(0)} - throw _cV_}} + 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 _cJ_=match$2[1]; + if(! caml_string_notequal(_cJ_,cst_rgb$0)) + {if(alpha$0)return fail(0); + var _cN_=i_of_s_o(blue$0),_cO_=i_of_s_o(green$0); + return [2,[0,i_of_s_o(red$0),_cO_,_cN_]]} + if(! caml_string_notequal(_cJ_,cst_rgba$0)) + {if(! alpha$0)return fail(0); + var + a$0=alpha$0[1], + _cK_=f_of_s(a$0), + _cL_=i_of_s_o(blue$0), + _cM_=i_of_s_o(green$0); + return [4,[0,i_of_s_o(red$0),_cM_,_cL_,_cK_]]}} + return fail(0)} + var match$3=string_match(re_hsl,s,0); + if(! match$3)return fail(0); + 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 _cP_=match$4[1]; + if(! caml_string_notequal(_cP_,cst_hsl)) + {if(alpha$1)return fail(0); + var _cT_=i_of_s_o(blue$1),_cU_=i_of_s_o(green$1); + return [5,[0,i_of_s_o(red$1),_cU_,_cT_]]} + if(! caml_string_notequal(_cP_,cst_hsla)) + {if(! alpha$1)return fail(0); + var + a$1=alpha$1[1], + _cQ_=f_of_s(a$1), + _cR_=i_of_s_o(blue$1), + _cS_=i_of_s_o(green$1); + return [6,[0,i_of_s_o(red$1),_cS_,_cR_,_cQ_]]}} + return fail(0)}} 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)}} + {if(typeof param === "number")return cst_0; + switch(param[0]) + {case 0: + var f=param[1];return caml_call3(Stdlib_Printf[4],_b9_,f,cst_em$0); + case 1: + var f$0=param[1];return caml_call3(Stdlib_Printf[4],_b__,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],_ca_,f$2,cst_gd); + case 4: + var f$3=param[1]; + return caml_call3(Stdlib_Printf[4],_cb_,f$3,cst_rem); + case 5: + var f$4=param[1];return caml_call3(Stdlib_Printf[4],_cc_,f$4,cst_vw); + case 6: + var f$5=param[1];return caml_call3(Stdlib_Printf[4],_cd_,f$5,cst_vh); + case 7: + var f$6=param[1];return caml_call3(Stdlib_Printf[4],_ce_,f$6,cst_vm); + case 8: + var f$7=param[1];return caml_call3(Stdlib_Printf[4],_cf_,f$7,cst_ch); + case 9: + var f$8=param[1];return caml_call3(Stdlib_Printf[4],_cg_,f$8,cst_mm); + case 10: + var f$9=param[1];return caml_call3(Stdlib_Printf[4],_ch_,f$9,cst_cm); + case 11: + var f$10=param[1]; + return caml_call3(Stdlib_Printf[4],_ci_,f$10,cst_in); + case 12: + var f$11=param[1]; + return caml_call3(Stdlib_Printf[4],_cj_,f$11,cst_pt); + default: + var f$12=param[1]; + return caml_call3(Stdlib_Printf[4],_ck_,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 _cC_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_length); + throw [0,Stdlib[6],_cC_]} 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)} + if(! match)return fail(0); + var r=match[1],match$0=matched_group(r,1); + if(match$0) + {var f=match$0[1]; + try + {var _cA_=caml_float_of_string(f)} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] !== Stdlib[6])throw exn; + var + s$0=exn[2], + _cz_=caml_call2(Stdlib[28],cst_length_conversion_error,s$0); + throw [0,Stdlib[6],_cz_]} + var f$0=_cA_} + else + var f$0=fail(0); + var match$1=matched_group(r,2); + if(! match$1)return fail(0); + var _cB_=match$1[1],switch$0=caml_string_compare(_cB_,cst_pc$0); + if(0 <= switch$0) + {if(0 >= switch$0)return [13,f$0]; + if(! caml_string_notequal(_cB_,cst_pt$0))return [12,f$0]; + if(! caml_string_notequal(_cB_,cst_px$0))return [2,f$0]; + if(! caml_string_notequal(_cB_,cst_rem$0))return [4,f$0]; + if(! caml_string_notequal(_cB_,cst_vh$0))return [6,f$0]; + if(! caml_string_notequal(_cB_,cst_vm$0))return [7,f$0]; + if(! caml_string_notequal(_cB_,cst_vw$0))return [5,f$0]} + else + {if(! caml_string_notequal(_cB_,cst_ch$0))return [8,f$0]; + if(! caml_string_notequal(_cB_,cst_cm$0))return [10,f$0]; + if(! caml_string_notequal(_cB_,cst_em$1))return [0,f$0]; + if(! caml_string_notequal(_cB_,cst_ex$0))return [1,f$0]; + if(! caml_string_notequal(_cB_,cst_gd$0))return [3,f$0]; + if(! caml_string_notequal(_cB_,cst_in$0))return [11,f$0]; + if(! caml_string_notequal(_cB_,cst_mm$0))return [9,f$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); + var f=param[1];return caml_call3(Stdlib_Printf[4],_cl_,f,cst_deg); case 1: var f$0=param[1]; - return caml_call3(Stdlib_Printf[4],_cl_,f$0,cst_grad); + return caml_call3(Stdlib_Printf[4],_cm_,f$0,cst_grad); case 2: var f$1=param[1]; - return caml_call3(Stdlib_Printf[4],_cm_,f$1,cst_rad); + return caml_call3(Stdlib_Printf[4],_cn_,f$1,cst_rad); default: var f$2=param[1]; - return caml_call3(Stdlib_Printf[4],_cn_,f$2,cst_turns)}} + return caml_call3(Stdlib_Printf[4],_co_,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 _cy_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_length$0); + throw [0,Stdlib[6],_cy_]} 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)} + if(! match)return fail(0); + var r=match[1],match$0=matched_group(r,1); + if(match$0) + {var f=match$0[1]; + try + {var _cw_=caml_float_of_string(f)} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] !== Stdlib[6])throw exn; + var + s$0=exn[2], + _cv_=caml_call2(Stdlib[28],cst_length_conversion_error$0,s$0); + throw [0,Stdlib[6],_cv_]} + var f$0=_cw_} + else + var f$0=fail(0); + var match$1=matched_group(r,2); + if(match$1) + {var _cx_=match$1[1]; + if(! caml_string_notequal(_cx_,cst_deg$0))return [0,f$0]; + if(! caml_string_notequal(_cx_,cst_grad$0))return [1,f$0]; + if(! caml_string_notequal(_cx_,cst_rad$0))return [2,f$0]; + if(! caml_string_notequal(_cx_,cst_turns$0))return [3,f$0]} return fail(0)} var Angle=[0,string_of_t$1,js$1,ml$1], @@ -52012,18 +49561,18 @@ js_t_of_js_string], Length, Angle]; - caml_register_global(1668,Js_of_ocaml_CSS,"Js_of_ocaml__CSS"); + caml_register_global(1686,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; + var _cu_=! ! 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]; + _cu_)} + var Js_of_ocaml_Dom_events=[0,_n_,listen,removeEventListener]; caml_register_global - (1669,Js_of_ocaml_Dom_events,"Js_of_ocaml__Dom_events"); + (1687,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)]; @@ -52110,17 +49659,17 @@ 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]} + {function _cr_(e){if(e instanceof svg_element)return e;throw Stdlib[8]} + function _cs_(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_)} + _ct_=t7.getElementById(t6); + return caml_call3(Opt[7],_ct_,_cs_,_cr_)} 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} + {var t9=e.tagName,_cq_=caml_jsstring_of_string(tag); + return t9.toLowerCase() === _cq_?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)} @@ -52296,7 +49845,7 @@ use, view, vkern]]; - caml_register_global(1670,Js_of_ocaml_Dom_svg,"Js_of_ocaml__Dom_svg"); + caml_register_global(1688,Js_of_ocaml_Dom_svg,"Js_of_ocaml__Dom_svg"); function withCredentials(b) {var t1={},t0=! ! b;t1.withCredentials = t0;return t1} var @@ -52305,11 +49854,11 @@ Js_of_ocaml_EventSource= [0,withCredentials,eventSource,eventSource_options,addEventListener]; caml_register_global - (1671,Js_of_ocaml_EventSource,"Js_of_ocaml__EventSource"); + (1689,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"); + caml_register_global(1690,Js_of_ocaml_Firebug,"Js_of_ocaml__Firebug"); function empty_position_options(param){return {}} var t1$0=Unsafe[1].navigator, @@ -52319,7 +49868,7 @@ Js_of_ocaml_Geolocation= [0,empty_position_options,geolocation,is_supported$3]; caml_register_global - (1673,Js_of_ocaml_Geolocation,"Js_of_ocaml__Geolocation"); + (1691,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) @@ -52331,7 +49880,7 @@ is_supported$4, intersectionObserver_unsafe]; caml_register_global - (1674,Js_of_ocaml_IntersectionObserv,"Js_of_ocaml__IntersectionObserver"); + (1692,Js_of_ocaml_IntersectionObserv,"Js_of_ocaml__IntersectionObserver"); function object_options(param){return {"localeMatcher":"best fit"}} function options(param) {return {"localeMatcher":"best fit", @@ -52342,7 +49891,12 @@ "caseFirst":"false"}} var Collator=[0,object_options,options]; function options$0(param) - {return {"localeMatcher":"best fit", + {return {"dateStyle":t39, + "timeStyle":t39, + "calendar":t39, + "dayPeriod":t39, + "numberingSystem":t39, + "localeMatcher":"best fit", "timeZone":t39, "hour12":t39, "hourCycle":t39, @@ -52355,14 +49909,26 @@ "hour":t39, "minute":t39, "second":t39, + "fractionalSecondDigits":t39, "timeZoneName":t39}} var DateTimeFormat=[0,object_options,options$0]; function options$1(param) - {return {"localeMatcher":"best fit", - "style":"decimal", + {return {"compactDisplay":t39, "currency":t39, "currencyDisplay":t39, - "useGrouping":t25, + "currencySign":t39, + "localeMatcher":"best fit", + "notation":t39, + "numberingSystem":t39, + "signDisplay":t39, + "style":"decimal", + "unit":t39, + "unitDisplay":t39, + "useGrouping":t38, + "roundingMode":t39, + "roundingPriority":t39, + "roundingIncrement":t39, + "trailingZeroDisplay":t39, "minimumIntegerDigits":t39, "minimumFractionDigits":t39, "maximumFractionDigits":t39, @@ -52374,14 +49940,14 @@ 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; + t52$0=Unsafe[1].Intl, + collator_constr=t52$0.Collator, + t54=Unsafe[1].Intl, + dateTimeFormat_constr=t54.DateTimeFormat, + t56=Unsafe[1].Intl, + numberFormat_constr=t56.NumberFormat, + t58=Unsafe[1].Intl, + pluralRules_constr=t58.PluralRules; function is_supported$5(param){return caml_call1(Optdef[5],intl)} var Js_of_ocaml_Intl= @@ -52396,15 +49962,17 @@ numberFormat_constr, pluralRules_constr, is_supported$5]; - caml_register_global(1675,Js_of_ocaml_Intl,"Js_of_ocaml__Intl"); + caml_register_global(1693,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"); + caml_register_global(1694,Js_of_ocaml$0,"Js_of_ocaml"); return} (globalThis)); //# 1 "../../runtimes/jsoo/.runtime_jsoo.objs/runtime_jsoo.cma.js" -(function(globalThis) +// Generated by js_of_ocaml +(function + (globalThis) {"use strict"; var runtime=globalThis.jsoo_runtime, @@ -52421,10 +49989,10 @@ {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) @@ -52445,7 +50013,9 @@ 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"), + caml_string_of_jsbytes("date_of_jsoo: invalid date"); + global_data.CamlinternalOO; + var Stdlib_Format=global_data.Stdlib__Format, Js_of_ocaml_Js=global_data.Js_of_ocaml__Js, Runtime_ocaml_Runtime=global_data.Runtime_ocaml__Runtime, @@ -52543,7 +50113,8 @@ var _n_=caml_call1(Runtime_ocaml_Runtime[9],_m_), t15= - caml_jsstring_of_string(caml_call4(Yojson[11][5],0,0,0,_n_)); + caml_jsstring_of_string + (caml_call5(Yojson[11][5],0,0,0,0,_n_)); if(3 === evt[0]) var _o_=0; else @@ -52575,7 +50146,8 @@ {var _h_=caml_call1(Runtime_ocaml_Runtime[20],event), t6= - caml_jsstring_of_string(caml_call4(Yojson[11][5],0,0,0,_h_)); + caml_jsstring_of_string + (caml_call5(Yojson[11][5],0,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_))})} @@ -52597,12 +50169,12 @@ var _c_= caml_call1 - (Js_of_ocaml_Js[33][9], + (Js_of_ocaml_Js[37][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_)} + return caml_call1(Js_of_ocaml_Js[37][5],_c_)} try {var _b_=caml_call1(f,0);return _b_} catch(exn) @@ -52613,10 +50185,9 @@ 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}} + if(exn[1] !== Runtime_ocaml_Runtime[3])throw exn; + var pos$1=exn[2]; + return throw_error(cst_A_failure_happened_in_the_,pos$1)}} var Runtime_jsoo_Runtime= [0, @@ -52632,7 +50203,9 @@ //# 1 "law_source/.law_source.objs/law_source.cma.js" -(function(globalThis) +// Generated by js_of_ocaml +(function + (globalThis) {"use strict"; var runtime=globalThis.jsoo_runtime, @@ -56670,7 +54243,9 @@ 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, + Runtime_ocaml_Runtime=global_data.Runtime_ocaml__Runtime; + global_data.CamlinternalOO; + var Stdlib_Array=global_data.Stdlib__Array, Runtime_jsoo_Runtime=global_data.Runtime_jsoo__Runtime, Stdlib=global_data.Stdlib, @@ -96431,19 +94006,19 @@ _b$I_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b$I_,_b$H_)) - {var - _b$J_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$2), - _b$K_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b$L_=caml_call2(Runtime_ocaml_Runtime[96],_b$K_,_b$J_), - _b$M_=caml_call1(Runtime_ocaml_Runtime[69],_b$L_), - _b$N_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0463), - _b$O_= - caml_call2(Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b$N_); - return caml_call2(Runtime_ocaml_Runtime[104],_b$O_,_b$M_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$0)}, + if(! caml_call2(Runtime_ocaml_Runtime[121],_b$I_,_b$H_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$0); + var + _b$J_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$2), + _b$K_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b$L_=caml_call2(Runtime_ocaml_Runtime[96],_b$K_,_b$J_), + _b$M_=caml_call1(Runtime_ocaml_Runtime[69],_b$L_), + _b$N_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0463), + _b$O_= + caml_call2(Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b$N_); + return caml_call2(Runtime_ocaml_Runtime[104],_b$O_,_b$M_)}, _bXK_= function(param){return caml_call2(Runtime_ocaml_Runtime[29],_eA_,1)}, _bXL_=caml_call4(Runtime_ocaml_Runtime[63],_eB_,[0],_bXK_,_bXJ_)} @@ -96465,11 +94040,11 @@ _b$E_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b$E_,_b$D_)) - {var _b$F_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_16); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b$F_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$1)}, + if(! caml_call2(Runtime_ocaml_Runtime[121],_b$E_,_b$D_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$1); + var _b$F_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_16); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b$F_)}, _bXN_= function(param){return caml_call2(Runtime_ocaml_Runtime[29],_eE_,1)}, _bXO_= @@ -96484,11 +94059,11 @@ _b$B_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b$B_,_b$A_)) - {var _b$C_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_143); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b$C_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$2)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b$B_,_b$A_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$2); + var _b$C_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_143); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b$C_)} function _b$s_(param) {var _b$t_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), @@ -96510,11 +94085,11 @@ _b$p_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b$p_,_b$o_)) - {var _b$q_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1259); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b$q_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$3)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b$p_,_b$o_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$3); + var _b$q_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1259); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b$q_)} function _b$g_(param) {var _b$h_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), @@ -96536,11 +94111,11 @@ _b$d_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b$d_,_b$c_)) - {var _b$e_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1089); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b$e_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$4)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b$d_,_b$c_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$4); + var _b$e_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1089); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b$e_)} function _b_6_(param) {var _b_7_=caml_call3(Runtime_ocaml_Runtime[57],2018,12,31), @@ -96562,11 +94137,11 @@ _b_3_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b_3_,_b_2_)) - {var _b_4_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0918); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_4_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$5)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b_3_,_b_2_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$5); + var _b_4_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0918); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_4_)} function _b_U_(param) {var _b_V_=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), @@ -96588,11 +94163,11 @@ _b_R_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b_R_,_b_Q_)) - {var _b_S_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0842); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_S_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$6)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b_R_,_b_Q_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$6); + var _b_S_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0842); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_S_)} function _b_I_(param) {var _b_J_=caml_call3(Runtime_ocaml_Runtime[57],2016,12,31), @@ -96614,11 +94189,11 @@ _b_F_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b_F_,_b_E_)) - {var _b_G_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0766); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_G_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$7)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b_F_,_b_E_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$7); + var _b_G_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0766); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_G_)} function _b_w_(param) {var _b_x_=caml_call3(Runtime_ocaml_Runtime[57],2015,12,31), @@ -96640,11 +94215,11 @@ _b_t_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b_t_,_b_s_)) - {var _b_u_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_069); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_u_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$8)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b_t_,_b_s_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$8); + var _b_u_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_069); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_u_)} function _b_k_(param) {var _b_l_=caml_call3(Runtime_ocaml_Runtime[57],2014,12,31), @@ -96666,11 +94241,11 @@ _b_h_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b_h_,_b_g_)) - {var _b_i_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0615); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_i_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$9)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b_h_,_b_g_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$9); + var _b_i_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0615); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_i_)} function _b9__(param) {var _b9$_=caml_call3(Runtime_ocaml_Runtime[57],2013,12,31), @@ -96692,11 +94267,11 @@ _b97_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b97_,_b96_)) - {var _b98_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0539); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b98_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$10)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b97_,_b96_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$10); + var _b98_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0539); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b98_)} function _b9Y_(param) {var _b9Z_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), @@ -96721,13 +94296,13 @@ _b9V_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b9V_,_b9U_)) - {var - _b9W_= - caml_call1(Runtime_ocaml_Runtime[39],cst_0_0463$0); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9W_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$11)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b9V_,_b9U_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$11); + var + _b9W_= + caml_call1(Runtime_ocaml_Runtime[39],cst_0_0463$0); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9W_)} function _b9M_(param) {var _b9N_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), @@ -96862,11 +94437,11 @@ _b9f_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b9f_,_b9e_)) - {var _b9g_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0588$0); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9g_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$16)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b9f_,_b9e_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$16); + var _b9g_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0588$0); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9g_)} function _b6I_(param) {var _b9d_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fq_); return caml_call2(Runtime_ocaml_Runtime[29],_fr_,_b9d_)} @@ -96904,11 +94479,11 @@ _b87_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b87_,_b86_)) - {var _b88_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0717); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b88_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$20)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b87_,_b86_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$20); + var _b88_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0717); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b88_)} function _b8W_(param) {var _b8X_= @@ -96934,11 +94509,11 @@ _b8T_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b8T_,_b8S_)) - {var _b8U_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0847); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b8U_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$22)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b8T_,_b8S_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$22); + var _b8U_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0847); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b8U_)} function _b8I_(param) {var _b8J_= @@ -96964,11 +94539,11 @@ _b8F_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b8F_,_b8E_)) - {var _b8G_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0976); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b8G_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$24)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b8F_,_b8E_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$24); + var _b8G_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0976); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b8G_)} function _b8u_(param) {var _b8v_= @@ -96994,11 +94569,11 @@ _b8r_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b8r_,_b8q_)) - {var _b8s_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1105); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b8s_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$26)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b8r_,_b8q_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$26); + var _b8s_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1105); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b8s_)} function _b8g_(param) {var _b8h_= @@ -97024,11 +94599,11 @@ _b8d_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b8d_,_b8c_)) - {var _b8e_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1163); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b8e_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$28)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b8d_,_b8c_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$28); + var _b8e_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1163); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b8e_)} function _b74_(param) {var _b75_= @@ -97054,11 +94629,11 @@ _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_122); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b72_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$30)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b71_,_b70_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$30); + var _b72_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_122); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b72_)} function _b7Q_(param) {var _b7R_= @@ -97084,11 +94659,11 @@ _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_1278); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b7O_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$32)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b7N_,_b7M_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$32); + var _b7O_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1278); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b7O_)} function _b7C_(param) {var _b7D_= @@ -97114,11 +94689,11 @@ _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_1335); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b7A_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$34)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b7z_,_b7y_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$34); + var _b7A_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1335); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b7A_)} function _b7o_(param) {var _b7p_= @@ -97144,11 +94719,11 @@ _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_1393); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b7m_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$36)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b7l_,_b7k_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$36); + var _b7m_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1393); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b7m_)} function _b7a_(param) {var _b7b_= @@ -97177,11 +94752,11 @@ _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_145); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b6__)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$38)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b69_,_b68_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$38); + var _b6__=caml_call1(Runtime_ocaml_Runtime[39],cst_0_145); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b6__)} function _b6Y_(param) {var _b6Z_= @@ -97581,20 +95156,19 @@ _b4S_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b4S_,_b4R_)) - {var - _b4T_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$12), - _b4U_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b4V_=caml_call2(Runtime_ocaml_Runtime[96],_b4U_,_b4T_), - _b4W_=caml_call1(Runtime_ocaml_Runtime[69],_b4V_), - _b4X_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1025), - _b4Y_= - caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b4X_); - return caml_call2(Runtime_ocaml_Runtime[104],_b4Y_,_b4W_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$40)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b4S_,_b4R_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$40); + var + _b4T_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$12), + _b4U_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b4V_=caml_call2(Runtime_ocaml_Runtime[96],_b4U_,_b4T_), + _b4W_=caml_call1(Runtime_ocaml_Runtime[69],_b4V_), + _b4X_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1025), + _b4Y_= + caml_call2(Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b4X_); + return caml_call2(Runtime_ocaml_Runtime[104],_b4Y_,_b4W_)} function _b4P_(param) {var _b4Q_= @@ -97612,20 +95186,19 @@ _b4H_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b4H_,_b4G_)) - {var - _b4I_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$14), - _b4J_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b4K_=caml_call2(Runtime_ocaml_Runtime[96],_b4J_,_b4I_), - _b4L_=caml_call1(Runtime_ocaml_Runtime[69],_b4K_), - _b4M_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_205), - _b4N_= - caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b4M_); - return caml_call2(Runtime_ocaml_Runtime[104],_b4N_,_b4L_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$41)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b4H_,_b4G_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$41); + var + _b4I_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$14), + _b4J_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b4K_=caml_call2(Runtime_ocaml_Runtime[96],_b4J_,_b4I_), + _b4L_=caml_call1(Runtime_ocaml_Runtime[69],_b4K_), + _b4M_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_205), + _b4N_= + caml_call2(Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b4M_); + return caml_call2(Runtime_ocaml_Runtime[104],_b4N_,_b4L_)} function _b4C_(param) {var _b4D_= @@ -97650,20 +95223,19 @@ _b4u_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b4u_,_b4t_)) - {var - _b4v_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$16), - _b4w_= - caml_call1 - (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), - _b4x_=caml_call2(Runtime_ocaml_Runtime[96],_b4w_,_b4v_), - _b4y_=caml_call1(Runtime_ocaml_Runtime[69],_b4x_), - _b4z_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_41), - _b4A_= - caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b4z_); - return caml_call2(Runtime_ocaml_Runtime[104],_b4A_,_b4y_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$42)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b4u_,_b4t_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$42); + var + _b4v_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$16), + _b4w_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b4x_=caml_call2(Runtime_ocaml_Runtime[96],_b4w_,_b4v_), + _b4y_=caml_call1(Runtime_ocaml_Runtime[69],_b4x_), + _b4z_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_41), + _b4A_= + caml_call2(Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b4z_); + return caml_call2(Runtime_ocaml_Runtime[104],_b4A_,_b4y_)} function _b4r_(param) {var _b4s_= @@ -97698,11 +95270,11 @@ _b4n_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b4n_,_b4m_)) - {var _b4o_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_08); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b4o_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$43)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b4n_,_b4m_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$43); + var _b4o_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_08); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b4o_)} function _b4k_(param) {var _b4l_= @@ -97720,11 +95292,11 @@ _b4h_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b4h_,_b4g_)) - {var _b4i_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_16$0); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b4i_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$44)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b4h_,_b4g_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$44); + var _b4i_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_16$0); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b4i_)} function _b4c_(param) {var _b4d_= @@ -97751,11 +95323,11 @@ _b3$_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b3$_,_b3__)) - {var _b4a_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_32); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b4a_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$45)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b3$_,_b3__)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$45); + var _b4a_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_32); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b4a_)} function _b38_(param) {var _b39_= @@ -97780,11 +95352,11 @@ _b30_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b30_,_b3Z_)) - {var _b31_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_32$0); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b31_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$46)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b30_,_b3Z_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$46); + var _b31_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_32$0); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b31_)} function _b1S_(param) {var _b3Y_=caml_call2(Runtime_ocaml_Runtime[86],residence,_g6_); return caml_call2(Runtime_ocaml_Runtime[29],_g7_,_b3Y_)} @@ -97801,11 +95373,11 @@ _b3W_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b3W_,_b3V_)) - {var _b3X_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3068); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3X_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$47)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b3W_,_b3V_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$47); + var _b3X_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3068); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3X_)} function _b3N_(param) {var _b3O_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), @@ -97827,11 +95399,11 @@ _b3K_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b3K_,_b3J_)) - {var _b3L_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2936); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3L_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$48)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b3K_,_b3J_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$48); + var _b3L_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2936); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3L_)} function _b3B_(param) {var _b3C_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), @@ -97853,11 +95425,11 @@ _b3y_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b3y_,_b3x_)) - {var _b3z_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2804); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3z_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$49)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b3y_,_b3x_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$49); + var _b3z_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2804); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3z_)} function _b3p_(param) {var _b3q_=caml_call3(Runtime_ocaml_Runtime[57],2018,12,31), @@ -97879,11 +95451,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[39],cst_0_2672); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3n_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$50)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b3m_,_b3l_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$50); + var _b3n_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2672); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3n_)} function _b3d_(param) {var _b3e_=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), @@ -97905,11 +95477,11 @@ _b3a_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b3a_,_b2$_)) - {var _b3b_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2613); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3b_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$51)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b3a_,_b2$_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$51); + var _b3b_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2613); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3b_)} function _b23_(param) {var _b24_=caml_call3(Runtime_ocaml_Runtime[57],2016,12,31), @@ -97931,11 +95503,11 @@ _b20_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b20_,_b2Z_)) - {var _b21_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2555); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b21_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$52)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b20_,_b2Z_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$52); + var _b21_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2555); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b21_)} function _b2R_(param) {var _b2S_=caml_call3(Runtime_ocaml_Runtime[57],2015,12,31), @@ -97957,11 +95529,11 @@ _b2O_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b2O_,_b2N_)) - {var _b2P_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2496); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2P_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$53)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b2O_,_b2N_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$53); + var _b2P_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2496); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2P_)} function _b2F_(param) {var _b2G_=caml_call3(Runtime_ocaml_Runtime[57],2014,12,31), @@ -97983,11 +95555,11 @@ _b2C_= caml_call1 (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); - if(caml_call2(Runtime_ocaml_Runtime[121],_b2C_,_b2B_)) - {var _b2D_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2437); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2D_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$54)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b2C_,_b2B_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$54); + var _b2D_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2437); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2D_)} function _b2t_(param) {var _b2u_=caml_call3(Runtime_ocaml_Runtime[57],2013,12,31), @@ -98009,11 +95581,11 @@ _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_2379); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2r_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$55)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b2q_,_b2p_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$55); + var _b2r_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2379); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2r_)} function _b2h_(param) {var _b2i_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), @@ -98038,11 +95610,11 @@ _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_232); - return caml_call2 - (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2f_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$56)} + if(! caml_call2(Runtime_ocaml_Runtime[121],_b2e_,_b2d_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$56); + var _b2f_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_232); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2f_)} function _b17_(param) {var _b18_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), @@ -98701,36 +96273,33 @@ {var _bYI_= function(param) - {if(droit_ouvert_base) + {if(! droit_ouvert_base) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$64); + function _bY8_(enfant) {var - _bY8_= - function(enfant) - {var - _bZa_= - caml_call3 - (Runtime_ocaml_Runtime[28],_jc_,embed_enfant,enfant), - _bZb_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _jd_, - montant_avec_garde_alternee_ma), - _bZa_), - _bZc_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _je_, - Runtime_ocaml_Runtime[13], - _bZb_); - return caml_call2(Runtime_ocaml_Runtime[27],_jf_,_bZc_)}, - _bY9_= - caml_call2(Runtime_ocaml_Runtime[87],_bY8_,enfants_a_charge), - _bY__=caml_call1(Runtime_ocaml_Runtime[31],cst_0$63), - _bY$_= - function(sum1,sum2) - {return caml_call2(Runtime_ocaml_Runtime[93],sum1,sum2)}; - return caml_call3(Runtime_ocaml_Runtime[88],_bY$_,_bY__,_bY9_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$64)}, + _bZa_= + caml_call3(Runtime_ocaml_Runtime[28],_jc_,embed_enfant,enfant), + _bZb_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _jd_, + montant_avec_garde_alternee_ma), + _bZa_), + _bZc_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _je_, + Runtime_ocaml_Runtime[13], + _bZb_); + return caml_call2(Runtime_ocaml_Runtime[27],_jf_,_bZc_)} + var + _bY9_= + caml_call2(Runtime_ocaml_Runtime[87],_bY8_,enfants_a_charge), + _bY__=caml_call1(Runtime_ocaml_Runtime[31],cst_0$63); + function _bY$_(sum1,sum2) + {return caml_call2(Runtime_ocaml_Runtime[93],sum1,sum2)} + return caml_call3(Runtime_ocaml_Runtime[88],_bY$_,_bY__,_bY9_)}, _bYJ_= function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jg_,1)}, _bYK_=caml_call4(Runtime_ocaml_Runtime[63],_jh_,[0],_bYJ_,_bYI_)} @@ -98767,27 +96336,27 @@ {var _bYO_= function(param) - {if(droit_ouvert_complement) - {var - _bY3_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _jo_, - Runtime_ocaml_Runtime[13], - montant_base_complement_pour_b), - _bY4_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_jp_,complement_degressif), - _bY3_), - _bY5_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _jq_, - Runtime_ocaml_Runtime[13], - _bY4_); - return caml_call2(Runtime_ocaml_Runtime[27],_jr_,_bY5_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$65)}, + {if(! droit_ouvert_complement) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$65); + var + _bY3_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _jo_, + Runtime_ocaml_Runtime[13], + montant_base_complement_pour_b), + _bY4_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_jp_,complement_degressif), + _bY3_), + _bY5_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _jq_, + Runtime_ocaml_Runtime[13], + _bY4_); + return caml_call2(Runtime_ocaml_Runtime[27],_jr_,_bY5_)}, _bYP_= function(param){return caml_call2(Runtime_ocaml_Runtime[29],_js_,1)}, _bYQ_=caml_call4(Runtime_ocaml_Runtime[63],_jt_,[0],_bYP_,_bYO_)} @@ -98804,26 +96373,26 @@ {var _bYR_= function(param) - {if(droit_ouvert_base) - {var - _bYZ_= - caml_call2 - (Runtime_ocaml_Runtime[93], - montant_verse_base, - montant_verse_majoration), - _bY0_= - caml_call2 - (Runtime_ocaml_Runtime[93],_bYZ_,montant_verse_forfaitaire), - _bY1_= - caml_call2 - (Runtime_ocaml_Runtime[93], - _bY0_, - montant_verse_complement_pour_$0); - return caml_call2 - (Runtime_ocaml_Runtime[93], - _bY1_, - montant_verse_complement_pour_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$66)}, + {if(! droit_ouvert_base) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$66); + var + _bYZ_= + caml_call2 + (Runtime_ocaml_Runtime[93], + montant_verse_base, + montant_verse_majoration), + _bY0_= + caml_call2 + (Runtime_ocaml_Runtime[93],_bYZ_,montant_verse_forfaitaire), + _bY1_= + caml_call2 + (Runtime_ocaml_Runtime[93], + _bY0_, + montant_verse_complement_pour_$0); + return caml_call2 + (Runtime_ocaml_Runtime[93], + _bY1_, + montant_verse_complement_pour_)}, _bYS_= function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jw_,1)}, _bYT_=caml_call4(Runtime_ocaml_Runtime[63],_jx_,[0],_bYS_,_bYR_)} @@ -99144,18 +96713,17 @@ "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 _bV4_=caml_call2(Stdlib_Printf[4],_kk_,cons); - return caml_call1(Stdlib[2],_bV4_)} - return _kl_} - return _km_} - return _kn_} - return _ko_} - return _kp_} + if(! caml_string_notequal(cons,cst_EffectiveEtPermanente$0))return _kp_; + if(! caml_string_notequal(cons,cst_GardeAlterneeAllocataireUn)) + return _ko_; + if(! caml_string_notequal(cons,cst_GardeAlterneePartageAlloca)) + return _kn_; + if(! caml_string_notequal(cons,cst_ServicesSociauxAllocationV$1)) + return _km_; + if(! caml_string_notequal(cons,cst_ServicesSociauxAllocationV$2)) + return _kl_; + var _bV4_=caml_call2(Stdlib_Printf[4],_kk_,cons); + return caml_call1(Stdlib[2],_bV4_)} function situation_obligation_scolaire_(param) {switch(param[0]) {case 0:var arg=param[1];return {"kind":"Avant","payload":arg}; @@ -99163,14 +96731,11 @@ 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 _bV3_=caml_call2(Stdlib_Printf[4],_kq_,cons); - return caml_call1(Stdlib[2],_bV3_)} - return _kr_} - return _ks_} - return _kt_} + if(! caml_string_notequal(cons,cst_Apres))return _kt_; + if(! caml_string_notequal(cons,cst_Avant$0))return _ks_; + if(! caml_string_notequal(cons,cst_Pendant$0))return _kr_; + var _bV3_=caml_call2(Stdlib_Printf[4],_kq_,cons); + return caml_call1(Stdlib[2],_bV3_)} function prise_en_compte_to_jsoo(param) {switch(param[0]) {case 0:var arg=param[1];return {"kind":"Complete","payload":arg}; @@ -99178,14 +96743,11 @@ 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 _bV2_=caml_call2(Stdlib_Printf[4],_ku_,cons); - return caml_call1(Stdlib[2],_bV2_)} - return _kv_} - return _kw_} - return _kx_} + if(! caml_string_notequal(cons,cst_Complete))return _kx_; + if(! caml_string_notequal(cons,cst_Partagee))return _kw_; + if(! caml_string_notequal(cons,cst_Zero))return _kv_; + var _bV2_=caml_call2(Stdlib_Printf[4],_ku_,cons); + return caml_call1(Stdlib[2],_bV2_)} function versement_allocations_to_jsoo(param) {if(0 === param[0]) {var arg=param[1];return {"kind":"Normal","payload":arg}} @@ -99193,12 +96755,11 @@ 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 _bV1_=caml_call2(Stdlib_Printf[4],_ky_,cons); - return caml_call1(Stdlib[2],_bV1_)} - return _kz_} - return _kA_} + if(! caml_string_notequal(cons,cst_AllocationVerseeAuxService)) + return _kA_; + if(! caml_string_notequal(cons,cst_Normal$0))return _kz_; + var _bV1_=caml_call2(Stdlib_Printf[4],_ky_,cons); + return caml_call1(Stdlib[2],_bV1_)} function element_prestations_familiales(param) {switch(param[0]) {case 0: @@ -99228,25 +96789,21 @@ "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 _bV0_=caml_call2(Stdlib_Printf[4],_kB_,cons); - return caml_call1(Stdlib[2],_bV0_)} - return _kC_} - return _kD_} - return _kE_} - return _kF_} - return _kG_} - return _kH_} - return _kI_} - return _kJ_} + if(! caml_string_notequal(cons,cst_AllocationEducationEnfantH)) + return _kJ_; + if(! caml_string_notequal(cons,cst_AllocationJournalierePrese)) + return _kI_; + if(! caml_string_notequal(cons,cst_AllocationLogement$0))return _kH_; + if(! caml_string_notequal(cons,cst_AllocationRentreeScolaire)) + return _kG_; + if(! caml_string_notequal(cons,cst_AllocationSoutienFamilial$0)) + return _kF_; + if(! caml_string_notequal(cons,cst_AllocationsFamiliales$0))return _kE_; + if(! caml_string_notequal(cons,cst_ComplementFamilial))return _kD_; + if(! caml_string_notequal(cons,cst_PrestationAccueilJeuneEnfa$0)) + return _kC_; + var _bV0_=caml_call2(Stdlib_Printf[4],_kB_,cons); + return caml_call1(Stdlib[2],_bV0_)} function collectivite_to_jsoo(param) {switch(param[0]) {case 0:var arg=param[1];return {"kind":"Guadeloupe","payload":arg}; @@ -99265,26 +96822,17 @@ 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 _bVZ_=caml_call2(Stdlib_Printf[4],_kK_,cons); - return caml_call1(Stdlib[2],_bVZ_)} - return _kL_} - return _kM_} - return _kN_} - return _kO_} - return _kP_} - return _kQ_} - return _kR_} - return _kS_} - return _kT_} + if(! caml_string_notequal(cons,cst_Guadeloupe$0))return _kT_; + if(! caml_string_notequal(cons,cst_Guyane$0))return _kS_; + if(! caml_string_notequal(cons,cst_LaReunion))return _kR_; + if(! caml_string_notequal(cons,cst_Martinique$0))return _kQ_; + if(! caml_string_notequal(cons,cst_Mayotte$0))return _kP_; + if(! caml_string_notequal(cons,cst_Metropole))return _kO_; + if(! caml_string_notequal(cons,cst_SaintBarthelemy))return _kN_; + if(! caml_string_notequal(cons,cst_SaintMartin$0))return _kM_; + if(! caml_string_notequal(cons,cst_SaintPierreEtMiquelon$0))return _kL_; + var _bVZ_=caml_call2(Stdlib_Printf[4],_kK_,cons); + return caml_call1(Stdlib[2],_bVZ_)} function allocation_familiales_avril200$0(allocation_familiales_avril200) {var t66= @@ -99705,7 +97253,7 @@ function t168(param) {return caml_js_wrap_callback(allocation_familiales_avril200$4)} caml_call2 - (Js_of_ocaml_Js[46], + (Js_of_ocaml_Js[50], cst_AllocationsFamilialesLib, {"allocationFamilialesAvril2008":caml_js_wrap_meth_callback(t168), "enfantLePlusAge":caml_js_wrap_meth_callback(t169), @@ -102657,35 +100205,35 @@ tranche[2])) return caml_call1(Runtime_ocaml_Runtime[39],cst_0$70); var _bPI_=tranche[1]; - if(0 === _bPI_[0]) - {var tranche_haut=_bPI_[1]; - if - (caml_call2 - (Runtime_ocaml_Runtime[127], - ressources_menage_arrondies$0, - tranche_haut)) - {var - _bPJ_=tranche[3], - _bPK_= - caml_call2 - (Runtime_ocaml_Runtime[97],tranche_haut,tranche[2]); - return caml_call2(Runtime_ocaml_Runtime[103],_bPK_,_bPJ_)} - var - _bPL_=tranche[3], - _bPM_= + if(0 !== _bPI_[0]) + {var + _bPN_=tranche[3], + _bPO_= caml_call2 (Runtime_ocaml_Runtime[97], ressources_menage_arrondies$0, tranche[2]); - return caml_call2(Runtime_ocaml_Runtime[103],_bPM_,_bPL_)} + return caml_call2(Runtime_ocaml_Runtime[103],_bPO_,_bPN_)} + var tranche_haut=_bPI_[1]; + if + (caml_call2 + (Runtime_ocaml_Runtime[127], + ressources_menage_arrondies$0, + tranche_haut)) + {var + _bPJ_=tranche[3], + _bPK_= + caml_call2 + (Runtime_ocaml_Runtime[97],tranche_haut,tranche[2]); + return caml_call2(Runtime_ocaml_Runtime[103],_bPK_,_bPJ_)} var - _bPN_=tranche[3], - _bPO_= + _bPL_=tranche[3], + _bPM_= caml_call2 (Runtime_ocaml_Runtime[97], ressources_menage_arrondies$0, tranche[2]); - return caml_call2(Runtime_ocaml_Runtime[103],_bPO_,_bPN_)} + return caml_call2(Runtime_ocaml_Runtime[103],_bPM_,_bPL_)} var _bPC_= caml_call2 @@ -102722,35 +100270,35 @@ tranche[2])) return caml_call1(Runtime_ocaml_Runtime[39],cst_0$72); var _bPr_=tranche[1]; - if(0 === _bPr_[0]) - {var tranche_haut=_bPr_[1]; - if - (caml_call2 - (Runtime_ocaml_Runtime[127], - ressources_menage_arrondies$0, - tranche_haut)) - {var - _bPs_=tranche[3], - _bPt_= - caml_call2 - (Runtime_ocaml_Runtime[97],tranche_haut,tranche[2]); - return caml_call2(Runtime_ocaml_Runtime[103],_bPt_,_bPs_)} - var - _bPu_=tranche[3], - _bPv_= + if(0 !== _bPr_[0]) + {var + _bPw_=tranche[3], + _bPx_= caml_call2 (Runtime_ocaml_Runtime[97], ressources_menage_arrondies$0, tranche[2]); - return caml_call2(Runtime_ocaml_Runtime[103],_bPv_,_bPu_)} + return caml_call2(Runtime_ocaml_Runtime[103],_bPx_,_bPw_)} + var tranche_haut=_bPr_[1]; + if + (caml_call2 + (Runtime_ocaml_Runtime[127], + ressources_menage_arrondies$0, + tranche_haut)) + {var + _bPs_=tranche[3], + _bPt_= + caml_call2 + (Runtime_ocaml_Runtime[97],tranche_haut,tranche[2]); + return caml_call2(Runtime_ocaml_Runtime[103],_bPt_,_bPs_)} var - _bPw_=tranche[3], - _bPx_= + _bPu_=tranche[3], + _bPv_= caml_call2 (Runtime_ocaml_Runtime[97], ressources_menage_arrondies$0, tranche[2]); - return caml_call2(Runtime_ocaml_Runtime[103],_bPx_,_bPw_)} + return caml_call2(Runtime_ocaml_Runtime[103],_bPv_,_bPu_)} var _bPl_= caml_call2 @@ -105543,14 +103091,13 @@ {var _bs4_= function(param) - {if(logement_meuble_d842_2) - {var - _bxJ_=caml_call1(Runtime_ocaml_Runtime[39],cst_3$16), - _bxK_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$31), - _bxL_=caml_call2(Runtime_ocaml_Runtime[107],_bxK_,_bxJ_); - return caml_call2 - (Runtime_ocaml_Runtime[104],loyer_principal_base,_bxL_)} - return loyer_principal_base}, + {if(! logement_meuble_d842_2)return loyer_principal_base; + var + _bxJ_=caml_call1(Runtime_ocaml_Runtime[39],cst_3$16), + _bxK_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$31), + _bxL_=caml_call2(Runtime_ocaml_Runtime[107],_bxK_,_bxJ_); + return caml_call2 + (Runtime_ocaml_Runtime[104],loyer_principal_base,_bxL_)}, _bs5_= function(param){return caml_call2(Runtime_ocaml_Runtime[29],_rU_,1)}, _bs6_=caml_call4(Runtime_ocaml_Runtime[63],_rV_,[0],_bs5_,_bs4_)} @@ -105655,26 +103202,26 @@ plafond_suppression_d823_16)) return caml_call1(Runtime_ocaml_Runtime[31],cst_0$108); if - (caml_call2 + (! + caml_call2 (Runtime_ocaml_Runtime[123], loyer_principal_avec_reduction, plafond_degressivite_d823_16)) - {var - _bxv_= - caml_call2 - (Runtime_ocaml_Runtime[98], - plafond_suppression_d823_16, - plafond_degressivite_d823_16), - _bxw_= - caml_call2 - (Runtime_ocaml_Runtime[98], - loyer_principal_avec_reduction, - plafond_degressivite_d823_16), - _bxx_=caml_call2(Runtime_ocaml_Runtime[108],_bxw_,_bxv_), - _bxy_= - caml_call2(Runtime_ocaml_Runtime[104],aide_finale,_bxx_); - return caml_call2(Runtime_ocaml_Runtime[98],aide_finale,_bxy_)} - return aide_finale}, + return aide_finale; + var + _bxv_= + caml_call2 + (Runtime_ocaml_Runtime[98], + plafond_suppression_d823_16, + plafond_degressivite_d823_16), + _bxw_= + caml_call2 + (Runtime_ocaml_Runtime[98], + loyer_principal_avec_reduction, + plafond_degressivite_d823_16), + _bxx_=caml_call2(Runtime_ocaml_Runtime[108],_bxw_,_bxv_), + _bxy_=caml_call2(Runtime_ocaml_Runtime[104],aide_finale,_bxx_); + return caml_call2(Runtime_ocaml_Runtime[98],aide_finale,_bxy_)}, _bxp_= function(param) {return caml_call2(Runtime_ocaml_Runtime[29],_r__,1)}, @@ -105716,16 +103263,16 @@ loyer_eligible, montant_forfaitaire_charges_d8), _bxl_=caml_call2(Runtime_ocaml_Runtime[104],_bxk_,_bxj_); - if(caml_call2(Runtime_ocaml_Runtime[128],_bxl_,_bxi_)) - {var - _bxm_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$0), - _bxn_= - caml_call2 - (Runtime_ocaml_Runtime[93], - loyer_eligible, - montant_forfaitaire_charges_d8); - return caml_call2(Runtime_ocaml_Runtime[104],_bxn_,_bxm_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_3524$0)} + if(! caml_call2(Runtime_ocaml_Runtime[128],_bxl_,_bxi_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_3524$0); + var + _bxm_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$0), + _bxn_= + caml_call2 + (Runtime_ocaml_Runtime[93], + loyer_eligible, + montant_forfaitaire_charges_d8); + return caml_call2(Runtime_ocaml_Runtime[104],_bxn_,_bxm_)} function _bxc_(param) {var _bxd_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), @@ -105749,16 +103296,16 @@ loyer_eligible, montant_forfaitaire_charges_d8), _bw__=caml_call2(Runtime_ocaml_Runtime[104],_bw9_,_bw8_); - if(caml_call2(Runtime_ocaml_Runtime[128],_bw__,_bw7_)) - {var - _bw$_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$2), - _bxa_= - caml_call2 - (Runtime_ocaml_Runtime[93], - loyer_eligible, - montant_forfaitaire_charges_d8); - return caml_call2(Runtime_ocaml_Runtime[104],_bxa_,_bw$_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_3539$0)} + if(! caml_call2(Runtime_ocaml_Runtime[128],_bw__,_bw7_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_3539$0); + var + _bw$_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$2), + _bxa_= + caml_call2 + (Runtime_ocaml_Runtime[93], + loyer_eligible, + montant_forfaitaire_charges_d8); + return caml_call2(Runtime_ocaml_Runtime[104],_bxa_,_bw$_)} function _bw1_(param) {var _bw2_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), @@ -105783,16 +103330,16 @@ 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$4), - _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_3663$0)} + if(! caml_call2(Runtime_ocaml_Runtime[128],_bwX_,_bwU_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_3663$0); + var + _bwY_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$4), + _bwZ_= + caml_call2 + (Runtime_ocaml_Runtime[93], + loyer_eligible, + montant_forfaitaire_charges_d8); + return caml_call2(Runtime_ocaml_Runtime[104],_bwZ_,_bwY_)} function _bwR_(param) {var _bwS_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), @@ -105977,18 +103524,20 @@ _bvZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$0); return caml_call2(Runtime_ocaml_Runtime[103],_bvZ_,_bvY_)} var _bv0_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$0); - if(caml_call2(Runtime_ocaml_Runtime[127],rapport_loyers,_bv0_)) - {var - _bv1_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$1), - _bv2_= - caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_bv1_), - _bv3_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0068), - _bv4_=caml_call2(Runtime_ocaml_Runtime[103],_bv3_,_bv2_), - _bv5_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3), - _bv6_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$1), - _bv7_=caml_call2(Runtime_ocaml_Runtime[103],_bv6_,_bv5_); - return caml_call2(Runtime_ocaml_Runtime[92],_bv7_,_bv4_)} - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$112)} + if + (! + caml_call2(Runtime_ocaml_Runtime[127],rapport_loyers,_bv0_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$112); + var + _bv1_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$1), + _bv2_= + caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_bv1_), + _bv3_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0068), + _bv4_=caml_call2(Runtime_ocaml_Runtime[103],_bv3_,_bv2_), + _bv5_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3), + _bv6_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$1), + _bv7_=caml_call2(Runtime_ocaml_Runtime[103],_bv6_,_bv5_); + return caml_call2(Runtime_ocaml_Runtime[92],_bv7_,_bv4_)} function _bu5_(param) {var _bvQ_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), @@ -106020,18 +103569,19 @@ return caml_call2(Runtime_ocaml_Runtime[103],_bvH_,_bvG_)} var _bvI_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$3); if - (caml_call2(Runtime_ocaml_Runtime[127],rapport_loyers,_bvI_)) - {var - _bvJ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$4), - _bvK_= - caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_bvJ_), - _bvL_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0068$0), - _bvM_=caml_call2(Runtime_ocaml_Runtime[103],_bvL_,_bvK_), - _bvN_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3$0), - _bvO_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$4), - _bvP_=caml_call2(Runtime_ocaml_Runtime[103],_bvO_,_bvN_); - return caml_call2(Runtime_ocaml_Runtime[92],_bvP_,_bvM_)} - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$114)} + (! + caml_call2(Runtime_ocaml_Runtime[127],rapport_loyers,_bvI_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$114); + var + _bvJ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$4), + _bvK_= + caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_bvJ_), + _bvL_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0068$0), + _bvM_=caml_call2(Runtime_ocaml_Runtime[103],_bvL_,_bvK_), + _bvN_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3$0), + _bvO_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$4), + _bvP_=caml_call2(Runtime_ocaml_Runtime[103],_bvO_,_bvN_); + return caml_call2(Runtime_ocaml_Runtime[92],_bvP_,_bvM_)} function _bu8_(param) {var _bvv_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), @@ -106067,18 +103617,19 @@ return caml_call2(Runtime_ocaml_Runtime[103],_bvm_,_bvl_)} var _bvn_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$6); if - (caml_call2(Runtime_ocaml_Runtime[127],rapport_loyers,_bvn_)) - {var - _bvo_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$7), - _bvp_= - caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_bvo_), - _bvq_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0068$1), - _bvr_=caml_call2(Runtime_ocaml_Runtime[103],_bvq_,_bvp_), - _bvs_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3$1), - _bvt_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$7), - _bvu_=caml_call2(Runtime_ocaml_Runtime[103],_bvt_,_bvs_); - return caml_call2(Runtime_ocaml_Runtime[92],_bvu_,_bvr_)} - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$116)} + (! + caml_call2(Runtime_ocaml_Runtime[127],rapport_loyers,_bvn_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$116); + var + _bvo_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$7), + _bvp_= + caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_bvo_), + _bvq_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0068$1), + _bvr_=caml_call2(Runtime_ocaml_Runtime[103],_bvq_,_bvp_), + _bvs_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3$1), + _bvt_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$7), + _bvu_=caml_call2(Runtime_ocaml_Runtime[103],_bvt_,_bvs_); + return caml_call2(Runtime_ocaml_Runtime[92],_bvu_,_bvr_)} function _bu$_(param) {var _bva_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), @@ -106305,16 +103856,15 @@ reduction_loyer_solidarite, fraction_l832_3), _buf_=caml_call2(Runtime_ocaml_Runtime[98],aide_finale$0,_bue_); - if(caml_call2(Runtime_ocaml_Runtime[128],_buf_,_bud_)) - {var - _bug_= - caml_call2 - (Runtime_ocaml_Runtime[104], - reduction_loyer_solidarite, - fraction_l832_3); - return caml_call2 - (Runtime_ocaml_Runtime[98],aide_finale$0,_bug_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$120)}, + if(! caml_call2(Runtime_ocaml_Runtime[128],_buf_,_bud_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$120); + var + _bug_= + caml_call2 + (Runtime_ocaml_Runtime[104], + reduction_loyer_solidarite, + fraction_l832_3); + return caml_call2(Runtime_ocaml_Runtime[98],aide_finale$0,_bug_)}, _bt9_= function(param) {return caml_call2(Runtime_ocaml_Runtime[29],_ta_,1)}, @@ -106472,30 +104022,29 @@ if(_btT_ === Runtime_ocaml_Runtime[2]) throw [0,Runtime_ocaml_Runtime[8],_tx_]; throw _btT_} - if(_btM_) - {try - {var - _btN_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_98$0), - _btO_=caml_call2(Runtime_ocaml_Runtime[117],fraction_l832_3,_btN_), - _btP_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_9), - _btQ_=caml_call2(Runtime_ocaml_Runtime[127],fraction_l832_3,_btP_), - _btR_=caml_call2(Runtime_ocaml_Runtime[83],_btQ_,_btO_)} - catch(_btS_) - {_btS_ = caml_wrap_exception(_btS_); - if(_btS_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_ty_]; - throw _btS_} - if(_btR_) - 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],_tz_]} - throw [0,Runtime_ocaml_Runtime[3],_tA_]} + if(! _btM_)throw [0,Runtime_ocaml_Runtime[3],_tA_]; + try + {var + _btN_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_98$0), + _btO_=caml_call2(Runtime_ocaml_Runtime[117],fraction_l832_3,_btN_), + _btP_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_9), + _btQ_=caml_call2(Runtime_ocaml_Runtime[127],fraction_l832_3,_btP_), + _btR_=caml_call2(Runtime_ocaml_Runtime[83],_btQ_,_btO_)} + catch(_btS_) + {_btS_ = caml_wrap_exception(_btS_); + if(_btS_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_ty_]; + throw _btS_} + if(_btR_) + 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],_tz_]} function calcul_aide_personnalisee_loge$0(calcul_aide_personnalisee_loge) {var type_logement_foyer=calcul_aide_personnalisee_loge[1], @@ -112203,17 +109752,18 @@ ressources_menage_avec_d832_18, coefficient_multiplicateur_d83$1); if - (caml_call2 + (! + caml_call2 (Runtime_ocaml_Runtime[118],depense_nette_minimale,_aZM_)) - {var - _aZN_= - caml_call2 - (Runtime_ocaml_Runtime[104], - ressources_menage_avec_d832_18, - coefficient_multiplicateur_d83$1); - return caml_call2 - (Runtime_ocaml_Runtime[98],_aZN_,depense_nette_minimale)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$276)}, + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$276); + var + _aZN_= + caml_call2 + (Runtime_ocaml_Runtime[104], + ressources_menage_avec_d832_18, + coefficient_multiplicateur_d83$1); + return caml_call2 + (Runtime_ocaml_Runtime[98],_aZN_,depense_nette_minimale)}, _aZG_= function(param) {return caml_call2(Runtime_ocaml_Runtime[29],_zr_,1)}, @@ -112236,13 +109786,12 @@ [0, function(param) {function _aZi_(param) - {if(copropriete) - {var _aZE_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$8); - return caml_call2 - (Runtime_ocaml_Runtime[104], - plafond_mensualite_d832_10_3_b, - _aZE_)} - return plafond_mensualite_d832_10_3_b} + {if(! copropriete)return plafond_mensualite_d832_10_3_b; + var _aZE_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$8); + return caml_call2 + (Runtime_ocaml_Runtime[104], + plafond_mensualite_d832_10_3_b, + _aZE_)} function _aZj_(param) {var _aZC_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), @@ -112254,13 +109803,12 @@ [0, function(param) {function _aZl_(param) - {if(copropriete) - {var _aZB_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$9); - return caml_call2 - (Runtime_ocaml_Runtime[104], - plafond_mensualite_d832_10_3_b, - _aZB_)} - return plafond_mensualite_d832_10_3_b} + {if(! copropriete)return plafond_mensualite_d832_10_3_b; + var _aZB_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$9); + return caml_call2 + (Runtime_ocaml_Runtime[104], + plafond_mensualite_d832_10_3_b, + _aZB_)} function _aZm_(param) {var _aZw_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), @@ -112276,15 +109824,12 @@ [0, function(param) {function _aZo_(param) - {if(copropriete) - {var - _aZv_= - caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$10); - return caml_call2 - (Runtime_ocaml_Runtime[104], - plafond_mensualite_d832_10_3_b, - _aZv_)} - return plafond_mensualite_d832_10_3_b} + {if(! copropriete)return plafond_mensualite_d832_10_3_b; + var _aZv_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$10); + return caml_call2 + (Runtime_ocaml_Runtime[104], + plafond_mensualite_d832_10_3_b, + _aZv_)} function _aZp_(param) {var _aZq_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), @@ -114087,9 +111632,9 @@ _aRX_= function(param) {function _aSa_(personne_a_charge) - {if(0 === personne_a_charge[0]) - {var enfant=personne_a_charge[1];return 0 === enfant[7][0]?0:1} - return 0} + {if(0 !== personne_a_charge[0])return 0; + var enfant=personne_a_charge[1]; + return 0 === enfant[7][0]?0:1} var _aSb_= caml_call2 @@ -114097,13 +111642,13 @@ _aSa_, personnes_a_charge_prises_en_c); function _aSc_(personne_a_charge) - {if(0 === personne_a_charge[0]) - {var enfant=personne_a_charge[1],_aSd_=enfant[7]; - if(0 === _aSd_[0]) - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$299); - var coeff=_aSd_[1]; - return coeff} - return caml_call1(Runtime_ocaml_Runtime[39],cst_0$300)} + {if(0 !== personne_a_charge[0]) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$300); + var enfant=personne_a_charge[1],_aSd_=enfant[7]; + if(0 === _aSd_[0]) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$299); + var coeff=_aSd_[1]; + return coeff} return caml_call2(Runtime_ocaml_Runtime[87],_aSc_,_aSb_)}, _aRY_= function(param){return caml_call2(Runtime_ocaml_Runtime[29],_D9_,1)}, @@ -114146,27 +111691,26 @@ if(_aR9_ === Runtime_ocaml_Runtime[2]) throw [0,Runtime_ocaml_Runtime[8],_Ee_]; throw _aR9_} - if(_aR5_) - {try - {var - _aR6_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2$0), - _aR7_= - caml_call2 - (Runtime_ocaml_Runtime[112],seuil_l822_3_parts_propriete,_aR6_)} - catch(_aR8_) - {_aR8_ = caml_wrap_exception(_aR8_); - if(_aR8_ === Runtime_ocaml_Runtime[2]) - throw [0,Runtime_ocaml_Runtime[8],_Ef_]; - throw _aR8_} - if(_aR7_) - return [0, - date_courante, - eligibilite, - nombre_personnes_a_charge_pris, - coefficents_enfants_garde_alte, - condition_2_r823_4]; - throw [0,Runtime_ocaml_Runtime[3],_Eg_]} - throw [0,Runtime_ocaml_Runtime[3],_Eh_]} + if(! _aR5_)throw [0,Runtime_ocaml_Runtime[3],_Eh_]; + try + {var + _aR6_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2$0), + _aR7_= + caml_call2 + (Runtime_ocaml_Runtime[112],seuil_l822_3_parts_propriete,_aR6_)} + catch(_aR8_) + {_aR8_ = caml_wrap_exception(_aR8_); + if(_aR8_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ef_]; + throw _aR8_} + if(_aR7_) + return [0, + date_courante, + eligibilite, + nombre_personnes_a_charge_pris, + coefficents_enfants_garde_alte, + condition_2_r823_4]; + throw [0,Runtime_ocaml_Runtime[3],_Eg_]} function eligibilite_prestations_famili(eligibilite_prestations_famili) {var date_courante=eligibilite_prestations_famili[1], @@ -114703,14 +112247,13 @@ [0, function(param) {function _aOR_(param) - {if(0 === changement_logement_d842_4[0]) - {var - infos=changement_logement_d842_4[1], - _aOU_= - caml_call2(Runtime_ocaml_Runtime[98],infos[1],infos[2]); - return caml_call2 - (Runtime_ocaml_Runtime[98],loyer_principal,_aOU_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$301)} + {if(0 !== changement_logement_d842_4[0]) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$301); + var + infos=changement_logement_d842_4[1], + _aOU_=caml_call2(Runtime_ocaml_Runtime[98],infos[1],infos[2]); + return caml_call2 + (Runtime_ocaml_Runtime[98],loyer_principal,_aOU_)} function _aOS_(param) {if(0 === changement_logement_d842_4[0]) var @@ -115447,34 +112990,35 @@ _aL$_), _aMb_=caml_call2(Runtime_ocaml_Runtime[27],_H__,_aMa_); if - (caml_call2 + (! + caml_call2 (Runtime_ocaml_Runtime[113], _aMb_, montant_minimal_depense_nette_)) - {var - _aMc_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _H$_, - Runtime_ocaml_Runtime[13], - allocation_mensuelle), - _aMd_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26],_Ia_,depense_nette_minimale), - _aMc_), - _aMe_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ib_, - Runtime_ocaml_Runtime[13], - _aMd_), - _aMf_=caml_call2(Runtime_ocaml_Runtime[27],_Ic_,_aMe_); - return caml_call2 - (Runtime_ocaml_Runtime[98], - montant_minimal_depense_nette_, - _aMf_)} - return caml_call1(Runtime_ocaml_Runtime[31],cst_0$306)}, + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$306); + var + _aMc_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _H$_, + Runtime_ocaml_Runtime[13], + allocation_mensuelle), + _aMd_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Ia_,depense_nette_minimale), + _aMc_), + _aMe_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Ib_, + Runtime_ocaml_Runtime[13], + _aMd_), + _aMf_=caml_call2(Runtime_ocaml_Runtime[27],_Ic_,_aMe_); + return caml_call2 + (Runtime_ocaml_Runtime[98], + montant_minimal_depense_nette_, + _aMf_)}, _aL7_= function(param) {return caml_call2(Runtime_ocaml_Runtime[29],_Id_,1)}, @@ -119927,23 +117471,24 @@ _apd_= function(param) {if - (caml_call2 + (! + caml_call2 (Runtime_ocaml_Runtime[118], ressources_menage_arrondies_ba, seuil_minimal_ressources_menag)) - {var - _arA_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$11), - _arB_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_01), - _arC_=caml_call1(Runtime_ocaml_Runtime[31],cst_4999), - _arD_= - caml_call2 - (Runtime_ocaml_Runtime[93], - seuil_minimal_ressources_menag, - _arC_), - _arE_=caml_call2(Runtime_ocaml_Runtime[104],_arD_,_arB_), - _arF_=caml_call1(Runtime_ocaml_Runtime[77],_arE_); - return caml_call2(Runtime_ocaml_Runtime[104],_arF_,_arA_)} - return ressources_menage_arrondies_ba}, + return ressources_menage_arrondies_ba; + var + _arA_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$11), + _arB_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_01), + _arC_=caml_call1(Runtime_ocaml_Runtime[31],cst_4999), + _arD_= + caml_call2 + (Runtime_ocaml_Runtime[93], + seuil_minimal_ressources_menag, + _arC_), + _arE_=caml_call2(Runtime_ocaml_Runtime[104],_arD_,_arB_), + _arF_=caml_call1(Runtime_ocaml_Runtime[77],_arE_); + return caml_call2(Runtime_ocaml_Runtime[104],_arF_,_arA_)}, _ape_= function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Lg_,1)}, _apf_= @@ -120799,18 +118344,18 @@ result[5], result[6], _an4_]; - if(caml_call2(Runtime_ocaml_Runtime[29],_NS_,1)) - {var - _an5_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _NT_, - embed_calcul_aide_personnalise, - result$0), - traitement_formule= - caml_call2(Runtime_ocaml_Runtime[27],_NU_,_an5_); - return [0,traitement_formule[6],traitement_formule[7]]} - throw Runtime_ocaml_Runtime[2]; + if(! caml_call2(Runtime_ocaml_Runtime[29],_NS_,1)) + throw Runtime_ocaml_Runtime[2]; + var + _an5_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _NT_, + embed_calcul_aide_personnalise, + result$0), + traitement_formule= + caml_call2(Runtime_ocaml_Runtime[27],_NU_,_an5_); + return [0,traitement_formule[6],traitement_formule[7]]; case 1: var proprietaire=categorie_calcul_apl[1], @@ -120863,18 +118408,18 @@ return caml_call2(Runtime_ocaml_Runtime[27],_N0_,_aoe_)}, result$2= [0,result$1[1],result$1[2],result$1[3],result$1[4],_an7_]; - if(caml_call2(Runtime_ocaml_Runtime[29],_N1_,1)) - {var - _an8_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _N2_, - embed_calcul_aide_personnalise$1, - result$2), - traitement_formule$0= - caml_call2(Runtime_ocaml_Runtime[27],_N3_,_an8_); - return [0,traitement_formule$0[4],traitement_formule$0[5]]} - throw Runtime_ocaml_Runtime[2]; + if(! caml_call2(Runtime_ocaml_Runtime[29],_N1_,1)) + throw Runtime_ocaml_Runtime[2]; + var + _an8_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _N2_, + embed_calcul_aide_personnalise$1, + result$2), + traitement_formule$0= + caml_call2(Runtime_ocaml_Runtime[27],_N3_,_an8_); + return [0,traitement_formule$0[4],traitement_formule$0[5]]; default: var logement_foyer=categorie_calcul_apl[1], @@ -120934,18 +118479,18 @@ result$3[7], result$3[8], _aoa_]; - if(caml_call2(Runtime_ocaml_Runtime[29],_N__,1)) - {var - _aob_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _N$_, - embed_calcul_aide_personnalise$0, - result$4), - traitement_formule$1= - caml_call2(Runtime_ocaml_Runtime[27],_Oa_,_aob_); - return [0,traitement_formule$1[8],traitement_formule$1[9]]} - throw Runtime_ocaml_Runtime[2]}}, + if(! caml_call2(Runtime_ocaml_Runtime[29],_N__,1)) + throw Runtime_ocaml_Runtime[2]; + var + _aob_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _N$_, + embed_calcul_aide_personnalise$0, + result$4), + traitement_formule$1= + caml_call2(Runtime_ocaml_Runtime[27],_Oa_,_aob_); + return [0,traitement_formule$1[8],traitement_formule$1[9]]}}, _anO_= function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ob_,1)}, _anP_=caml_call4(Runtime_ocaml_Runtime[63],_Oc_,[0],_anO_,_anN_)} @@ -122144,40 +119689,39 @@ _aiZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$273), _ai0_=menage[3]; function _ai1_(personne_a_charge) - {if(0 === personne_a_charge[0]) - {var - enfant=personne_a_charge[1], - _ai5_=enfant[2], - _ai6_=enfant[3], - _ai7_=0 === enfant[7][0]?_Rs_:_Rx_, - _ai8_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Rt_, - embed_enfant_prestations_famil, - [0, - enfant[1], - enfant[6], - enfant[5], - enfant[4], - _ai7_, - _ai6_, - _ai5_]), - _ai9_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Ru_, - prestations_familiales_dot_dro), - _ai8_), - _ai__= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Rv_, - Runtime_ocaml_Runtime[12], - _ai9_); - return caml_call2(Runtime_ocaml_Runtime[27],_Rw_,_ai__)} - return 0} + {if(0 !== personne_a_charge[0])return 0; + var + enfant=personne_a_charge[1], + _ai5_=enfant[2], + _ai6_=enfant[3], + _ai7_=0 === enfant[7][0]?_Rs_:_Rx_, + _ai8_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Rt_, + embed_enfant_prestations_famil, + [0, + enfant[1], + enfant[6], + enfant[5], + enfant[4], + _ai7_, + _ai6_, + _ai5_]), + _ai9_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Ru_, + prestations_familiales_dot_dro), + _ai8_), + _ai__= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Rv_, + Runtime_ocaml_Runtime[12], + _ai9_); + return caml_call2(Runtime_ocaml_Runtime[27],_Rw_,_ai__)} var _ai2_=caml_call2(Runtime_ocaml_Runtime[90],_ai1_,_ai0_), _ai3_=caml_call1(Runtime_ocaml_Runtime[68],_ai2_), @@ -122209,41 +119753,40 @@ _aiK_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$391), _aiL_=menage[3]; function _aiM_(personne_a_charge) - {if(0 === personne_a_charge[0]) - {var - enfant=personne_a_charge[1], - _aiS_=enfant[2], - _aiT_=enfant[3], - _aiU_=0 === enfant[7][0]?_Rz_:_RE_, - _aiV_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _RA_, - embed_enfant_prestations_famil, - [0, - enfant[1], - enfant[6], - enfant[5], - enfant[4], - _aiU_, - _aiT_, - _aiS_]), - _aiW_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _RB_, - prestations_familiales_dot_dro), - _aiV_), - _aiX_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _RC_, - Runtime_ocaml_Runtime[12], - _aiW_), - _aiY_=caml_call2(Runtime_ocaml_Runtime[27],_RD_,_aiX_); - return caml_call1(Runtime_ocaml_Runtime[67],_aiY_)} - return 0} + {if(0 !== personne_a_charge[0])return 0; + var + enfant=personne_a_charge[1], + _aiS_=enfant[2], + _aiT_=enfant[3], + _aiU_=0 === enfant[7][0]?_Rz_:_RE_, + _aiV_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _RA_, + embed_enfant_prestations_famil, + [0, + enfant[1], + enfant[6], + enfant[5], + enfant[4], + _aiU_, + _aiT_, + _aiS_]), + _aiW_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _RB_, + prestations_familiales_dot_dro), + _aiV_), + _aiX_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _RC_, + Runtime_ocaml_Runtime[12], + _aiW_), + _aiY_=caml_call2(Runtime_ocaml_Runtime[27],_RD_,_aiX_); + return caml_call1(Runtime_ocaml_Runtime[67],_aiY_)} var _aiN_=caml_call2(Runtime_ocaml_Runtime[90],_aiM_,_aiL_), _aiO_=caml_call1(Runtime_ocaml_Runtime[68],_aiN_), @@ -122583,18 +120126,18 @@ _agU_); return caml_call2(Runtime_ocaml_Runtime[27],_Sz_,_agV_)}, result$0=[0,result[1],_agr_]; - if(caml_call2(Runtime_ocaml_Runtime[29],_SA_,1)) - {var - _ags_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _SB_, - embed_calcul_allocation_logeme, - result$0), - traitement_formule= - caml_call2(Runtime_ocaml_Runtime[27],_SC_,_ags_); - return [0,traitement_formule[1],traitement_formule[2]]} - throw Runtime_ocaml_Runtime[2]; + if(! caml_call2(Runtime_ocaml_Runtime[29],_SA_,1)) + throw Runtime_ocaml_Runtime[2]; + var + _ags_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _SB_, + embed_calcul_allocation_logeme, + result$0), + traitement_formule= + caml_call2(Runtime_ocaml_Runtime[27],_SC_,_ags_); + return [0,traitement_formule[1],traitement_formule[2]]; case 1: var logement_foyer=mode_occupation[1], @@ -122648,18 +120191,18 @@ result$1[4], result$1[5], _agu_]; - if(caml_call2(Runtime_ocaml_Runtime[29],_SJ_,1)) - {var - _agv_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _SK_, - embed_calcul_allocation_logeme$1, - result$2), - traitement_formule$0= - caml_call2(Runtime_ocaml_Runtime[27],_SL_,_agv_); - return [0,traitement_formule$0[5],traitement_formule$0[6]]} - throw Runtime_ocaml_Runtime[2]; + if(! caml_call2(Runtime_ocaml_Runtime[29],_SJ_,1)) + throw Runtime_ocaml_Runtime[2]; + var + _agv_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _SK_, + embed_calcul_allocation_logeme$1, + result$2), + traitement_formule$0= + caml_call2(Runtime_ocaml_Runtime[27],_SL_,_agv_); + return [0,traitement_formule$0[5],traitement_formule$0[6]]; case 2: var proprietaire=mode_occupation[1], @@ -122710,18 +120253,18 @@ _agO_); return caml_call2(Runtime_ocaml_Runtime[27],_SR_,_agP_)}, result$4=[0,result$3[1],_agx_]; - if(caml_call2(Runtime_ocaml_Runtime[29],_SS_,1)) - {var - _agy_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _ST_, - embed_calcul_allocation_logeme$0, - result$4), - traitement_formule$1= - caml_call2(Runtime_ocaml_Runtime[27],_SU_,_agy_); - return [0,traitement_formule$1[1],traitement_formule$1[2]]} - throw Runtime_ocaml_Runtime[2]; + if(! caml_call2(Runtime_ocaml_Runtime[29],_SS_,1)) + throw Runtime_ocaml_Runtime[2]; + var + _agy_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _ST_, + embed_calcul_allocation_logeme$0, + result$4), + traitement_formule$1= + caml_call2(Runtime_ocaml_Runtime[27],_SU_,_agy_); + return [0,traitement_formule$1[1],traitement_formule$1[2]]; case 3: var location$0=mode_occupation[1], @@ -122790,18 +120333,18 @@ _agK_); return caml_call2(Runtime_ocaml_Runtime[27],_S1_,_agL_)}, result$6=[0,result$5[1],_agE_]; - if(caml_call2(Runtime_ocaml_Runtime[29],_S2_,1)) - {var - _agF_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _S3_, - embed_calcul_allocation_logeme, - result$6), - traitement_formule$2= - caml_call2(Runtime_ocaml_Runtime[27],_S4_,_agF_); - return [0,traitement_formule$2[1],traitement_formule$2[2]]} - throw Runtime_ocaml_Runtime[2]; + if(! caml_call2(Runtime_ocaml_Runtime[29],_S2_,1)) + throw Runtime_ocaml_Runtime[2]; + var + _agF_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _S3_, + embed_calcul_allocation_logeme, + result$6), + traitement_formule$2= + caml_call2(Runtime_ocaml_Runtime[27],_S4_,_agF_); + return [0,traitement_formule$2[1],traitement_formule$2[2]]; default: var proprietaire$0=mode_occupation[1], @@ -122852,18 +120395,18 @@ _agY_); return caml_call2(Runtime_ocaml_Runtime[27],_S__,_agZ_)}, result$8=[0,result$7[1],_agH_]; - if(caml_call2(Runtime_ocaml_Runtime[29],_S$_,1)) - {var - _agI_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ta_, - embed_calcul_allocation_logeme$0, - result$8), - traitement_formule$3= - caml_call2(Runtime_ocaml_Runtime[27],_Tb_,_agI_); - return [0,traitement_formule$3[1],traitement_formule$3[2]]} - throw Runtime_ocaml_Runtime[2]}}, + if(! caml_call2(Runtime_ocaml_Runtime[29],_S$_,1)) + throw Runtime_ocaml_Runtime[2]; + var + _agI_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Ta_, + embed_calcul_allocation_logeme$0, + result$8), + traitement_formule$3= + caml_call2(Runtime_ocaml_Runtime[27],_Tb_,_agI_); + return [0,traitement_formule$3[1],traitement_formule$3[2]]}}, _aga_= function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Tc_,1)}, _agb_=caml_call4(Runtime_ocaml_Runtime[63],_Td_,[0],_aga_,_af$_)} @@ -123404,55 +120947,56 @@ default:var _afi_=0} var _afj_=caml_call1(Runtime_ocaml_Runtime[67],_afi_); if - (caml_call2 + (! + caml_call2 (Runtime_ocaml_Runtime[83], eligibilite_aide_personnalisee$3, _afj_)) - {var - _afk_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Vc_, - Runtime_ocaml_Runtime[13], - calcul_allocation_logement_dot$6), - _afl_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Vd_, - calcul_allocation_logement_dot$7), - _afk_), - _afm_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Ve_, - Runtime_ocaml_Runtime[13], - _afl_), - _afn_=caml_call2(Runtime_ocaml_Runtime[27],_Vf_,_afm_), - _afo_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Vg_, - Runtime_ocaml_Runtime[13], - calcul_aide_personnalisee_loge$7), - _afp_= - caml_call1 - (caml_call2 - (Runtime_ocaml_Runtime[26], - _Vh_, - calcul_aide_personnalisee_loge$8), - _afo_), - _afq_= - caml_call3 - (Runtime_ocaml_Runtime[28], - _Vi_, - Runtime_ocaml_Runtime[13], - _afp_), - _afr_=caml_call2(Runtime_ocaml_Runtime[27],_Vj_,_afq_); - return caml_call2(Runtime_ocaml_Runtime[123],_afr_,_afn_) - ?calcul_aide_personnalisee_loge$7 - :calcul_allocation_logement_dot$6} - return eligibilite_aide_personnalisee$3 + return eligibilite_aide_personnalisee$3 + ?calcul_aide_personnalisee_loge$7 + :calcul_allocation_logement_dot$6; + var + _afk_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Vc_, + Runtime_ocaml_Runtime[13], + calcul_allocation_logement_dot$6), + _afl_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Vd_, + calcul_allocation_logement_dot$7), + _afk_), + _afm_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Ve_, + Runtime_ocaml_Runtime[13], + _afl_), + _afn_=caml_call2(Runtime_ocaml_Runtime[27],_Vf_,_afm_), + _afo_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Vg_, + Runtime_ocaml_Runtime[13], + calcul_aide_personnalisee_loge$7), + _afp_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Vh_, + calcul_aide_personnalisee_loge$8), + _afo_), + _afq_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Vi_, + Runtime_ocaml_Runtime[13], + _afp_), + _afr_=caml_call2(Runtime_ocaml_Runtime[27],_Vj_,_afq_); + return caml_call2(Runtime_ocaml_Runtime[123],_afr_,_afn_) ?calcul_aide_personnalisee_loge$7 :calcul_allocation_logement_dot$6}, _aff_= @@ -123489,9 +121033,9 @@ _ad1_=menage[4], _ad2_=menage[3]; function _ad3_(personne_a_charge) - {if(0 === personne_a_charge[0]) - {var enfant=personne_a_charge[1];return 0 === enfant[7][0]?1:0} - return 1} + {if(0 !== personne_a_charge[0])return 1; + var enfant=personne_a_charge[1]; + return 0 === enfant[7][0]?1:0} var _ad4_=caml_call2(Runtime_ocaml_Runtime[90],_ad3_,_ad2_); return [0,menage[1],menage[2],_ad4_,_ad1_,_ad0_,_adZ_,_adY_]}, _acY_= @@ -124004,18 +121548,13 @@ 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 _acW_=caml_call2(Stdlib_Printf[4],_Wf_,cons); - return caml_call1(Stdlib[2],_acW_)} - return _Wg_} - return _Wh_} - return _Wi_} - return _Wj_} - return _Wk_} + if(! caml_string_notequal(cons,cst_Autre$2))return _Wk_; + if(! caml_string_notequal(cons,cst_D331_32$0))return _Wj_; + if(! caml_string_notequal(cons,cst_D331_59_8$0))return _Wi_; + if(! caml_string_notequal(cons,cst_D331_63_64$0))return _Wh_; + if(! caml_string_notequal(cons,cst_D331_76_1$0))return _Wg_; + var _acW_=caml_call2(Stdlib_Printf[4],_Wf_,cons); + return caml_call1(Stdlib[2],_acW_)} function titulaire_pret_to_jsoo(param) {if(0 === param[0]) {var arg=param[1];return {"kind":"Demandeur","payload":arg}} @@ -124024,12 +121563,11 @@ "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 _acV_=caml_call2(Stdlib_Printf[4],_Wl_,cons); - return caml_call1(Stdlib[2],_acV_)} - return _Wm_} - return _Wn_} + if(! caml_string_notequal(cons,cst_Demandeur$0))return _Wn_; + if(! caml_string_notequal(cons,cst_VendeurQuandDemandeurACont$0)) + return _Wm_; + var _acV_=caml_call2(Stdlib_Printf[4],_Wl_,cons); + return caml_call1(Stdlib[2],_acV_)} function type_travaux_logement_d832_15_(param) {switch(param[0]) {case 0: @@ -124043,14 +121581,13 @@ 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 _acU_=caml_call2(Stdlib_Printf[4],_Wo_,cons); - return caml_call1(Stdlib[2],_acU_)} - return _Wp_} - return _Wq_} - return _Wr_} + if(! caml_string_notequal(cons,cst_PasDeTravaux$1))return _Wr_; + if(! caml_string_notequal(cons,cst_TravauxPourAcquisitionD832$0)) + return _Wq_; + if(! caml_string_notequal(cons,cst_TravauxSurLogementDejaAcqu)) + return _Wp_; + var _acU_=caml_call2(Stdlib_Printf[4],_Wo_,cons); + return caml_call1(Stdlib[2],_acU_)} function type_travaux_logement_r842_5_t(param) {switch(param[0]) {case 0: @@ -124066,28 +121603,23 @@ 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 _acT_=caml_call2(Stdlib_Printf[4],_Ws_,cons); - return caml_call1(Stdlib[2],_acT_)} - return _Wt_} - return _Wu_} - return _Wv_} - return _Ww_} + if(! caml_string_notequal(cons,cst_AgrandirOuRendreHabitableD$0)) + return _Ww_; + if(! caml_string_notequal(cons,cst_ObjectifDecenceLogement))return _Wv_; + if(! caml_string_notequal(cons,cst_PasDeTravaux$2))return _Wu_; + if(! caml_string_notequal(cons,cst_PrevuDansListeR321_15))return _Wt_; + var _acT_=caml_call2(Stdlib_Printf[4],_Ws_,cons); + return caml_call1(Stdlib[2],_acT_)} 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 _acS_=caml_call2(Stdlib_Printf[4],_Wx_,cons); - return caml_call1(Stdlib[2],_acS_)} - return _Wy_} - return _Wz_} + if(! caml_string_notequal(cons,cst_Non$2))return _Wz_; + if(! caml_string_notequal(cons,cst_Oui$1))return _Wy_; + var _acS_=caml_call2(Stdlib_Printf[4],_Wx_,cons); + return caml_call1(Stdlib[2],_acS_)} function limite_tranche_to_jsoo(param) {if(0 === param[0]) {var arg=param[1],t38=caml_call1(Runtime_ocaml_Runtime[35],arg); @@ -124096,15 +121628,12 @@ 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 _acQ_=caml_call2(Stdlib_Printf[4],_WA_,cons); - return caml_call1(Stdlib[2],_acQ_)} - var - _acR_= - caml_call1(Runtime_ocaml_Runtime[42],limite_tranche.payload); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_acR_)]} - return _WB_} + if(! caml_string_notequal(cons,cst_Infini$1))return _WB_; + if(caml_string_notequal(cons,cst_Revenu$1)) + {var _acQ_=caml_call2(Stdlib_Printf[4],_WA_,cons); + return caml_call1(Stdlib[2],_acQ_)} + var _acR_=caml_call1(Runtime_ocaml_Runtime[42],limite_tranche.payload); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_acR_)]} function limite_tranche_decimal_to_jsoo(param) {if(0 === param[0]) {var arg=param[1],t44=caml_call1(Runtime_ocaml_Runtime[43],arg); @@ -124113,14 +121642,13 @@ 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 _acP_=caml_call2(Stdlib_Printf[4],_WC_,cons); - return caml_call1(Stdlib[2],_acP_)} - return [0, - caml_call1 - (Runtime_ocaml_Runtime[42],limite_tranche_decimal.payload)]} - return _WD_} + if(! caml_string_notequal(cons,cst_Infini$2))return _WD_; + if(! caml_string_notequal(cons,cst_Revenu$2)) + return [0, + caml_call1 + (Runtime_ocaml_Runtime[42],limite_tranche_decimal.payload)]; + var _acP_=caml_call2(Stdlib_Printf[4],_WC_,cons); + return caml_call1(Stdlib[2],_acP_)} function prestation_recue_to_jsoo(param) {switch(param[0]) {case 0: @@ -124143,20 +121671,17 @@ 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 _acO_=caml_call2(Stdlib_Printf[4],_WE_,cons); - return caml_call1(Stdlib[2],_acO_)} - return _WF_} - return _WG_} - return _WH_} - return _WI_} - return _WJ_} - return _WK_} + if(! caml_string_notequal(cons,cst_AllocationAdulteHandicape)) + return _WK_; + if(! caml_string_notequal(cons,cst_AllocationJeuneEnfant$0))return _WJ_; + if(! caml_string_notequal(cons,cst_AllocationSoutienEnfantHan$0)) + return _WI_; + if(! caml_string_notequal(cons,cst_AllocationSoutienFamilial$3)) + return _WH_; + if(! caml_string_notequal(cons,cst_AllocationsFamiliales$3))return _WG_; + if(! caml_string_notequal(cons,cst_ComplementFamilial$0))return _WF_; + var _acO_=caml_call2(Stdlib_Printf[4],_WE_,cons); + return caml_call1(Stdlib[2],_acO_)} function parent_ou_autre_to_jsoo(param) {if(0 === param[0]) {var arg=param[1],t63=caml_call1(Runtime_ocaml_Runtime[43],arg); @@ -124166,13 +121691,12 @@ 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 _acN_=caml_call2(Stdlib_Printf[4],_WL_,cons); - return caml_call1(Stdlib[2],_acN_)} - return [0, - caml_call1(Runtime_ocaml_Runtime[42],parent_ou_autre.payload)]} - return _WM_} + if(! caml_string_notequal(cons,cst_Autre$3))return _WM_; + if(! caml_string_notequal(cons,cst_DemandeurOuConjointOuParen$0)) + return [0, + caml_call1(Runtime_ocaml_Runtime[42],parent_ou_autre.payload)]; + var _acN_=caml_call2(Stdlib_Printf[4],_WL_,cons); + return caml_call1(Stdlib[2],_acN_)} function situation_garde_alternee_to_js(param) {if(0 === param[0]) {var arg=param[1];return {"kind":"PasDeGardeAlternee","payload":arg}} @@ -124180,14 +121704,13 @@ 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 _acM_=caml_call2(Stdlib_Printf[4],_WN_,cons); - return caml_call1(Stdlib[2],_acM_)} - return _WO_} - return [1, - caml_call1 - (Runtime_ocaml_Runtime[42],situation_garde_alternee.payload)]} + if(! caml_string_notequal(cons,cst_GardeAlterneeCoefficientPr)) + return [1, + caml_call1 + (Runtime_ocaml_Runtime[42],situation_garde_alternee.payload)]; + if(! caml_string_notequal(cons,cst_PasDeGardeAlternee))return _WO_; + var _acM_=caml_call2(Stdlib_Printf[4],_WN_,cons); + return caml_call1(Stdlib[2],_acM_)} function parente_to_jsoo(param) {switch(param[0]) {case 0:var arg=param[1];return {"kind":"Ascendant","payload":arg}; @@ -124198,14 +121721,12 @@ 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 _acL_=caml_call2(Stdlib_Printf[4],_WP_,cons); - return caml_call1(Stdlib[2],_acL_)} - return _WQ_} - return _WR_} - return _WS_} + if(! caml_string_notequal(cons,cst_Ascendant$0))return _WS_; + if(! caml_string_notequal(cons,cst_CollateralDeuxiemeTroisiem)) + return _WR_; + if(! caml_string_notequal(cons,cst_Descendant$0))return _WQ_; + var _acL_=caml_call2(Stdlib_Printf[4],_WP_,cons); + return caml_call1(Stdlib[2],_acL_)} function date_de_naissance_ou_mois_de_g(param) {switch(param[0]) {case 0: @@ -124221,17 +121742,17 @@ "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 _acK_=caml_call2(Stdlib_Printf[4],_WT_,cons); - return caml_call1(Stdlib[2],_acK_)} - return [0, - caml_call1 - (Runtime_jsoo_Runtime[4], - date_de_naissance_ou_mois_de_g.payload)]} - return _WU_} - return _WV_} + if(! caml_string_notequal(cons,cst_ApresPremierJourMoisCivilT)) + return _WV_; + if(! caml_string_notequal(cons,cst_AvantPremierJourMoisCivilT$0)) + return _WU_; + if(! caml_string_notequal(cons,cst_DateDeNaissance$0)) + return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + date_de_naissance_ou_mois_de_g.payload)]; + var _acK_=caml_call2(Stdlib_Printf[4],_WT_,cons); + return caml_call1(Stdlib[2],_acK_)} function zone_d_habitation_to_jsoo(param) {switch(param[0]) {case 0:var arg=param[1];return {"kind":"Zone1","payload":arg}; @@ -124239,14 +121760,11 @@ 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 _acJ_=caml_call2(Stdlib_Printf[4],_WW_,cons); - return caml_call1(Stdlib[2],_acJ_)} - return _WX_} - return _WY_} - return _WZ_} + if(! caml_string_notequal(cons,cst_Zone1$0))return _WZ_; + if(! caml_string_notequal(cons,cst_Zone2$0))return _WY_; + if(! caml_string_notequal(cons,cst_Zone3$0))return _WX_; + var _acJ_=caml_call2(Stdlib_Printf[4],_WW_,cons); + return caml_call1(Stdlib[2],_acJ_)} function paiement_logement_distinct_pro(param) {if(0 === param[0]) {var arg=param[1],t97=caml_call1(Runtime_ocaml_Runtime[35],arg); @@ -124255,16 +121773,15 @@ 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 _acH_=caml_call2(Stdlib_Printf[4],_W0_,cons); - return caml_call1(Stdlib[2],_acH_)} - var - _acI_= - caml_call1 - (Runtime_ocaml_Runtime[42],paiement_logement_distinct_pro.payload); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_acI_)]} - return _W1_} + if(! caml_string_notequal(cons,cst_Non$3))return _W1_; + if(caml_string_notequal(cons,cst_OuiAvecLoyerOuCharges$0)) + {var _acH_=caml_call2(Stdlib_Printf[4],_W0_,cons); + return caml_call1(Stdlib[2],_acH_)} + var + _acI_= + caml_call1 + (Runtime_ocaml_Runtime[42],paiement_logement_distinct_pro.payload); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_acI_)]} function versement_a_to_jsoo(param) {switch(param[0]) {case 0:var arg=param[1];return {"kind":"Bailleur","payload":arg}; @@ -124275,14 +121792,11 @@ 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 _acG_=caml_call2(Stdlib_Printf[4],_W2_,cons); - return caml_call1(Stdlib[2],_acG_)} - return _W3_} - return _W4_} - return _W5_} + if(! caml_string_notequal(cons,cst_Bailleur$0))return _W5_; + if(! caml_string_notequal(cons,cst_Beneficiaire))return _W4_; + if(! caml_string_notequal(cons,cst_EtablissementHabilite))return _W3_; + var _acG_=caml_call2(Stdlib_Printf[4],_W2_,cons); + return caml_call1(Stdlib[2],_acG_)} function depense_logement_to_jsoo(param) {switch(param[0]) {case 0: @@ -124296,23 +121810,23 @@ 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 _acC_=caml_call2(Stdlib_Printf[4],_W6_,cons); - return caml_call1(Stdlib[2],_acC_)} - var - _acD_= - caml_call1(Runtime_ocaml_Runtime[42],depense_logement.payload); - return [0,caml_call1(Runtime_ocaml_Runtime[33],_acD_)]} - var + if(! caml_string_notequal(cons,cst_Loyer$0)) + {var + _acF_= + caml_call1(Runtime_ocaml_Runtime[42],depense_logement.payload); + return [2,caml_call1(Runtime_ocaml_Runtime[33],_acF_)]} + if(! caml_string_notequal(cons,cst_Mensualite)) + {var _acE_= caml_call1(Runtime_ocaml_Runtime[42],depense_logement.payload); return [1,caml_call1(Runtime_ocaml_Runtime[33],_acE_)]} + if(caml_string_notequal(cons,cst_TotalAnnuelEcheances)) + {var _acC_=caml_call2(Stdlib_Printf[4],_W6_,cons); + return caml_call1(Stdlib[2],_acC_)} var - _acF_= + _acD_= caml_call1(Runtime_ocaml_Runtime[42],depense_logement.payload); - return [2,caml_call1(Runtime_ocaml_Runtime[33],_acF_)]} + return [0,caml_call1(Runtime_ocaml_Runtime[33],_acD_)]} function mode_occupation_impaye_to_jsoo(param) {if(0 === param[0]) {var arg=param[1];return {"kind":"ImpayeLoyer","payload":arg}} @@ -124320,12 +121834,10 @@ 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 _acB_=caml_call2(Stdlib_Printf[4],_W7_,cons); - return caml_call1(Stdlib[2],_acB_)} - return _W8_} - return _W9_} + if(! caml_string_notequal(cons,cst_ImpayeLoyer))return _W9_; + if(! caml_string_notequal(cons,cst_ImpayePret))return _W8_; + var _acB_=caml_call2(Stdlib_Printf[4],_W7_,cons); + return caml_call1(Stdlib[2],_acB_)} function type_eligibilite_allocation_lo(param) {switch(param[0]) {case 0:var arg=param[1];return {"kind":"PasEligible","payload":arg}; @@ -124337,14 +121849,13 @@ 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 _acA_=caml_call2(Stdlib_Printf[4],_W__,cons); - return caml_call1(Stdlib[2],_acA_)} - return _W$_} - return _Xa_} - return _Xb_} + if(! caml_string_notequal(cons,cst_AllocationLogementFamilial$1)) + return _Xb_; + if(! caml_string_notequal(cons,cst_AllocationLogementSociale$1)) + return _Xa_; + if(! caml_string_notequal(cons,cst_PasEligible))return _W$_; + var _acA_=caml_call2(Stdlib_Printf[4],_W__,cons); + return caml_call1(Stdlib[2],_acA_)} function type_aides_personnelle_logemen(param) {switch(param[0]) {case 0: @@ -124358,14 +121869,14 @@ 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 _acz_=caml_call2(Stdlib_Printf[4],_Xc_,cons); - return caml_call1(Stdlib[2],_acz_)} - return _Xd_} - return _Xe_} - return _Xf_} + if(! caml_string_notequal(cons,cst_AidePersonnaliseeLogement)) + return _Xf_; + if(! caml_string_notequal(cons,cst_AllocationLogementFamilial$2)) + return _Xe_; + if(! caml_string_notequal(cons,cst_AllocationLogementSociale$2)) + return _Xd_; + var _acz_=caml_call2(Stdlib_Printf[4],_Xc_,cons); + return caml_call1(Stdlib[2],_acz_)} function situation_familiale_to_jsoo(param) {switch(param[0]) {case 0:var arg=param[1];return {"kind":"Celibataire","payload":arg}; @@ -124382,22 +121893,17 @@ 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 _acy_=caml_call2(Stdlib_Printf[4],_Xg_,cons); - return caml_call1(Stdlib[2],_acy_)} - return _Xh_} - return [1, - caml_call1 - (Runtime_jsoo_Runtime[4],situation_familiale.payload)]} - return _Xi_} - return _Xj_} - return _Xk_} - return _Xl_} + if(! caml_string_notequal(cons,cst_Celibataire))return _Xl_; + if(! caml_string_notequal(cons,cst_CelibataireSepareDeFait))return _Xk_; + if(! caml_string_notequal(cons,cst_ConcubinageDontSepareDeFai)) + return _Xj_; + if(! caml_string_notequal(cons,cst_Concubins$0))return _Xi_; + if(! caml_string_notequal(cons,cst_Maries)) + return [1, + caml_call1(Runtime_jsoo_Runtime[4],situation_familiale.payload)]; + if(! caml_string_notequal(cons,cst_Pacses))return _Xh_; + var _acy_=caml_call2(Stdlib_Printf[4],_Xg_,cons); + return caml_call1(Stdlib[2],_acy_)} function prise_en_charge_to_jsoo$0(param) {switch(param[0]) {case 0: @@ -124412,14 +121918,13 @@ "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 _acx_=caml_call2(Stdlib_Printf[4],_Xm_,cons); - return caml_call1(Stdlib[2],_acx_)} - return _Xn_} - return _Xo_} - return _Xp_} + if(! caml_string_notequal(cons,cst_EffectiveEtPermanente$3))return _Xp_; + if(! caml_string_notequal(cons,cst_ResidenceAlterneeAllocatai)) + return _Xo_; + if(! caml_string_notequal(cons,cst_ResidenceAlterneeAllocatio)) + return _Xn_; + var _acx_=caml_call2(Stdlib_Printf[4],_Xm_,cons); + return caml_call1(Stdlib[2],_acx_)} function type_logement_foyer_to_jsoo(param) {switch(param[0]) {case 0: @@ -124436,16 +121941,14 @@ 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 _acw_=caml_call2(Stdlib_Printf[4],_Xq_,cons); - return caml_call1(Stdlib[2],_acw_)} - return _Xr_} - return _Xs_} - return _Xt_} - return _Xu_} + if(! caml_string_notequal(cons,cst_Autre$4))return _Xu_; + if(! caml_string_notequal(cons,cst_FoyerJeunesTrvailleursOuMi$0)) + return _Xt_; + if(! caml_string_notequal(cons,cst_LogementPersonnesAgeesOuHa)) + return _Xs_; + if(! caml_string_notequal(cons,cst_ResidenceSociale))return _Xr_; + var _acw_=caml_call2(Stdlib_Printf[4],_Xq_,cons); + return caml_call1(Stdlib[2],_acw_)} function categorie_equivalence_loyer_al(param) {switch(param[0]) {case 0: @@ -124462,16 +121965,15 @@ 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 _acv_=caml_call2(Stdlib_Printf[4],_Xv_,cons); - return caml_call1(Stdlib[2],_acv_)} - return _Xw_} - return _Xx_} - return _Xy_} - return _Xz_} + if(! caml_string_notequal(cons,cst_AutresPersonnes$0))return _Xz_; + if(! caml_string_notequal(cons,cst_EtudiantLogeEnChambreCROUS)) + return _Xy_; + if(! caml_string_notequal(cons,cst_EtudiantLogeEnChambreCROUS$0)) + return _Xx_; + if(! caml_string_notequal(cons,cst_PersonnesAgeesSelon3DeD842)) + return _Xw_; + var _acv_=caml_call2(Stdlib_Printf[4],_Xv_,cons); + return caml_call1(Stdlib[2],_acv_)} function situation_familiale_calcul_a_p(param) {if(0 === param[0]) {var arg=param[1];return {"kind":"PersonneSeule","payload":arg}} @@ -124479,12 +121981,10 @@ 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 _acu_=caml_call2(Stdlib_Printf[4],_XA_,cons); - return caml_call1(Stdlib[2],_acu_)} - return _XB_} - return _XC_} + if(! caml_string_notequal(cons,cst_Couple$0))return _XC_; + if(! caml_string_notequal(cons,cst_PersonneSeule$0))return _XB_; + var _acu_=caml_call2(Stdlib_Printf[4],_XA_,cons); + return caml_call1(Stdlib[2],_acu_)} function collectivite_to_jsoo$0(param) {switch(param[0]) {case 0:var arg=param[1];return {"kind":"Guadeloupe","payload":arg}; @@ -124503,26 +122003,17 @@ 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 _act_=caml_call2(Stdlib_Printf[4],_XD_,cons); - return caml_call1(Stdlib[2],_act_)} - return _XE_} - return _XF_} - return _XG_} - return _XH_} - return _XI_} - return _XJ_} - return _XK_} - return _XL_} - return _XM_} + if(! caml_string_notequal(cons,cst_Guadeloupe$2))return _XM_; + if(! caml_string_notequal(cons,cst_Guyane$2))return _XL_; + if(! caml_string_notequal(cons,cst_LaReunion$0))return _XK_; + if(! caml_string_notequal(cons,cst_Martinique$2))return _XJ_; + if(! caml_string_notequal(cons,cst_Mayotte$2))return _XI_; + if(! caml_string_notequal(cons,cst_Metropole$0))return _XH_; + if(! caml_string_notequal(cons,cst_SaintBarthelemy$0))return _XG_; + if(! caml_string_notequal(cons,cst_SaintMartin$2))return _XF_; + if(! caml_string_notequal(cons,cst_SaintPierreEtMiquelon$2))return _XE_; + var _act_=caml_call2(Stdlib_Printf[4],_XD_,cons); + return caml_call1(Stdlib[2],_act_)} function prise_en_charge_enfant_to_jsoo(param) {switch(param[0]) {case 0: @@ -124544,18 +122035,17 @@ "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 _acs_=caml_call2(Stdlib_Printf[4],_XN_,cons); - return caml_call1(Stdlib[2],_acs_)} - return _XO_} - return _XP_} - return _XQ_} - return _XR_} - return _XS_} + if(! caml_string_notequal(cons,cst_EffectiveEtPermanente$4))return _XS_; + if(! caml_string_notequal(cons,cst_GardeAlterneeAllocataireUn$0)) + return _XR_; + if(! caml_string_notequal(cons,cst_GardeAlterneePartageAlloca$0)) + return _XQ_; + if(! caml_string_notequal(cons,cst_ServicesSociauxAllocationV$5)) + return _XP_; + if(! caml_string_notequal(cons,cst_ServicesSociauxAllocationV$6)) + return _XO_; + var _acs_=caml_call2(Stdlib_Printf[4],_XN_,cons); + return caml_call1(Stdlib[2],_acs_)} function situation_obligation_scolaire_$1(param) {switch(param[0]) {case 0:var arg=param[1];return {"kind":"Avant","payload":arg}; @@ -124563,14 +122053,11 @@ 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 _acr_=caml_call2(Stdlib_Printf[4],_XT_,cons); - return caml_call1(Stdlib[2],_acr_)} - return _XU_} - return _XV_} - return _XW_} + if(! caml_string_notequal(cons,cst_Apres$0))return _XW_; + if(! caml_string_notequal(cons,cst_Avant$2))return _XV_; + if(! caml_string_notequal(cons,cst_Pendant$2))return _XU_; + var _acr_=caml_call2(Stdlib_Printf[4],_XT_,cons); + return caml_call1(Stdlib[2],_acr_)} function element_prestations_familiales$1(param) {switch(param[0]) {case 0: @@ -124600,25 +122087,21 @@ "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 _acq_=caml_call2(Stdlib_Printf[4],_XX_,cons); - return caml_call1(Stdlib[2],_acq_)} - return _XY_} - return _XZ_} - return _X0_} - return _X1_} - return _X2_} - return _X3_} - return _X4_} - return _X5_} + if(! caml_string_notequal(cons,cst_AllocationEducationEnfantH$0)) + return _X5_; + if(! caml_string_notequal(cons,cst_AllocationJournalierePrese$0)) + return _X4_; + if(! caml_string_notequal(cons,cst_AllocationLogement$2))return _X3_; + if(! caml_string_notequal(cons,cst_AllocationRentreeScolaire$0)) + return _X2_; + if(! caml_string_notequal(cons,cst_AllocationSoutienFamilial$4)) + return _X1_; + if(! caml_string_notequal(cons,cst_AllocationsFamiliales$4))return _X0_; + if(! caml_string_notequal(cons,cst_ComplementFamilial$1))return _XZ_; + if(! caml_string_notequal(cons,cst_PrestationAccueilJeuneEnfa$2)) + return _XY_; + var _acq_=caml_call2(Stdlib_Printf[4],_XX_,cons); + return caml_call1(Stdlib[2],_acq_)} function convention_bailleur_social_to_(convention_bailleur_social) {var t237= @@ -125343,12 +122826,11 @@ return {"kind":"Ancien","payload":t376}} 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 _aax_=caml_call2(Stdlib_Printf[4],_X6_,cons); - return caml_call1(Stdlib[2],_aax_)} - return _X7_} - return [1,ameliore_par_occupant_of_jsoo(neuf_ou_ancien.payload)]} + if(! caml_string_notequal(cons,cst_Ancien$0)) + return [1,ameliore_par_occupant_of_jsoo(neuf_ou_ancien.payload)]; + if(! caml_string_notequal(cons,cst_Neuf$0))return _X7_; + var _aax_=caml_call2(Stdlib_Printf[4],_X6_,cons); + return caml_call1(Stdlib[2],_aax_)} function tranche_revenu_to_jsoo(tranche_revenu) {var t381=caml_call1(Runtime_ocaml_Runtime[43],tranche_revenu[3]), @@ -125424,14 +122906,13 @@ return {"kind":"PlusDeTroisEnfants","payload":t408}} 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 _aak_=caml_call2(Stdlib_Printf[4],_X8_,cons); - return caml_call1(Stdlib[2],_aak_)} - return [1, - date_de_naissance_ou_mois_de_g$0 - (date_naissance_troisieme_ou_de.payload)]} - return _X9_} + if(! caml_string_notequal(cons,cst_MoinsDeTroisEnfants$0))return _X9_; + if(! caml_string_notequal(cons,cst_PlusDeTroisEnfants$0)) + return [1, + date_de_naissance_ou_mois_de_g$0 + (date_naissance_troisieme_ou_de.payload)]; + var _aak_=caml_call2(Stdlib_Printf[4],_X8_,cons); + return caml_call1(Stdlib[2],_aak_)} function eligibilite_allocation_logemen$0(eligibilite_allocation_logemen) {var _aai_=eligibilite_allocation_logemen[3]; function _aaj_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)} @@ -125604,28 +123085,26 @@ 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 _$U_=caml_call2(Stdlib_Printf[4],_X__,cons); - return caml_call1(Stdlib[2],_$U_)} - return [0,convention_bailleur_social_of_(type_bailleur.payload)]} - return [1,convention_a_n_h_a_of_jsoo(type_bailleur.payload)]} - return _X$_} + if(! caml_string_notequal(cons,cst_BailleurPrive))return _X$_; + if(! caml_string_notequal(cons,cst_BailleurPriveAvecConventio)) + return [1,convention_a_n_h_a_of_jsoo(type_bailleur.payload)]; + if(! caml_string_notequal(cons,cst_BailleurSocial$0)) + return [0,convention_bailleur_social_of_(type_bailleur.payload)]; + var _$U_=caml_call2(Stdlib_Printf[4],_X__,cons); + return caml_call1(Stdlib[2],_$U_)} 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],t471=personne_sous_location_to_jsoo(arg$0); return {"kind":"Oui","payload":t471}} 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 _$T_=caml_call2(Stdlib_Printf[4],_Ya_,cons); - return caml_call1(Stdlib[2],_$T_)} - return [1, - personne_sous_location_of_jsoo - (loue_ou_sous_loue_a_des_tiers.payload)]} - return _Yb_} + if(! caml_string_notequal(cons,cst_Non$4))return _Yb_; + if(! caml_string_notequal(cons,cst_Oui$2)) + return [1, + personne_sous_location_of_jsoo + (loue_ou_sous_loue_a_des_tiers.payload)]; + var _$T_=caml_call2(Stdlib_Printf[4],_Ya_,cons); + return caml_call1(Stdlib[2],_$T_)} function nationalite_to_jsoo(param) {if(0 === param[0]) {var arg=param[1];return {"kind":"Francaise","payload":arg}} @@ -125633,12 +123112,11 @@ return {"kind":"Etrangere","payload":t477}} 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 _$S_=caml_call2(Stdlib_Printf[4],_Yc_,cons); - return caml_call1(Stdlib[2],_$S_)} - return _Yd_} - return [1,conditions_etrangers_of_jsoo(nationalite.payload)]} + if(! caml_string_notequal(cons,cst_Etrangere)) + return [1,conditions_etrangers_of_jsoo(nationalite.payload)]; + if(! caml_string_notequal(cons,cst_Francaise))return _Yd_; + var _$S_=caml_call2(Stdlib_Printf[4],_Yc_,cons); + return caml_call1(Stdlib[2],_$S_)} function changement_logement_d842_4_to_(param) {if(0 === param[0]) {var arg=param[1],t481=infos_changement_logement_d842(arg); @@ -125647,14 +123125,13 @@ 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 _$R_=caml_call2(Stdlib_Printf[4],_Ye_,cons); - return caml_call1(Stdlib[2],_$R_)} - return _Yf_} - return [0, - infos_changement_logement_d842$0 - (changement_logement_d842_4.payload)]} + if(! caml_string_notequal(cons,cst_Changement$0)) + return [0, + infos_changement_logement_d842$0 + (changement_logement_d842_4.payload)]; + if(! caml_string_notequal(cons,cst_PasDeChangement$0))return _Yf_; + var _$R_=caml_call2(Stdlib_Printf[4],_Ye_,cons); + return caml_call1(Stdlib[2],_$R_)} function proprietaire_to_jsoo(proprietaire) {var t496=pret_to_jsoo(proprietaire[11]), @@ -125774,12 +123251,12 @@ return {"kind":"AutrePersonneACharge","payload":t521}} 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 _$y_=caml_call2(Stdlib_Printf[4],_Yg_,cons); - return caml_call1(Stdlib[2],_$y_)} - return [0,enfant_a_charge_of_jsoo(personne_a_charge.payload)]} - return [1,autre_personne_a_charge_of_jso(personne_a_charge.payload)]} + if(! caml_string_notequal(cons,cst_AutrePersonneACharge)) + return [1,autre_personne_a_charge_of_jso(personne_a_charge.payload)]; + if(! caml_string_notequal(cons,cst_EnfantACharge)) + return [0,enfant_a_charge_of_jsoo(personne_a_charge.payload)]; + var _$y_=caml_call2(Stdlib_Printf[4],_Yg_,cons); + return caml_call1(Stdlib[2],_$y_)} function demandeur_to_jsoo(demandeur) {var t528=! ! demandeur[4], @@ -125895,14 +123372,14 @@ return {"kind":"LogementFoyer","payload":t563}}} 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 _$d_=caml_call2(Stdlib_Printf[4],_Yh_,cons); - return caml_call1(Stdlib[2],_$d_)} - 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)]} + if(! caml_string_notequal(cons,cst_AccessionPropriete)) + return [1,proprietaire_of_jsoo(categorie_calcul_a_p_l.payload)]; + if(! caml_string_notequal(cons,cst_Location$0)) + return [0,location_of_jsoo(categorie_calcul_a_p_l.payload)]; + if(! caml_string_notequal(cons,cst_LogementFoyer$0)) + return [2,logement_foyer_of_jsoo(categorie_calcul_a_p_l.payload)]; + var _$d_=caml_call2(Stdlib_Printf[4],_Yh_,cons); + return caml_call1(Stdlib[2],_$d_)} function mode_occupation_to_jsoo(param) {switch(param[0]) {case 0: @@ -125923,18 +123400,18 @@ return {"kind":"LocationAccession","payload":t577}}} 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 _$c_=caml_call2(Stdlib_Printf[4],_Yi_,cons); - return caml_call1(Stdlib[2],_$c_)} - 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)]} + if(! caml_string_notequal(cons,cst_AccessionProprieteLocalUsa)) + return [2,proprietaire_of_jsoo(mode_occupation.payload)]; + if(! caml_string_notequal(cons,cst_Locataire$0)) + return [0,location_of_jsoo(mode_occupation.payload)]; + if(! caml_string_notequal(cons,cst_LocationAccession$0)) + return [4,proprietaire_of_jsoo(mode_occupation.payload)]; + if(! caml_string_notequal(cons,cst_ResidentLogementFoyer)) + return [1,logement_foyer_of_jsoo(mode_occupation.payload)]; + if(! caml_string_notequal(cons,cst_SousLocataire$0)) + return [3,location_of_jsoo(mode_occupation.payload)]; + var _$c_=caml_call2(Stdlib_Printf[4],_Yi_,cons); + return caml_call1(Stdlib[2],_$c_)} function logement_to_jsoo(logement) {var t592=zone_d_habitation_to_jsoo(logement[9]), @@ -127369,7 +124846,7 @@ function t920(param) {return caml_js_wrap_callback(contributions_sociales_aides_p$4)} caml_call2 - (Js_of_ocaml_Js[46], + (Js_of_ocaml_Js[50], cst_AidesLogementLib, {"contributionsSocialesAidesPersonnelleLogement": caml_js_wrap_meth_callback(t920), @@ -127660,7 +125137,9 @@ //# 1 ".api_web.eobjs/byte/dune__exe__Api_web.cmo.js" -(function(globalThis) +// Generated by js_of_ocaml +(function + (globalThis) {"use strict"; var runtime=globalThis.jsoo_runtime, @@ -127674,8 +125153,9 @@ 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; + global_data.Law_source__Aides_logement_api_web; + global_data.CamlinternalOO; + var Js_of_ocaml_Js=global_data.Js_of_ocaml__Js; function t4(param) {return caml_js_wrap_callback (function(calculette_aides_au_logement_g) @@ -127699,7 +125179,7 @@ return t0.iMontantVerse} return caml_call1(Runtime_jsoo_Runtime[6],_a_)})} caml_call1 - (Js_of_ocaml_Js[47], + (Js_of_ocaml_Js[51], {"eventsManager":Runtime_jsoo_Runtime[1], "computeAllocationsFamiliales":caml_js_wrap_meth_callback(t3), "computeAidesAuLogement":caml_js_wrap_meth_callback(t4)}); @@ -127710,7 +125190,9 @@ //# 1 "../../.js/stdlib/std_exit.cmo.js" -(function(globalThis) +// Generated by js_of_ocaml +(function + (globalThis) {"use strict"; var runtime=globalThis.jsoo_runtime; function caml_call1(f,a0) @@ -127723,4 +125205,4 @@ (globalThis)); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJhcGlfd2ViLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIk9iamVjdCIsImdsb2JhbFRoaXMiLCJ0aGlzIiwiZ2V0IiwiX1RfIiwiZ2xvYmFsIiwic2VsZiIsImNhbWxfaW50NjRfaXNfemVybyIsIngiLCJjYW1sX3N0cl9yZXBlYXQiLCJuIiwicyIsInIiLCJsIiwiY2FtbF9pbnQ2NF9vZmZzZXQiLCJNYXRoIiwiY2FtbF9yYWlzZV9jb25zdGFudCIsInRhZyIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsImgiLCJzaWduIiwib2Zmc2V0IiwibW9kdWx1cyIsImRpdmlzb3IiLCJxdW90aWVudCIsInkiLCJxIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludDY0X2lzX25lZ2F0aXZlIiwiY2FtbF9pbnQ2NF9uZWciLCJjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMiLCJhIiwiaSIsImxlbiIsImYiLCJTdHJpbmciLCJudWxsIiwiY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwianNvb19pc19hc2NpaSIsImNhbWxfdXRmMTZfb2ZfdXRmOCIsImIiLCJ0IiwiYyIsImMxIiwiYzIiLCJ2IiwiaiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImxlbmd0aCIsImNvbnRlbnQiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfcGFyc2VfZm9ybWF0IiwiZm10IiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJlcnJubyIsInZhcmlhbnQiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2J5dGVzX2JvdW5kX2Vycm9yIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfbWxfYnl0ZXNfbGVuZ3RoIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiQXJyYXkiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsImNhbWxfYmxpdF9zdHJpbmciLCJlIiwiTWxGaWxlIiwiTWxGYWtlRmlsZSIsIm9sZCIsImJ1ZiIsInBvcyIsImNsZW4iLCJuZXdfc3RyIiwib2xkX2RhdGEiLCJNbEZha2VEZXZpY2UiLCJyZXMiLCJTeW1ib2wiLCJuYW1lX3NsYXNoIiwibW9kZSIsInJhaXNlX3VuaXgiLCJwYXJlbnQiLCJSZWdFeHAiLCJzZWVuIiwibSIsIm9rIiwiZmlsZSIsImJ5dGVzIiwiY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIiwiY2FtbF9zdHJpbmdfdW5zYWZlX2dldCIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9hcnJheV9vZl9ieXRlcyIsImNhbWxfYnl0ZXNfdW5zYWZlX3NldCIsImNhbWxfYnl0ZXNfc2V0IiwiTWxOb2RlRmlsZSIsImZkIiwicmVxdWlyZSIsImVyciIsImJ1Zl9vZmZzZXQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJvIiwianNfc3RhdHMiLCJ0b19kaXIiLCJ0YXJnZXQiLCJsaW5rIiwiZmlsZV9raW5kIiwiY2FtbF9nZXRfcm9vdCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX3Jvb3QiLCJqc29vX21vdW50X3BvaW50IiwicmVzb2x2ZV9mc19kZXZpY2UiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3JhaXNlX25vdF9mb3VuZCIsImNhbWxfc3lzX2dldGVudiIsImciLCJ1bmRlZmluZWQiLCJzaGlmdF9yaWdodF9uYXQiLCJuYXQxIiwib2ZzMSIsImxlbjEiLCJuYXQyIiwib2ZzMiIsIm5iaXRzIiwid3JhcCIsImNhbWxfZ3Jfc3RhdGUiLCJjYW1sX2dyX3N0YXRlX2dldCIsImNhbWxfZ3JfcG9pbnRfY29sb3IiLCJpbSIsIk1sT2JqZWN0VGFibGUiLCJOYWl2ZUxvb2t1cCIsIm9ianMiLCJjYW1sX3N5c19yZW5hbWUiLCJvX3Jvb3QiLCJuX3Jvb3QiLCJjYW1sX2xvZzEwX2Zsb2F0IiwidW5peF91bmxpbmsiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwidW5peF9ybWRpciIsImNhbWxfbWxfcmVmaWxsX2lucHV0IiwiY2hhbiIsInN0ciIsInN0cl9sZW4iLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9tbF9tYXlfcmVmaWxsX2lucHV0IiwiY2hhbmlkIiwiY2FtbF9hcnJheV9ib3VuZF9lcnJvciIsImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lIiwiY2FtbF9nY19taW5vciIsImJpZ0ludCIsIkJBU0UiLCJMT0dfQkFTRSIsIk1BWF9JTlQiLCJNQVhfSU5UX0FSUiIsInNtYWxsVG9BcnJheSIsIkRFRkFVTFRfQUxQSEFCRVQiLCJCaWdJbnQiLCJqb29fZ2xvYmFsX29iamVjdCIsInN1cHBvcnRzTmF0aXZlQmlnSW50IiwiSW50ZWdlciIsInJhZGl4IiwiYWxwaGFiZXQiLCJjYXNlU2Vuc2l0aXZlIiwicGFyc2VWYWx1ZSIsInBhcnNlQmFzZSIsIkJpZ0ludGVnZXIiLCJ2YWx1ZSIsIlNtYWxsSW50ZWdlciIsIk5hdGl2ZUJpZ0ludCIsImlzUHJlY2lzZSIsImFycmF5VG9TbWFsbCIsImFyciIsInRyaW0iLCJjb21wYXJlQWJzIiwiY3JlYXRlQXJyYXkiLCJ0cnVuY2F0ZSIsImFkZCIsImxfYSIsImxfYiIsImNhcnJ5IiwiYmFzZSIsInN1bSIsImFkZEFueSIsImFkZFNtYWxsIiwic3VidHJhY3QiLCJhX2wiLCJiX2wiLCJib3Jyb3ciLCJkaWZmZXJlbmNlIiwic3VidHJhY3RBbnkiLCJzdWJ0cmFjdFNtYWxsIiwic21hbGwiLCJtdWx0aXBseUxvbmciLCJwcm9kdWN0IiwiYV9pIiwiYl9qIiwibXVsdGlwbHlTbWFsbCIsInNoaWZ0TGVmdCIsIm11bHRpcGx5S2FyYXRzdWJhIiwiYWMiLCJiZCIsImFiY2QiLCJ1c2VLYXJhdHN1YmEiLCJsMSIsImwyIiwiYWJzIiwibXVsdGlwbHlTbWFsbEFuZEFycmF5Iiwic3F1YXJlIiwiYV9qIiwiZGl2TW9kMSIsImRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCIsImxhbWJkYSIsInJlbWFpbmRlciIsInF1b3RpZW50RGlnaXQiLCJzaGlmdCIsImRpdk1vZFNtYWxsIiwiZGl2TW9kMiIsInBhcnQiLCJndWVzcyIsInhsZW4iLCJoaWdoeCIsImhpZ2h5IiwiY2hlY2siLCJkaXZNb2RBbnkiLCJFcnJvciIsImNvbXBhcmlzb24iLCJxU2lnbiIsIm1vZCIsIm1TaWduIiwiXzAiLCJfMSIsIl8yIiwiZXhwIiwiSW5maW5pdHkiLCJpc0Jhc2ljUHJpbWUiLCJtaWxsZXJSYWJpblRlc3QiLCJuUHJldiIsInN0cmljdCIsImlzUHJpbWUiLCJiaXRzIiwibG9nTiIsIml0ZXJhdGlvbnMiLCJuZXdUIiwibmV3UiIsImxhc3RUIiwibGFzdFIiLCJwb3dlcnNPZlR3byIsInBvd2VyczJMZW5ndGgiLCJoaWdoZXN0UG93ZXIyIiwic2hpZnRfaXNTbWFsbCIsInJlbVF1byIsImJpdHdpc2UiLCJmbiIsInhTaWduIiwieVNpZ24iLCJ4UmVtIiwieVJlbSIsInhEaWdpdCIsInlEaWdpdCIsInhEaXZNb2QiLCJ5RGl2TW9kIiwiTE9CTUFTS19JIiwiTE9CTUFTS19CSSIsInJvdWdoTE9CIiwiaW50ZWdlckxvZ2FyaXRobSIsInRtcCIsIm1heCIsIm1pbiIsImdjZCIsImxjbSIsInJhbmRCZXR3ZWVuIiwibG93IiwiaGlnaCIsInJhbmdlIiwiZGlnaXRzIiwidG9CYXNlIiwicmVzdHJpY3RlZCIsInRvcCIsImRpZ2l0IiwidGV4dCIsImFic0Jhc2UiLCJhbHBoYWJldFZhbHVlcyIsImlzTmVnYXRpdmUiLCJzdGFydCIsInBhcnNlQmFzZUZyb21BcnJheSIsInZhbCIsInBvdyIsInN0cmluZ2lmeSIsIm5lZyIsIk51bWJlciIsIm91dCIsImxlZnQiLCJkaXZtb2QiLCJ0b0Jhc2VTdHJpbmciLCJ6ZXJvcyIsInBhcnNlSW50IiwicGFyc2VTdHJpbmdWYWx1ZSIsInNwbGl0IiwiZGVjaW1hbFBsYWNlIiwiaXNWYWxpZCIsInBhcnNlTnVtYmVyVmFsdWUiLCJtbF96X25vcm1hbGl6ZSIsIm1sX3pfcG93IiwiejEiLCJtbF96X3Jvb3QiLCJ6IiwiemVybyIsIm9uZSIsImVuZCIsImFucyIsInR3byIsIm1pZCIsInBvIiwibWxfel9yb290cmVtIiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfYmFfdWludDhfZ2V0NjQiLCJiYSIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3JldHVybl9leG5fY29uc3RhbnQiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jcmVhdGVfZmlsZSIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJjYW1sX3NldF9wYXJzZXJfdHJhY2UiLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJ1bml4X2dldHRpbWVvZmRheSIsIkRhdGUiLCJjYW1sX211bCIsImNhbWxfaGFzaF9taXhfaW50IiwibnVtX2RpZ2l0c19uYXQiLCJuYXQiLCJjYW1sX2hhc2hfbmF0IiwiY2FtbF9jYWxsX2dlbiIsImFyZ3NMZW4iLCJleHRyYV9hcmdzIiwiYXJndW1lbnRzIiwibmFyZ3MiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzIiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX2djX2NvdW50ZXJzIiwibWxfel9kaXYiLCJ6MiIsIm1sX3pfc2lnbiIsIm1sX3pfYWRkIiwibWxfel9jZGl2IiwiejFfcG9zIiwiejJfcG9zIiwiY2FtbF9ncl9zeW5jaHJvbml6ZSIsInVuaXhfaGFzX3N5bWxpbmsiLCJ1bml0IiwibG9nMl9vayIsImpzb29fZmxvb3JfbG9nMiIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiaW50MzJhIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJrIiwicjMiLCJyMiIsInIxIiwiY2FtbF9iYV9zZXJpYWxpemUiLCJzeiIsImNvbXBsZXgiLCJjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50Iiwia2luZCIsImNhbWxfYmFfY3JlYXRlX2J1ZmZlciIsInNpemUiLCJ2aWV3IiwiZGF0YSIsImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2ludDY0X2hpMzIiLCJjYW1sX2ludDY0X2xvMzIiLCJjYW1sX2JhX2N1c3RvbV9uYW1lIiwiTWxfQmlnYXJyYXkiLCJsYXlvdXQiLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfYmFfZGVzZXJpYWxpemUiLCJyZWFkZXIiLCJudW1fZGltcyIsInNpemVfZGltIiwic2l6ZV9kaW1faGkiLCJzaXplX2RpbV9sbyIsInNpeHR5IiwiaW50NjQiLCJjYW1sX2JhX2NvbXBhcmUiLCJjYW1sX2hhc2hfbWl4X2ludDY0IiwiY2FtbF9oYXNoX21peF9mbG9hdCIsInYwIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJ3IiwiY2FtbF9pbnQzMl91bm1hcnNoYWwiLCJjYW1sX25hdGl2ZWludF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X3VubWFyc2hhbCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfaGFzaCIsImNhbWxfY3VzdG9tX29wcyIsImNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSIsImNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbSIsIm51bSIsImN1c3RvbSIsInN3YXAiLCJjYW1sX2NvbXBhcmVfdmFsX3RhZyIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX2J5dGVzX2NvbXBhcmUiLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwiZGl2X2RpZ2l0X25hdCIsIm5hdHEiLCJvZnNxIiwibmF0ciIsIm9mc3IiLCJyZW0iLCJudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQiLCJzaGlmdF9sZWZ0X25hdCIsIk1sTmF0IiwiY3JlYXRlX25hdCIsInNldF90b196ZXJvX25hdCIsImluY3JfbmF0IiwiY2FycnlfaW4iLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJzcmMiLCJkc3QiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfanNfaHRtbF9lbnRpdGllcyIsImVudGl0eSIsInRlbXAiLCJkb2N1bWVudCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQiLCJjYW1sX2JhX3NldF8yIiwibWxfel9vZl9pbnQ2NCIsImk2NCIsIm1sX3pfa3JvbmVja2VyIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJhcmdzMiIsImNhbWxfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImV2YWwiLCJzZXJpYWxpemVfbmF0IiwiY2FtbF9tZW1wcm9mX3NldCIsIl9jb250cm9sIiwibWxfel9uZWciLCJjYW1sX3N5c19leGl0IiwiY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3IiLCJjYW1sX2pzX2Zyb21fYXJyYXkiLCJjYW1sX2JhX3Jlc2hhcGUiLCJ2aW5kIiwibmV3X2RpbSIsImNhbWxfb29fbGFzdF9pZCIsImNhbWxfc2V0X29vX2lkIiwiY2FtbF9ncl9maWxsX3JlY3QiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYSIsInN0cjEiLCJwb3MxIiwiYmEyIiwicG9zMiIsInNsaWNlIiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9nZXRfZ2xvYmFsX2RhdGEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIiwiY2FtbF9iYV91aW50OF9nZXQxNiIsIm1sX3pfb2ZfaW50MzIiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfYmFfZ2V0XzEiLCJjYW1sX2JpZ3N0cmluZ19tZW1jbXAiLCJjYW1sX25ld19zdHJpbmciLCJjYW1sX2VyZl9mbG9hdCIsImExIiwiYTIiLCJhMyIsImE0IiwiYTUiLCJjYW1sX2JhX3VpbnQ4X2dldDMyIiwiY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCIsIm1sX3pfc2hpZnRfcmlnaHQiLCJhbXQiLCJjYW1sX29ial9ibG9jayIsImNhbWxfZ3JfY2xlYXJfZ3JhcGgiLCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIiwiYnMiLCJjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIiwiX3VuaXQiLCJseG9yX2RpZ2l0X25hdCIsImNhbWxfb2JqX2FkZF9vZmZzZXQiLCJjYW1sX2ZpbmFsX3JlbGVhc2UiLCJjYW1sX2pzX3RvX2FycmF5IiwibWxfel9sb2dvciIsImNhbWxfZ3JfcGxvdCIsImNvbG9yIiwiY2FtbF9ieXRlc19zZXQxNiIsImkxNiIsImNhbWxfc3RyaW5nX3NldDE2IiwiY2FtbF9ieXRlc19zZXQ2NCIsImNhbWxfaW50NjRfYnN3YXAiLCJtbF96X2ZpdHNfaW50IiwibWxfel9maXRzX2ludDMyIiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9maWxsX3N0cmluZyIsImNhbWxfZ2NfbWFqb3IiLCJtbF96X3NoaWZ0X2xlZnQiLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsInN0YXRlIiwiYmFja3RyayIsInVuaXhfZ2V0dWlkIiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2J5dGVzX2VxdWFsIiwiY2FtbF9ncl9zaXplX3giLCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIiwib3NfdHlwZSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4iLCJjYW1sX2Nvc2hfZmxvYXQiLCJjYW1sX2VwaGVfa2V5X29mZnNldCIsImNhbWxfd2Vha19jaGVjayIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9ncl90ZXh0X3NpemUiLCJ0eHQiLCJjYW1sX2xleF9ydW5fbWVtIiwibWVtIiwiY3Vycl9wb3MiLCJjYW1sX2xleF9ydW5fdGFnIiwiY2FtbF9uZXdfbGV4X2VuZ2luZSIsImxleF9tZW0iLCJsZXhfYmFzZV9jb2RlIiwibGV4X2JhY2t0cmtfY29kZSIsImxleF9kZWZhdWx0X2NvZGUiLCJsZXhfdHJhbnNfY29kZSIsImxleF9jaGVja19jb2RlIiwibGV4X2NvZGUiLCJwY19vZmYiLCJwc3RhdGUiLCJiYXNlX2NvZGUiLCJjYW1sX2JhX3VpbnQ4X3NldDY0IiwibWxfel9wb3Bjb3VudCIsImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9hY29zaF9mbG9hdCIsImNhbWxfbWxfZmx1c2giLCJvdXRwdXQiLCJjYW1sX21sX3NlZWtfb3V0XzY0IiwiY29tcGFyZV9uYXRfcmVhbCIsImNhbWxfZ2Nfc2V0IiwiY2FtbF9qc19nZXQiLCJjYW1sX21sX3NldF9idWZmZXJlZCIsImNhbWxfZ2NfY29tcGFjdGlvbiIsImNhbWxfd2Vha19nZXQiLCJjYW1sX2VwaGVfZ2V0X2tleSIsImpzb29fel9vZl9qc19zdHJpbmdfYmFzZSIsImJjIiwibWxfel9vZl9zdWJzdHJpbmdfYmFzZSIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJ3aW5fY2xlYW51cCIsImNhbWxfc3lzX2Nsb3NlIiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UiLCJleG4iLCJmb3JjZSIsImNhbWxfc3lzX2lzYXR0eSIsIl9jaGFuIiwiaXNfZGlnaXRfemVybyIsInVuaXhfaW5ldF9hZGRyX29mX3N0cmluZyIsImNhbWxfanNfc2V0IiwibWxfel9nY2RleHRfaW50ZXJuIiwibGFzdHgiLCJsYXN0eSIsIm1sX3pfdGVzdGJpdCIsImNhbWxfYXJyYXlfZ2V0IiwiYXJyYXkiLCJpbmRleCIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCIsIm1sX3pfY29uZ3J1ZW50IiwiY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfbWxfc2Vla19pbl82NCIsImNhbWxfaW50NjRfc2hpZnRfbGVmdCIsImNhbWxfbm90ZXF1YWwiLCJtbF96X2FicyIsImNhbWxfc3lzX2NvbnN0X2ludF9zaXplIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2lzX2pzIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwibWxfel9zcXJ0IiwidW5peF9sb2NhbHRpbWUiLCJkX251bSIsImphbnVhcnlmaXJzdCIsImRveSIsImphbiIsImp1bCIsInN0ZFRpbWV6b25lT2Zmc2V0IiwiY2FtbF9qc19tZXRoX2NhbGwiLCJtbF96X2x1Y251bSIsImNhbWxfd2Vha19jcmVhdGUiLCJjYW1sX2VwaGVfY3JlYXRlIiwiY2FtbF9qc190b19ieXRlX3N0cmluZyIsIm1sX3pfcHJvYmFiX3ByaW1lIiwidW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfdHJhbXBvbGluZSIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJtbF96X3JlbSIsImNhbWxfd2Vha19zZXQiLCJjYW1sX3N5c19yZW1vdmUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2dldDMyIiwiY2FtbF9oeXBvdF9mbG9hdCIsIm1sX3pfZmFjTSIsImN1cnJlbnQiLCJjYW1sX2pzX2NhbGwiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF9lcGhlX3Vuc2V0X2tleSIsIm1sX3pfbXVsX292ZXJmbG93cyIsIm1sX3pfdG9faW50IiwiY2FtbF9oYXNoX21peF9ieXRlc19hcnIiLCJjYW1sX2hhc2hfbWl4X2pzYnl0ZXMiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJtbF96X2ZhYyIsImNhbWxfcmFpc2VfZW5kX29mX2ZpbGUiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwibWxfel9kaXZpc2libGUiLCJjYW1sX29ial9yZWFjaGFibGVfd29yZHMiLCJudGhfZGlnaXRfbmF0IiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiZXhwb25lbnQiLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIiwiY2FtbF9saXN0X3RvX2pzX2FycmF5IiwiY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGUiLCJjYW1sX291dHB1dF92YWwiLCJXcml0ZXIiLCJmbGFncyIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImludGVybl9vYmpfdGFibGUiLCJtZW1vIiwiZXhpc3Rpbmdfb2Zmc2V0IiwiZXh0ZXJuX3JlYyIsIm9wcyIsInN6XzMyXzY0IiwiaGVhZGVyX3BvcyIsIm9sZF9wb3MiLCJ0eXBlX29mX3YiLCJjYW1sX3N0cmluZ19vZl9hcnJheSIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyIsImNhbWxfcmFpc2Vfbm90X2FfZGlyIiwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQiLCJjbWQiLCJ1bml4X2lzYXR0eSIsImZpbGVEZXNjcmlwdG9yIiwidHR5IiwiY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb24iLCJkZXNlcmlhbGl6ZV9uYXQiLCJpbml0aWFsaXplX25hdCIsIm1sX3pfc3VjYyIsImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3ciLCJ1bml4X2xzdGF0IiwidW5peF9sc3RhdF82NCIsImpzX3ByaW50X3N0ZG91dCIsImNhbWxfY29weXNpZ25fZmxvYXQiLCJjYW1sX2dyX3NldF90ZXh0X3NpemUiLCJjYW1sX21kNV9ieXRlcyIsInh4IiwiZmYiLCJnZyIsImhoIiwiaWkiLCJtZDUiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9lcGhlX3NldF9rZXkiLCJjYW1sX2J5dGVzX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXQiLCJjYW1sX2dyX3NpemVfeSIsIm1sX3pfZmFjMiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9pbnQ2NF9hbmQiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJtbF96X2JpbiIsImNvZWZmIiwiY2FtbF9zdGRfb3V0cHV0Iiwic2xlbiIsImpzX3ByaW50X3N0ZGVyciIsImNhbWxfc3lzX29wZW5faW50ZXJuYWwiLCJpZHgiLCJpbmZvIiwiY2FtbF9zeXNfb3BlbiIsIl9wZXJtcyIsIm1sX3pfZ2NkIiwiTWxTdHJpbmdSZWFkZXIiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIl9tYWdpYyIsIl9ibG9ja19sZW4iLCJudW1fb2JqZWN0cyIsIl9zaXplXzMyIiwiX3NpemVfNjQiLCJvYmpfY291bnRlciIsImludGVybl9yZWMiLCJoZWFkZXIiLCJleHBlY3RlZF9zaXplIiwiY2FtbF9zdHJpbmdfb2ZfYnl0ZXMiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMiLCJtbF96X211bCIsIm1sX3pfaGFtZGlzdCIsImNhbWxfc3RyaW5nX2dldCIsInJlX21hdGNoIiwicmVfd29yZF9sZXR0ZXJzIiwib3Bjb2RlcyIsImlzX3dvcmRfbGV0dGVyIiwiaW5fYml0c2V0IiwicmVfbWF0Y2hfaW1wbCIsInBhcnRpYWwiLCJwcm9nIiwiY3Bvb2wiLCJub3JtdGFibGUiLCJudW1ncm91cHMiLCJudW1yZWdpc3RlcnMiLCJzdGFydGNoYXJzIiwicGMiLCJxdWl0IiwiZ3JvdXBzIiwicmVfcmVnaXN0ZXIiLCJiYWNrdHJhY2siLCJpdGVtIiwicHVzaCIsImFjY2VwdCIsInByZWZpeF9tYXRjaCIsIm9wIiwic2FyZyIsInVhcmciLCJncm91cCIsInJlX3NlYXJjaF9iYWNrd2FyZCIsIm1sX3pfbG9nYW5kIiwiY2FtbF9qc19mcm9tX3N0cmluZyIsImNhbWxfYmFfc3ViIiwiY2hhbmdlZF9kaW0iLCJtdWwiLCJuZXdfZGltcyIsIm5ld19kYXRhIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9ieXRlc19zZXQzMiIsImkzMiIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9iYV91aW50OF9zZXQzMiIsIm1sX3pfZGl2X3JlbSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IiwiY2FtbF9zaWduYml0X2Zsb2F0IiwiY2FtbF9ncl9zZXRfbGluZV93aWR0aCIsImNhbWxfZ3Jfc2V0X2ZvbnQiLCJjYW1sX2dyX3NldF9jb2xvciIsImNvbnZlcnQiLCJudW1iZXIiLCJjX3N0ciIsImNhbWxfZ3JfbW92ZXRvIiwiY2FtbF9ncl9yZXNpemVfd2luZG93IiwiY2FtbF9ncl9zdGF0ZV9pbml0IiwiY2FtbF9ncl9jdXJyZW50X3giLCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkiLCJ0YSIsImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSIsImNhbWxfbWxfc2Vla19vdXQiLCJjYW1sX2pzX3R5cGVvZiIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiYnQiLCJjYW1sX2dyX2xpbmV0byIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZSIsImNhbWxfYmFfZGltXzMiLCJjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uIiwiY2FtbF9mb3JtYXRfZXhjZXB0aW9uIiwiYnVja2V0IiwiY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24iLCJoYW5kbGVyIiwiYXRfZXhpdCIsImNhbWxfZXBoZV9kYXRhX29mZnNldCIsImNhbWxfZXBoZV9jaGVja19kYXRhIiwiY2FtbF9ieXRlc19nZXQxNiIsImNhbWxfb2JqX21ha2VfZm9yd2FyZCIsImNhbWxfanNfZnJvbV9ib29sIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lIiwiY2FtbF9leHAyX2Zsb2F0IiwiY2FtbF9ncl9jbG9zZV9ncmFwaCIsImNhbWxfY3JlYXRlX3N0cmluZyIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfbWQ1X2NoYW4iLCJjaGFuX2xlbiIsImNhbWxfb2JqX2R1cCIsImNhbWxfd2Vha19nZXRfY29weSIsImNhbWxfYXRhbmhfZmxvYXQiLCJjYW1sX21sX291dHB1dF9ieXRlcyIsInN0cmluZyIsImpzc3RyaW5nIiwiaWQiLCJjYW1sX21sX291dHB1dCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2FycmF5X2FwcGVuZCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsIiwibWxfel9uZXh0cHJpbWUiLCJjYW1sX2pzX2V4cHIiLCJjYW1sX2ludDY0X211bCIsImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIiwibWxfel9zdWIiLCJtbF96X2ZkaXYiLCJtbF96X3RvX2JpdHMiLCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyIsImNhbWxfZXZlbnRsb2dfcmVzdW1lIiwiY2FtbF9oYXNoX3VuaXZfcGFyYW0iLCJjb3VudCIsImxpbWl0Iiwib2JqIiwiaGFzaF9hY2N1IiwiaGFzaF9hdXgiLCJqc2J5dGVzIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJtbF96X2RpdmV4YWN0IiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyIiwicmVfcmVwbGFjZW1lbnRfdGV4dCIsInJlcGwiLCJvcmlnIiwiY3VyIiwiY2FtbF9wdXJlX2pzX2V4cHIiLCJibGl0X25hdCIsImNhbWxfaW50NjRfdWx0IiwiY2FtbF9pbnQ2NF94b3IiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzIiwiYmExIiwiYnl0ZXMyIiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF90b19qc19zdHJpbmciLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJyZV9zZWFyY2hfZm9yd2FyZCIsImNhbWxfYmxpdF9zdHJpbmdfdG9fYmlnc3RyaW5nIiwiY2FtbF9tYWtlX3ZlY3QiLCJpbml0IiwiY2FtbF9tbF9zZWVrX2luIiwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkiLCJjYW1sX21sX291dHB1dF9jaGFyIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIiwiY2FtbF9vYmpfaXNfYmxvY2siLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkIiwiY2FtbF9qc192YXIiLCJjYW1sX3RydW5jX2Zsb2F0IiwiY2FtbF96YXJpdGhfbWFyc2hhbCIsImJsb2NrIiwiY2FtbF9lcGhlX2JsaXRfZGF0YSIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsImJ1ZmYiLCJub3ciLCJjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlIiwiY2FtbF9iYV9nZXRfMiIsIndpbl9oYW5kbGVfZmQiLCJjYW1sX2JhX3VpbnQ4X3NldDE2Iiwid2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsIiwiY2FtbF9qc19kZWxldGUiLCJjYW1sX2ludF9vZl9zdHJpbmciLCJjYW1sX2xpc3RfbW91bnRfcG9pbnQiLCJwcmV2IiwiY2FtbF9tYXJzaGFsX2NvbnN0YW50cyIsImNhbWxfb2JqX3Jhd19maWVsZCIsImNhbWxfanNfZXF1YWxzIiwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IiwibWxfel9maXRzX25hdGl2ZWludCIsImNhbWxfZ3JfYXJjX2F1eCIsImN0eCIsImN4IiwiY3kiLCJyeSIsInJ4Iiwicm90IiwieFBvcyIsInlQb3MiLCJ4UG9zX3ByZXYiLCJ5UG9zX3ByZXYiLCJzcGFjZSIsImRlbHRhIiwiY2FtbF9ncl9maWxsX2FyYyIsImNhbWxfYmFfc2xpY2UiLCJudW1faW5kcyIsInN1Yl9kaW1zIiwibWxfel9vZl9uYXRpdmVpbnQiLCJjYW1sX21hcnNoYWxfZGF0YV9zaXplIiwiZ2V0MzIiLCJjYW1sX2lucHV0X3ZhbHVlIiwiY2FtbF9iYV9raW5kIiwiY2FtbF9qc19mdW5fY2FsbCIsImNhbWxfZ2NfbWFqb3Jfc2xpY2UiLCJ3b3JrIiwibWxfel9pbnZlcnQiLCJtbF96X3Bvd20iLCJ6MyIsImludiIsIm1sX3pfcG93bV9zZWMiLCJjYW1sX2pzX3B1cmVfZXhwciIsImNvbXBhcmVfZGlnaXRzX25hdCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX2dyX3dhaXRfZXZlbnQiLCJfZXZsIiwiY2FtbF9ncl9zaWdpb19oYW5kbGVyIiwiY2FtbF9oYXNoX21peF9iaWdzdHJpbmciLCJjYW1sX3JlY29yZF9iYWNrdHJhY2UiLCJ1bml4X2dtdGltZSIsImNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSIsImNhbWxfc3lzX2dldF9jb25maWciLCJ1bml4X3RpbWUiLCJjYW1sX21sX291dF9jaGFubmVsc19saXN0IiwiY2FtbF9hc2luaF9mbG9hdCIsIm1sX3pfaGFzaCIsImFjYyIsImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIiLCJhYiIsImNhbWxfbW9kIiwiY2FtbF9iYV9pbml0IiwicmVfc3RyaW5nX21hdGNoIiwiQmlnU3RyaW5nUmVhZGVyIiwiY2FtbF9ncl9kdW1wX2ltYWdlIiwiY2FtbF9iYV9nZXRfZ2VuZXJpYyIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX21vdW50X2F1dG9sb2FkIiwibWxfel9lcXVhbCIsIm1sX3pfZml0c19pbnQ2NCIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEiLCJjYW1sX2JsaXRfYmlnc3RyaW5nX3RvX2JpZ3N0cmluZyIsIm1sX3pfc3FydF9yZW0iLCJkaWZmIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfZGl2IiwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJtbF96X3BlcmZlY3Rfc3F1YXJlIiwiY2FtbF9zeXNfZ2V0X2FyZ3YiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2dyX2NyZWF0ZV9pbWFnZSIsImNhbWxfZXBoZV9nZXRfa2V5X2NvcHkiLCJjYW1sX2xlc3N0aGFuIiwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCIsIm1sX3pfdG9fbmF0aXZlaW50IiwiY2FtbF9yZWdpc3Rlcl9nbG9iYWwiLCJuYW1lX29wdCIsIm11bHRfbmF0IiwibGVuMyIsInNxdWFyZV9uYXQiLCJjYW1sX2pzX2Zyb21fZmxvYXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9nY19zdGF0IiwiY2FtbF9nZXRfbWFqb3JfY3JlZGl0IiwiY2FtbF9zeXNfbW9kaWZ5X2FyZ3YiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfanNfZ2V0X2NvbnNvbGUiLCJjYW1sX3N5c191bnNhZmVfZ2V0ZW52IiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4iLCJyZWZpbGwiLCJmcyIsImNoYW5uZWwiLCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkiLCJjYW1sX3JvdW5kX2Zsb2F0IiwibWxfel9vZl9iaXRzIiwiYmFzZTEiLCJ1bml4X3N0YXQiLCJ1bml4X3N0YXRfNjQiLCJjYW1sX29qc19uZXdfYXJyIiwiRiIsImNvbXBsZW1lbnRfbmF0IiwibWxfel9sb2d4b3IiLCJjYW1sX2pzX3JlZ2V4cHMiLCJjYW1sX2pzX2h0bWxfZXNjYXBlIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2dyX3N0YXRlX3NldCIsImNhbWxfemFyaXRoX3VubWFyc2hhbCIsIm5lZ2F0ZSIsIm1sX3pfdHJhaWxpbmdfemVyb3MiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiYXJpdHkiLCJjYW1sX2djX21pbm9yX3dvcmRzIiwiY2FtbF9iYV9zZXRfMSIsImNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrIiwibGFuZF9kaWdpdF9uYXQiLCJjYW1sX2ludDY0X21vZCIsInVuaXhfcmVhZGxpbmsiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsIndpbl9zdGFydHVwIiwiY2FtbF9iYV9zZXRfMyIsIm1sX3pfamFjb2JpIiwibjEiLCJtbF96X2xlZ2VuZHJlIiwiY2FtbF9qc19pbnN0YW5jZW9mIiwiY2FtbF9nZXRfbWFqb3JfYnVja2V0IiwiY2FtbF9ibGl0X2JpZ3N0cmluZ190b19zdHJpbmciLCJzZXRfZGlnaXRfbmF0X25hdGl2ZSIsIm50aF9kaWdpdF9uYXRfbmF0aXZlIiwiY2FtbF9zdHJpbmdfc2V0NjQiLCJjYW1sX2dyX3N0YXRlX2NyZWF0ZSIsImNhbnZhcyIsImNvbnRleHQiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJjYW1sX2dyX2RyYXdfYXJjIiwiY2FtbF9iYV9tYXBfZmlsZSIsInZmZCIsInNoYXJlZCIsImNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUiLCJhcmduIiwidW5peF9zeW1saW5rIiwic3JjX3Jvb3QiLCJkc3Rfcm9vdCIsImNhbWxfYmFfY3JlYXRlX2Zyb20iLCJkYXRhMSIsImRhdGEyIiwianN0eXAiLCJjYW1sX3RhbmhfZmxvYXQiLCJjYW1sX2dyX2RyYXdfc3RyIiwiZHgiLCJjYW1sX2dyX2RyYXdfc3RyaW5nIiwibWxfel9wcmltb3JpYWwiLCJjYW1sX2dyX2RyYXdfY2hhciIsImNhbWxfdW5tb3VudCIsIm1sX3pfZmliIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyIsImNhbWxfbWxfcG9zX2luXzY0IiwiY2FtbF9ncl9kcmF3X2ltYWdlIiwiaW1hZ2UiLCJjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZSIsIl9jaGFubmVsIiwiY2FtbF9zdHJpbmdfc2V0IiwiY2FtbF9zeXNfcm1kaXIiLCJjYW1sX21sX3Bvc19vdXQiLCJjYW1sX3NwYWNldGltZV9lbmFibGVkIiwiY2FtbF9ieXRlc19ub3RlcXVhbCIsImNhbWxfcnVudGltZV9wYXJhbWV0ZXJzIiwiY2FtbF9qc19vYmplY3QiLCJjYW1sX2JhX2NyZWF0ZSIsImRpbXNfbWwiLCJjYW1sX3dlYWtfYmxpdCIsImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSIsImNhbWxfZm1hX2Zsb2F0IiwiU1BMSVQiLCJNSU5fVkFMVUUiLCJFUFNJTE9OIiwiQyIsIkEiLCJCIiwibXVsdGlwbHkiLCJhdCIsImFoaSIsImFsbyIsImJoaSIsImJsbyIsImFkanVzdCIsInNjYWxlIiwieHMiLCJ5cyIsInpzIiwieHkiLCJ1IiwiY2FtbF9ic3dhcDE2IiwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUiLCJjYW1sX2ZpbmFsX3JlZ2lzdGVyIiwiY2FtbF9ncl9kcmF3X3JlY3QiLCJjYW1sX3N0cmluZ19nZXQxNiIsImNhbWxfZXBoZV91bnNldF9kYXRhIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX2JhX2dldF8zIiwiY2FtbF9lcGhlX2JsaXRfa2V5IiwibWxfel90b19pbnQzMiIsImNhbWxfaW5pdGlhbF90aW1lIiwiY2FtbF9zeXNfdGltZSIsImNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbiIsImNhbWxfY2hlY2tfYm91bmQiLCJ1bml4X2dldHB3dWlkIiwibWxfel9jb21wYXJlIiwiY2FtbF9oYXNoX21peF9zdHJpbmciLCJjYW1sX2hhc2giLCJzZWVkIiwicXVldWUiLCJyZCIsIndyIiwiY2FtbF9vYmpfdGFnIiwiRnVuY3Rpb24iLCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5IiwiY2FtbF9ieXRlc19nZXQzMiIsImNhbWxfZnJleHBfZmxvYXQiLCJtbF96X3ByZWQiLCJjYW1sX3N0cmluZ19nZXQ2NCIsImNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbiIsImNhbWxfbWxfcG9zX291dF82NCIsIm1sX3pfZXh0cmFjdCIsIm1sX3pfcmVtb3ZlIiwibWxfel9vZl9mbG9hdCIsImYxIiwibWxfel9sb2dub3QiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZmxvYXRhcnJheV9ibGl0IiwiY2FtbF9nZXRfbWlub3JfZnJlZSIsImNhbWxfc2V0X3N0YXRpY19lbnYiLCJjYW1sX2JhX2NoYW5nZV9sYXlvdXQiLCJjYW1sX2pzX25ldyIsInVuaXhfbWtkaXIiLCJwZXJtIiwiY2FtbF9ncl9jdXJyZW50X3kiLCJjYW1sX2Zvcm1hdF9pbnQiLCJjYW1sX29ial90cnVuY2F0ZSIsImNhbWxfanNfdG9fc3RyaW5nIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJjYW1sX2FycmF5X2NvbmNhdCIsImNhbWxfZ3Jfb3Blbl9ncmFwaCIsInNwZWNzIiwic3RhdHVzIiwid2luIiwiZG9jIiwidGl0bGUiLCJib2R5IiwiY2FtbF9lcGhlX3NldF9kYXRhIiwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3QiLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfZXZlbnRsb2dfcGF1c2UiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsIm1sX3pfbnVtYml0cyIsInVwcGVyQm91bmQiLCJjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSIsImNhbWxfbG9nMXBfZmxvYXQiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImxvcl9kaWdpdF9uYXQiLCJjYW1sX2dyX2JsaXRfaW1hZ2UiLCJpbTIiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfanNfb25faWUiLCJ1YSIsImNhbWxfaW50NjRfc2hpZnRfcmlnaHQiLCJjYW1sX2JhX2xheW91dCIsImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIiwiY2FtbF9hcnJheV9zZXQiLCJuZXd2YWwiLCJjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbCIsIm1sX3pfcGVyZmVjdF9wb3dlciIsImxvZzJ6IiwienAiLCJzZXRfZGlnaXRfbmF0IiwibWxfel9pbml0IiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfbWxfY2hhbm5lbF9zaXplIiwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QiLCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdCIsInN0eWxlIiwiZXhwX3NpZ24iLCJzaWduX3N0ciIsImNzdCIsInhfc3RyIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IiwibWxfel9mb3JtYXQiLCJjYXMiLCJ3aWR0aCIsImFsdCIsInBhZCIsInByZWZpeCIsInByZSIsIm1sX3pfdG9faW50NjQiLCJtYXNrIiwibWxfel9zaXplIiwiY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIiwiY2FtbF9zeXNfYXJndiIsImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciIsImNhbWxfYmFfZmlsbCIsImNhbWxfbW9kZl9mbG9hdCIsImNhbWxfZ2NfZ2V0IiwiY2FtbF9mbG9hdF9jb21wYXJlIiwibWxfel9zaGlmdF9yaWdodF90cnVuYyIsImNhbWxfc3RyaW5nX3NldDMyIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2dyX21ha2VfaW1hZ2UiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImV2ZW50IiwiZXJyX25vX3ByZWQiLCJlcnJfbm9fc3VjYyIsInplcm8kMiIsIm9uZSQyIiwibWludXNfb25lJDIiLCJtaW5faW50JDIiLCJtYXhfaW50JDIiLCJkdW1teV9wb3MiLCJ6ZXJvX3BvcyIsInN1Yl9mb3JtYXQiLCJmb3JtYXR0aW5nX2xpdCIsImxvY2ZtdCIsIm51bGwkMCIsImN1cnJlbnRfZGlyX25hbWUiLCJwYXJlbnRfZGlyX25hbWUiLCJkaXJfc2VwIiwicXVvdGVxdW90ZSIsIm51bGwkMSIsImN1cnJlbnRfZGlyX25hbWUkMCIsInBhcmVudF9kaXJfbmFtZSQwIiwiZGlyX3NlcCQwIiwibnVsbCQyIiwiY3VycmVudF9kaXJfbmFtZSQxIiwicGFyZW50X2Rpcl9uYW1lJDEiLCJkaXJfc2VwJDEiLCJ6ZXJvJDQiLCJvbmUkNCIsImkiLCJlcmFzZV9yZWwiLCJyZXN0IiwicmVzdCQwIiwicmVzdCQxIiwicmVzdCQyIiwicmVzdCQzIiwicmVzdCQ0IiwicmVzdCQ1IiwicmVzdCQ2IiwicmVzdCQ3IiwidHkiLCJyZXN0JDgiLCJ0eTEiLCJyZXN0JDkiLCJyZXN0JDEwIiwicmVzdCQxMSIsInJlc3QkMTIiLCJyZXN0JDEzIiwiY29uY2F0X2ZtdHR5IiwiZm10dHkxIiwiZm10dHkyIiwidHkyIiwiY29uY2F0X2ZtdCIsImZtdDEiLCJmbXQyIiwicGFkIiwicGFkJDAiLCJwcmVjIiwicGFkJDEiLCJpY29udiIsInByZWMkMCIsInBhZCQyIiwiaWNvbnYkMCIsInByZWMkMSIsInBhZCQzIiwiaWNvbnYkMSIsInByZWMkMiIsInBhZCQ0IiwiaWNvbnYkMiIsInByZWMkMyIsInBhZCQ1IiwiZmNvbnYiLCJwYWQkNiIsInN0ciIsImNociIsImZtdHR5IiwicGFkJDciLCJmbXR0eSQwIiwicGFkJDgiLCJyZXN0JDE0IiwicmVzdCQxNSIsInJlc3QkMTYiLCJmbXRpbmdfbGl0IiwicmVzdCQxNyIsImZtdGluZ19nZW4iLCJyZXN0JDE4IiwicmVzdCQxOSIsImNoYXJfc2V0Iiwid2lkdGhfb3B0IiwicmVzdCQyMCIsImNvdW50ZXIiLCJyZXN0JDIxIiwicmVzdCQyMiIsImlnbiIsInJlc3QkMjMiLCJmIiwiYXJpdHkiLCJ2IiwiciIsImN1ciIsInNlZW4iLCJuIiwiZmFpbHdpdGgiLCJzIiwiaW52YWxpZF9hcmciLCJtaW4iLCJ4IiwieSIsIm1heCIsImFicyIsImxub3QiLCJpbmZpbml0eSIsIm5lZ19pbmZpbml0eSIsIm5hbiIsIm1heF9mbG9hdCIsIm1pbl9mbG9hdCIsImVwc2lsb24iLCJtYXhfaW50IiwibWluX2ludCIsInMxIiwiczIiLCJsMSIsImwyIiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImIiLCJib29sX29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInZhbGlkX2Zsb2F0X2xleGVtIiwibCIsImkkMCIsInRvX3N0cmluZyIsIm9mX3N0cmluZ19vcHQiLCJhcHBlbmQiLCJ0bCIsImhkIiwic3RkaW4iLCJzdGRvdXQiLCJzdGRlcnIiLCJvcGVuX2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX3RleHQiLCJvcGVuX2JpbiIsImZsdXNoX2FsbCIsIml0ZXIiLCJhIiwib3V0cHV0X2J5dGVzIiwib2MiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0Iiwib2ZzIiwibGVuIiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF92YWx1ZSIsImNoYW4iLCJjbG9zZSIsImNsb3NlX25vZXJyIiwib3Blbl9nZW4kMCIsIm9wZW5fdGV4dCQwIiwib3Blbl9iaW4kMCIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsImFjY3UiLCJiZWciLCJhY2N1JDAiLCJyZXMiLCJjbG9zZV9ub2VyciQwIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludCIsInJlYWRfaW50X29wdCIsInJlYWRfZmxvYXQiLCJyZWFkX2Zsb2F0X29wdCIsInN0cmluZ19vZl9mb3JtYXQiLCJzeW1ib2wiLCJzdHIyIiwic3RyMSIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJuZXdfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fYXRfZXhpdCIsImV4aXQiLCJyZXRjb2RlIiwic2V0X2JpbmFyeV9tb2RlIiwiY2xvc2UkMCIsImluX2NoYW5uZWxfbGVuZ3RoIiwicG9zX2luIiwic2Vla19pbiIsImlucHV0X3ZhbHVlIiwiaW5wdXRfYmluYXJ5X2ludCIsImlucHV0X2J5dGUiLCJpbnB1dF9jaGFyIiwic2V0X2JpbmFyeV9tb2RlJDAiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJwb3Nfb3V0Iiwic2Vla19vdXQiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2NoYXIiLCJmbHVzaCIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAiLCJ2JDAiLCJmb2xkIiwiZXF1YWwiLCJlMSIsImUyIiwidjIiLCJ2MiQwIiwiY29tcGFyZSIsIm1hdGNoJDEiLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3IiLCJsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl8iLCJsYXp5X3RhZyIsImNsb3N1cmVfdGFnIiwib2JqZWN0X3RhZyIsImluZml4X3RhZyIsImZvcndhcmRfdGFnIiwibm9fc2Nhbl90YWciLCJhYnN0cmFjdF90YWciLCJzdHJpbmdfdGFnIiwiZG91YmxlX3RhZyIsImRvdWJsZV9hcnJheV90YWciLCJjdXN0b21fdGFnIiwiaW50X3RhZyIsIm91dF9vZl9oZWFwX3RhZyIsInVuYWxpZ25lZF90YWciLCJpbmZvIiwib2JqIiwic3RhcnRfZW52Iiwib2ZfdmFsIiwic2xvdCIsImlkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZXh0ZW5zaW9uX25hbWUiLCJleHRlbnNpb25faWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsInJhaXNlX3VuZGVmaW5lZCIsImZvcmNlX2xhenlfYmxvY2siLCJibGsiLCJjbG9zdXJlIiwicmVzdWx0IiwiZm9yY2VfdmFsX2xhenlfYmxvY2siLCJmb3JjZSIsImx6diIsInQiLCJmb3JjZV92YWwiLCJ0b19sYXp5IiwiZnJvbV92YWwiLCJpc192YWwiLCJtYXAkMCIsIm1hcF92YWwiLCJlbXB0eSIsInJldHVybiQwIiwiY29ucyIsIm5leHQiLCJhcHBlbmQkMCIsInNlcTEiLCJzZXEyIiwibWFwJDEiLCJzZXEiLCJmaWx0ZXJfbWFwIiwic2VxJDAiLCJmaWx0ZXIiLCJjb25jYXQiLCJmbGF0X21hcCIsImZvbGRfbGVmdCIsImFjYyIsImFjYyQwIiwiYWNjJDEiLCJ1bmZvbGQiLCJ1IiwidSQwIiwiaXNfZW1wdHkiLCJ4cyIsInVuY29ucyIsInhzJDAiLCJsZW5ndGgkMCIsInhzJDEiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJhY2N1JDEiLCJmb3JfYWxsIiwicCIsImV4aXN0cyIsImZpbmQiLCJmaW5kX21hcCIsIml0ZXIyIiwieXMiLCJ5cyQwIiwieXMkMSIsImZvbGRfbGVmdDIiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJlcXVhbCQwIiwiZXEiLCJjb21wYXJlJDAiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwiZmFpbHVyZSIsIm1lbW9pemUiLCJvbmNlIiwiYWN0aW9uIiwiemlwIiwibWFwMiIsImludGVybGVhdmUiLCJzb3J0ZWRfbWVyZ2UxIiwic29ydGVkX21lcmdlIiwibWFwX2ZzdCIsInh5cyIsInh5cyQwIiwibWFwX3NuZCIsInVuemlwIiwiZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIiwiZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCIsInoiLCJwYXJ0aXRpb25fbWFwIiwicGFydGl0aW9uIiwicGVlbCIsInhzcyIsInRyYW5zcG9zZSIsInRhaWxzIiwiaGVhZHMiLCJyZW1haW5kZXJzIiwieHNzJDAiLCJ0YWlscyQwIiwiaGVhZHMkMCIsIm1hcF9wcm9kdWN0IiwicHJvZHVjdCIsIm9mX2Rpc3BlbnNlciIsIml0IiwidG9fZGlzcGVuc2VyIiwiaW50cyIsIm5vbmUiLCJzb21lIiwidmFsdWUiLCJkZWZhdWx0JDAiLCJnZXQkMCIsImJpbmQiLCJqb2luIiwibWFwJDIiLCJmb2xkJDAiLCJpdGVyJDAiLCJpc19ub25lIiwiaXNfc29tZSIsImVxdWFsJDEiLCJvMCIsInYxIiwidjAiLCJjb21wYXJlJDEiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsInZhbHVlJDAiLCJnZXRfb2siLCJnZXRfZXJyb3IiLCJiaW5kJDAiLCJqb2luJDAiLCJtYXAkMyIsIm1hcF9lcnJvciIsImZvbGQkMSIsIml0ZXIkMSIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwiZXF1YWwkMiIsInIwIiwicjEiLCJjb21wYXJlJDIiLCJ0b19vcHRpb24iLCJ0b19saXN0JDAiLCJ0b19zZXEkMCIsImVxdWFsJDMiLCJjb21wYXJlJDMiLCJ0b19mbG9hdCIsInRvX3N0cmluZyQwIiwiZXNjYXBlZCIsImxvd2VyY2FzZSIsInVwcGVyY2FzZSIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImNvbXBhcmUkNCIsImMxIiwiYzIiLCJlcXVhbCQ0IiwibWluJDAiLCJtYXgkMCIsImxvX2JvdW5kIiwiaGlfYm91bmQiLCJib20iLCJyZXAiLCJzdWNjIiwicHJlZCIsImlzX3ZhbGlkIiwib2ZfaW50IiwiaXNfY2hhciIsIm9mX2NoYXIiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJlcXVhbCQ1IiwiY29tcGFyZSQ1IiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsImRlY19pbnZhbGlkIiwidXRmXzhfYnl0ZV9sZW5ndGgiLCJ1dGZfMTZfYnl0ZV9sZW5ndGgiLCJsZW5ndGgkMSIsInBhcmFtJDAiLCJjb25zJDAiLCJudGgiLCJsJDAiLCJsJDEiLCJudGhfb3B0IiwicmV2X2FwcGVuZCIsImwxJDAiLCJsMiQwIiwibDEkMSIsImwyJDEiLCJyZXYiLCJpbml0X2F1eCQwIiwicGFyYW0iLCJhMiIsImExIiwicGFpciIsIngkMCIsInJ5IiwicngiLCJ0MiIsImgyIiwidDEiLCJoMSIsInJldl9zb3J0IiwieDIiLCJ4MSIsInRsJDEiLCJ4MyIsIngyJDAiLCJ4MSQwIiwibjEiLCJuMiIsInNvcnQiLCJ0bCQwIiwiYyQwIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiYWNjdSQyIiwiYXV4IiwidGFpbCIsImRpcmVjdCIsImRlcHRoIiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsImFicyQwIiwibWF4X2ludCQwIiwibWluX2ludCQwIiwibG9nbm90IiwiZXF1YWwkNyIsImNvbXBhcmUkNyIsIm1pbiQxIiwibWF4JDEiLCJ0b19zdHJpbmckMSIsInN5bWJvbCQwIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwib2ZzMSIsIm9mczIiLCJzZXAiLCJzZXBsZW4iLCJkc3QiLCJpc19zcGFjZSIsImFwcGx5MSIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaSQxIiwiaW5kZXhfcmVjX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXhfcmVjX29wdCIsIm5ld19sZW4iLCJuZXdfYnVmIiwiZ2V0JDEiLCJzZXQkMCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImkkNCIsImIxJDEiLCJpJDUiLCJiMiQxIiwiaSQ2IiwiaSQxMCIsImIxJDMiLCJpJDExIiwiYjIkMyIsImkkMTIiLCJiMyQxIiwiaSQ3IiwiYjEkMiIsImkkOCIsImIyJDIiLCJpJDkiLCJiMyQwIiwiaSQxMyIsImIxJDQiLCJpJDE0IiwiYjIkNCIsImkkMiIsImIxJDAiLCJpJDMiLCJiMiQwIiwiaSQxNSIsImIxJDUiLCJzZXQiLCJsYXN0IiwibGFzdCQwIiwibGFzdCQxIiwibGFzdCQzIiwibGFzdCQyIiwibGFzdCQ0IiwibGFzdCQ1IiwiaGkiLCJsbyIsImlzX3NwYWNlJDAiLCJpbmRleF9yZWMkMCIsImluZGV4X3JlY19vcHQkMCIsInJpbmRleF9yZWMkMCIsInJpbmRleF9yZWNfb3B0JDAiLCJnIiwiZXF1YWwkMTAiLCJjb21wYXJlJDEwIiwidG9fc3RyaW5nJDIiLCJ0b19idWZmZXIiLCJidWZmIiwiZmxhZ3MiLCJoZWFkZXJfc2l6ZSIsImRhdGFfc2l6ZSIsInRvdGFsX3NpemUiLCJmcm9tX2J5dGVzIiwiZnJvbV9zdHJpbmciLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJwYXJhbSQxIiwiaGQkMCIsImlucHV0X2FycmF5IiwiZWx0Iiwib3V0cHV0X2FycmF5IiwiZWx0JDAiLCJhY2MkMiIsImEwIiwiYmkiLCJhaSIsIm5hIiwibmIiLCJtYXhzb24iLCJpMzEiLCJ0cmlja2xlZG93biIsInRyaWNrbGUiLCJidWJibGVkb3duIiwiYnViYmxlIiwiZSQwIiwiZmF0aGVyIiwibWVyZ2UiLCJzcmMxb2ZzIiwic3JjMWxlbiIsInNyYzIiLCJzcmMyb2ZzIiwic3JjMmxlbiIsImRzdG9mcyIsInNyYzFyIiwic3JjMnIiLCJzMiQxIiwiczEkMSIsImkxIiwiaTIiLCJpMiQwIiwiZCQwIiwiczIkMCIsImkxJDAiLCJkJDEiLCJzMSQwIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsInplcm8kMCIsIm9uZSQwIiwibWludXNfb25lJDAiLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsInBpIiwiaXNfaW50ZWdlciIsInN1Y2MkMCIsInByZWQkMCIsImVxdWFsJDExIiwibWluJDIiLCJtYXgkMiIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwiaGFzaCQwIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsIm1ha2UkMiIsImluaXQkNCIsImFwcGVuZCQyIiwiY29uY2F0JDMiLCJobGVuIiwic3ViJDIiLCJjb3B5JDIiLCJmaWxsJDEiLCJibGl0JDIiLCJzcmMiLCJzb2ZzIiwiZG9mcyIsInRvX2xpc3QkMiIsIm9mX2xpc3QkMCIsImgiLCJpdGVyJDYiLCJpdGVyMiQyIiwibWFwJDgiLCJtYXAyJDIiLCJpdGVyaSQ0IiwibWFwaSQ0IiwiZm9sZF9sZWZ0JDQiLCJmb2xkX3JpZ2h0JDMiLCJleGlzdHMkNCIsImZvcl9hbGwkNCIsIm1lbSQxIiwibWVtX2llZWUiLCJzb3J0JDAiLCJzdGFibGVfc29ydCIsInRvX3NlcSQ1IiwidG9fc2VxaSQyIiwib2Zfc2VxJDMiLCJtYXBfdG9fYXJyYXkiLCJtYXBfZnJvbV9hcnJheSIsInplcm8kMSIsIm9uZSQxIiwibWludXNfb25lJDEiLCJzdWNjJDEiLCJwcmVkJDEiLCJhYnMkMSIsIm1pbl9pbnQkMSIsIm1heF9pbnQkMSIsImxvZ25vdCQwIiwidW5zaWduZWRfdG9faW50IiwidG9fc3RyaW5nJDMiLCJvZl9zdHJpbmdfb3B0JDAiLCJjb21wYXJlJDExIiwiZXF1YWwkMTIiLCJ1bnNpZ25lZF9jb21wYXJlIiwibSIsIm1pbiQzIiwibWF4JDMiLCJ1bnNpZ25lZF9kaXYiLCJxIiwidW5zaWduZWRfcmVtIiwic3VjYyQyIiwicHJlZCQyIiwiYWJzJDIiLCJsb2dub3QkMSIsIm1heF9pbnQkMyIsInVuc2lnbmVkX3RvX2ludCQwIiwidG9fc3RyaW5nJDQiLCJvZl9zdHJpbmdfb3B0JDEiLCJjb21wYXJlJDEyIiwiZXF1YWwkMTMiLCJ1bnNpZ25lZF9jb21wYXJlJDAiLCJtaW4kNCIsIm1heCQ0IiwidW5zaWduZWRfZGl2JDAiLCJ1bnNpZ25lZF9yZW0kMCIsInplcm8kMyIsIm9uZSQzIiwibWludXNfb25lJDMiLCJzdWNjJDMiLCJwcmVkJDMiLCJhYnMkMyIsIm1pbl9pbnQkMyIsIm1heF9pbnQkNCIsImxvZ25vdCQyIiwidW5zaWduZWRfdG9faW50JDEiLCJ0b19zdHJpbmckNSIsIm9mX3N0cmluZ19vcHQkMiIsImNvbXBhcmUkMTMiLCJlcXVhbCQxNCIsInVuc2lnbmVkX2NvbXBhcmUkMSIsIm1pbiQ1IiwibWF4JDUiLCJ1bnNpZ25lZF9kaXYkMSIsInVuc2lnbmVkX3JlbSQxIiwiZW5naW5lIiwidGJsIiwic3RhdGUiLCJuZXdfZW5naW5lIiwiZnJvbV9mdW5jdGlvbiIsIm9wdCIsInN0aCIsIndpdGhfcG9zaXRpb25zIiwiYXV4X2J1ZmZlciIsImxleGJ1ZiIsInJlYWQiLCJuZXdsZW4iLCJuZXdidWYiLCJmcm9tX2NoYW5uZWwiLCJmcm9tX3N0cmluZyQwIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJhcmckMSIsImNtZCQwIiwiZXhuIiwiY3Vycl9jaGFyIiwidG9rIiwicGVla192YWwiLCJzeW1ib2xfc3RhcnRfcG9zIiwic3QiLCJlbiIsInN5bWJvbF9lbmRfcG9zIiwicmhzX3N0YXJ0X3BvcyIsInJoc19lbmRfcG9zIiwic3ltYm9sX3N0YXJ0Iiwic3ltYm9sX2VuZCIsInJoc19zdGFydCIsInJoc19lbmQiLCJpc19jdXJyZW50X2xvb2thaGVhZCIsInBhcnNlX2Vycm9yIiwiaGVpZ2h0IiwiaGwiLCJoJDAiLCJociIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiIsImxybCIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiIsInJsbCIsImFkZCIsInNpbmdsZXRvbiIsImFkZF9taW5fZWxlbWVudCIsImFkZF9tYXhfZWxlbWVudCIsInJoIiwibGgiLCJtaW5fZWx0IiwibWluX2VsdF9vcHQiLCJtYXhfZWx0IiwibWF4X2VsdF9vcHQiLCJyZW1vdmVfbWluX2VsdCIsInIkMCIsInNwbGl0IiwicHJlcyIsInByZXMkMCIsIm1lbSIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJzJDEiLCJlJDEiLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJmaW5kX2ZpcnN0X29wdCIsImZpbmRfbGFzdCIsImZpbmRfbGFzdF9vcHQiLCJmaW5kX29wdCIsInRyeV9qb2luIiwidiQxIiwib2ZfbGlzdCIsInN1YiIsImwkMyIsIngwIiwibCQ0IiwieDAkMCIsImwkNSIsIngwJDEiLCJubCIsIm1pZCIsImwkMiIsIng0IiwiYWRkX3NlcSIsIm9mX3NlcSIsInNlcV9vZl9lbnVtIiwic25vY19lbnVtIiwicmV2X3NlcV9vZl9lbnVtIiwidG9fcmV2X3NlcSIsInRvX3NlcV9mcm9tIiwibG93IiwibGQiLCJscmQiLCJyZCIsInJsZCIsImRhdGEiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtJDEiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjcmVhdGUkMCIsImNsZWFyIiwiY29weSQzIiwicHVzaCIsInBvcCIsInBvcF9vcHQiLCJ0b3AiLCJ0b3Bfb3B0IiwiaXNfZW1wdHkkMCIsImxlbmd0aCQyIiwiaXRlciQ3IiwiZm9sZCQyIiwidG9fc2VxJDYiLCJvZl9zZXEkNCIsImNyZWF0ZSQxIiwiY2xlYXIkMCIsImNlbGwiLCJwZWVrIiwiY29udGVudCIsInBlZWtfb3B0IiwidGFrZSQwIiwidGFrZV9vcHQiLCJjb3B5JDQiLCJxX3JlcyIsInByZXYiLCJpc19lbXB0eSQxIiwibGVuZ3RoJDMiLCJpdGVyJDgiLCJmb2xkJDMiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJ0b19zZXEkNyIsImFkZF9zZXEkMCIsIm9mX3NlcSQ1IiwiY291bnQiLCJmaWxsX2J1ZmYiLCJnZXRfZGF0YSIsImQxMSIsImEkMCIsImEkMSIsInBlZWtfZGF0YSIsInBlZWskMCIsImp1bmtfZGF0YSIsImp1bmsiLCJuZ2V0X2RhdGEiLCJhbCIsIm5wZWVrIiwiZW1wdHkkMiIsIml0ZXIkOSIsInN0cm0iLCJmcm9tIiwib2ZfbGlzdCQxIiwib2Zfc3RyaW5nIiwib2ZfYnl0ZXMkMCIsIm9mX2NoYW5uZWwiLCJpYXBwIiwiaWNvbnMiLCJpc2luZyIsImxhcHAiLCJsY29ucyIsImxzaW5nIiwic2VtcHR5Iiwic2xhenkiLCJkdW1wX2RhdGEiLCJkdW1wIiwiY3JlYXRlJDIiLCJjb250ZW50cyIsInRvX2J5dGVzJDAiLCJzdWIkMyIsImJsaXQkMyIsIm50aCQwIiwibGVuZ3RoJDQiLCJjbGVhciQxIiwicmVzZXQiLCJyZXNpemUiLCJtb3JlIiwib2xkX3BvcyIsIm9sZF9sZW4iLCJuZXdfYnVmZmVyIiwiYWRkX2NoYXIiLCJwb3MiLCJ1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXgiLCJ1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4IiwiYWRkX3V0Zl84X3VjaGFyIiwiYWRkX3V0Zl8xNmJlX3VjaGFyIiwiYWRkX3V0Zl8xNmxlX3VjaGFyIiwiYWRkX3N1YnN0cmluZyIsIm9mZnNldCIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJjdXJyZW50Iiwib3BlbmluZyIsImxpbSQwIiwic3RvcCIsImskMiIsImskMCIsImskMSIsIm5leHRfaSIsImlkZW50IiwidHJ1bmNhdGUiLCJ0b19zZXEkOCIsInRvX3NlcWkkMyIsImFkZF9zZXEkMSIsIm9mX3NlcSQ2IiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJjcmVhdGVfY2hhcl9zZXQiLCJhZGRfaW5fY2hhcl9zZXQiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImNoYXJfc2V0JDAiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiZm10IiwicGFkX29wdCQwIiwicGFkX29wdCQxIiwicGFkX29wdCQyIiwicGFkX29wdCQzIiwicGFkX29wdCQ0IiwicHJlY19vcHQiLCJwYWRfb3B0JDUiLCJuZGVjIiwicGFkX29wdCQ2IiwicGFkX29wdCQ3IiwicGFkX29wdCQ4IiwiZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24iLCJidWZmZXJfY3JlYXRlIiwiaW5pdF9zaXplIiwiYnVmZmVyX2NoZWNrX3NpemUiLCJvdmVyaGVhZCIsIm1pbl9sZW4iLCJuZXdfc3RyIiwiYnVmZmVyX2FkZF9jaGFyIiwiYnVmZmVyX2FkZF9zdHJpbmciLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJjRiIsImJwcmludF9wYWR0eSIsInBhZHR5IiwiYnByaW50X2lnbm9yZWRfZmxhZyIsImlnbl9mbGFnIiwiYnByaW50X3BhZF9vcHQiLCJicHJpbnRfcGFkZGluZyIsInBhZHR5JDAiLCJicHJpbnRfcHJlY2lzaW9uIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0Iiwic3RyJDAiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiYnByaW50X2ZtdHR5Iiwic3ViX2ZtdHR5Iiwic3ViX2ZtdHR5JDAiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5Iiwic3RyaW5nX29mX2ZtdCIsImZtdGl0ZXIiLCJmbXQkMCIsImlnbl9mbGFnJDAiLCJjaHIkMCIsInN0ciQxIiwiaXNfYWxvbmUkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDAiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJ0cmFucyIsInJlc3QyIiwicmVzdDIkMCIsInJlc3QyJDEiLCJyZXN0MiQyIiwicmVzdDIkMyIsInJlc3QyJDQiLCJyZXN0MiQ1IiwicmVzdDIkNiIsInJlc3QyJDciLCJ0eTIkMCIsInJlc3QyJDgiLCJ0eTIyIiwidHkyMSIsImZtdHR5X3JlbF9kZXQiLCJmNCIsImYyIiwicmVzdDIkOSIsInJlc3QyJDEwIiwicmVzdDIkMTEiLCJyZXN0MiQxMiIsInJlc3QyJDEzIiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJqZCIsImRqIiwiZ2EiLCJhZyIsImRlJDkiLCJlZCQ5IiwiYWYkOSIsImZhJDkiLCJkZSQxMCIsImVkJDEwIiwiYWYkMTAiLCJmYSQxMCIsImRlJDExIiwiZWQkMTEiLCJhZiQxMSIsImZhJDExIiwiZGUkMTIiLCJlZCQxMiIsImFmJDEyIiwiZmEkMTIiLCJkZSQxMyIsImVkJDEzIiwiYWYkMTMiLCJmYSQxMyIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJmbXR0eV9vZl9jdXN0b20iLCJhcml0eSQwIiwiZm10dHlfb2ZfZm10IiwidHlfcmVzdCIsInByZWNfdHkiLCJ0eV9yZXN0JDAiLCJwcmVjX3R5JDAiLCJ0eV9yZXN0JDEiLCJwcmVjX3R5JDEiLCJ0eV9yZXN0JDIiLCJwcmVjX3R5JDIiLCJ0eV9yZXN0JDMiLCJwcmVjX3R5JDMiLCJmbXR0eSQxIiwiZm10dHkkMiIsImZtdHR5JDMiLCJ0eSQwIiwiZm10dHkkNCIsImZtdHR5JDUiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpIiwidHlwZV9mb3JtYXRfZ2VuIiwiZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0Iiwic3ViX2ZtdHR5X3Jlc3QkMCIsImZtdHR5X3Jlc3QkMCIsInN1Yl9mbXR0eV9yZXN0JDEiLCJzdWJfZm10dHlfcmVzdCQyIiwiZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMyIsImZtdCQyIiwic3ViX2ZtdHR5X3Jlc3QkNCIsImZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDUiLCJmbXQkMyIsInN1Yl9mbXR0eV9yZXN0JDYiLCJmbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ3IiwiZm10JDQiLCJzdWJfZm10dHlfcmVzdCQ4IiwiZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkOSIsImZtdCQ1Iiwic3ViX2ZtdHR5X3Jlc3QkMTAiLCJmbXR0eV9yZXN0JDUiLCJzdWJfZm10dHlfcmVzdCQxMSIsImZtdCQ2Iiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJmbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQxMyIsImZtdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkMTQiLCJmbXR0eV9yZXN0JDciLCJzdWIyX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTUiLCJzdWIyX2ZtdHR5JDAiLCJmbXQkOCIsInN1Yl9mbXR0eV9yZXN0JDE2IiwiZm10dHlfcmVzdCQ4Iiwic3ViMl9mbXR0eSQxIiwic3ViMV9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE3Iiwic3ViMl9mbXR0eSQyIiwic3ViMV9mbXR0eSQwIiwiZm10JDkiLCJzdWJfZm10dHlfcmVzdCQxOCIsImZtdHR5X3Jlc3QkOSIsInN1Yl9mbXR0eV9yZXN0JDE5IiwiZm10JDEwIiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJmbXR0eV9yZXN0JDEwIiwic3ViX2ZtdHR5X3Jlc3QkMjEiLCJmbXQkMTEiLCJzdWJfZm10dHlfcmVzdCQyMiIsImZtdHR5X3Jlc3QkMTEiLCJzdWJfZm10dHlfcmVzdCQyMyIsImZtdCQxMiIsInN1Yl9mbXR0eV9yZXN0JDI0IiwiZm10dHlfcmVzdCQxMiIsInN1Yl9mbXR0eV9yZXN0JDI1IiwiZm10JDEzIiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJmbXRfcmVzdCIsImZtdF9yZXN0JDAiLCJmbXRfcmVzdCQxIiwiZm10X3Jlc3QkMiIsImZtdF9yZXN0JDMiLCJmbXRfcmVzdCQ0IiwiZm10X3Jlc3QkNSIsInByZWMkNCIsImZtdHR5JDYiLCJmbXRfcmVzdCQ2IiwicHJlYyQ1IiwicHJlYyQ2IiwiZm10dHkkNyIsImZtdF9yZXN0JDciLCJwcmVjJDciLCJwcmVjJDgiLCJmbXR0eSQ4IiwiZm10X3Jlc3QkOCIsImZtdHR5JDkiLCJmbXRfcmVzdCQ5IiwiZm10dHkkMTAiLCJmbXRfcmVzdCQxMCIsImZtdHR5JDExIiwiZm10X3Jlc3QkMTEiLCJmbXR0eSQxMiIsImZtdF9yZXN0JDEyIiwiZm10dHkkMTMiLCJzdWJfZm10dHkxIiwiZm10X3Jlc3QkMTMiLCJzdWJfZm10dHkkMSIsImZtdHR5JDE0IiwiZm10JDE0IiwiZm10X3Jlc3QkMTQiLCJmbXR0eSQxNSIsImZtdCQxNSIsImZtdF9yZXN0JDE1IiwiZm10dHkkMTYiLCJmbXQkMTYiLCJmbXRfcmVzdCQxNiIsImZtdHR5JDE3IiwiZm10JDE3IiwiZm10X3Jlc3QkMTciLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5MyIsImZtdDMiLCJmbXQxJDAiLCJmbXR0eTIkMCIsImZtdDIkMCIsImZtdHR5MyQwIiwiZm10MyQwIiwiZm10dHlfcmVzdCQxMyIsImZtdF9yZXN0JDE4IiwiZm10dHkkMTgiLCJmbXQkMTgiLCJmbXR0eV9yZXN0JDE0IiwiZm10X3Jlc3QkMTkiLCJmbXR0eSQxOSIsImZtdCQxOSIsImZtdHR5X3Jlc3QkMTUiLCJmbXRfcmVzdCQyMCIsImZtdHR5JDIwIiwiZm10JDIwIiwidHlwZV9pZ25vcmVkX3BhcmFtX29uZSIsImZtdHR5X3Jlc3QkMTYiLCJmbXR0eSQyMSIsImZtdCQyMSIsInN1Yl9mbXR0eSQyIiwic3ViX2ZtdHR5JDMiLCJmbXR0eSQyMiIsImZtdCQyMiIsInN1Yl9mbXR0eSQ0IiwidHlwZV9mb3JtYXQiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImskMyIsImthY2MiLCJrJDQiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaWdub3JlZF9wYXJhbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJrb2MiLCJyZXN0JDI0IiwicmVzdCQyNSIsImZuX29mX2N1c3RvbV9hcml0eSQwIiwiZm5fb2ZfY3VzdG9tX2FyaXR5Iiwib3V0cHV0X2FjYyIsInAkMiIsInAkMyIsInAkNCIsImJ1ZnB1dF9hY2MiLCJzdHJwdXRfYWNjIiwiZmFpbHdpdGhfbWVzc2FnZSIsIm9wZW5fYm94X29mX3N0cmluZyIsImludmFsaWRfYm94IiwicGFyc2Vfc3BhY2VzIiwicGFyc2VfbHdvcmQiLCJwYXJzZV9pbnQiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsInVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCIsImVuZF9pbmQiLCJpbnZhbGlkX2Zvcm1hdF93aXRob3V0IiwiZXhwZWN0ZWRfY2hhcmFjdGVyIiwiZXhwZWN0ZWQiLCJhZGRfbGl0ZXJhbCIsImxpdF9zdGFydCIsInNpemUiLCJwYXJzZV9wb3NpdGl2ZSIsInN0cl9pbmQkMCIsInN0cl9pbmQkMSIsInBhcnNlX2ludGVnZXIiLCJuZXh0X2luZCIsImluY29tcGF0aWJsZV9mbGFnIiwicGN0X2luZCIsIm9wdGlvbiIsInN1YmZtdCIsImNvbXB1dGVfaW50X2NvbnYiLCJwbHVzIiwic3BhY2UiLCJwbHVzJDAiLCJzcGFjZSQwIiwic2VhcmNoX3N1YmZvcm1hdF9lbmQiLCJzdWJfZW5kIiwic3RyX2luZCQyIiwic3ViX2VuZCQwIiwic3RyX2luZCQzIiwic3ViX2VuZCQxIiwic3RyX2luZCQ0Iiwic3RyX2luZCQ1Iiwic3ViX2VuZCQyIiwic3RyX2luZCQ2Iiwic3RyX2luZCQ3IiwicGFyc2VfbWFnaWNfc2l6ZSIsInN0cl9pbmRfMSIsInN0cl9pbmRfMiIsInN0cl9pbmRfMyIsInBhcnNlIiwicGFyc2VfZ29vZF9icmVhayIsImZvcm1hdHRpbmdfbGl0JDAiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJwYXJzZV90YWciLCJpc19vcGVuX3RhZyIsImluZCIsInN1Yl9zdHIiLCJzdWJfZm10Iiwic3ViX2Zvcm1hdCQwIiwiZm9ybWF0dGluZyQwIiwiZm9ybWF0dGluZyIsInBhcnNlX2ZsYWdzIiwibWludXMiLCJzZXRfZmxhZyIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfbGl0ZXJhbCIsInBhcnNlX2FmdGVyX3ByZWNpc2lvbiIsInN5bWIkMCIsIm1pbnVzJDAiLCJwYXJzZV9jb252ZXJzaW9uIiwicGFyc2VfY29udiIsInBhZHByZWMiLCJwbHVzX3VzZWQiLCJoYXNoX3VzZWQiLCJzcGFjZV91c2VkIiwiaWduX3VzZWQiLCJwYWRfdXNlZCIsInByZWNfdXNlZCIsImdldF9wbHVzIiwiZ2V0X2hhc2giLCJnZXRfc3BhY2UiLCJnZXRfaWduIiwiZ2V0X3BhZCIsImdldF9wcmVjIiwiZ2V0X3BhZHByZWMiLCJnZXRfaW50X3BhZCIsImNoZWNrX25vXzAiLCJvcHRfb2ZfcGFkIiwid2lkdGgkMSIsImdldF9wYWRfb3B0IiwiZ2V0X3BhZHByZWNfb3B0IiwiZm10X3Jlc3VsdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwicGFkJDkiLCJmbXRfcmVzdCQyMyIsImlnbm9yZWQkMTAiLCJmbXRfcmVzdCQyNCIsInBhZCQxMCIsImZtdF9yZXN0JDI1Iiwic3ViX2ZtdCQwIiwiZm10X3Jlc3QkMjYiLCJpZ25vcmVkJDExIiwiaWdub3JlZCQzIiwiaWdub3JlZCQ1IiwiaWdub3JlZCQ4Iiwic3BhY2UkMSIsImhhc2gkMSIsInBsdXMkMiIsImtpbmQiLCJpZ25vcmVkJDQiLCJpZ25vcmVkIiwiaWdub3JlZCQwIiwiaWdub3JlZCQxIiwicGx1cyQxIiwiaWduJDAiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImFzc29jMyIsInkyIiwieTEiLCJzcGxpdCQxIiwibWFrZV9zeW1saXN0IiwiaGVscF9hY3Rpb24iLCJhZGRfaGVscCIsInNwZWNsaXN0IiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJib29sX29mX3N0cmluZ19vcHQkMCIsImludF9vZl9zdHJpbmdfb3B0JDAiLCJmbG9hdF9vZl9zdHJpbmdfb3B0IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwiZm9sbG93JDAiLCJrZXl3b3JkIiwibm9fYXJnJDAiLCJmb2xsb3ciLCJub19hcmciLCJnZXRfYXJnJDAiLCJnZXRfYXJnIiwiY29uc3VtZV9hcmckMCIsImNvbnN1bWVfYXJnIiwidHJlYXRfYWN0aW9uJDAiLCJ0cmVhdF9hY3Rpb24iLCJmJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJyJDIiLCJhcmckMiIsImYkMyIsImFyZyQzIiwieCQxIiwiciQzIiwiYXJnJDQiLCJ4JDIiLCJzcGVjcyIsImYkNCIsImFyZyQ1IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiYXJnJDYiLCJuZXdhcmciLCJwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyIsInBhcnNlX2FyZ3ZfZHluYW1pYyIsImN1cnJlbnQkMCIsInBhcnNlX2FyZ3YiLCJtc2ckMCIsIm1zZyQxIiwicGFyc2VfZHluYW1pYyIsInBhcnNlX2V4cGFuZCIsInNlY29uZF93b3JkIiwibG9vcCIsIm1heF9hcmdfbGVuIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsImFsaWduIiwibGltaXQiLCJjb21wbGV0ZWQiLCJrc2QiLCJjdXRjb2wkMCIsInNwYWNlcyQwIiwiY3V0Y29sIiwia3dkX2xlbiIsInNwYWNlcyIsInJlYWRfYXV4IiwidHJpbSIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwiY29udiIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsImNvbnN0cnVjdG9yIiwidG9fc3RyaW5nJDYiLCJwcmludCIsImZjdCIsImNhdGNoJDAiLCJyYXdfYmFja3RyYWNlX2VudHJpZXMiLCJidCIsImNvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImZvcm1hdF9iYWNrdHJhY2Vfc2xvdCIsImlzX3JhaXNlIiwicHJpbnRfcmF3X2JhY2t0cmFjZSIsIm91dGNoYW4iLCJyYXdfYmFja3RyYWNlIiwiYmFja3RyYWNlIiwicHJpbnRfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZV90b19zdHJpbmciLCJiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsImV4bl9zbG90IiwiZXhuX3Nsb3RfaWQiLCJleG5fc2xvdF9uYW1lIiwiZXJyb3JzIiwiZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuIiwic3RhdHVzIiwidW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJlbXB0eV9iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZGVidWdnZXJfaW5fdXNlIiwiZXhuJDAiLCJyYXdfYmFja3RyYWNlJDAiLCJjb25zdCQwIiwiZmxpcCIsIm5lZ2F0ZSIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJ3b3JrIiwiZmluYWxseV9ub19leG4iLCJ3b3JrX2V4biIsIndvcmtfYnQiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJvdXRwdXQkMCIsImRpZ2VzdCIsImlucHV0JDAiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJuZXdfc3RhdGUiLCJhc3NpZ24iLCJzdDEiLCJzdDIiLCJmdWxsX2luaXQiLCJzZWVkIiwic2VlZCQwIiwibWFrZSQzIiwibWFrZV9zZWxmX2luaXQiLCJjb3B5JDUiLCJiaXRzIiwiY3VydmFsIiwibmV3dmFsIiwibmV3dmFsMzAiLCJpbnRhdXgiLCJpbnQkMCIsImJvdW5kIiwiZnVsbF9pbnQiLCJicG9zIiwiYnBvcyQwIiwiaW50MzIiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJib29sIiwiYml0czMyIiwiYml0czY0IiwibmF0aXZlYml0cyIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludDMyJDAiLCJuYXRpdmVpbnQkMCIsImludDY0JDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJiaXRzMzIkMCIsImJpdHM2NCQwIiwibmF0aXZlYml0cyQwIiwiZnVsbF9pbml0JDAiLCJpbml0JDUiLCJzZWxmX2luaXQiLCJnZXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJvbmdvaW5nX3RyYXZlcnNhbCIsImZsaXBfb25nb2luZ190cmF2ZXJzYWwiLCJwYXJhbXMiLCJyYW5kb21pemVkX2RlZmF1bHQiLCJyYW5kb21pemVkIiwicmFuZG9taXplIiwiaXNfcmFuZG9taXplZCIsInBybmciLCJwb3dlcl8yX2Fib3ZlIiwiY3JlYXRlJDMiLCJpbml0aWFsX3NpemUiLCJyYW5kb20iLCJjbGVhciQyIiwicmVzZXQkMCIsImNvcHlfYnVja2V0bGlzdCIsImtleSQwIiwibmV4dCQwIiwiY29weSQ2IiwibGVuZ3RoJDUiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwiY2VsbCQwIiwibmlkeCIsIm1hdGNoIiwibWF0Y2gkMCIsInJlc2l6ZSQwIiwib3NpemUiLCJpdGVyJDEwIiwiZG9fYnVja2V0Iiwib2xkX3RyYXYiLCJmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiZm9sZCQ0IiwiYiQwIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0b19zZXEkOSIsInRibF9kYXRhIiwiYnVjayIsImJ1Y2skMCIsImJ1Y2skMSIsInRvX3NlcV9rZXlzIiwidG9fc2VxX3ZhbHVlcyIsImtleV9pbmRleCIsImJ1Y2tldCIsImsxIiwibmV4dDEiLCJrMiIsIm5leHQyIiwiazMiLCJkMyIsIm5leHQzIiwiZmluZF9hbGwiLCJmaW5kX2luX2J1Y2tldCIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsImNvcHkiLCJzeiIsImhhc2hfcGFyYW0iLCJzZWVkZWRfaGFzaCIsImFkZCQwIiwiZmluZCQxIiwiZmluZF9vcHQkMSIsImZpbmRfYWxsJDAiLCJtZW0kMiIsImFkZF9zZXEkMiIsIm9mX3NlcSQ3IiwicmVidWlsZCIsIndlYWtfY3JlYXRlIiwibGVuZ3RoJDYiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCQwIiwic2V0JDEiLCJnZXQkMiIsImdldF9jb3B5IiwiY2hlY2skMCIsImJsaXQkNCIsImZpbGwkMiIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJzeiQwIiwic3okMSIsImNvdW50X2J1Y2tldCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJpbmRleCIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJuZXd0Iiwib2IiLCJvaCIsInNldHRlciQwIiwibmkiLCJmaW5kX29yIiwiaWZub3Rmb3VuZCIsImZpbmRfc2hhZG93IiwiaWZmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJpZCQwIiwidW5rbm93biIsInBwX2VucXVldWUiLCJ0b2tlbiIsInBwX2luZmluaXR5IiwicHBfb3V0cHV0X3N0cmluZyIsInBwX291dHB1dF9uZXdsaW5lIiwiZm9ybWF0X3BwX3RleHQiLCJ0ZXh0IiwiZm9ybWF0X3N0cmluZyIsImJyZWFrX25ld19saW5lIiwicmVhbF9pbmRlbnQiLCJicmVha19saW5lIiwiYnJlYWtfc2FtZV9saW5lIiwiZm9ybWF0X3BwX3Rva2VuIiwic2l6ZSQwIiwidGFicyIsImFkZF90YWIiLCJscyIsInRhZ19uYW1lIiwibWFya2VyIiwiYnJlYWtzIiwiZml0cyIsIm9mZiIsImJveF90eXBlJDAiLCJvZmYkMCIsImluc2VydGlvbl9wb2ludCIsInRhYnMkMCIsImZpcnN0IiwiaGVhZCIsInRhYiIsIm9mZiQxIiwiaW5zZXJ0aW9uX3BvaW50JDAiLCJ3aWR0aCQyIiwiYm94X3R5cGUkMSIsInRib3giLCJ0YWdfbmFtZSQwIiwibWFya2VyJDAiLCJhZHZhbmNlX2xlZnQiLCJwZW5kaW5nX2NvdW50IiwiZW5xdWV1ZV9hZHZhbmNlIiwiZW5xdWV1ZV9zdHJpbmdfYXMiLCJpbml0aWFsaXplX3NjYW5fc3RhY2siLCJzdGFjayIsInF1ZXVlX2VsZW0iLCJzZXRfc2l6ZSIsImxlZnRfdG90YWwiLCJzY2FuX3B1c2giLCJlbGVtIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfb3Blbl90YWciLCJwcF9jbG9zZV90YWciLCJwcF9zZXRfcHJpbnRfdGFncyIsInBwX3NldF9tYXJrX3RhZ3MiLCJwcF9nZXRfcHJpbnRfdGFncyIsInBwX2dldF9tYXJrX3RhZ3MiLCJwcF9zZXRfdGFncyIsInBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBjdCIsInBvdCIsIm1jdCIsIm1vdCIsInBwX3Jpbml0IiwicHBfZmx1c2hfcXVldWUiLCJwcF9wcmludF9hc19zaXplIiwicHBfcHJpbnRfYXMiLCJpc2l6ZSIsInBwX3ByaW50X3N0cmluZyIsInBwX3ByaW50X2J5dGVzIiwicHBfcHJpbnRfaW50IiwicHBfcHJpbnRfZmxvYXQiLCJwcF9wcmludF9ib29sIiwicHBfcHJpbnRfY2hhciIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2luZGVudCIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJmbHVzaF9idWZmZXJfZm9ybWF0dGVyIiwiZmx1c2hfc3RyX2Zvcm1hdHRlciIsIm1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJzb2IiLCJnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJpdGVtcyIsImFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSIsIml0ZW0iLCJmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2IiLCJvcGVuX2hib3giLCJvcGVuX3Zib3giLCJvcGVuX2h2Ym94Iiwib3Blbl9ob3Zib3giLCJvcGVuX2JveCIsImNsb3NlX2JveCIsIm9wZW5fdGFnIiwiY2xvc2VfdGFnIiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfc3RyaW5nJDAiLCJwcmludF9ieXRlcyQwIiwicHJpbnRfaW50JDAiLCJwcmludF9mbG9hdCQwIiwicHJpbnRfY2hhciQwIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9uZXdsaW5lJDAiLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwidnMiLCJvcHQkMSIsInBwX3ByaW50X3NlcSIsInNlcSQxIiwic2VxJDIiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0Iiwib3V0cHV0X2FjYyQwIiwiYnR5IiwicCQ1IiwicCQ2Iiwic3RycHV0X2FjYyQwIiwic2l6ZSQxIiwia2ZwcmludGYkMCIsImlrZnByaW50ZiQwIiwiaWZwcmludGYkMCIsImZwcmludGYkMCIsInByaW50ZiQwIiwiZXByaW50ZiQwIiwia2RwcmludGYiLCJkcHJpbnRmIiwia3ByaW50ZiIsInNwcmludGYkMCIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsInBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImJwcmludGYkMCIsInBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsInN0cmluZ2lmeSIsInBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImZ1bnMiLCJtYXJrX29wZW5fdGFnIiwibWFya19jbG9zZV90YWciLCJwcmludF9vcGVuX3RhZyIsInByaW50X2Nsb3NlX3RhZyIsInNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsInJlc2V0X3Rva2VuIiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJza2lwX2NoYXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiY3JlYXRlJDQiLCJpbmFtZSIsImZyb21fc3RyaW5nJDEiLCJmcm9tX2Z1bmN0aW9uJDAiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJzdGRpYiIsIm9wZW5faW5fZmlsZSIsIm9wZW5faW4iLCJmcm9tX2ZpbGUiLCJmcm9tX2ZpbGVfYmluIiwiZnJvbV9jaGFubmVsJDAiLCJjbG9zZV9pbiIsImljJDAiLCJtZW1vIiwibWVtb19mcm9tX2ljIiwibWVtb19mcm9tX2NoYW5uZWwiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfZmxvYXQiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja190aGlzX2NoYXIiLCJjaGVja19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwidG9rZW5fZmxvYXQiLCJzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciIsInNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJzY2FuX2NoYXIiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwic2Nhbl9jYW1sX2NoYXIiLCJmaW5kX3N0b3AiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsImdldF9jb3VudGVyIiwid2lkdGhfb2ZfcGFkX29wdCIsInN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQiLCJmbXRpbmciLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzJDAiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzJDAiLCJyZWFkZXIiLCJuZXdfayIsInJlYWRlcnNfcmVzdCIsInRha2VfZm9ybWF0X3JlYWRlcnMiLCJmbXQkMjMiLCJmbXQkMjQiLCJmbXQkMjUiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIiwibWFrZV9zY2FuZiIsInJlYWRlcnMiLCJzY2FuJDAiLCJzdHJfcmVzdCIsInBhZF9wcmVjX3NjYW5mIiwic2NhbiQxIiwic2NhbiQyIiwic2NhbiQzIiwic2NhbiQ0IiwiY29udiQwIiwic2NhbiQ1IiwiY29udiQxIiwic2NhbiQ2IiwiY29udiQyIiwic2NhbiQ3Iiwic2NhbiQ4IiwiZm10aW5nX2xpdCQwIiwic3RwJDAiLCJzJDIiLCJzdHJfcmVzdCQwIiwicmVzdCQyNiIsImFyZ19yZXN0Iiwia3NjYW5mIiwiZWYiLCJhcHBseSIsImFyZ3MkMCIsImV4YyIsImJzY2FuZiIsImtzc2NhbmYiLCJzc2NhbmYiLCJzY2FuZiIsImJzY2FuZl9mb3JtYXQiLCJmb3JtYXQiLCJzc2NhbmZfZm9ybWF0IiwiZm9ybWF0X2Zyb21fc3RyaW5nIiwidW5lc2NhcGVkIiwia2ZzY2FuZiIsImZzY2FuZiIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwicGFyYW1zJDAiLCJpbml0aWFsX29iamVjdF9zaXplIiwiZHVtbXlfaXRlbSIsInRhZyIsImNvbXBhcmUkMTQiLCJjb21wYXJlJDE1IiwiY29tcGFyZSQxNiIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwicmVzaXplJDEiLCJhcnJheSIsIm5ld19zaXplIiwib2xkX3NpemUiLCJuZXdfYnVjayIsIm1ldGhvZF9jb3VudCIsImluc3RfdmFyX2NvdW50IiwibmV3X21ldGhvZCIsInRhYmxlIiwiZ2V0X21ldGhvZF9sYWJlbCIsImxhYmVsIiwiZ2V0X21ldGhvZF9sYWJlbHMiLCJuYW1lcyIsInNldF9tZXRob2QiLCJlbGVtZW50IiwiZ2V0X21ldGhvZCIsInRvX2xpc3QkMyIsImFyciIsIm5hcnJvdyIsInZhcnMiLCJ2aXJ0X21ldGhzIiwiY29uY3JfbWV0aHMiLCJ2YXJzJDAiLCJ2aXJ0X21ldGhzJDAiLCJjb25jcl9tZXRocyQwIiwidmlydF9tZXRoX2xhYnMiLCJjb25jcl9tZXRoX2xhYnMiLCJsYWIiLCJ0dmFycyIsImJ5X25hbWUiLCJieV9sYWJlbCIsIm1ldCIsImhtIiwid2lkZW4iLCJzYXZlZF92YXJzIiwic2F2ZWRfaGlkZGVuX21ldGhzIiwibmV3X3Nsb3QiLCJuZXdfdmFyaWFibGUiLCJ0b19hcnJheSIsIm5ld19tZXRob2RzX3ZhcmlhYmxlcyIsIm1ldGhzIiwidmFscyIsIm1ldGhzJDAiLCJubWV0aHMiLCJudmFscyIsImdldF92YXJpYWJsZSIsImdldF92YXJpYWJsZXMiLCJhZGRfaW5pdGlhbGl6ZXIiLCJjcmVhdGVfdGFibGUiLCJwdWJsaWNfbWV0aG9kcyIsInRhZ3MiLCJpbml0X2NsYXNzIiwiaW5oZXJpdHMiLCJjbGEiLCJzdXBlciQwIiwibm0iLCJtYWtlX2NsYXNzIiwicHViX21ldGhzIiwiY2xhc3NfaW5pdCIsImVudl9pbml0IiwibWFrZV9jbGFzc19zdG9yZSIsImluaXRfdGFibGUiLCJkdW1teV9jbGFzcyIsImxvYyIsInVuZGVmIiwiY3JlYXRlX29iamVjdCIsImNyZWF0ZV9vYmplY3Rfb3B0Iiwib2JqXzAiLCJpdGVyX2YiLCJydW5faW5pdGlhbGl6ZXJzIiwiaW5pdHMiLCJydW5faW5pdGlhbGl6ZXJzX29wdCIsImNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaSIsImdldF9kYXRhJDAiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290IiwidGFibGVzJDIiLCJ0YWJsZXMkMCIsInRhYmxlcyQxIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJjbG8kMCIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIngkMyIsIm4kNyIsIngkNCIsIm4kOCIsIm4kOSIsIngkNSIsImYkOCIsImUkMiIsIm4kMTAiLCJ4JDYiLCJmJDkiLCJuJDExIiwieCQ3IiwibiQxMiIsIngkOCIsIm4kMTMiLCJuJDE0IiwiZSQzIiwibiQxNSIsIm0kMiIsIngkOSIsIm0kMyIsIm4kMTYiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ1IiwibiQxOCIsInN0YXRzJDAiLCJpbml0X21vZF9ibG9jayIsImNvbXBzJDAiLCJtb2R1Iiwic2hhcGUiLCJmbiQwIiwiY29tcHMiLCJpbml0X21vZCIsInVwZGF0ZV9tb2RfYmxvY2siLCJjbCIsInVwZGF0ZV9tb2QiLCJpbml0aWFsX2J1ZmZlciIsImJ1ZmZlciIsImJ1ZnBvcyIsInJlc2V0X2J1ZmZlciIsInN0b3JlIiwibmV3YnVmZmVyIiwiZ2V0X3N0cmluZyIsIm1ha2VfbGV4ZXIiLCJrZXl3b3JkcyIsImt3ZF90YWJsZSIsImlkZW50X29yX2tleXdvcmQiLCJrZXl3b3JkX29yX2Vycm9yIiwiY29tbWVudCIsImVzY2FwZSIsImVuZF9leHBvbmVudF9wYXJ0IiwiZXhwb25lbnRfcGFydCIsIm51bWJlciIsImlkZW50MiIsIm5lZ19udW1iZXIiLCJuZXh0X3Rva2VuJDAiLCJtYXliZV9jb21tZW50IiwibmV4dF90b2tlbiIsImhrZXkiLCJjbGVhbiIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJyZXBsYWNlX2J1Y2tldCIsIm5ld19kIiwiYnVja2V0X2xlbmd0aF9hbGl2ZSIsInN0YXRzX2FsaXZlIiwiY3JlYXRlJDUiLCJnZXRfa2V5JDAiLCJnZXRfa2V5X2NvcHkkMCIsInNldF9rZXkkMCIsInVuc2V0X2tleSQwIiwiY2hlY2tfa2V5JDAiLCJibGl0X2tleSQwIiwiZ2V0X2RhdGEkMSIsImdldF9kYXRhX2NvcHkiLCJzZXRfZGF0YSIsInVuc2V0X2RhdGEiLCJjaGVja19kYXRhIiwiYmxpdF9kYXRhIiwibWFrZSQ0IiwiZXBoIiwicXVlcnkiLCJzZXRfa2V5X2RhdGEiLCJtYWtlJDUiLCJhZGQkMSIsInRlc3Rfa2V5IiwicmVtb3ZlJDAiLCJmaW5kJDIiLCJsZW5ndGgkNyIsImNsZWFyJDMiLCJjcmVhdGUkNiIsImdldF9rZXkxIiwiZ2V0X2tleTFfY29weSIsInNldF9rZXkxIiwidW5zZXRfa2V5MSIsImNoZWNrX2tleTEiLCJnZXRfa2V5MiIsImdldF9rZXkyX2NvcHkiLCJzZXRfa2V5MiIsInVuc2V0X2tleTIiLCJjaGVja19rZXkyIiwiYmxpdF9rZXkxIiwiYmxpdF9rZXkyIiwiYmxpdF9rZXkxMiIsImdldF9kYXRhJDIiLCJnZXRfZGF0YV9jb3B5JDAiLCJzZXRfZGF0YSQwIiwidW5zZXRfZGF0YSQwIiwiY2hlY2tfZGF0YSQwIiwiYmxpdF9kYXRhJDAiLCJtYWtlJDYiLCJrZXkxIiwia2V5MiIsInF1ZXJ5JDAiLCJrMiQwIiwiazEkMCIsIm1ha2UkNyIsImFkZCQyIiwidGVzdF9rZXlzIiwicmVtb3ZlJDEiLCJmaW5kJDMiLCJsZW5ndGgkOCIsImNsZWFyJDQiLCJjcmVhdGUkNyIsImxlbmd0aCQ5IiwiZ2V0X2tleSQxIiwiZ2V0X2tleV9jb3B5JDEiLCJzZXRfa2V5JDEiLCJ1bnNldF9rZXkkMSIsImNoZWNrX2tleSQxIiwiYmxpdF9rZXkkMSIsImdldF9kYXRhJDMiLCJnZXRfZGF0YV9jb3B5JDEiLCJzZXRfZGF0YSQxIiwidW5zZXRfZGF0YSQxIiwiY2hlY2tfZGF0YSQxIiwiYmxpdF9kYXRhJDEiLCJtYWtlJDgiLCJxdWVyeSQxIiwia2kiLCJrMCIsIm1ha2UkOSIsImFkZCQzIiwidGVzdF9rZXlzJDAiLCJyZW1vdmUkMiIsImZpbmQkNCIsImxlbmd0aCQxMCIsImNsZWFyJDUiLCJnZW5lcmljX2Jhc2VuYW1lIiwiaXNfZGlyX3NlcCIsImdlbmVyaWNfZGlybmFtZSIsImlzX3JlbGF0aXZlIiwiaXNfaW1wbGljaXQiLCJjaGVja19zdWZmaXgiLCJzdWZmIiwiY2hvcF9zdWZmaXhfb3B0IiwibGVuX2YiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lIiwicXVvdGUkMCIsImFkZF9icyIsImxvb3AkMCIsImxvb3BfYnMiLCJxdW90ZV9jbWRfZmlsZW5hbWUiLCJxdW90ZV9jb21tYW5kJDAiLCJkcml2ZV9hbmRfcGF0aCIsImRpcm5hbWUkMCIsInBhdGgiLCJkcml2ZSIsImRpciIsImJhc2VuYW1lJDAiLCJiYXNlbmFtZSQxIiwiZGlybmFtZSQxIiwibnVsbCQzIiwiY3VycmVudF9kaXJfbmFtZSQyIiwicGFyZW50X2Rpcl9uYW1lJDIiLCJkaXJfc2VwJDIiLCJpc19kaXJfc2VwJDEiLCJpc19yZWxhdGl2ZSQxIiwiaXNfaW1wbGljaXQkMSIsImNoZWNrX3N1ZmZpeCQxIiwiY2hvcF9zdWZmaXhfb3B0JDEiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQxIiwicXVvdGVfY29tbWFuZCQxIiwiYmFzZW5hbWUkMiIsImRpcm5hbWUkMiIsImNvbmNhdCQ0IiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiZXh0ZW5zaW9uIiwiY2hvcF9leHRlbnNpb24iLCJyZW1vdmVfZXh0ZW5zaW9uIiwicHJuZyQwIiwidGVtcF9maWxlX25hbWUiLCJ0ZW1wX2RpciIsInJuZCIsImN1cnJlbnRfdGVtcF9kaXJfbmFtZSIsInNldF90ZW1wX2Rpcl9uYW1lIiwiZ2V0X3RlbXBfZGlyX25hbWUiLCJ0ZW1wX2ZpbGUiLCJ0cnlfbmFtZSIsImNvdW50ZXIkMSIsIm9wZW5fdGVtcF9maWxlIiwic3RoJDAiLCJwZXJtcyIsInN0aCQxIiwiYWRkJDQiLCJzdWIkNCIsIm5lZyIsImNvbmoiLCJtdWwiLCJkaXYiLCJpbnYiLCJub3JtMiIsIm5vcm0iLCJxJDAiLCJwb2xhciIsInNxcnQiLCJ3JDAiLCJleHAiLCJsb2ciLCJwb3ciLCJmbG9hdDMyIiwiZmxvYXQ2NCIsImludDhfc2lnbmVkIiwiaW50OF91bnNpZ25lZCIsImludDE2X3NpZ25lZCIsImludDE2X3Vuc2lnbmVkIiwiaW50MzIkMSIsImludDY0JDEiLCJpbnQkMiIsIm5hdGl2ZWludCQxIiwiY29tcGxleDMyIiwiY29tcGxleDY0Iiwia2luZF9zaXplX2luX2J5dGVzIiwiY19sYXlvdXQiLCJmb3J0cmFuX2xheW91dCIsImNsb29wIiwiaWR4IiwiY29sIiwiZmxvb3AiLCJpbml0JDYiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJjcmVhdGUkOCIsImdldCQzIiwic2V0JDIiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQ5IiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDciLCJvZl9hcnJheSIsImJhIiwiY3JlYXRlJDEwIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDgiLCJvZl9hcnJheSQwIiwicm93IiwiY3JlYXRlJDExIiwiZGltMyIsInNpemVfaW5fYnl0ZXMkMyIsInNsaWNlX2xlZnRfMSIsInNsaWNlX3JpZ2h0XzEiLCJzbGljZV9sZWZ0XzIiLCJzbGljZV9yaWdodF8yIiwiaW5pdCQ5Iiwib2ZfYXJyYXkkMSIsImFycmF5MF9vZl9nZW5hcnJheSIsImFycmF5MV9vZl9nZW5hcnJheSIsImFycmF5Ml9vZl9nZW5hcnJheSIsImFycmF5M19vZl9nZW5hcnJheSIsInJlc2hhcGVfMCIsInJlc2hhcGVfMSIsInJlc2hhcGVfMiIsInJlc2hhcGVfMyIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImxlbmd0aCQxMSIsImlucHV0X2NoYXIkMCIsImlucHV0X2J5dGUkMCIsImlucHV0X2xpbmUkMCIsInJlYWxseV9pbnB1dCQwIiwicmVhbGx5X2lucHV0X3N0cmluZyQwIiwicmVhZF91cHRvIiwiZW5zdXJlIiwibmV3X2xlbiQwIiwibmV3X2xlbiQxIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSQwIiwiaW5pdGlhbF9zaXplJDEiLCJucmVhZCIsImJ1ZiQwIiwiYnVmJDEiLCJyZW0iLCJ3aXRoX29wZW4kMCIsIndpdGhfb3Blbl9iaW4kMCIsIndpdGhfb3Blbl90ZXh0JDAiLCJ3aXRoX29wZW5fZ2VuJDAiLCJzZWVrJDAiLCJwb3MkMCIsImxlbmd0aCQxMiIsInlvanNvbl9vZl9zb3VyY2VfcG9zaXRpb24iLCJ2X2xhd19oZWFkaW5ncyIsInZfZW5kX2NvbHVtbiIsInZfZW5kX2xpbmUiLCJ2X3N0YXJ0X2NvbHVtbiIsInZfc3RhcnRfbGluZSIsInZfZmlsZW5hbWUiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJhcmckMSIsImJuZHMkMSIsImFyZyQyIiwiYm5kcyQyIiwiYXJnJDMiLCJibmRzJDMiLCJhcmckNCIsImJuZHMkNCIsIm1vbmV5X29mX2NlbnRzX3N0cmluZyIsImNlbnRzIiwibW9uZXlfb2ZfdW5pdHNfaW50IiwidW5pdHMiLCJtb25leV9vZl9jZW50c19pbnRlZ2VyIiwibW9uZXlfdG9fZmxvYXQiLCJtIiwibW9uZXlfb2ZfZGVjaW1hbCIsImQiLCJtb25leV90b19zdHJpbmciLCJtb25leV90b19jZW50cyIsIm1vbmV5X3JvdW5kIiwiZGVjaW1hbF9vZl9zdHJpbmciLCJkZWNpbWFsX3RvX2Zsb2F0IiwiZGVjaW1hbF9vZl9mbG9hdCIsImRlY2ltYWxfb2ZfaW50ZWdlciIsImRlY2ltYWxfdG9fc3RyaW5nIiwibWF4X3ByZWNfZGlnaXRzIiwiaSIsInNpZ24iLCJuIiwiaW50X3BhcnQiLCJuJDAiLCJkaWdpdHMiLCJsZWFkaW5nX3plcm9lcyIsImRpZ2l0IiwibnVtX2xlYWRpbmdfemVyb2VzIiwiaSQwIiwiZm10IiwiZGVjaW1hbF9yb3VuZCIsInEiLCJkZWNpbWFsX29mX21vbmV5IiwiaW50ZWdlcl9vZl9zdHJpbmciLCJzIiwiaW50ZWdlcl90b19zdHJpbmciLCJpbnRlZ2VyX3RvX2ludCIsImludGVnZXJfb2ZfaW50IiwiaW50ZWdlcl9leHBvbmVudGlhdGlvbiIsImUiLCJpbnRlZ2VyX2xvZzIiLCJ5ZWFyX29mX2RhdGUiLCJ5IiwibW9udGhfbnVtYmVyX29mX2RhdGUiLCJpc19sZWFwX3llYXIiLCJ5JDAiLCJkYXlfb2ZfbW9udGhfb2ZfZGF0ZSIsImQkMCIsImRhdGVfb2ZfbnVtYmVycyIsInllYXIiLCJtb250aCIsImRheSIsImRhdGVfdG9fc3RyaW5nIiwiZmlyc3RfZGF5X29mX21vbnRoIiwibGFzdF9kYXlfb2ZfbW9udGgiLCJkdXJhdGlvbl9vZl9udW1iZXJzIiwiZHVyYXRpb25fdG9fc3RyaW5nIiwiZHVyYXRpb25fdG9feWVhcnNfbW9udGhzX2RheXMiLCJ5b2pzb25fb2ZfcnVudGltZV92YWx1ZSIsInYwJDQiLCJ2MCQ1IiwidjAkNiIsInYwIiwidjAkNyIsInYwJDAiLCJ2MCQ4IiwidjAkMSIsInYwJDkiLCJ2MCQyIiwidjAkMTAiLCJ2MCQzIiwidjEiLCJ2MCQxMSIsInYwJDEyIiwidjEkMCIsInYwJDEzIiwidjAkMTQiLCJ2MSQxIiwidjEkMiIsInYxJDMiLCJ2MCQxNSIsInYwJDE2IiwidjEkNCIsInYwJDE3IiwidjAkMTgiLCJ1bmVtYmVkZGFibGUiLCJlbWJlZF91bml0IiwiZW1iZWRfYm9vbCIsIngiLCJlbWJlZF9tb25leSIsImVtYmVkX2ludGVnZXIiLCJlbWJlZF9kZWNpbWFsIiwiZW1iZWRfZGF0ZSIsImVtYmVkX2R1cmF0aW9uIiwiZW1iZWRfYXJyYXkiLCJmIiwieW9qc29uX29mX2luZm9ybWF0aW9uIiwidiIsInlvanNvbl9vZl92YXJfZGVmIiwidl9mdW5fY2FsbHMiLCJ2X3ZhbHVlIiwidl9uYW1lIiwidl9wb3MiLCJ5b2pzb25fb2ZfZnVuX2NhbGwiLCJ2X291dHB1dCIsInZfYm9keSIsInZfZnVuX2lucHV0cyIsInZfZnVuX25hbWUiLCJ5b2pzb25fb2ZfZXZlbnQiLCJ2X2lucHV0cyIsImxvZ19yZWYiLCJyZXNldF9sb2ciLCJyZXRyaWV2ZV9sb2ciLCJsb2dfYmVnaW5fY2FsbCIsImluZm8iLCJsb2dfZW5kX2NhbGwiLCJsb2dfdmFyaWFibGVfZGVmaW5pdGlvbiIsImVtYmVkIiwibG9nX2RlY2lzaW9uX3Rha2VuIiwicG9zIiwicHBfZXZlbnRzIiwib3B0IiwicHBmIiwiZXZlbnRzIiwic3RoIiwiaXNfZmlyc3RfY2FsbCIsImZvcm1hdF92YXJfZGVmIiwidmFyJDAiLCJmb3JtYXRfcG9zX29wdCIsImZvcm1hdF92YWx1ZSIsImZvcm1hdF92YXJfZGVmcyIsImZvcm1hdF92YXJfZGVmX3dpdGhfZnVuX2NhbGxzIiwidmFyX3dpdGhfZnVuIiwiZnVuX2NhbGwiLCJmb3JtYXRfZXZlbnQiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJ4JDMiLCJ4JDQiLCJuYW1lIiwiYXR0cnMiLCJuYW1lJDAiLCJ2YWx1ZSIsImVsdHMiLCJ2YXJfZGVmX3dpdGhfZnVuIiwib3V0cHV0IiwiYm9keSIsImZ1bl9pbnB1dHMiLCJmdW5fbmFtZSIsImJvZHkkMCIsImlucHV0cyIsImVtcHR5IiwiZW1wdHlfY3R4IiwicmF3X2V2ZW50X3RvX3N0cmluZyIsIm5hbWUkMSIsInRha2Vfd2hpbGUiLCJwIiwibCIsInQiLCJoIiwicmVzdCIsInQkMCIsInBhcnNlX3Jhd19ldmVudHMiLCJyYXdfZXZlbnRzIiwibmJfcmF3X2V2ZW50cyIsImlzX2Z1bmN0aW9uX2NhbGwiLCJpbmZvcyIsImlzX3Zhcl9kZWYiLCJwYXJzZV9mdW5fY2FsbCIsImJvZHlfY3R4IiwicGFyc2VfZXZlbnRzIiwiYm9keV9yZXYiLCJyZXN0JDAiLCJ2YXJfZGVmIiwib3V0cHV0JDAiLCJjdHgiLCJjdHgkMCIsInZhcl9uYW1lIiwibHMkMCIsImN0eCQxIiwicmVzdCQxIiwiY3R4JDIiLCJpbmZvcyQwIiwicmVzdCQyIiwiY3R4JDMiLCJyZXN0JDMiLCJ2YXJfZG90X3N1YnNjb3BlX3Zhcl9uYW1lIiwibHMiLCJjdHgkNCIsImluZm9zJDEiLCJyYXdfZXZlbnRzJDAiLCJmdW5fY2FsbHMiLCJyZXN0JDQiLCJpbmZvcyQyIiwiZnVuX2NhbGwkMCIsImZ1bl9jYWxscyQwIiwiZnVuX2NhbGxzJDEiLCJyZXN0JDYiLCJ2YWx1ZSQwIiwibmFtZSQyIiwidmFyX2NvbXAiLCJyZXN0JDUiLCJjdHgkNiIsImN0eCQ1IiwibXNnIiwiaGFuZGxlX2RlZmF1bHQiLCJleGNlcHRpb25zIiwianVzdCIsImNvbnMiLCJhY2MiLCJleGNlcHQiLCJuZXdfdmFsIiwiaGFuZGxlX2RlZmF1bHRfb3B0IiwiYiIsIm5vX2lucHV0IiwiY29tcGFyZV9wZXJpb2RzIiwicDEiLCJwMiIsInAxX2RheXMiLCJwMl9kYXlzIiwiZXF1YWxfcGVyaW9kcyIsIm9fbm90Iiwib19sZW5ndGgiLCJhIiwib19taW51c19pbnQiLCJpMSIsIm9fbWludXNfcmF0Iiwib19taW51c19tb24iLCJtMSIsIm9fbWludXNfZHVyIiwib19hbmQiLCJvX29yIiwib194b3IiLCJvX2VxIiwib19tYXAiLCJvX3JlZHVjZSIsImRmdCIsImxlbiIsInIiLCJvX2NvbmNhdCIsIm9fZmlsdGVyIiwib19hZGRfaW50X2ludCIsImkyIiwib19hZGRfcmF0X3JhdCIsIm9fYWRkX21vbl9tb24iLCJtMiIsIm9fYWRkX2RhdF9kdXIiLCJkYSIsImR1Iiwib19hZGRfZHVyX2R1ciIsIm9fc3ViX2ludF9pbnQiLCJvX3N1Yl9yYXRfcmF0Iiwib19zdWJfbW9uX21vbiIsIm9fc3ViX2RhdF9kYXQiLCJvX3N1Yl9kYXRfZHVyIiwiZGF0IiwiZHVyIiwib19zdWJfZHVyX2R1ciIsIm9fbXVsdF9pbnRfaW50Iiwib19tdWx0X3JhdF9yYXQiLCJvX211bHRfbW9uX3JhdCIsImkxX2FicyIsImkyX2FicyIsInNpZ25faW50IiwicmF0X3Jlc3VsdCIsInJlbWFpbmRlciIsInJlcyIsIm9fbXVsdF9kdXJfaW50Iiwib19kaXZfaW50X2ludCIsIm9fZGl2X3JhdF9yYXQiLCJvX2Rpdl9tb25fbW9uIiwib19kaXZfbW9uX3JhdCIsInIxIiwib19kaXZfZHVyX2R1ciIsImQxIiwiZDIiLCJvX2x0X2ludF9pbnQiLCJvX2x0X3JhdF9yYXQiLCJvX2x0X21vbl9tb24iLCJvX2x0X2R1cl9kdXIiLCJvX2x0X2RhdF9kYXQiLCJvX2x0ZV9pbnRfaW50Iiwib19sdGVfcmF0X3JhdCIsIm9fbHRlX21vbl9tb24iLCJvX2x0ZV9kdXJfZHVyIiwib19sdGVfZGF0X2RhdCIsIm9fZ3RfaW50X2ludCIsIm9fZ3RfcmF0X3JhdCIsIm9fZ3RfbW9uX21vbiIsIm9fZ3RfZHVyX2R1ciIsIm9fZ3RfZGF0X2RhdCIsIm9fZ3RlX2ludF9pbnQiLCJvX2d0ZV9yYXRfcmF0Iiwib19ndGVfbW9uX21vbiIsIm9fZ3RlX2R1cl9kdXIiLCJvX2d0ZV9kYXRfZGF0Iiwib19lcV9pbnRfaW50Iiwib19lcV9yYXRfcmF0Iiwib19lcV9tb25fbW9uIiwib19lcV9kdXJfZHVyIiwib19lcV9kYXRfZGF0Iiwib19mb2xkIiwib19ub3QkMCIsIm9fbGVuZ3RoJDAiLCJvX3RvcmF0X2ludCIsIm9fdG9yYXRfbW9uIiwib190b21vbmV5X3JhdCIsIm9fZ2V0RGF5Iiwib19nZXRNb250aCIsIm9fZ2V0WWVhciIsIm9fZmlyc3REYXlPZk1vbnRoIiwib19sYXN0RGF5T2ZNb250aCIsIm9fcm91bmRfbW9uIiwib19yb3VuZF9yYXQiLCJvX21pbnVzX2ludCQwIiwib19taW51c19yYXQkMCIsIm9fbWludXNfbW9uJDAiLCJvX21pbnVzX2R1ciQwIiwib19hbmQkMCIsIm9fb3IkMCIsIm9feG9yJDAiLCJvX2VxJDAiLCJvX21hcCQwIiwib19yZWR1Y2UkMCIsIm9fY29uY2F0JDAiLCJvX2ZpbHRlciQwIiwib19hZGRfaW50X2ludCQwIiwib19hZGRfcmF0X3JhdCQwIiwib19hZGRfbW9uX21vbiQwIiwib19hZGRfZGF0X2R1ciQwIiwib19hZGRfZHVyX2R1ciQwIiwib19zdWJfaW50X2ludCQwIiwib19zdWJfcmF0X3JhdCQwIiwib19zdWJfbW9uX21vbiQwIiwib19zdWJfZGF0X2RhdCQwIiwib19zdWJfZGF0X2R1ciQwIiwib19zdWJfZHVyX2R1ciQwIiwib19tdWx0X2ludF9pbnQkMCIsIm9fbXVsdF9yYXRfcmF0JDAiLCJvX211bHRfbW9uX3JhdCQwIiwib19tdWx0X2R1cl9pbnQkMCIsIm9fZGl2X2ludF9pbnQkMCIsIm9fZGl2X3JhdF9yYXQkMCIsIm9fZGl2X21vbl9tb24kMCIsIm9fZGl2X21vbl9yYXQkMCIsIm9fZGl2X2R1cl9kdXIkMCIsIm9fbHRfaW50X2ludCQwIiwib19sdF9yYXRfcmF0JDAiLCJvX2x0X21vbl9tb24kMCIsIm9fbHRfZHVyX2R1ciQwIiwib19sdF9kYXRfZGF0JDAiLCJvX2x0ZV9pbnRfaW50JDAiLCJvX2x0ZV9yYXRfcmF0JDAiLCJvX2x0ZV9tb25fbW9uJDAiLCJvX2x0ZV9kdXJfZHVyJDAiLCJvX2x0ZV9kYXRfZGF0JDAiLCJvX2d0X2ludF9pbnQkMCIsIm9fZ3RfcmF0X3JhdCQwIiwib19ndF9tb25fbW9uJDAiLCJvX2d0X2R1cl9kdXIkMCIsIm9fZ3RfZGF0X2RhdCQwIiwib19ndGVfaW50X2ludCQwIiwib19ndGVfcmF0X3JhdCQwIiwib19ndGVfbW9uX21vbiQwIiwib19ndGVfZHVyX2R1ciQwIiwib19ndGVfZGF0X2RhdCQwIiwib19lcV9pbnRfaW50JDAiLCJvX2VxX3JhdF9yYXQkMCIsIm9fZXFfbW9uX21vbiQwIiwib19lcV9kdXJfZHVyJDAiLCJvX2VxX2RhdF9kYXQkMCIsIm9fZm9sZCQwIiwiZXhuIiwibW9kdWxlIiwiZ2xvYmFsVGhpcyIsIm51bGwiLCJ1bmRlZmluZWQiLCJqc29vX2V4cG9ydHMiLCJldmVudCIsImR1cmF0aW9uX29mX2pzb28iLCJkIiwiZHVyYXRpb25fdG9fanNvbyIsImRheXMiLCJtb250aHMiLCJ5ZWFycyIsImRhdGVfb2ZfanNvbyIsImQkMCIsImQkMSIsImRheSIsIm1vbnRoIiwieWVhciIsImRhdGVfdG9fanNvbyIsImV2dCIsInBvcyIsInYiLCJpbmZvIiwiZXZlbnQiLCJldmVudF9tYW5hZ2VyIiwiZXhlY3V0ZV9vcl90aHJvd19lcnJvciIsImYiLCJ0aHJvd19lcnJvciIsImRlc2NyIiwicG9zJDAiLCJwb3MkMSIsImVtYmVkX3ByaXNlX2VuX2NoYXJnZSIsIngiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJ4JDMiLCJ4JDQiLCJlbWJlZF9zaXR1YXRpb25fb2JsaWdhdGlvbl9zY28iLCJlbWJlZF9wcmlzZV9lbl9jb21wdGUiLCJlbWJlZF92ZXJzZW1lbnRfYWxsb2NhdGlvbnMiLCJlbWJlZF9lbGVtZW50X3ByZXN0YXRpb25zX2ZhbWkiLCJ4JDUiLCJ4JDYiLCJ4JDciLCJlbWJlZF9jb2xsZWN0aXZpdGUiLCJ4JDgiLCJlbWJlZF9hbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXYiLCJlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmllIiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmllIiwiZW1iZWRfc21pYyIsImVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpbyIsImVtYmVkX2ludGVyZmFjZV9hbGxvY2F0aW9uc19mYSIsImVtYmVkX2VuZmFudF9lbnRyZWUiLCJlbWJlZF9lbmZhbnQiLCJlbWJlZF9lbmZhbnRfbGVfcGx1c19hZ2UiLCJlbWJlZF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwiZW1iZWRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pIiwiZW1iZWRfYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2JDAiLCJlbWJlZF9lbmZhbnRfbGVfcGx1c19hZ2VfaW4iLCJlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2kiLCJlbWJlZF92ZXJpZmljYXRpb25fYWdlX2luZmVyaWUkMCIsImVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZSQwIiwiZW1iZWRfc21pY19pbiIsImVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpbyQwIiwiZW1iZWRfaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhJDAiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAiLCJhZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzMiLCJlbmZhbnRfbGVfcGx1c19hZ2UiLCJlbmZhbnRfbGVfcGx1c19hZ2VfaW4iLCJlbmZhbnRzIiwicG90ZW50aWVsX3BsdXNfYWdlXzEiLCJwb3RlbnRpZWxfcGx1c19hZ2VfMiIsImxlX3BsdXNfYWdlIiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfIiwiZGF0ZV9uYWlzc2FuY2UiLCJkYXRlX2NvdXJhbnRlIiwiYW5uZWVzIiwiciIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2kiLCJzbWljIiwic21pY19pbiIsInJlc2lkZW5jZSIsImJydXRfaG9yYWlyZSIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSIsIm1vbnRhbnQiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiIsImFnZV9sNTEyXzNfMiIsInNtaWNfZG90X2RhdGVfY291cmFudGUiLCJzbWljX2RvdF9yZXNpZGVuY2UiLCJyZXN1bHQiLCJzbWljX2RvdF9icnV0X2hvcmFpcmUiLCJyZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSIsInBsYWZvbmRfbDUxMl8zXzIiLCJlbmZhbnQiLCJjb25kaXRpb25zX2hvcnNfYWdlIiwiZHJvaXRfb3V2ZXJ0IiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4iLCJwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm0iLCJwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm0kMCIsInJlc3NvdXJjZXNfbWVuYWdlIiwiZW5mYW50c19hX2NoYXJnZSIsImF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZSIsInByaXNlX2VuX2NvbXB0ZSIsIm5vbWJyZV9lbmZhbnRzX2FsaW5lYV8yX2w1MjFfMyIsInZlcnNpb25fYXZyaWxfMjAwOF9kb3RfYWdlX21pbiIsImJtYWZfZG90X2RhdGVfY291cmFudGUiLCJyZXN1bHQkMCIsImJtYWZfZG90X21vbnRhbnQiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXQiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmUiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXMiLCJyZXN1bHQkMSIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2RybyIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2NvbiIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2FnZSIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZyIsImVuZmFudF9sZV9wbHVzX2FnZV9kb3RfZW5mYW50cyIsInJlc3VsdCQyIiwiZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9sZV9wbHVzIiwiZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfIiwiZXN0X2VuZmFudF9sZV9wbHVzX2FnZSIsInBsYWZvbmRfaV9pX2Q1MjFfMyIsInBsYWZvbmRfaV9kNTIxXzMiLCJkcm9pdF9vdXZlcnRfY29tcGxlbWVudCIsImRyb2l0X291dmVydF9mb3JmYWl0YWlyZSIsIm1vbnRhbnRfaW5pdGlhbF9iYXNlX3F1YXRyaWVtZSIsIm1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzaWVtZSIsIm5vbWJyZV90b3RhbF9lbmZhbnRzIiwic3VtMSIsInN1bTIiLCJub21icmVfbW95ZW5fZW5mYW50cyIsIm1vbnRhbnRfaW5pdGlhbF9iYXNlX3ByZW1pZXJfZSIsImRyb2l0X291dmVydF9iYXNlIiwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb24iLCJhbGxvY2F0aW9uIiwiY29tcGxlbWVudF9kZWdyZXNzaWYiLCJtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlX3Bhcl8iLCJtb250YW50X2luaXRpYWxfYmFzZV90cm9pc2llbWUkMCIsIm1vbnRhbnRfaW5pdGlhbF9iYXNlX2RldXhpZW1lXyIsInJhcHBvcnRfZW5mYW50c190b3RhbF9tb3llbiIsIm1vbnRhbnRfaW5pdGlhbF9tZXRyb3BvbGVfbWFqbyIsIm1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmUiLCJtb250YW50X2luaXRpYWxfYmFzZSIsIm1vbnRhbnRfaW5pdGlhbF9tYWpvcmF0aW9uIiwibW9udGFudF92ZXJzZV9jb21wbGVtZW50X3BvdXJfIiwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybmVlX2JhIiwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybmVlX21hIiwibW9udGFudF92ZXJzZV9iYXNlIiwibW9udGFudF92ZXJzZV9tYWpvcmF0aW9uIiwibW9udGFudF9iYXNlX2NvbXBsZW1lbnRfcG91cl9iIiwibW9udGFudF92ZXJzZV9jb21wbGVtZW50X3BvdXJfJDAiLCJtb250YW50X3ZlcnNlIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsIiwiaV9kYXRlX2NvdXJhbnRlIiwiaV9lbmZhbnRzIiwiaV9yZXNzb3VyY2VzX21lbmFnZSIsImlfcmVzaWRlbmNlIiwiaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3BlIiwiaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3BlJDAiLCJpX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8iLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9wZXIiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9wZXIkMCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlcyIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlcyQwIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0IiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZW5mIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfYXZhIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9uIiwiaV9tb250YW50X3ZlcnNlIiwicHJpc2VfZW5fY2hhcmdlX3RvX2pzb28iLCJhcmciLCJhcmckMCIsImFyZyQxIiwiYXJnJDIiLCJhcmckMyIsInByaXNlX2VuX2NoYXJnZV9vZl9qc29vIiwicHJpc2VfZW5fY2hhcmdlIiwiY29ucyIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXyIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXyQwIiwic2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUiLCJwcmlzZV9lbl9jb21wdGVfdG9fanNvbyIsInByaXNlX2VuX2NvbXB0ZV9vZl9qc29vIiwidmVyc2VtZW50X2FsbG9jYXRpb25zX3RvX2pzb28iLCJ2ZXJzZW1lbnRfYWxsb2NhdGlvbnNfb2ZfanNvbyIsInZlcnNlbWVudF9hbGxvY2F0aW9ucyIsImVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyIsImFyZyQ0IiwiYXJnJDUiLCJhcmckNiIsImVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyQwIiwiY29sbGVjdGl2aXRlX3RvX2pzb28iLCJhcmckNyIsImNvbGxlY3Rpdml0ZV9vZl9qc29vIiwiY29sbGVjdGl2aXRlIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDAiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAkMSIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvbyIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyQwIiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDEiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX3QiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX28iLCJzbWljX3RvX2pzb28iLCJzbWljX29mX2pzb28iLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMCIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQxIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDAiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkMSIsImVuZmFudF9lbnRyZWVfdG9fanNvbyIsImVuZmFudF9lbnRyZWUiLCJlbmZhbnRfZW50cmVlX29mX2pzb28iLCJlbmZhbnRfdG9fanNvbyIsImVuZmFudF9vZl9qc29vIiwiZW5mYW50X2xlX3BsdXNfYWdlX3RvX2pzb28iLCJlbmZhbnRfbGVfcGx1c19hZ2Vfb2ZfanNvbyIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyIsImZ1bmN0aW9uX2lucHV0MCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvbyIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9faiIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfaiIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQyIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDMiLCJlbmZhbnRfbGVfcGx1c19hZ2VfaW5fdG9fanNvbyIsImVuZmFudF9sZV9wbHVzX2FnZV9pbl9vZl9qc29vIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qIiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDIiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kMyIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaSQwIiwic21pY19pbl90b19qc29vIiwic21pY19pbl9vZl9qc29vIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDIiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMyIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCQyIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDMiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAkNCIsImVuZmFudF9sZV9wbHVzX2FnZSQwIiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDQiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hJDAiLCJzbWljJDAiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kNCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXMkMCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMkMCIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCQ0IiwiZW1iZWRfdHlwZV9wcmV0IiwiZW1iZWRfdGl0dWxhaXJlX3ByZXQiLCJlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgiLCJlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjgiLCJlbWJlZF9hbWVsaW9yZV9wYXJfb2NjdXBhbnQiLCJlbWJlZF9saW1pdGVfdHJhbmNoZSIsImVtYmVkX2xpbWl0ZV90cmFuY2hlX2RlY2ltYWwiLCJlbWJlZF9wcmVzdGF0aW9uX3JlY3VlIiwiZW1iZWRfcGFyZW50X291X2F1dHJlIiwiZW1iZWRfc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlIiwiZW1iZWRfcGFyZW50ZSIsImVtYmVkX2RhdGVfZGVfbmFpc3NhbmNlX291X21vaSIsImVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uIiwiZW1iZWRfcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluIiwiZW1iZWRfdmVyc2VtZW50X2EiLCJlbWJlZF9kZXBlbnNlX2xvZ2VtZW50IiwiZW1iZWRfbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSIsImVtYmVkX3R5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdCIsImVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbCIsImVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGUiLCJlbWJlZF9wcmlzZV9lbl9jaGFyZ2UkMCIsImVtYmVkX3R5cGVfbG9nZW1lbnRfZm95ZXIiLCJlbWJlZF9jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG8iLCJlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGMiLCJlbWJlZF9jb2xsZWN0aXZpdGUkMCIsImVtYmVkX3ByaXNlX2VuX2NoYXJnZV9lbmZhbnQiLCJlbWJlZF9zaXR1YXRpb25fb2JsaWdhdGlvbl9zY28kMCIsImVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaSQwIiwiZW1iZWRfY29udmVudGlvbl9iYWlsbGV1cl9zb2NpIiwiZW1iZWRfY29udmVudGlvbl9hX25faF9hIiwiZW1iZWRfcGVyc29ubmVfc291c19sb2NhdGlvbiIsImVtYmVkX3BhdHJpbW9pbmUiLCJlbWJlZF9jb25kaXRpb25zX2V0cmFuZ2VycyIsImVtYmVkX3BlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbCIsImVtYmVkX2VsaWdpYmlsaXRlX2FpZGVfcGVyc29ubiIsImVtYmVkX2VsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbSIsImVtYmVkX3Jlc3NvdXJjZXNfYWlkZXNfcGVyc29ubiIsImVtYmVkX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYSIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSIsImVtYmVkX2NhbGN1bF9lcXVpdmFsZW5jZV9sb3llciIsImVtYmVkX2NhbGN1bF9ub21icmVfcGFydF9sb2dlbSIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQwIiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0c19hY2NlIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDEiLCJlbWJlZF90cmFpdGVtZW50X2Zvcm11bGVfYWlkZV8iLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkMiIsImVtYmVkX2luZm9zX2NoYW5nZW1lbnRfbG9nZW1lbiIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQwIiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDEiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkMiIsImVtYmVkX291dmVydHVyZV9kcm9pdHNfcmV0cmFpdCIsImVtYmVkX2ltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50IiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlIiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlJDAiLCJlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW8kMSIsImVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZSQxIiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmllJDEiLCJlbWJlZF9zbWljJDAiLCJlbWJlZF9wcmV0IiwiZW1iZWRfbmV1Zl9vdV9hbmNpZW4iLCJlbWJlZF90cmFuY2hlX3JldmVudSIsImVtYmVkX3RyYW5jaGVfcmV2ZW51X2RlY2ltYWwiLCJlbWJlZF9hdXRyZV9wZXJzb25uZV9hX2NoYXJnZSIsImVtYmVkX2RhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZSIsImVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbCIsImVtYmVkX2xvZ2VtZW50X2ZveWVyIiwiZW1iZWRfZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsIiwiZW1iZWRfZW5mYW50X2FfY2hhcmdlIiwiZW1iZWRfdHlwZV9iYWlsbGV1ciIsImVtYmVkX2xvdWVfb3Vfc291c19sb3VlX2FfZGVzXyIsImVtYmVkX25hdGlvbmFsaXRlIiwiZW1iZWRfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyIiwiZW1iZWRfcHJvcHJpZXRhaXJlIiwiZW1iZWRfaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlIiwiZW1iZWRfZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfIiwiZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UiLCJlbWJlZF9kZW1hbmRldXIiLCJlbWJlZF9sb2NhdGlvbiIsImVtYmVkX2VsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbiIsImVtYmVkX2NhdGVnb3JpZV9jYWxjdWxfYV9wX2wiLCJlbWJlZF9tb2RlX29jY3VwYXRpb24iLCJlbWJlZF9sb2dlbWVudCIsImVtYmVkX21lbmFnZSIsImVtYmVkX2VsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbiQwIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uJDAiLCJlbWJlZF9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2wkMCIsImVtYmVkX2VsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbSQwIiwiZW1iZWRfcmVzc291cmNlc19haWRlc19wZXJzb25uJDAiLCJlbWJlZF9jb250cmlidXRpb25zX3NvY2lhbGVzX2EkMCIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQzIiwiZW1iZWRfY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyJDAiLCJlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW0kMCIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQ0IiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0c19hY2NlJDAiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkNSIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQ2IiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDMiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkNCIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQ1IiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDYiLCJlbWJlZF9vdXZlcnR1cmVfZHJvaXRzX3JldHJhaXQkMCIsImVtYmVkX2ltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50XyIsImVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZSQxIiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlJDIiLCJlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW8kMiIsImVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZSQyIiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmllJDIiLCJlbWJlZF9zbWljX2luJDAiLCJlbWJlZF9lbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc18kMCIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCIsImV4b25lcmVfY3NnIiwidGF1eF9jcmRzIiwiYWlkZV9maW5hbGUiLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0iLCJyZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXMiLCJjb25kaXRpb25fMl9kdV84MzJfMjUiLCJuX25vbWJyZV9wYXJ0c19kODMyXzI1IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI2IiwidHJhbmNoZXNfcmV2ZW51c19kODMyXzI2IiwidHJhbmNoZSIsInRyYW5jaGVfaGF1dCIsInRyYW5jaGVzX3JldmVudXNfZDgzMl8yNl9tdWx0aSIsInJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllcyQwIiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvIiwibm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZSIsInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyIsIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTEiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiIsImRhdGVfbmFpc3NhbmNlX2Fzc3VyZSIsImFnZV9vdXZlcnR1cmVfZHJvaXQiLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudCIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIiwibW9kZV9vY2N1cGF0aW9uIiwiYWlkZV92ZXJzZWUiLCJtb250YW50X2FwbCIsIm1vbnRhbnRfY2hhcmdlcyIsImRlcGVuc2VfbG9nZW1lbnQiLCJtb250YW50X2RldHRlIiwibW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSIsImRlcGVuc2VfbG9nZW1lbnRfYnJ1dGUiLCJ0b3RhbF9lY2hlYW5jZXMiLCJtZW5zdWFsaXRlIiwibG95ZXIiLCJ0b3RhbCIsIm1vbnRhbnRfbG95ZXIiLCJkZXBlbnNlX2xvZ2VtZW50X25ldHRlIiwiZWNoZWFuY2VfcHJldF9uZXR0ZSIsIm1lbnN1YWxpdGVfbmV0dGUiLCJlY2hlYW5jZV9wcmV0X2JydXRlIiwibWVuc3VhbGl0ZV9icnV0ZSIsImxveWVyX25ldCIsImxveWVyX2JydXQiLCJzZXVpbF9pbXBheWVfZGVwZW5zZV9kZV9sb2dlbWUiLCJtb250YW50X2ltcGF5ZSIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ1IiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDUiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hJDEiLCJzbWljJDEiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UiLCJsb3llcl9wcmluY2lwYWxfYmFzZSIsImJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbiIsInpvbmUiLCJsb2dlbWVudF9lc3RfY2hhbWJyZSIsImFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZSIsInR5cGVfYWlkZSIsImNvbG9jYXRpb24iLCJyZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZSIsImxvZ2VtZW50X21ldWJsZV9kODQyXzIiLCJmcmFjdGlvbl9sODMyXzMiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTYiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXQiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb24iLCJ0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSIsImFiYXR0ZW1lbnRfZm9yZmFpdGFpcmVfZDgyM18xNyIsImxveWVyX3JlZmVyZW5jZSIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMTYiLCJwbGFmb25kX2xveWVyX2Q4MjNfMTZfMiIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kOCIsImxveWVyX3ByaW5jaXBhbF9hdmVjX3JlZHVjdGlvbiIsInBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNiIsInBsYWZvbmRfZGVncmVzc2l2aXRlX2Q4MjNfMTYiLCJsb3llcl9lbGlnaWJsZSIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51ZSIsInBhcnRpY2lwYXRpb25fbWluaW1hbGUiLCJyYXBwb3J0X2xveWVycyIsImFpZGVfZmluYWxlJDAiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXQiLCJ0YXV4X2xveWVyX2VsaWdpYmxlX2Zvcm11bGUiLCJjcmRzIiwiYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmliIiwidGF1eF9sb3llcl9lbGlnaWJsZV90YXV4X2Fycm9uIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWR1Y3RpIiwidGF1eF9wcmlzZV9jb21wdGVfcmVzc291cmNlcyIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudCIsInBhcnRpY2lwYXRpb25fcmVzc291cmNlcyIsInBhcnRpY2lwYXRpb25fcmVzc291cmNlcyQwIiwicGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSIsImFpZGVfZmluYWxlX2Zvcm11bGUiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMCIsInR5cGVfbG9nZW1lbnRfZm95ZXIiLCJkYXRlX2NvbnZlbnRpb25uZW1lbnQiLCJyZWRldmFuY2UiLCJjb2VmZmljaWVudF9yX2Q4MzJfMjUiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjQiLCJtb250YW50X21pbmltYWxfYWlkZV9kODIzXzI0IiwiY29uZGl0aW9uXzJfZHVfODMyXzI1JDAiLCJwbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWciLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9jb25kaXQiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9ub21icmUiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXQiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWIiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjciLCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMiLCJlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSIsIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUkMCIsImFsbG9jYXRpb25fbWVuc3VlbGxlIiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3IiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDAiLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kMSIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSQyIiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDMiLCJkZW5vbWluYXRldXIiLCJkZW5vbWluYXRldXIkMCIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kOCIsImRlcGVuc2VfbmV0dGVfbWluaW1hbGUiLCJhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW0iLCJlcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kOCQwIiwiYWlkZV9maW5hbGUkMSIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbSIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kOCQxIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEiLCJtZW5zdWFsaXRlX3ByaW5jaXBhbGUiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnQiLCJkYXRlX3NpZ25hdHVyZV9wcmV0IiwibG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuIiwiZGF0ZV9lbnRyZWVfbG9nZW1lbnQiLCJjb3Byb3ByaWV0ZSIsInNpdHVhdGlvbl9yODIyXzExXzEzXzE3IiwidHlwZV9wcmV0IiwiYW5jaWVubmV0ZV9sb2dlbWVudCIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8xMCIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MzJfMTAiLCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMkMCIsIm1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMSIsInRhdXhfdHJhbmNoZV9pbmZlcmlldXJlX2Q4MzJfMSIsInRhdXhfdHJhbmNoZV9zdXBlcmlldXJlX2Q4MzJfMSIsInRhdXhfZnJhbmNzX3ZlcnNfZXVyb3MiLCJhbWVsaW9yZV9wYXJfb2NjdXBhbnQiLCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMkMSIsInJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfZDgzMl8xOCIsImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDgzMiIsImRlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMCIsInBsYWZvbmRfc2lnbmF0dXJlIiwicGxhZm9uZF9lbnRyZWUiLCJwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2IiLCJwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2MiLCJtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzEkMCIsIm1lbnN1YWxpdGVfbWluaW1hbGUiLCJtZW5zdWFsaXRlX2VsaWdpYmxlIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sIiwicmVzc291cmNlc19kZW1hbmRldXIiLCJyZXNzb3VyY2VzX2NvbmpvaW50IiwicGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVuIiwiZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11IiwiY29uam9pbnRfZXhlcmNlX2FjdGl2aXRlX3JlbXVuIiwicGVyc29ubmVzX2FfY2hhcmdlIiwic2l0dWF0aW9uX2ZhbWlsaWFsZSIsImNvbmRpdGlvbl9hZ2VfYm91cnNlX2Vuc2VpZ25lbSIsImRlbWFuZGV1cl9wb3Vyc3VpdF9kZXNfZXR1ZGVzIiwiZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0IiwicGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvIiwibW9udGFudF9mb3JmYWl0YWlyZV9yXzgyMl84IiwibW9udGFudF9mb3JmYWl0YWlyZV9yXzgyMl83IiwicmVzc291cmNlc19mb3JmYWl0YWlyZXNfcjgyMl8yIiwicGVyc29ubmUiLCJyZXNzb3VyY2VzX3BlcnNvbm5lc192aXZhbnRfaGEiLCJhYmF0dGVtZW50IiwicmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlIiwiYWNjIiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfIiwibWVuYWdlIiwiZGVtYW5kZXVyIiwiY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wIiwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2UiLCJwcmV0Iiwic2V1aWxfbDgyMl8zX3BhcnRzX3Byb3ByaWV0ZSIsInNldWlsX2w4MjJfM19wYXJ0c191c3VmcnVpdCIsInNldWlsX2w4MjJfNV9wYXRyaW1vaW5lIiwidXN1ZnJ1aXRfb3VfcHJvcHJpZXRlX2ZhbWlsbGUiLCJjb25kaXRpb25fbm9uX291dmVydHVyZV9sODIyXzkiLCJjb25kaXRpb25fbm9uX291dmVydHVyZV9sODIyXzgiLCJub21icmVfcGVyc29ubmVzX2xvZ2VtZW50IiwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfbWluIiwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2UkMCIsImNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcCQwIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfJDAiLCJwYXRyaW1vaW5lX3RvdGFsX2RlbWFuZGV1ciIsImNvbmRpdGlvbnMiLCJjb25kaXRpb25fbmF0aW9uYWxpdGUiLCJwbGFmb25kX2luZGl2aWR1ZWxfbDgxNV85X3NlY3UiLCJjb25kaXRpb25fbG9nZW1lbnRfbG9jYXRpb25fdGkiLCJ1c3VmcnVpdF9vdV9wcm9wcmlldGVfZmFtaWxsZSQwIiwicGFydHMiLCJwYXJ0cyQwIiwicGFydHMkMSIsInBhcnRzJDIiLCJjb25kaXRpb25fbG9nZW1lbnRfbW9kZV9vY2N1cGEiLCJjb25kaXRpb25fb3V2ZXJ0dXJlX2w4MjJfMTBfcGUiLCJhZ2VfbDE2MV8xN18yX3NlY3UiLCJwcmVzdGF0aW9uIiwiZWxpZ2liaWxpdGVfbG9nZW1lbnQiLCJhZ2VfbDM1MV84XzFfc2VjdSIsImVsaWdpYmlsaXRlIiwicGVyc29ubmVfYV9jaGFyZ2UiLCJwYXJlbnQiLCJjb25kaXRpb25fMl9yODIzXzQiLCJwcmlzZV9lbl9jb21wdGVfcGVyc29ubmVfYV9jaGEiLCJwZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2MiLCJjb2VmZiIsImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZSIsIm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpcyIsImVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyIsImxveWVyX3ByaW5jaXBhbCIsImNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb3llcl9wIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZXNzb3VyIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9iZW5lZmljIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9kYXRlX2NvIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9ub21icmVfIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9zaXR1YXRpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF96b25lIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVuIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9hZ2Vlc19vIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90eXBlX2FpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9jb2xvY2F0IiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZWR1Y3RpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVuJDAiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2FpZGVfZmkiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3RyYWl0ZW0iLCJpbmZvcyIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGUiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kiLCJjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDgiLCJtb250YW50X21pbmltYWxfYWlkZV9kODQyXzE1IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzE1IiwibW9udGFudF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDAiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kMSIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQyIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDMiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kNCIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ1IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDYiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kNyIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ4IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDkiLCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXMiLCJlcXVpdmFsZW5jZV9sb3llciIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZSIsImxveWVyX21pbmltYWwiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RlcGVuc2UiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW4iLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MiLCJyZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmEiLCJjaGFyZ2VzX21lbnN1ZWxsZXNfcHJldCIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml82IiwibW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml82IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzExIiwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzEyIiwiY29lZmZpY2llbnRfZDg0Ml8xMSIsImNvZWZmaWNpZW50X2Q4NDJfMTIiLCJkYXRlX2NhbGN1bCIsImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0MiIsInNldWlsX21pbmltYWxfcmVzc291cmNlc19tZW5hZyIsImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0MiQwIiwicmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NlIiwicGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNiIsInNldWlsX21pbmltYWxfZGVwZW5zZV9uZXR0ZV9taSIsImRlcGVuc2VfbmV0dGVfbWluaW1hbGUkMCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyIiwicmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpIiwibG9jYXRpb24iLCJsb2dlbWVudGZveWVyIiwicHJvcHJpZXRhaXJlIiwibG9jYXRpb24kMCIsInByb3ByaWV0YWlyZSQwIiwiY2F0ZWdvcmllX2NhbGN1bF9hcGwiLCJyZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGkiLCJiYWlsbGV1ciIsInBhcmFtMCIsInRyYWl0ZW1lbnRfZm9ybXVsZSIsInRyYWl0ZW1lbnRfZm9ybXVsZSQwIiwibG9nZW1lbnRfZm95ZXIiLCJyZXN1bHQkMyIsInJlc3VsdCQ0IiwidHJhaXRlbWVudF9mb3JtdWxlJDEiLCJzb3VzX2NhbGN1bF90cmFpdGVtZW50IiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtIiwiaW5mb3JtYXRpb25zIiwiZGF0ZV9lbW1lbmFnZW1lbnQiLCJkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnQiLCJkZWxhaV9hcHJlc19lbW1lbmFnZW1lbnRfbDgyM18iLCJjb25kaXRpb25fcmFuZ19lbmZhbnQiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X21lbmFnZSIsImVsaWdpYmlsaXRlX2FwbF9kb3RfZGVtYW5kZXVyIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fJDAiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2RhdGVfY291cmEkMCIsImVsaWdpYmlsaXRlX2FwbF9kb3RfZWxpZ2liaWxpdCIsImRhdGVfbmFpc3NhbmNlX291X2dyb3NzZXNzZSIsImNvbmRpdGlvbl9wZXJpb2RlX2RlbWVuYWdlbWVudCIsInBsYWZvbmRfZDgyM18yMiIsIm1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50IiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlIiwiY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV8xIiwiY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV82IiwicHJvcHJpZXRlIiwicHJvcHJpZXRlJDAiLCJjb25kaXRpb25fbG9nZW1lbnRfcHJldCIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X21lbmFnZSIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RlbWFuZCIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfYyIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdCIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdCQwIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZWxpZ2liIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3Rfbm9tYnJlIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29lZmZpIiwiY29udmVudGlvbiIsImNvbnZlbnRpb24kMCIsImNvbmRpdGlvbl9sb2dlbWVudF9iYWlsbGV1ciIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiIsImJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbCIsImR1cmVlX2w4NDFfMV8zIiwiY29uZGl0aW9uX2FjY2Vzc2lvbl9wcm9wcmlldGUiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXQkMSIsImVsaWdpYmlsaXRlX2Rpc3Bvc2l0aW9uc19jb21tdSIsImRhdGVfbWFyaWFnZSIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQwIiwiZWxpZ2liaWxpdGVfbDg0MV8yIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiIsImJhaWxsZXVyJDAiLCJyZXN1bHQkNSIsInJlc3VsdCQ2IiwidHJhaXRlbWVudF9mb3JtdWxlJDIiLCJyZXN1bHQkNyIsInJlc3VsdCQ4IiwidHJhaXRlbWVudF9mb3JtdWxlJDMiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pIiwicmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDEiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kMiIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQzIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDQiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kNSIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQwIiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDEiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkMiIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQzIiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDQiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkNSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQwIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDEiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkMiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQzIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkNSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQ2IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDciLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ0IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDUiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkNiIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ3IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDgiLCJhaWRlX2ZpbmFsZV9hcGwiLCJhaWRlX2ZpbmFsZV9hbCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyIsIm1lbmFnZV9zYW5zX2VuZmFudHNfZ2FyZGVfYWx0ZSIsImNhbGN1bGV0dGVfZG90X21lbmFnZSIsImNhbGN1bGV0dGVfZG90X2RlbWFuZGV1ciIsImNhbGN1bGV0dGVfZG90X2RhdGVfY291cmFudGUiLCJjYWxjdWxldHRlX2RvdF9yZXNzb3VyY2VzX21lbmEiLCJjYWxjdWxldHRlX2RvdF9lbGlnaWJpbGl0ZSIsImNhbGN1bGV0dGVfZG90X2FpZGVfZmluYWxlX2ZvciIsImNhbGN1bGV0dGVfZG90X3RyYWl0ZW1lbnRfYWlkZSIsImNhbGN1bGV0dGVfZG90X2NvZWZmaWNlbnRzX2VuZiIsImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZSIsImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZSQwIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlJDEiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUkMiIsImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZSQzIiwidHlwZV9wcmV0X3RvX2pzb28iLCJ0eXBlX3ByZXRfb2ZfanNvbyIsInRpdHVsYWlyZV9wcmV0X3RvX2pzb28iLCJ0aXR1bGFpcmVfcHJldF9vZl9qc29vIiwidGl0dWxhaXJlX3ByZXQiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV8iLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV8kMCIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1IiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV90IiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV9vIiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSIsImFtZWxpb3JlX3Bhcl9vY2N1cGFudF90b19qc29vIiwiYW1lbGlvcmVfcGFyX29jY3VwYW50X29mX2pzb28iLCJsaW1pdGVfdHJhbmNoZV90b19qc29vIiwibGltaXRlX3RyYW5jaGVfb2ZfanNvbyIsImxpbWl0ZV90cmFuY2hlIiwibGltaXRlX3RyYW5jaGVfZGVjaW1hbF90b19qc29vIiwibGltaXRlX3RyYW5jaGVfZGVjaW1hbF9vZl9qc29vIiwibGltaXRlX3RyYW5jaGVfZGVjaW1hbCIsInByZXN0YXRpb25fcmVjdWVfdG9fanNvbyIsInByZXN0YXRpb25fcmVjdWVfb2ZfanNvbyIsInByZXN0YXRpb25fcmVjdWUiLCJwYXJlbnRfb3VfYXV0cmVfdG9fanNvbyIsInBhcmVudF9vdV9hdXRyZV9vZl9qc29vIiwicGFyZW50X291X2F1dHJlIiwic2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlX3RvX2pzIiwic2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlX29mX2pzIiwic2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlIiwicGFyZW50ZV90b19qc29vIiwicGFyZW50ZV9vZl9qc29vIiwicGFyZW50ZSIsImRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZyIsImRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZyQwIiwiem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyIsInpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb28iLCJ6b25lX2RfaGFiaXRhdGlvbiIsInBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3BybyQwIiwidmVyc2VtZW50X2FfdG9fanNvbyIsInZlcnNlbWVudF9hX29mX2pzb28iLCJ2ZXJzZW1lbnRfYSIsImRlcGVuc2VfbG9nZW1lbnRfdG9fanNvbyIsImRlcGVuc2VfbG9nZW1lbnRfb2ZfanNvbyIsIm1vZGVfb2NjdXBhdGlvbl9pbXBheWVfdG9fanNvbyIsIm1vZGVfb2NjdXBhdGlvbl9pbXBheWVfb2ZfanNvbyIsInR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sbyIsInR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sbyQwIiwidHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVuIiwidHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVuJDAiLCJzaXR1YXRpb25fZmFtaWxpYWxlX3RvX2pzb28iLCJzaXR1YXRpb25fZmFtaWxpYWxlX29mX2pzb28iLCJwcmlzZV9lbl9jaGFyZ2VfdG9fanNvbyQwIiwicHJpc2VfZW5fY2hhcmdlX29mX2pzb28kMCIsInR5cGVfbG9nZW1lbnRfZm95ZXJfdG9fanNvbyIsInR5cGVfbG9nZW1lbnRfZm95ZXJfb2ZfanNvbyIsImNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbCIsImNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbCQwIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wJDAiLCJjb2xsZWN0aXZpdGVfdG9fanNvbyQwIiwiY29sbGVjdGl2aXRlX29mX2pzb28kMCIsInByaXNlX2VuX2NoYXJnZV9lbmZhbnRfdG9fanNvbyIsInByaXNlX2VuX2NoYXJnZV9lbmZhbnRfb2ZfanNvbyIsInByaXNlX2VuX2NoYXJnZV9lbmZhbnQiLCJzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV8kMSIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXyQyIiwiZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzJDEiLCJlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMkMiIsImNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsX3RvXyIsImNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsIiwiY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWxfb2ZfIiwiY29udmVudGlvbl9hX25faF9hX3RvX2pzb28iLCJjb252ZW50aW9uX2Ffbl9oX2EiLCJjb252ZW50aW9uX2Ffbl9oX2Ffb2ZfanNvbyIsInBlcnNvbm5lX3NvdXNfbG9jYXRpb25fdG9fanNvbyIsInBlcnNvbm5lX3NvdXNfbG9jYXRpb24iLCJwZXJzb25uZV9zb3VzX2xvY2F0aW9uX29mX2pzb28iLCJwYXRyaW1vaW5lX3RvX2pzb28iLCJwYXRyaW1vaW5lIiwicGF0cmltb2luZV9vZl9qc29vIiwiY29uZGl0aW9uc19ldHJhbmdlcnNfdG9fanNvbyIsImNvbmRpdGlvbnNfZXRyYW5nZXJzIiwiY29uZGl0aW9uc19ldHJhbmdlcnNfb2ZfanNvbyIsInBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudCIsInBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudCQwIiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtJDAiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMSIsInJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbCQwIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDEiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AkMCIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQxIiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvJDAiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMSIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQwIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDEiLCJ0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUiLCJ0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUkMCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ5IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEwIiwiaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyIiwiaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyJDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MkMCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQxIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjJDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSQwIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDEiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF90b18iLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vZl8iLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX3RvX2oiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX29mX2oiLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudF90b19qc28iLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vZl9qc28iLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X3QiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X28iLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckMCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyQxIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDYiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kNyIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyQ2IiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDciLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX3QkMCIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfbyQwIiwic21pY190b19qc29vJDAiLCJzbWljX29mX2pzb28kMCIsInByZXRfdG9fanNvbyIsInByZXRfb2ZfanNvbyIsIm5ldWZfb3VfYW5jaWVuX3RvX2pzb28iLCJuZXVmX291X2FuY2llbl9vZl9qc29vIiwibmV1Zl9vdV9hbmNpZW4iLCJ0cmFuY2hlX3JldmVudV90b19qc29vIiwidHJhbmNoZV9yZXZlbnUiLCJ0cmFuY2hlX3JldmVudV9vZl9qc29vIiwidHJhbmNoZV9yZXZlbnVfZGVjaW1hbF90b19qc29vIiwidHJhbmNoZV9yZXZlbnVfZGVjaW1hbCIsInRyYW5jaGVfcmV2ZW51X2RlY2ltYWxfb2ZfanNvbyIsImF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX3RvX2pzbyIsImF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIiwiYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvIiwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2RlIiwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2RlJDAiLCJsb2dlbWVudF9mb3llcl90b19qc29vIiwibG9nZW1lbnRfZm95ZXJfb2ZfanNvbyIsImVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXyIsImVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwiZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfJDAiLCJlbmZhbnRfYV9jaGFyZ2VfdG9fanNvbyIsImVuZmFudF9hX2NoYXJnZSIsImVuZmFudF9hX2NoYXJnZV9vZl9qc29vIiwidHlwZV9iYWlsbGV1cl90b19qc29vIiwidHlwZV9iYWlsbGV1cl9vZl9qc29vIiwidHlwZV9iYWlsbGV1ciIsImxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXyIsImxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXyQwIiwibG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMiLCJuYXRpb25hbGl0ZV90b19qc29vIiwibmF0aW9uYWxpdGVfb2ZfanNvbyIsIm5hdGlvbmFsaXRlIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfIiwicHJvcHJpZXRhaXJlX3RvX2pzb28iLCJwcm9wcmlldGFpcmVfb2ZfanNvbyIsImluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZSIsImluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZSQwIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpJDAiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMSIsInBlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28iLCJwZXJzb25uZV9hX2NoYXJnZV9vZl9qc29vIiwiZGVtYW5kZXVyX3RvX2pzb28iLCJkZW1hbmRldXJfb2ZfanNvbyIsImxvY2F0aW9uX3RvX2pzb28iLCJsb2NhdGlvbl9vZl9qc29vIiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfJDAiLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMSIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2xfdG9fanNvbyIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2xfb2ZfanNvbyIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2wiLCJtb2RlX29jY3VwYXRpb25fdG9fanNvbyIsIm1vZGVfb2NjdXBhdGlvbl9vZl9qc29vIiwibG9nZW1lbnRfdG9fanNvbyIsImxvZ2VtZW50IiwibG9nZW1lbnRfb2ZfanNvbyIsIm1lbmFnZV90b19qc29vIiwibWVuYWdlX29mX2pzb28iLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMiIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQzIiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtJDIiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMyIsInJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbCQyIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDMiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AkMiIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDExIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEyIiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvJDIiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxNCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQyIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDMiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTUiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTYiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTciLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTgiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MkMiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQzIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjJDIiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSQyIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDMiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl8iLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl8kMCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fdCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fbyIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX3RvXyIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX29mXyIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaSQwIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDIiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckMyIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ4IiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDkiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kOCIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyQ5IiwidmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pJDEiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2kkMiIsInNtaWNfaW5fdG9fanNvbyQwIiwic21pY19pbl9vZl9qc29vJDAiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMiIsImVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaSQzIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wJDQiLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kNCIsImNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mbyQ0IiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDQiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlJDAiLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudCQwIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDEwIiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDEwIiwidmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSQyIiwic21pYyQyIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDE5IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDIwIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDIxIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDQiLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kNCIsImVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaSQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jJDQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kkNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjYyQ0IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDIyIiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtJDQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCQwIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCQwIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDQiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ciLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwiXSwic291cmNlcyI6WyIiLCIvYnVpbHRpbi8raW50NjQuanMiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLytmYWlsLmpzIiwiL2J1aWx0aW4vK3N0ZGxpYi5qcyIsIi9idWlsdGluLytmb3JtYXQuanMiLCIvYnVpbHRpbi8raWVlZV83NTQuanMiLCIvYnVpbHRpbi8rZnNfbm9kZS5qcyIsIi9idWlsdGluLytmcy5qcyIsIi9idWlsdGluLyt1bml4LmpzIiwiL2J1aWx0aW4vK3N5cy5qcyIsIi9idWlsdGluLytmc19mYWtlLmpzIiwiL2J1aWx0aW4vK25hdC5qcyIsIi9idWlsdGluLytncmFwaGljcy5qcyIsIi9idWlsdGluLyttYXJzaGFsLmpzIiwiL2J1aWx0aW4vK2lvLmpzIiwiL2J1aWx0aW4vK2djLmpzIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi96YXJpdGhfc3R1YnNfanMvYmlnaW50ZWdlci5qcyIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvemFyaXRoX3N0dWJzX2pzL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rYmlnYXJyYXkuanMiLCIvYnVpbHRpbi8ranNsaWIuanMiLCIvYnVpbHRpbi8rcGFyc2luZy5qcyIsIi9idWlsdGluLytpbnRzLmpzIiwiL2J1aWx0aW4vK2hhc2guanMiLCIvYnVpbHRpbi8rY29tcGFyZS5qcyIsIi9idWlsdGluLytqc2xpYl9qc19vZl9vY2FtbC5qcyIsIi9idWlsdGluLytvYmouanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2J1aWx0aW4vK2JhY2t0cmFjZS5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvYnVpbHRpbi8rYXJyYXkuanMiLCIvYnVpbHRpbi8rd2Vhay5qcyIsIi9idWlsdGluLyttZDUuanMiLCIvYnVpbHRpbi8rc3RyLmpzIiwiL2J1aWx0aW4vK2JpZ3N0cmluZy1jc3RydWN0LmpzIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC91Y2hhci5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvaW50NjQubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2xleGluZy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2FtbGludGVybmFsRm9ybWF0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9wcmludGV4Yy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZmlsZW5hbWUubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NvbXBsZXgubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2FtbGludGVybmFsQXRvbWljLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9zdGRsaWIubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3BlcnZhc2l2ZXMubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2Zsb2F0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9yYW5kb20ubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2xpc3QubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2luX2NoYW5uZWwubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL291dF9jaGFubmVsLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9laXRoZXIubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL25hdGl2ZWludC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvb2JqLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jYW1saW50ZXJuYWxMYXp5Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9sYXp5Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9zZXEubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL29wdGlvbi5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvcmVzdWx0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9ib29sLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jaGFyLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9ieXRlcy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvaW50Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9zdHJpbmcubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3VuaXQubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL21hcnNoYWwubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2FycmF5Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9pbnQzMi5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvcGFyc2luZy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc2V0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9tYXAubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3N0YWNrLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9xdWV1ZS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc3RyZWFtLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9idWZmZXIubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3ByaW50Zi5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvYXJnLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9mdW4ubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2djLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9kaWdlc3QubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2hhc2h0YmwubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3dlYWsubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2Zvcm1hdC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc2NhbmYubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NhbGxiYWNrLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jYW1saW50ZXJuYWxPTy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2FtbGludGVybmFsTW9kLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9nZW5sZXgubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2VwaGVtZXJvbi5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvYmlnYXJyYXkubWwiLCIvd29ya3NwYWNlX3Jvb3QvcnVudGltZXMvb2NhbWwvcnVudGltZS5tbCIsIiIsIiIsIi93b3Jrc3BhY2Vfcm9vdC9ydW50aW1lcy9qc29vL3J1bnRpbWUubWwiLCIvd29ya3NwYWNlX3Jvb3QvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMubWwiLCIvd29ya3NwYWNlX3Jvb3QvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfYXBpX3dlYi5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9mcmVuY2hfbGF3L29jYW1sL2xhd19zb3VyY2UvYWlkZXNfbG9nZW1lbnQubWwiLCIvd29ya3NwYWNlX3Jvb3QvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FpZGVzX2xvZ2VtZW50X2FwaV93ZWIubWwiLCIvd29ya3NwYWNlX3Jvb3QvZnJlbmNoX2xhdy9vY2FtbC9hcGlfd2ViLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9zdGRfZXhpdC5tbCJdLCJtYXBwaW5ncyI6Ijs7Q0FDQyxTQUFVQTtXQUNGQzs7OztLQUNMQztPQUNFO1FBQ0M7VUFBc0JGLDhDQUVoQkc7UUFDSEM7SUFFUixTQUFTRDtNQUNQLElBQUlFLE9BQVNILFFBQVFJO01BQ3JCRCxvQkFBb0JBO2FBQ2JMLG9CQUNULENBYkQ7R0FjQ0E7Ozs7SUMyTkYsU0FBU08sbUJBQW1CQyxHQUFLLFNBQVEsVUFBWTtJQ3pMckQsU0FBU0MsZ0JBQWdCQyxFQUFHQztNQUMxQixHQUFHRCxPQUFRO01BQ1gsR0FBSUMsU0FBVSxPQUFRLFNBQVNEO01BQy9CLElBQU0sS0FBUTtNQUNkO09BQVEsQ0FDTixHQUFJQSxNQUFPRSxLQUFLRDtRQUNoQkQ7UUFDQSxHQUFJQSxPQUFRLE9BQU9FO1FBQ25C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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7Ozs7Ozs7SXdCbldEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0NrQktDO0tBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDd0JBQztLQUNBQztLQUNBQztLQUlBQztLQUNBQzs7OztLQ3pCQUM7S0FtSEFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0NvOUVNQztLQVFRQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0NsbEZkQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQ3NFRUM7S0FDQUM7S0FDQUM7S0FDQUM7OztLQS9FWUM7S0FtSFpDO0tBQ0FDO0tBQ0FDO0tBQ0FDOzs7S0FtSUFDO0tBQ0FDO0tBQ0FDO0tBQ0FDOzs7S0N4UEZDO0tBQ0FDO0tBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthQzBmSUM7O09Ba0NZ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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YUMwQkNnakY7Ozs7Ozs7O09BTUVPOzs7Ozs7T0FEQUU7MENBQ0FEO09BRkFHO3dDQUNBRDtPQUZBRzs0Q0FDQUQ7T0FGQUc7MENBQ0FEO09BRkFHO3dDQUNBRDswQkFEQUUsT0FPb0I7Ozs7Ozs7Ozs7O2FBVWxCQyxzQkFBdUJDLE9BQTBCLHVCQUExQkEsTUFB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZUNDQ0EsV0RERCw2QkNDQ0MsS0RERCxJQ0NDQztJREREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1Q0NDQ0MsdUJEREQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0JDQ0NDLE1EREQ7Ozs7Ozs7Ozs7eUJDQ0NBLE1EREQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDT3dCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUVNOzs7O3VCQUhZQTt1Q0FNSztpQkFMdkIsOENBS3dCLEVBQUM7O01BakJaO3dCQUFLQztpQkFDbEI7bUJBRU07Ozs7dUJBSFlBOzBDQU1RO2lCQUwxQiw4Q0FLMkIsRUFBQztJQVp2Qzs7Ozs7OztVRDNCSDs7Ozs7OztJQ0FBOzs7O0lDa0JTOzs7VURsQlQiLCJzb3VyY2VzQ29udGVudCI6W251bGwsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mZnNldFxudmFyIGNhbWxfaW50NjRfb2Zmc2V0ID0gTWF0aC5wb3coMiwgLTI0KTtcblxuLy9Qcm92aWRlczogTWxJbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIE1sSW50NjQgKGxvLG1pLGhpKSB7XG4gIHRoaXMubG8gPSBsbyAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gbWkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IGhpICYgMHhmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBcIl9qXCJcbk1sSW50NjQucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvLHRoaXMubWksdGhpcy5oaSk7XG59XG5cbk1sSW50NjQucHJvdG90eXBlLnVjb21wYXJlID0gZnVuY3Rpb24gKHgpIHtcbiAgaWYgKHRoaXMuaGkgPiB4LmhpKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMuaGkgPCB4LmhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+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+XG5cbiAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90XG4gICB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZlxuICAgdGhlIExpY2Vuc2UgYXRcblxuICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVFxuICAgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlXG4gICBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlclxuICAgdGhlIExpY2Vuc2UuICopXG5cbigqIEFuIGludGVnZXIgbnVtYmVyIG9mIGNlbnRzICopXG50eXBlIG1vbmV5ID0gWi50XG50eXBlIGludGVnZXIgPSBaLnRcbnR5cGUgZGVjaW1hbCA9IFEudFxudHlwZSBkYXRlID0gRGF0ZXNfY2FsYy5EYXRlcy5kYXRlXG50eXBlIGRhdGVfcm91bmRpbmcgPSBEYXRlc19jYWxjLkRhdGVzLmRhdGVfcm91bmRpbmdcbnR5cGUgZHVyYXRpb24gPSBEYXRlc19jYWxjLkRhdGVzLnBlcmlvZFxudHlwZSAnYSBlb3B0aW9uID0gRU5vbmUgb2YgdW5pdCB8IEVTb21lIG9mICdhXG5cbnR5cGUgc291cmNlX3Bvc2l0aW9uID0ge1xuICBmaWxlbmFtZSA6IHN0cmluZztcbiAgc3RhcnRfbGluZSA6IGludDtcbiAgc3RhcnRfY29sdW1uIDogaW50O1xuICBlbmRfbGluZSA6IGludDtcbiAgZW5kX2NvbHVtbiA6IGludDtcbiAgbGF3X2hlYWRpbmdzIDogc3RyaW5nIGxpc3Q7XG59XG5bQEBkZXJpdmluZyB5b2pzb25fb2ZdXG5cbmV4Y2VwdGlvbiBFbXB0eUVycm9yXG5leGNlcHRpb24gQXNzZXJ0aW9uRmFpbGVkIG9mIHNvdXJjZV9wb3NpdGlvblxuZXhjZXB0aW9uIENvbmZsaWN0RXJyb3Igb2Ygc291cmNlX3Bvc2l0aW9uXG5leGNlcHRpb24gVW5jb21wYXJhYmxlRHVyYXRpb25zXG5leGNlcHRpb24gSW5kaXZpc2libGVEdXJhdGlvbnNcbmV4Y2VwdGlvbiBJbXBvc3NpYmxlRGF0ZVxuZXhjZXB0aW9uIE5vVmFsdWVQcm92aWRlZCBvZiBzb3VyY2VfcG9zaXRpb25cblxubGV0IG1vbmV5X29mX2NlbnRzX3N0cmluZyAoY2VudHMgOiBzdHJpbmcpIDogbW9uZXkgPSBaLm9mX3N0cmluZyBjZW50c1xubGV0IG1vbmV5X29mX3VuaXRzX2ludCAodW5pdHMgOiBpbnQpIDogbW9uZXkgPSBaLihvZl9pbnQgdW5pdHMgKiBvZl9pbnQgMTAwKVxubGV0IG1vbmV5X29mX2NlbnRzX2ludGVnZXIgKGNlbnRzIDogaW50ZWdlcikgOiBtb25leSA9IGNlbnRzXG5sZXQgbW9uZXlfdG9fZmxvYXQgKG0gOiBtb25leSkgOiBmbG9hdCA9IFoudG9fZmxvYXQgbSAvLiAxMDAuXG5cbmxldCBtb25leV9vZl9kZWNpbWFsIChkIDogZGVjaW1hbCkgOiBtb25leSA9XG4gIFEudG9fYmlnaW50IChRLm11bCBkIChRLm9mX2ludCAxMDApKVxuXG5sZXQgbW9uZXlfdG9fc3RyaW5nIChtIDogbW9uZXkpIDogc3RyaW5nID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJS4yZlwiIFEuKHRvX2Zsb2F0IChvZl9iaWdpbnQgbSAvIG9mX2ludCAxMDApKVxuXG5sZXQgbW9uZXlfdG9fY2VudHMgbSA9IG1cblxubGV0IG1vbmV5X3JvdW5kIChtIDogbW9uZXkpIDogbW9uZXkgPVxuICBsZXQgdW5pdHMsIGNlbnRzID0gWi5kaXZfcmVtIG0gKFoub2ZfaW50IDEwMCkgaW5cbiAgKCogSWYgW21dIGlzIG5lZ2F0aXZlLCBbY2VudHNdIHdpbGwgYWxzbyBiZSBuZWdhdGl2ZS4gKilcbiAgaWYgWi4oYWJzIGNlbnRzIDwgb2ZfaW50IDUwKSB0aGVuIFouKHVuaXRzICogb2ZfaW50IDEwMClcbiAgZWxzZSBaLigodW5pdHMgKyBvZl9pbnQgKHNpZ24gdW5pdHMpKSAqIG9mX2ludCAxMDApXG5cbmxldCBkZWNpbWFsX29mX3N0cmluZyAoZCA6IHN0cmluZykgOiBkZWNpbWFsID0gUS5vZl9zdHJpbmcgZFxubGV0IGRlY2ltYWxfdG9fZmxvYXQgKGQgOiBkZWNpbWFsKSA6IGZsb2F0ID0gUS50b19mbG9hdCBkXG5sZXQgZGVjaW1hbF9vZl9mbG9hdCAoZCA6IGZsb2F0KSA6IGRlY2ltYWwgPSBRLm9mX2Zsb2F0IGRcbmxldCBkZWNpbWFsX29mX2ludGVnZXIgKGQgOiBpbnRlZ2VyKSA6IGRlY2ltYWwgPSBRLm9mX2JpZ2ludCBkXG5cbmxldCBkZWNpbWFsX3RvX3N0cmluZyB+KG1heF9wcmVjX2RpZ2l0cyA6IGludCkgKGkgOiBkZWNpbWFsKSA6IHN0cmluZyA9XG4gIGxldCBzaWduID0gUS5zaWduIGkgaW5cbiAgbGV0IG4gPSBaLmFicyAoUS5udW0gaSkgaW5cbiAgbGV0IGQgPSBaLmFicyAoUS5kZW4gaSkgaW5cbiAgbGV0IGludF9wYXJ0ID0gWi5lZGl2IG4gZCBpblxuICBsZXQgbiA9IHJlZiAoWi5lcmVtIG4gZCkgaW5cbiAgbGV0IGRpZ2l0cyA9IHJlZiBbXSBpblxuICBsZXQgbGVhZGluZ196ZXJvZXMgKGRpZ2l0cyA6IFoudCBsaXN0KSA6IGludCA9XG4gICAgbWF0Y2hcbiAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICAoZnVuIGRpZ2l0IG51bV9sZWFkaW5nX3plcm9lcyAtPlxuICAgICAgICAgIG1hdGNoIG51bV9sZWFkaW5nX3plcm9lcyB3aXRoXG4gICAgICAgICAgfCBgRW5kIF8gLT4gbnVtX2xlYWRpbmdfemVyb2VzXG4gICAgICAgICAgfCBgQmVnaW4gaSAtPiBpZiBaLihkaWdpdCA9IHplcm8pIHRoZW4gYEJlZ2luIChpICsgMSkgZWxzZSBgRW5kIGkpXG4gICAgICAgIGRpZ2l0cyAoYEJlZ2luIDApXG4gICAgd2l0aFxuICAgIHwgYEVuZCBpIC0+IGlcbiAgICB8IGBCZWdpbiBpIC0+IGlcbiAgaW5cbiAgd2hpbGVcbiAgICAhbiA8PiBaLnplcm9cbiAgICAmJiBMaXN0Lmxlbmd0aCAhZGlnaXRzIC0gbGVhZGluZ196ZXJvZXMgIWRpZ2l0cyA8IG1heF9wcmVjX2RpZ2l0c1xuICBkb1xuICAgIG4gOj0gWi5tdWwgIW4gKFoub2ZfaW50IDEwKTtcbiAgICBkaWdpdHMgOj0gWi5lZGl2ICFuIGQgOjogIWRpZ2l0cztcbiAgICBuIDo9IFouZXJlbSAhbiBkXG4gIGRvbmU7XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVzJWEuJWElc1wiXG4gICAgKGlmIHNpZ24gPCAwIHRoZW4gXCItXCIgZWxzZSBcIlwiKVxuICAgIFoucHBfcHJpbnQgaW50X3BhcnRcbiAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgICB+cHBfc2VwOihmdW4gX2ZtdCAoKSAtPiAoKSlcbiAgICAgICAoZnVuIGZtdCBkaWdpdCAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYVwiIFoucHBfcHJpbnQgZGlnaXQpKVxuICAgIChMaXN0LnJldiAhZGlnaXRzKVxuICAgIChpZiBMaXN0Lmxlbmd0aCAhZGlnaXRzIC0gbGVhZGluZ196ZXJvZXMgIWRpZ2l0cyA9IG1heF9wcmVjX2RpZ2l0cyB0aGVuIFwi4oCmXCJcbiAgICBlbHNlIFwiXCIpXG5cbmxldCBkZWNpbWFsX3JvdW5kIChxIDogZGVjaW1hbCkgOiBkZWNpbWFsID1cbiAgKCogSW1wbGVtZW50cyB0aGUgd29ya2Fyb3VuZCBieVxuICAgICBodHRwczovL2dtcGxpYi5vcmcvbGlzdC1hcmNoaXZlcy9nbXAtZGlzY3Vzcy8yMDA5LU1heS8wMDM3NjcuaHRtbCAqKVxuICBsZXQgbiA9IFEubnVtIHEgaW5cbiAgbGV0IGQgPSBRLmRlbiBxIGluXG4gIFEub2ZfYmlnaW50IFouKGZkaXYgKChvZl9pbnQgMiAqIG4pICsgZCkgKG9mX2ludCAyICogZCkpXG5cbmxldCBkZWNpbWFsX29mX21vbmV5IChtIDogbW9uZXkpIDogZGVjaW1hbCA9XG4gIFEuZGl2IChRLm9mX2JpZ2ludCBtKSAoUS5vZl9pbnQgMTAwKVxuXG5sZXQgaW50ZWdlcl9vZl9zdHJpbmcgKHMgOiBzdHJpbmcpIDogaW50ZWdlciA9IFoub2Zfc3RyaW5nIHNcbmxldCBpbnRlZ2VyX3RvX3N0cmluZyAoaSA6IGludGVnZXIpIDogc3RyaW5nID0gWi50b19zdHJpbmcgaVxubGV0IGludGVnZXJfdG9faW50IChpIDogaW50ZWdlcikgOiBpbnQgPSBaLnRvX2ludCBpXG5sZXQgaW50ZWdlcl9vZl9pbnQgKGkgOiBpbnQpIDogaW50ZWdlciA9IFoub2ZfaW50IGlcbmxldCBpbnRlZ2VyX2V4cG9uZW50aWF0aW9uIChpIDogaW50ZWdlcikgKGUgOiBpbnQpIDogaW50ZWdlciA9IFoucG93IGkgZVxubGV0IGludGVnZXJfbG9nMiA9IFoubG9nMlxuXG5sZXQgeWVhcl9vZl9kYXRlIChkIDogZGF0ZSkgOiBpbnRlZ2VyID1cbiAgbGV0IHksIF8sIF8gPSBEYXRlc19jYWxjLkRhdGVzLmRhdGVfdG9feW1kIGQgaW5cbiAgWi5vZl9pbnQgeVxuXG5sZXQgbW9udGhfbnVtYmVyX29mX2RhdGUgKGQgOiBkYXRlKSA6IGludGVnZXIgPVxuICBsZXQgXywgbSwgXyA9IERhdGVzX2NhbGMuRGF0ZXMuZGF0ZV90b195bWQgZCBpblxuICBaLm9mX2ludCBtXG5cbmxldCBpc19sZWFwX3llYXIgKHkgOiBpbnRlZ2VyKSA9XG4gIGxldCB5ID0gWi50b19pbnQgeSBpblxuICBEYXRlc19jYWxjLkRhdGVzLmlzX2xlYXBfeWVhciB5XG5cbmxldCBkYXlfb2ZfbW9udGhfb2ZfZGF0ZSAoZCA6IGRhdGUpIDogaW50ZWdlciA9XG4gIGxldCBfLCBfLCBkID0gRGF0ZXNfY2FsYy5EYXRlcy5kYXRlX3RvX3ltZCBkIGluXG4gIFoub2ZfaW50IGRcblxubGV0IGRhdGVfb2ZfbnVtYmVycyAoeWVhciA6IGludCkgKG1vbnRoIDogaW50KSAoZGF5IDogaW50KSA6IGRhdGUgPVxuICB0cnkgRGF0ZXNfY2FsYy5EYXRlcy5tYWtlX2RhdGUgfnllYXIgfm1vbnRoIH5kYXlcbiAgd2l0aCBfIC0+IHJhaXNlIEltcG9zc2libGVEYXRlXG5cbmxldCBkYXRlX3RvX3N0cmluZyAoZCA6IGRhdGUpIDogc3RyaW5nID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBEYXRlc19jYWxjLkRhdGVzLmZvcm1hdF9kYXRlIGRcblxubGV0IGZpcnN0X2RheV9vZl9tb250aCA9IERhdGVzX2NhbGMuRGF0ZXMuZmlyc3RfZGF5X29mX21vbnRoXG5sZXQgbGFzdF9kYXlfb2ZfbW9udGggPSBEYXRlc19jYWxjLkRhdGVzLmxhc3RfZGF5X29mX21vbnRoXG5cbmxldCBkdXJhdGlvbl9vZl9udW1iZXJzICh5ZWFyIDogaW50KSAobW9udGggOiBpbnQpIChkYXkgOiBpbnQpIDogZHVyYXRpb24gPVxuICBEYXRlc19jYWxjLkRhdGVzLm1ha2VfcGVyaW9kIH55ZWFyczp5ZWFyIH5tb250aHM6bW9udGggfmRheXM6ZGF5XG5cbmxldCBkdXJhdGlvbl90b19zdHJpbmcgKGQgOiBkdXJhdGlvbikgOiBzdHJpbmcgPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIERhdGVzX2NhbGMuRGF0ZXMuZm9ybWF0X3BlcmlvZCBkXG4oKiBicmVha3MgcHJldmlvdXMgZm9ybWF0ICopXG4oKiBsZXQgeCwgeSwgeiA9IENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLnltZCBkIGluXG4gKiBsZXQgdG9fcHJpbnQgPVxuICogICBMaXN0LmZpbHRlciAoZnVuIChhLCBfKSAtPiBhIDw+IDApIFt4LCBcInllYXJzXCI7IHksIFwibW9udGhzXCI7IHosIFwiZGF5c1wiXVxuICogaW5cbiAqIG1hdGNoIHRvX3ByaW50IHdpdGhcbiAqIHwgW10gLT4gXCJlbXB0eSBkdXJhdGlvblwiXG4gKiB8IF8gLT5cbiAqICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICogICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICogICAgICAgIH5wcF9zZXA6KGZ1biBmbXQgKCkgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCIpXG4gKiAgICAgICAgKGZ1biBmbXQgKGQsIGwpIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkICVzXCIgZCBsKSlcbiAqICAgICB0b19wcmludCAqKVxuXG5sZXQgZHVyYXRpb25fdG9feWVhcnNfbW9udGhzX2RheXMgKGQgOiBkdXJhdGlvbikgOiBpbnQgKiBpbnQgKiBpbnQgPVxuICBEYXRlc19jYWxjLkRhdGVzLnBlcmlvZF90b195bWRzIGRcblxubGV0IHlvanNvbl9vZl9tb25leSAobSA6IG1vbmV5KSA9IGBGbG9hdCAobW9uZXlfdG9fZmxvYXQgbSlcbmxldCB5b2pzb25fb2ZfaW50ZWdlciAoaSA6IGludGVnZXIpID0gYEludCAoaW50ZWdlcl90b19pbnQgaSlcbmxldCB5b2pzb25fb2ZfZGVjaW1hbCAoZCA6IGRlY2ltYWwpID0gYEZsb2F0IChkZWNpbWFsX3RvX2Zsb2F0IGQpXG5sZXQgeW9qc29uX29mX2RhdGUgKGQgOiBkYXRlKSA9IGBTdHJpbmcgKGRhdGVfdG9fc3RyaW5nIGQpXG5sZXQgeW9qc29uX29mX2R1cmF0aW9uIChkIDogZHVyYXRpb24pID0gYFN0cmluZyAoZHVyYXRpb25fdG9fc3RyaW5nIGQpXG5cbnR5cGUgcnVudGltZV92YWx1ZSA9XG4gIHwgVW5pdFxuICB8IEJvb2wgb2YgYm9vbFxuICB8IE1vbmV5IG9mIG1vbmV5XG4gIHwgSW50ZWdlciBvZiBpbnRlZ2VyXG4gIHwgRGVjaW1hbCBvZiBkZWNpbWFsXG4gIHwgRGF0ZSBvZiBkYXRlXG4gIHwgRHVyYXRpb24gb2YgZHVyYXRpb25cbiAgfCBFbnVtIG9mIHN0cmluZyBsaXN0ICogKHN0cmluZyAqIHJ1bnRpbWVfdmFsdWUpXG4gIHwgU3RydWN0IG9mIHN0cmluZyBsaXN0ICogKHN0cmluZyAqIHJ1bnRpbWVfdmFsdWUpIGxpc3RcbiAgfCBBcnJheSBvZiBydW50aW1lX3ZhbHVlIGFycmF5XG4gIHwgVW5lbWJlZGRhYmxlXG5bQEBkZXJpdmluZyB5b2pzb25fb2ZdXG5cbmxldCB1bmVtYmVkZGFibGUgXyA9IFVuZW1iZWRkYWJsZVxubGV0IGVtYmVkX3VuaXQgKCkgPSBVbml0XG5sZXQgZW1iZWRfYm9vbCB4ID0gQm9vbCB4XG5sZXQgZW1iZWRfbW9uZXkgeCA9IE1vbmV5IHhcbmxldCBlbWJlZF9pbnRlZ2VyIHggPSBJbnRlZ2VyIHhcbmxldCBlbWJlZF9kZWNpbWFsIHggPSBEZWNpbWFsIHhcbmxldCBlbWJlZF9kYXRlIHggPSBEYXRlIHhcbmxldCBlbWJlZF9kdXJhdGlvbiB4ID0gRHVyYXRpb24geFxubGV0IGVtYmVkX2FycmF5IGYgeCA9IEFycmF5IChBcnJheS5tYXAgZiB4KVxuXG50eXBlIGluZm9ybWF0aW9uID0gc3RyaW5nIGxpc3QgW0BAZGVyaXZpbmcgeW9qc29uX29mXVxuXG50eXBlIHJhd19ldmVudCA9XG4gIHwgQmVnaW5DYWxsIG9mIGluZm9ybWF0aW9uXG4gIHwgRW5kQ2FsbCBvZiBpbmZvcm1hdGlvblxuICB8IFZhcmlhYmxlRGVmaW5pdGlvbiBvZiBpbmZvcm1hdGlvbiAqIHJ1bnRpbWVfdmFsdWVcbiAgfCBEZWNpc2lvblRha2VuIG9mIHNvdXJjZV9wb3NpdGlvblxuXG50eXBlIGV2ZW50ID1cbiAgfCBWYXJDb21wdXRhdGlvbiBvZiB2YXJfZGVmXG4gIHwgRnVuQ2FsbCBvZiBmdW5fY2FsbFxuICB8IFN1YlNjb3BlQ2FsbCBvZiB7XG4gICAgICBuYW1lIDogaW5mb3JtYXRpb247XG4gICAgICBpbnB1dHMgOiB2YXJfZGVmIGxpc3Q7XG4gICAgICBib2R5IDogZXZlbnQgbGlzdDtcbiAgICB9XG5bQEBkZXJpdmluZyB5b2pzb25fb2ZdXG5cbmFuZCB2YXJfZGVmID0ge1xuICBwb3MgOiBzb3VyY2VfcG9zaXRpb24gb3B0aW9uO1xuICBuYW1lIDogaW5mb3JtYXRpb247XG4gIHZhbHVlIDogcnVudGltZV92YWx1ZTtcbiAgZnVuX2NhbGxzIDogZnVuX2NhbGwgbGlzdCBvcHRpb247XG59XG5cbmFuZCBmdW5fY2FsbCA9IHtcbiAgZnVuX25hbWUgOiBpbmZvcm1hdGlvbjtcbiAgZnVuX2lucHV0cyA6IHZhcl9kZWYgbGlzdDtcbiAgYm9keSA6IGV2ZW50IGxpc3Q7XG4gIG91dHB1dCA6IHZhcl9kZWY7XG59XG5cbmxldCBsb2dfcmVmIDogcmF3X2V2ZW50IGxpc3QgcmVmID0gcmVmIFtdXG5sZXQgcmVzZXRfbG9nICgpID0gbG9nX3JlZiA6PSBbXVxubGV0IHJldHJpZXZlX2xvZyAoKSA9IExpc3QucmV2ICFsb2dfcmVmXG5cbmxldCBsb2dfYmVnaW5fY2FsbCBpbmZvIGYgPVxuICBsb2dfcmVmIDo9IEJlZ2luQ2FsbCBpbmZvIDo6ICFsb2dfcmVmO1xuICBmXG5cbmxldCBsb2dfZW5kX2NhbGwgaW5mbyB4ID1cbiAgbG9nX3JlZiA6PSBFbmRDYWxsIGluZm8gOjogIWxvZ19yZWY7XG4gIHhcblxubGV0IGxvZ192YXJpYWJsZV9kZWZpbml0aW9uIChpbmZvIDogc3RyaW5nIGxpc3QpIGVtYmVkICh4IDogJ2EpID1cbiAgbG9nX3JlZiA6PSBWYXJpYWJsZURlZmluaXRpb24gKGluZm8sIGVtYmVkIHgpIDo6ICFsb2dfcmVmO1xuICB4XG5cbmxldCBsb2dfZGVjaXNpb25fdGFrZW4gcG9zIHggPVxuICBpZiB4IHRoZW4gbG9nX3JlZiA6PSBEZWNpc2lvblRha2VuIHBvcyA6OiAhbG9nX3JlZjtcbiAgeFxuXG5sZXQgcmVjIHBwX2V2ZW50cyA/KGlzX2ZpcnN0X2NhbGwgPSB0cnVlKSBwcGYgZXZlbnRzID1cbiAgbGV0IHJlYyBmb3JtYXRfdmFyX2RlZiBwcGYgdmFyID1cbiAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCJAWzxob3YgMj48dmFyX2RlZiBhdCAlYT5AICVzOkAgJWFAXVwiIGZvcm1hdF9wb3Nfb3B0XG4gICAgICB2YXIucG9zXG4gICAgICAoU3RyaW5nLmNvbmNhdCBcIi5cIiB2YXIubmFtZSlcbiAgICAgIGZvcm1hdF92YWx1ZSB2YXIudmFsdWVcbiAgYW5kIGZvcm1hdF9wb3Nfb3B0IHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIm5vX3Bvc1wiXG4gICAgfCBTb21lIHBvcyAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJXMgbGluZSAlZCB0byAlZFwiIHBvcy5maWxlbmFtZSBwb3Muc3RhcnRfbGluZVxuICAgICAgICBwb3MuZW5kX2xpbmVcbiAgYW5kIGZvcm1hdF92YXJfZGVmcyBwcGYgPVxuICAgIEZvcm1hdC5wcF9wcmludF9saXN0XG4gICAgICB+cHBfc2VwOihmdW4gcHBmICgpIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIkAgXCIpXG4gICAgICBmb3JtYXRfdmFyX2RlZiBwcGZcbiAgYW5kIGZvcm1hdF92YXJfZGVmX3dpdGhfZnVuX2NhbGxzIHBwZiB2YXJfd2l0aF9mdW4gPVxuICAgIG1hdGNoIHZhcl93aXRoX2Z1bi5mdW5fY2FsbHMgd2l0aFxuICAgIHwgTm9uZSB8IFNvbWUgW10gLT4gZm9ybWF0X3Zhcl9kZWYgcHBmIHZhcl93aXRoX2Z1blxuICAgIHwgU29tZSBmdW5fY2FsbHMgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZlxuICAgICAgICBcIkBbPGhvdiAyPjx2YXJfZGVmX3dpdGhfZnVuPkAgJXM6ICVhQCBjb21wdXRlZCBmcm9tQCA6QCBAWzxodiAyPltAICVhQDtcXFxuICAgICAgICAgPDEgLTI+XUBdIEBdXCJcbiAgICAgICAgKFN0cmluZy5jb25jYXQgXCIuXCIgdmFyX3dpdGhfZnVuLm5hbWUpXG4gICAgICAgIGZvcm1hdF92YWx1ZSB2YXJfd2l0aF9mdW4udmFsdWVcbiAgICAgICAgKEZvcm1hdC5wcF9wcmludF9saXN0XG4gICAgICAgICAgIH5wcF9zZXA6KGZ1biBwcGYgKCkgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiLEAgXCIpXG4gICAgICAgICAgIChmdW4gcHBmIGZ1bl9jYWxsIC0+IGZvcm1hdF9ldmVudCBwcGYgKEZ1bkNhbGwgZnVuX2NhbGwpKSlcbiAgICAgICAgZnVuX2NhbGxzXG4gIGFuZCBmb3JtYXRfdmFsdWUgcHBmID0gZnVuY3Rpb25cbiAgICB8IFVuZW1iZWRkYWJsZSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCJmdW5cIlxuICAgIHwgVW5pdCAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIoKVwiXG4gICAgfCBCb29sIHggLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWJcIiB4XG4gICAgfCBNb25leSB4IC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVz4oKsXCIgKG1vbmV5X3RvX3N0cmluZyB4KVxuICAgIHwgSW50ZWdlciB4IC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVkXCIgKGludGVnZXJfdG9faW50IHgpXG4gICAgfCBEZWNpbWFsIHggLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVzXCIgKGRlY2ltYWxfdG9fc3RyaW5nIH5tYXhfcHJlY19kaWdpdHM6MTAgeClcbiAgICB8IERhdGUgeCAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlc1wiIChkYXRlX3RvX3N0cmluZyB4KVxuICAgIHwgRHVyYXRpb24geCAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlc1wiIChkdXJhdGlvbl90b19zdHJpbmcgeClcbiAgICB8IEVudW0gKF8sIChuYW1lLCBfKSkgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJXNcIiBuYW1lXG4gICAgfCBTdHJ1Y3QgKG5hbWUsIGF0dHJzKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgcHBmIFwiQFs8aHYgMj4lcyA9IHtAICVhQDs8MSAtMj59QF1cIlxuICAgICAgICAoU3RyaW5nLmNvbmNhdCBcIi5cIiBuYW1lKVxuICAgICAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgICAgICAgfnBwX3NlcDooZnVuIHBwZiAoKSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIsQCxcIilcbiAgICAgICAgICAgKGZ1biBmbXQgKG5hbWUsIHZhbHVlKSAtPlxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzOiAlYVwiIG5hbWUgZm9ybWF0X3ZhbHVlIHZhbHVlKSlcbiAgICAgICAgYXR0cnNcbiAgICB8IEFycmF5IGVsdHMgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIkBbPGh2IDI+W0AgJWFAOzwxIC0yPl1AXVwiXG4gICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgICAgICB+cHBfc2VwOihmdW4gcHBmICgpIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIjtAIFwiKVxuICAgICAgICAgICBmb3JtYXRfdmFsdWUpXG4gICAgICAgIChlbHRzIHw+IEFycmF5LnRvX2xpc3QpXG4gIGFuZCBmb3JtYXRfZXZlbnQgcHBmID0gZnVuY3Rpb25cbiAgICB8IFZhckNvbXB1dGF0aW9uIHZhcl9kZWZfd2l0aF9mdW5cbiAgICAgIHdoZW4gT3B0aW9uLmlzX3NvbWUgdmFyX2RlZl93aXRoX2Z1bi5mdW5fY2FsbHMgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVhXCIgZm9ybWF0X3Zhcl9kZWZfd2l0aF9mdW5fY2FsbHMgdmFyX2RlZl93aXRoX2Z1blxuICAgIHwgVmFyQ29tcHV0YXRpb24gdmFyX2RlZiAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlYVwiIGZvcm1hdF92YXJfZGVmIHZhcl9kZWZcbiAgICB8IEZ1bkNhbGwgeyBmdW5fbmFtZTsgZnVuX2lucHV0czsgYm9keTsgb3V0cHV0IH0gLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZlxuICAgICAgICBcIkBbPGhvdiAxPjxmdW5jdGlvbl9jYWxsPkAgJXMgOj1AIHtAWzxodiAxPkAgaW5wdXQ6QCAlYSxAIG91dHB1dDpAIFxcXG4gICAgICAgICAlYSxAIGJvZHk6QCBbQCxcXFxuICAgICAgICAgJWFdQF1ALFxcXG4gICAgICAgICBAXUAsXFxcbiAgICAgICAgIH1cIlxuICAgICAgICAoU3RyaW5nLmNvbmNhdCBcIi5cIiBmdW5fbmFtZSlcbiAgICAgICAgKEZvcm1hdC5wcF9wcmludF9saXN0XG4gICAgICAgICAgIH5wcF9zZXA6KGZ1biBmbXQgKCkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCI7IFwiKVxuICAgICAgICAgICBmb3JtYXRfdmFyX2RlZilcbiAgICAgICAgZnVuX2lucHV0cyBmb3JtYXRfdmFyX2RlZl93aXRoX2Z1bl9jYWxscyBvdXRwdXRcbiAgICAgICAgKHBwX2V2ZW50cyB+aXNfZmlyc3RfY2FsbDpmYWxzZSlcbiAgICAgICAgYm9keVxuICAgIHwgU3ViU2NvcGVDYWxsIHsgbmFtZTsgaW5wdXRzOyBib2R5IH0gLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZlxuICAgICAgICBcIkBbPGh2IDI+PHN1YnNjb3BlX2NhbGw+QCAlcyA6PUAge0BbPGh2IDE+QCxcXFxuICAgICAgICAgaW5wdXRzOkAgQFs8aHYgMj5bQCxcXFxuICAgICAgICAgJWFAXV0sQCxcXFxuICAgICAgICAgYm9keTpAIEBbPGh2IDI+W0AgJWFAIF1AXUBdQF1ALFxcXG4gICAgICAgICB9XCJcbiAgICAgICAgKFN0cmluZy5jb25jYXQgXCIuXCIgbmFtZSkgZm9ybWF0X3Zhcl9kZWZzIGlucHV0c1xuICAgICAgICAocHBfZXZlbnRzIH5pc19maXJzdF9jYWxsOmZhbHNlKVxuICAgICAgICBib2R5XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIHBwZlxuICAgIChcIkBbPGh2IDE+JWFAXVwiIF5eIGlmIGlzX2ZpcnN0X2NhbGwgdGhlbiBcIkAuXCIgZWxzZSBcIlwiKVxuICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgIH5wcF9zZXA6KGZ1biBwcGYgKCkgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiQCBcIilcbiAgICAgICBmb3JtYXRfZXZlbnQpXG4gICAgZXZlbnRzXG5cbm1vZHVsZSBFdmVudFBhcnNlciA9IHN0cnVjdFxuICBtb2R1bGUgVmFyRGVmTWFwID0gc3RydWN0XG4gICAgbW9kdWxlIFN0cmluZ01hcCA9IE1hcC5NYWtlIChTdHJpbmcpXG5cbiAgICB0eXBlIHQgPSB2YXJfZGVmIGxpc3QgU3RyaW5nTWFwLnRcblxuICAgIGxldCBhZGQgKG5hbWUgOiBzdHJpbmcpICh2IDogdmFyX2RlZikgKG1hcCA6IHQpIDogdCA9XG4gICAgICBtYXRjaCBTdHJpbmdNYXAuZmluZF9vcHQgbmFtZSBtYXAgd2l0aFxuICAgICAgfCBTb21lIGxzIC0+IFN0cmluZ01hcC5hZGQgbmFtZSAodiA6OiBscykgbWFwXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nTWFwLmFkZCBuYW1lIFt2XSBtYXBcblxuICAgICgqKiBbZ2V0IG5hbWUgbWFwXSByZXR1cm5zIHRoZSBsaXN0IG9mIGRlZmluaXRpb25zIGlmIHRoZXJlIGlzIGFcbiAgICAgICAgY29ycmVzcG9uZGluZyBlbnRyeSwgb3RoZXJ3aXNlLCByZXR1cm5zIGFuIGVtcHR5IGFycmF5LiAqKVxuICAgIGxldCBnZXQgKG5hbWUgOiBzdHJpbmcpIChtYXAgOiB0KSA6IHZhcl9kZWYgbGlzdCA9XG4gICAgICBtYXRjaCBTdHJpbmdNYXAuZmluZF9vcHQgbmFtZSBtYXAgd2l0aCBTb21lIGxzIC0+IGxzIHwgTm9uZSAtPiBbXVxuXG4gICAgbGV0IGVtcHR5IDogdCA9IFN0cmluZ01hcC5lbXB0eVxuICBlbmRcblxuICB0eXBlIGNvbnRleHQgPSB7XG4gICAgKCogS2VlcHMgdHJhY2tzIG9mIHRoZSBzdWJzY29wZSBpbnB1dCB2YXJpYWJsZSBkZWZpbml0aW9ucy4gKilcbiAgICB2YXJzIDogVmFyRGVmTWFwLnQ7XG4gICAgKCogQ3VycmVudCBwYXJzZWQgZXZlbnRzLiAqKVxuICAgIGV2ZW50cyA6IGV2ZW50IGxpc3Q7XG4gICAgcmVzdCA6IHJhd19ldmVudCBsaXN0O1xuICB9XG5cbiAgbGV0IGVtcHR5X2N0eCA9IHsgdmFycyA9IFZhckRlZk1hcC5lbXB0eTsgZXZlbnRzID0gW107IHJlc3QgPSBbXSB9XG5cbiAgbGV0IHJhd19ldmVudF90b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgQmVnaW5DYWxsIG5hbWUgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiQmVnaW5DYWxsKFsgXCIgXiBTdHJpbmcuY29uY2F0IFwiLCBcIiBuYW1lIF4gXCIgXSlcIlxuICAgIHwgRW5kQ2FsbCBuYW1lIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIkVuZENhbGwoWyBcIiBeIFN0cmluZy5jb25jYXQgXCIsIFwiIG5hbWUgXiBcIiBdKVwiXG4gICAgfCBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIHZhbHVlKSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJWYXJpYWJsZURlZmluaXRpb24oWyAlcyBdLCAlcylcIiAoU3RyaW5nLmNvbmNhdCBcIiwgXCIgbmFtZSlcbiAgICAgICAgKHlvanNvbl9vZl9ydW50aW1lX3ZhbHVlIHZhbHVlIHw+IFlvanNvbi5TYWZlLnRvX3N0cmluZylcbiAgICB8IERlY2lzaW9uVGFrZW4gcG9zIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIkRlY2lzaW9uVGFrZW4oJXM6JWQuJWQtJWQuJWQpXCIgcG9zLmZpbGVuYW1lIHBvcy5zdGFydF9saW5lXG4gICAgICAgIHBvcy5zdGFydF9jb2x1bW4gcG9zLmVuZF9saW5lIHBvcy5lbmRfY29sdW1uXG5cbiAgKCoqIFt0YWtld2hpbGUgcCB4c10gc3BsaXQgdGhlIGxpc3QgW3hzXSBhcyB0aGUgbG9uZ2VzdCBwcmVmaXggb2YgdGhlIGxpc3RcbiAgICAgIFt4c10gd2hlcmUgZXZlcnkgZWxlbWVudCBbeF0gc2F0aXNmaWVzIFtwIHhdIGFuZCB0aGUgcmVzdC4gKilcbiAgbGV0IHJlYyB0YWtlX3doaWxlIChwIDogJ2EgLT4gYm9vbCkgKGwgOiAnYSBsaXN0KSA6ICdhIGxpc3QgKiAnYSBsaXN0ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFtdLCBbXVxuICAgIHwgaCA6OiB0IHdoZW4gcCBoIC0+XG4gICAgICBsZXQgdCwgcmVzdCA9IHRha2Vfd2hpbGUgcCB0IGluXG4gICAgICBoIDo6IHQsIHJlc3RcbiAgICB8IF8gLT4gW10sIGxcblxuICBsZXQgcGFyc2VfcmF3X2V2ZW50cyByYXdfZXZlbnRzID1cbiAgICBsZXQgbmJfcmF3X2V2ZW50cyA9IExpc3QubGVuZ3RoIHJhd19ldmVudHNcbiAgICBhbmQgaXNfZnVuY3Rpb25fY2FsbCBpbmZvcyA9IDIgPSBMaXN0Lmxlbmd0aCBpbmZvc1xuICAgIGFuZCBpc19zdWJzY29wZV9jYWxsIGluZm9zID0gMyA9IExpc3QubGVuZ3RoIGluZm9zXG4gICAgYW5kIGlzX3Zhcl9kZWYgbmFtZSA9IDIgPSBMaXN0Lmxlbmd0aCBuYW1lXG4gICAgYW5kIGlzX291dHB1dF92YXJfZGVmIG5hbWUgPVxuICAgICAgMyA9IExpc3QubGVuZ3RoIG5hbWUgJiYgXCJvdXRwdXRcIiA9IExpc3QubnRoIG5hbWUgMlxuICAgIGFuZCBpc19pbnB1dF92YXJfZGVmIG5hbWUgPVxuICAgICAgMyA9IExpc3QubGVuZ3RoIG5hbWVcbiAgICAgICYmIFN0cmluZy5zdGFydHNfd2l0aCB+cHJlZml4OlwiaW5wdXRcIiAoTGlzdC5udGggbmFtZSAyKVxuICAgIGFuZCBpc19zdWJzY29wZV9pbnB1dF92YXJfZGVmIG5hbWUgPVxuICAgICAgMiA9IExpc3QubGVuZ3RoIG5hbWUgJiYgU3RyaW5nLmNvbnRhaW5zIChMaXN0Lm50aCBuYW1lIDEpICcuJ1xuICAgIGluXG4gICAgbGV0IHJlYyBwYXJzZV9ldmVudHMgKGN0eCA6IGNvbnRleHQpIDogY29udGV4dCA9XG4gICAgICBtYXRjaCBjdHgucmVzdCB3aXRoXG4gICAgICB8IFtdIC0+IHsgY3R4IHdpdGggZXZlbnRzID0gY3R4LmV2ZW50cyB8PiBMaXN0LnJldiB9XG4gICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiAobmFtZSwgXykgOjogcmVzdCB3aGVuIGlzX3Zhcl9kZWYgbmFtZSAtPlxuICAgICAgICAoKiBWYXJpYWJsZURlZmluaXRpb24gd2l0aG91dCBwb3NpdGlvbiBjb3JyZXNwb25kcyB0byBhIGZ1bmN0aW9uXG4gICAgICAgICAgIGRlZmluaXRpb24gd2hpY2ggYXJlIGlnbm9yZWQgZm9yIG5vdyBpbiBzdHJ1Y3R1cmVkIGV2ZW50cy4gKilcbiAgICAgICAgcGFyc2VfZXZlbnRzIHsgY3R4IHdpdGggcmVzdCB9XG4gICAgICB8IERlY2lzaW9uVGFrZW4gcG9zIDo6IFZhcmlhYmxlRGVmaW5pdGlvbiAobmFtZSwgdmFsdWUpIDo6IHJlc3RcbiAgICAgICAgd2hlbiBpc19zdWJzY29wZV9pbnB1dF92YXJfZGVmIG5hbWUgLT4gKFxuICAgICAgICBtYXRjaCBuYW1lIHdpdGhcbiAgICAgICAgfCBbXzsgdmFyX2RvdF9zdWJzY29wZV92YXJfbmFtZV0gLT5cbiAgICAgICAgICBsZXQgdmFyX25hbWUgPVxuICAgICAgICAgICAgTGlzdC5udGggKFN0cmluZy5zcGxpdF9vbl9jaGFyICcuJyB2YXJfZG90X3N1YnNjb3BlX3Zhcl9uYW1lKSAwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwYXJzZV9ldmVudHNcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY3R4IHdpdGhcbiAgICAgICAgICAgICAgdmFycyA9XG4gICAgICAgICAgICAgICAgY3R4LnZhcnNcbiAgICAgICAgICAgICAgICB8PiBWYXJEZWZNYXAuYWRkIHZhcl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICB7IHBvcyA9IFNvbWUgcG9zOyBuYW1lOyB2YWx1ZTsgZnVuX2NhbGxzID0gTm9uZSB9O1xuICAgICAgICAgICAgICByZXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWlsd2l0aCBcInVucmVhY2hhYmxlIGR1ZSB0byB0aGUgW2lzX3N1YnNjb3BlX2lucHV0X3Zhcl9kZWZdIHRlc3RcIilcbiAgICAgIHwgRGVjaXNpb25UYWtlbiBwb3MgOjogVmFyaWFibGVEZWZpbml0aW9uIChuYW1lLCB2YWx1ZSkgOjogcmVzdFxuICAgICAgICB3aGVuIGlzX3Zhcl9kZWYgbmFtZSB8fCBpc19vdXRwdXRfdmFyX2RlZiBuYW1lIC0+XG4gICAgICAgIHBhcnNlX2V2ZW50c1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGN0eCB3aXRoXG4gICAgICAgICAgICBldmVudHMgPVxuICAgICAgICAgICAgICBWYXJDb21wdXRhdGlvbiB7IHBvcyA9IFNvbWUgcG9zOyBuYW1lOyB2YWx1ZTsgZnVuX2NhbGxzID0gTm9uZSB9XG4gICAgICAgICAgICAgIDo6IGN0eC5ldmVudHM7XG4gICAgICAgICAgICByZXN0O1xuICAgICAgICAgIH1cbiAgICAgIHwgRGVjaXNpb25UYWtlbiBwb3MgOjogVmFyaWFibGVEZWZpbml0aW9uIF8gOjogQmVnaW5DYWxsIGluZm9zIDo6IF9cbiAgICAgICAgd2hlbiBpc19mdW5jdGlvbl9jYWxsIGluZm9zIC0+XG4gICAgICAgICgqIFZhcmlhYmxlIGRlZmluaXRpb24gd2l0aCBmdW5jdGlvbiBjYWxscy4gKilcbiAgICAgICAgbGV0IHJlYyBwYXJzZV9mdW5fY2FsbHMgZnVuX2NhbGxzIHJhd19ldmVudHMgPVxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICB0YWtlX3doaWxlXG4gICAgICAgICAgICAgIChmdW5jdGlvbiBWYXJpYWJsZURlZmluaXRpb24gXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgcmF3X2V2ZW50c1xuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IF8sIEJlZ2luQ2FsbCBpbmZvcyA6OiBfIHdoZW4gaXNfZnVuY3Rpb25fY2FsbCBpbmZvcyAtPlxuICAgICAgICAgICAgbGV0IHJlc3QsIGZ1bl9jYWxsID0gcGFyc2VfZnVuX2NhbGwgcmF3X2V2ZW50cyBpblxuICAgICAgICAgICAgcGFyc2VfZnVuX2NhbGxzIChmdW5fY2FsbCA6OiBmdW5fY2FsbHMpIHJlc3RcbiAgICAgICAgICB8IF8gLT4gcmF3X2V2ZW50cywgZnVuX2NhbGxzIHw+IExpc3QucmV2XG4gICAgICAgIGluXG4gICAgICAgIGxldCByZXN0LCB2YXJfY29tcCA9XG4gICAgICAgICAgbGV0IHJlc3QsIGZ1bl9jYWxscyA9IHBhcnNlX2Z1bl9jYWxscyBbXSAoTGlzdC50bCBjdHgucmVzdCkgaW5cbiAgICAgICAgICBtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiAobmFtZSwgdmFsdWUpIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICggcmVzdCxcbiAgICAgICAgICAgICAgVmFyQ29tcHV0YXRpb25cbiAgICAgICAgICAgICAgICB7IHBvcyA9IFNvbWUgcG9zOyBuYW1lOyB2YWx1ZTsgZnVuX2NhbGxzID0gU29tZSBmdW5fY2FsbHMgfSApXG4gICAgICAgICAgfCBldmVudCA6OiBfIC0+XG4gICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAoXCJJbnZhbGlkIGZ1bmN0aW9uIGNhbGwgKFsgXCJcbiAgICAgICAgICAgICAgXiBTdHJpbmcuY29uY2F0IFwiLCBcIiBpbmZvc1xuICAgICAgICAgICAgICBeIFwiIF0pOiBleHBlY3RlZCB2YXJpYWJsZSBkZWZpbml0aW9uIChmdW5jdGlvbiBvdXRwdXQpLCBmb3VuZDogXCJcbiAgICAgICAgICAgICAgXiByYXdfZXZlbnRfdG9fc3RyaW5nIGV2ZW50XG4gICAgICAgICAgICAgIF4gXCJbXCJcbiAgICAgICAgICAgICAgXiAobmJfcmF3X2V2ZW50cyAtIExpc3QubGVuZ3RoIHJlc3QgKyAxIHw+IHN0cmluZ19vZl9pbnQpXG4gICAgICAgICAgICAgIF4gXCJdXCIpXG4gICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgKFwiSW52YWxpZCBmdW5jdGlvbiBjYWxsIChbIFwiXG4gICAgICAgICAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIiwgXCIgaW5mb3NcbiAgICAgICAgICAgICAgXiBcIiBdKTogZXhwZWN0ZWQgdmFyaWFibGUgZGVmaW5pdGlvbiAoZnVuY3Rpb24gb3V0cHV0KSwgZm91bmQ6IFxcXG4gICAgICAgICAgICAgICAgIGVuZCBvZiB0b2tlbnNcIilcbiAgICAgICAgaW5cblxuICAgICAgICBwYXJzZV9ldmVudHMgeyBjdHggd2l0aCBldmVudHMgPSB2YXJfY29tcCA6OiBjdHguZXZlbnRzOyByZXN0IH1cbiAgICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIF8gOjogQmVnaW5DYWxsIGluZm9zIDo6IF8gd2hlbiBpc19mdW5jdGlvbl9jYWxsIGluZm9zXG4gICAgICAgIC0+XG4gICAgICAgIGxldCByZXN0LCBmdW5fY2FsbCA9IHBhcnNlX2Z1bl9jYWxsIGN0eC5yZXN0IGluXG5cbiAgICAgICAgcGFyc2VfZXZlbnRzIHsgY3R4IHdpdGggZXZlbnRzID0gRnVuQ2FsbCBmdW5fY2FsbCA6OiBjdHguZXZlbnRzOyByZXN0IH1cbiAgICAgIHwgQmVnaW5DYWxsIGluZm9zIDo6IHJlc3Qgd2hlbiBpc19zdWJzY29wZV9jYWxsIGluZm9zIC0+IChcbiAgICAgICAgbWF0Y2ggaW5mb3Mgd2l0aFxuICAgICAgICB8IFtfOyB2YXJfbmFtZTsgX10gLT5cbiAgICAgICAgICBsZXQgYm9keV9jdHggPSBwYXJzZV9ldmVudHMgeyBlbXB0eV9jdHggd2l0aCByZXN0IH0gaW5cbiAgICAgICAgICBsZXQgaW5wdXRzID0gVmFyRGVmTWFwLmdldCB2YXJfbmFtZSBjdHgudmFycyBpblxuICAgICAgICAgIHBhcnNlX2V2ZW50c1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjdHggd2l0aFxuICAgICAgICAgICAgICBldmVudHMgPVxuICAgICAgICAgICAgICAgIFN1YlNjb3BlQ2FsbCB7IG5hbWUgPSBpbmZvczsgaW5wdXRzOyBib2R5ID0gYm9keV9jdHguZXZlbnRzIH1cbiAgICAgICAgICAgICAgICA6OiBjdHguZXZlbnRzO1xuICAgICAgICAgICAgICByZXN0ID0gYm9keV9jdHgucmVzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwidW5yZWFjaGFibGUgZHVlIHRvIHRoZSBbaXNfc3Vic2NvcGVfY2FsbF0gdGVzdFwiKVxuICAgICAgfCBFbmRDYWxsIF8gOjogcmVzdCAtPiB7IGN0eCB3aXRoIGV2ZW50cyA9IGN0eC5ldmVudHMgfD4gTGlzdC5yZXY7IHJlc3QgfVxuICAgICAgfCBldmVudCA6OiBfIC0+IGZhaWx3aXRoIChcIlVuZXhwZWN0ZWQgZXZlbnQ6IFwiIF4gcmF3X2V2ZW50X3RvX3N0cmluZyBldmVudClcbiAgICBhbmQgcGFyc2VfZnVuX2NhbGwgZXZlbnRzID1cbiAgICAgIG1hdGNoXG4gICAgICAgIHRha2Vfd2hpbGVcbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIChuYW1lLCBfKSAtPiBpc19pbnB1dF92YXJfZGVmIG5hbWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgIGV2ZW50c1xuICAgICAgd2l0aFxuICAgICAgfCBpbnB1dHMsIEJlZ2luQ2FsbCBpbmZvcyA6OiByZXN0IHdoZW4gaXNfZnVuY3Rpb25fY2FsbCBpbmZvcyAtPlxuICAgICAgICBsZXQgZnVuX2lucHV0cyA9XG4gICAgICAgICAgTGlzdExhYmVscy5tYXAgaW5wdXRzIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIHZhbHVlKSAtPlxuICAgICAgICAgICAgICB7IHBvcyA9IE5vbmU7IG5hbWU7IHZhbHVlOyBmdW5fY2FsbHMgPSBOb25lIH1cbiAgICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZXN0LCBib2R5LCBvdXRwdXQgPVxuICAgICAgICAgIGxldCBib2R5X2N0eCA9XG4gICAgICAgICAgICBwYXJzZV9ldmVudHMgeyB2YXJzID0gVmFyRGVmTWFwLmVtcHR5OyBldmVudHMgPSBbXTsgcmVzdCB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYm9keV9yZXYgPSBMaXN0LnJldiBib2R5X2N0eC5ldmVudHMgaW5cbiAgICAgICAgICBib2R5X2N0eC5yZXN0LCBib2R5X3JldiB8PiBMaXN0LnRsIHw+IExpc3QucmV2LCBib2R5X3JldiB8PiBMaXN0LmhkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvdXRwdXQgPVxuICAgICAgICAgIG1hdGNoIG91dHB1dCB3aXRoXG4gICAgICAgICAgfCBWYXJDb21wdXRhdGlvbiB2YXJfZGVmIC0+IHZhcl9kZWZcbiAgICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJNaXNzaW5nIGZ1bmN0aW9uIG91dHB1dCB2YXJpYWJsZSBkZWZpbml0aW9uLlwiXG4gICAgICAgIGluXG5cbiAgICAgICAgcmVzdCwgeyBmdW5fbmFtZSA9IGluZm9zOyBmdW5faW5wdXRzOyBib2R5OyBvdXRwdXQgfVxuICAgICAgfCBfIC0+IGZhaWx3aXRoIFwiSW52YWxpZCBzdGFydCBvZiBmdW5jdGlvbiBjYWxsLlwiXG4gICAgaW5cblxuICAgIGxldCBjdHggPVxuICAgICAgdHJ5IHBhcnNlX2V2ZW50cyB7IGVtcHR5X2N0eCB3aXRoIHJlc3QgPSByYXdfZXZlbnRzIH1cbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT5cbiAgICAgICAgKCogVE9ETzogZGlzY3VzcyB3aGF0IHNob3VsZCBiZSBkb25lLiAqKVxuICAgICAgICBQcmludGYuZXByaW50ZiBcIkFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHBhcnNpbmcgcmF3IGV2ZW50czogJXNcXG5cIiBtc2c7XG4gICAgICAgIGVtcHR5X2N0eFxuICAgIGluXG4gICAgY3R4LmV2ZW50c1xuZW5kXG5cbmxldCBoYW5kbGVfZGVmYXVsdCA6XG4gICAgICAnYS5cbiAgICAgIHNvdXJjZV9wb3NpdGlvbiAtPlxuICAgICAgKHVuaXQgLT4gJ2EpIGFycmF5IC0+XG4gICAgICAodW5pdCAtPiBib29sKSAtPlxuICAgICAgKHVuaXQgLT4gJ2EpIC0+XG4gICAgICAnYSA9XG4gZnVuIHBvcyBleGNlcHRpb25zIGp1c3QgY29ucyAtPlxuICBsZXQgZXhjZXB0ID1cbiAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIGV4Y2VwdCAtPlxuICAgICAgICBsZXQgbmV3X3ZhbCA9IHRyeSBTb21lIChleGNlcHQgKCkpIHdpdGggRW1wdHlFcnJvciAtPiBOb25lIGluXG4gICAgICAgIG1hdGNoIGFjYywgbmV3X3ZhbCB3aXRoXG4gICAgICAgIHwgTm9uZSwgXyAtPiBuZXdfdmFsXG4gICAgICAgIHwgU29tZSBfLCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgXywgU29tZSBfIC0+IHJhaXNlIChDb25mbGljdEVycm9yIHBvcykpXG4gICAgICBOb25lIGV4Y2VwdGlvbnNcbiAgaW5cbiAgbWF0Y2ggZXhjZXB0IHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT4gaWYganVzdCAoKSB0aGVuIGNvbnMgKCkgZWxzZSByYWlzZSBFbXB0eUVycm9yXG5cbmxldCBoYW5kbGVfZGVmYXVsdF9vcHRcbiAgICAocG9zIDogc291cmNlX3Bvc2l0aW9uKVxuICAgIChleGNlcHRpb25zIDogJ2EgZW9wdGlvbiBhcnJheSlcbiAgICAoanVzdCA6IGJvb2wgZW9wdGlvbilcbiAgICAoY29ucyA6ICdhIGVvcHRpb24pIDogJ2EgZW9wdGlvbiA9XG4gIGxldCBleGNlcHQgPVxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgZXhjZXB0IC0+XG4gICAgICAgIG1hdGNoIGFjYywgZXhjZXB0IHdpdGhcbiAgICAgICAgfCBFTm9uZSBfLCBfIC0+IGV4Y2VwdFxuICAgICAgICB8IEVTb21lIF8sIEVOb25lIF8gLT4gYWNjXG4gICAgICAgIHwgRVNvbWUgXywgRVNvbWUgXyAtPiByYWlzZSAoQ29uZmxpY3RFcnJvciBwb3MpKVxuICAgICAgKEVOb25lICgpKSBleGNlcHRpb25zXG4gIGluXG4gIG1hdGNoIGV4Y2VwdCB3aXRoXG4gIHwgRVNvbWUgXyAtPiBleGNlcHRcbiAgfCBFTm9uZSBfIC0+IChcbiAgICBtYXRjaCBqdXN0IHdpdGhcbiAgICB8IEVTb21lIGIgLT4gaWYgYiB0aGVuIGNvbnMgZWxzZSBFTm9uZSAoKVxuICAgIHwgRU5vbmUgXyAtPiBFTm9uZSAoKSlcblxubGV0IG5vX2lucHV0IDogdW5pdCAtPiAnYSA9IGZ1biBfIC0+IHJhaXNlIEVtcHR5RXJyb3JcblxuKCogVE9ETzogYWRkIGEgY29tcGFyZSBidWlsdC1pbiB0byBkYXRlc19jYWxjLiBBdCB0aGUgbW9tZW50IHRoaXMgZmFpbHMgb24gZS5nLlxuICAgWzMgbW9udGhzLCA0IG1vbnRoc10gKilcbmxldCBjb21wYXJlX3BlcmlvZHMgKHAxIDogZHVyYXRpb24pIChwMiA6IGR1cmF0aW9uKSA6IGludCA9XG4gIHRyeVxuICAgIGxldCBwMV9kYXlzID0gRGF0ZXNfY2FsYy5EYXRlcy5wZXJpb2RfdG9fZGF5cyBwMSBpblxuICAgIGxldCBwMl9kYXlzID0gRGF0ZXNfY2FsYy5EYXRlcy5wZXJpb2RfdG9fZGF5cyBwMiBpblxuICAgIGNvbXBhcmUgcDFfZGF5cyBwMl9kYXlzXG4gIHdpdGggRGF0ZXNfY2FsYy5EYXRlcy5BbWJpZ3VvdXNDb21wdXRhdGlvbiAtPiByYWlzZSBVbmNvbXBhcmFibGVEdXJhdGlvbnNcblxuKCogVE9ETzogc2FtZSBoZXJlLCBhbHRob3VnaCBpdCB3YXMgdHdlYWtlZCB0byBuZXZlciBmYWlsIG9uIGVxdWFsIGRhdGVzLlxuICAgQ29tcGFyaW5nIHRoZSBkaWZmZXJlbmNlIHRvIGR1cmF0aW9uXzAgaXMgbm90IGEgZ29vZCBpZGVhIGJlY2F1c2Ugd2Ugc3RpbGxcbiAgIHdhbnQgdG8gZmFpbCBvbiBbMSBtb250aCwgMzAgZGF5c10gcmF0aGVyIHRoYW4gcmV0dXJuIFtmYWxzZV0gKilcbmxldCBlcXVhbF9wZXJpb2RzIChwMSA6IGR1cmF0aW9uKSAocDIgOiBkdXJhdGlvbikgOiBib29sID1cbiAgdHJ5IERhdGVzX2NhbGMuRGF0ZXMucGVyaW9kX3RvX2RheXMgKERhdGVzX2NhbGMuRGF0ZXMuc3ViX3BlcmlvZHMgcDEgcDIpID0gMFxuICB3aXRoIERhdGVzX2NhbGMuRGF0ZXMuQW1iaWd1b3VzQ29tcHV0YXRpb24gLT4gcmFpc2UgVW5jb21wYXJhYmxlRHVyYXRpb25zXG5cbm1vZHVsZSBPcGVyID0gc3RydWN0XG4gIGxldCBvX25vdCA9IFN0ZGxpYi5ub3RcbiAgbGV0IG9fbGVuZ3RoIGEgPSBaLm9mX2ludCAoQXJyYXkubGVuZ3RoIGEpXG4gIGxldCBvX3RvcmF0X2ludCA9IGRlY2ltYWxfb2ZfaW50ZWdlclxuICBsZXQgb190b3JhdF9tb24gPSBkZWNpbWFsX29mX21vbmV5XG4gIGxldCBvX3RvbW9uZXlfcmF0ID0gbW9uZXlfb2ZfZGVjaW1hbFxuICBsZXQgb19nZXREYXkgPSBkYXlfb2ZfbW9udGhfb2ZfZGF0ZVxuICBsZXQgb19nZXRNb250aCA9IG1vbnRoX251bWJlcl9vZl9kYXRlXG4gIGxldCBvX2dldFllYXIgPSB5ZWFyX29mX2RhdGVcbiAgbGV0IG9fZmlyc3REYXlPZk1vbnRoID0gZmlyc3RfZGF5X29mX21vbnRoXG4gIGxldCBvX2xhc3REYXlPZk1vbnRoID0gbGFzdF9kYXlfb2ZfbW9udGhcbiAgbGV0IG9fcm91bmRfbW9uID0gbW9uZXlfcm91bmRcbiAgbGV0IG9fcm91bmRfcmF0ID0gZGVjaW1hbF9yb3VuZFxuICBsZXQgb19taW51c19pbnQgaTEgPSBaLnN1YiBaLnplcm8gaTFcbiAgbGV0IG9fbWludXNfcmF0IGkxID0gUS5zdWIgUS56ZXJvIGkxXG4gIGxldCBvX21pbnVzX21vbiBtMSA9IFouc3ViIFouemVybyBtMVxuICBsZXQgb19taW51c19kdXIgPSBEYXRlc19jYWxjLkRhdGVzLm5lZ19wZXJpb2RcbiAgbGV0IG9fYW5kID0gKCAmJiApXG4gIGxldCBvX29yID0gKCB8fCApXG4gIGxldCBvX3hvciA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gKCA8PiApXG4gIGxldCBvX2VxID0gKCA9IClcbiAgbGV0IG9fbWFwID0gQXJyYXkubWFwXG5cbiAgbGV0IG9fcmVkdWNlIGYgZGZ0IGEgPVxuICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICAgIGlmIGxlbiA9IDAgdGhlbiBkZnRcbiAgICBlbHNlXG4gICAgICBsZXQgciA9IHJlZiBhLigwKSBpblxuICAgICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgciA6PSBmICFyIGEuKGkpXG4gICAgICBkb25lO1xuICAgICAgIXJcblxuICBsZXQgb19jb25jYXQgPSBBcnJheS5hcHBlbmRcbiAgbGV0IG9fZmlsdGVyIGYgYSA9IEFycmF5Lm9mX2xpc3QgKExpc3QuZmlsdGVyIGYgKEFycmF5LnRvX2xpc3QgYSkpXG4gIGxldCBvX2FkZF9pbnRfaW50IGkxIGkyID0gWi5hZGQgaTEgaTJcbiAgbGV0IG9fYWRkX3JhdF9yYXQgaTEgaTIgPSBRLmFkZCBpMSBpMlxuICBsZXQgb19hZGRfbW9uX21vbiBtMSBtMiA9IFouYWRkIG0xIG0yXG4gIGxldCBvX2FkZF9kYXRfZHVyIHIgZGEgZHUgPSBEYXRlc19jYWxjLkRhdGVzLmFkZF9kYXRlcyB+cm91bmQ6ciBkYSBkdVxuICBsZXQgb19hZGRfZHVyX2R1ciA9IERhdGVzX2NhbGMuRGF0ZXMuYWRkX3BlcmlvZHNcbiAgbGV0IG9fc3ViX2ludF9pbnQgaTEgaTIgPSBaLnN1YiBpMSBpMlxuICBsZXQgb19zdWJfcmF0X3JhdCBpMSBpMiA9IFEuc3ViIGkxIGkyXG4gIGxldCBvX3N1Yl9tb25fbW9uIG0xIG0yID0gWi5zdWIgbTEgbTJcbiAgbGV0IG9fc3ViX2RhdF9kYXQgPSBEYXRlc19jYWxjLkRhdGVzLnN1Yl9kYXRlc1xuICBsZXQgb19zdWJfZGF0X2R1ciBkYXQgZHVyID0gRGF0ZXNfY2FsYy5EYXRlcy4oYWRkX2RhdGVzIGRhdCAobmVnX3BlcmlvZCBkdXIpKVxuICBsZXQgb19zdWJfZHVyX2R1ciA9IERhdGVzX2NhbGMuRGF0ZXMuc3ViX3BlcmlvZHNcbiAgbGV0IG9fbXVsdF9pbnRfaW50IGkxIGkyID0gWi5tdWwgaTEgaTJcbiAgbGV0IG9fbXVsdF9yYXRfcmF0IGkxIGkyID0gUS5tdWwgaTEgaTJcblxuICBsZXQgb19tdWx0X21vbl9yYXQgaTEgaTIgPVxuICAgIGxldCBpMV9hYnMgPSBaLmFicyBpMSBpblxuICAgIGxldCBpMl9hYnMgPSBRLmFicyBpMiBpblxuICAgIGxldCBzaWduX2ludCA9IFouc2lnbiBpMSAqIFEuc2lnbiBpMiBpblxuICAgIGxldCByYXRfcmVzdWx0ID0gUS5tdWwgKFEub2ZfYmlnaW50IGkxX2FicykgaTJfYWJzIGluXG4gICAgbGV0IHJlcywgcmVtYWluZGVyID0gWi5kaXZfcmVtIChRLm51bSByYXRfcmVzdWx0KSAoUS5kZW4gcmF0X3Jlc3VsdCkgaW5cbiAgICAoKiB3ZSBwZXJmb3JtIG5lYXJlc3Qgcm91bmRpbmcgd2hlbiBtdWx0aXBseWluZyBhbiBhbW91bnQgb2YgbW9uZXkgYnkgYVxuICAgICAgIGRlY2ltYWwgISopXG4gICAgaWYgWi4ob2ZfaW50IDIgKiByZW1haW5kZXIgPj0gUS5kZW4gcmF0X3Jlc3VsdCkgdGhlblxuICAgICAgWi4oYWRkIHJlcyAob2ZfaW50IDEpICogb2ZfaW50IHNpZ25faW50KVxuICAgIGVsc2UgWi4ocmVzICogb2ZfaW50IHNpZ25faW50KVxuXG4gIGxldCBvX211bHRfZHVyX2ludCBkIG0gPSBEYXRlc19jYWxjLkRhdGVzLm11bF9wZXJpb2QgZCAoWi50b19pbnQgbSlcblxuICBsZXQgb19kaXZfaW50X2ludCBpMSBpMiA9XG4gICAgKCogSXQncyBub3Qgb24gdGhlIG9jYW1sZG9jLCBidXQgUS5kaXYgbGlrZWx5IGFscmVhZHkgcmFpc2VzIHRoaXMgPyAqKVxuICAgIGlmIFouemVybyA9IGkyIHRoZW4gcmFpc2UgRGl2aXNpb25fYnlfemVyb1xuICAgIGVsc2UgUS5kaXYgKFEub2ZfYmlnaW50IGkxKSAoUS5vZl9iaWdpbnQgaTIpXG5cbiAgbGV0IG9fZGl2X3JhdF9yYXQgaTEgaTIgPVxuICAgIGlmIFEuemVybyA9IGkyIHRoZW4gcmFpc2UgRGl2aXNpb25fYnlfemVybyBlbHNlIFEuZGl2IGkxIGkyXG5cbiAgbGV0IG9fZGl2X21vbl9tb24gbTEgbTIgPVxuICAgIGlmIFouemVybyA9IG0yIHRoZW4gcmFpc2UgRGl2aXNpb25fYnlfemVyb1xuICAgIGVsc2UgUS5kaXYgKFEub2ZfYmlnaW50IG0xKSAoUS5vZl9iaWdpbnQgbTIpXG5cbiAgbGV0IG9fZGl2X21vbl9yYXQgbTEgcjEgPVxuICAgIGlmIFEuemVybyA9IHIxIHRoZW4gcmFpc2UgRGl2aXNpb25fYnlfemVybyBlbHNlIG9fbXVsdF9tb25fcmF0IG0xIChRLmludiByMSlcblxuICBsZXQgb19kaXZfZHVyX2R1ciBkMSBkMiA9XG4gICAgbGV0IGkxLCBpMiA9XG4gICAgICB0cnlcbiAgICAgICAgKCBpbnRlZ2VyX29mX2ludCAoRGF0ZXNfY2FsYy5EYXRlcy5wZXJpb2RfdG9fZGF5cyBkMSksXG4gICAgICAgICAgaW50ZWdlcl9vZl9pbnQgKERhdGVzX2NhbGMuRGF0ZXMucGVyaW9kX3RvX2RheXMgZDIpIClcbiAgICAgIHdpdGggRGF0ZXNfY2FsYy5EYXRlcy5BbWJpZ3VvdXNDb21wdXRhdGlvbiAtPiByYWlzZSBJbmRpdmlzaWJsZUR1cmF0aW9uc1xuICAgIGluXG4gICAgb19kaXZfaW50X2ludCBpMSBpMlxuXG4gIGxldCBvX2x0X2ludF9pbnQgaTEgaTIgPSBaLmNvbXBhcmUgaTEgaTIgPCAwXG4gIGxldCBvX2x0X3JhdF9yYXQgaTEgaTIgPSBRLmNvbXBhcmUgaTEgaTIgPCAwXG4gIGxldCBvX2x0X21vbl9tb24gbTEgbTIgPSBaLmNvbXBhcmUgbTEgbTIgPCAwXG4gIGxldCBvX2x0X2R1cl9kdXIgZDEgZDIgPSBjb21wYXJlX3BlcmlvZHMgZDEgZDIgPCAwXG4gIGxldCBvX2x0X2RhdF9kYXQgZDEgZDIgPSBEYXRlc19jYWxjLkRhdGVzLmNvbXBhcmVfZGF0ZXMgZDEgZDIgPCAwXG4gIGxldCBvX2x0ZV9pbnRfaW50IGkxIGkyID0gWi5jb21wYXJlIGkxIGkyIDw9IDBcbiAgbGV0IG9fbHRlX3JhdF9yYXQgaTEgaTIgPSBRLmNvbXBhcmUgaTEgaTIgPD0gMFxuICBsZXQgb19sdGVfbW9uX21vbiBtMSBtMiA9IFouY29tcGFyZSBtMSBtMiA8PSAwXG4gIGxldCBvX2x0ZV9kdXJfZHVyIGQxIGQyID0gY29tcGFyZV9wZXJpb2RzIGQxIGQyIDw9IDBcbiAgbGV0IG9fbHRlX2RhdF9kYXQgZDEgZDIgPSBEYXRlc19jYWxjLkRhdGVzLmNvbXBhcmVfZGF0ZXMgZDEgZDIgPD0gMFxuICBsZXQgb19ndF9pbnRfaW50IGkxIGkyID0gWi5jb21wYXJlIGkxIGkyID4gMFxuICBsZXQgb19ndF9yYXRfcmF0IGkxIGkyID0gUS5jb21wYXJlIGkxIGkyID4gMFxuICBsZXQgb19ndF9tb25fbW9uIG0xIG0yID0gWi5jb21wYXJlIG0xIG0yID4gMFxuICBsZXQgb19ndF9kdXJfZHVyIGQxIGQyID0gY29tcGFyZV9wZXJpb2RzIGQxIGQyID4gMFxuICBsZXQgb19ndF9kYXRfZGF0IGQxIGQyID0gRGF0ZXNfY2FsYy5EYXRlcy5jb21wYXJlX2RhdGVzIGQxIGQyID4gMFxuICBsZXQgb19ndGVfaW50X2ludCBpMSBpMiA9IFouY29tcGFyZSBpMSBpMiA+PSAwXG4gIGxldCBvX2d0ZV9yYXRfcmF0IGkxIGkyID0gUS5jb21wYXJlIGkxIGkyID49IDBcbiAgbGV0IG9fZ3RlX21vbl9tb24gbTEgbTIgPSBaLmNvbXBhcmUgbTEgbTIgPj0gMFxuICBsZXQgb19ndGVfZHVyX2R1ciBkMSBkMiA9IGNvbXBhcmVfcGVyaW9kcyBkMSBkMiA+PSAwXG4gIGxldCBvX2d0ZV9kYXRfZGF0IGQxIGQyID0gRGF0ZXNfY2FsYy5EYXRlcy5jb21wYXJlX2RhdGVzIGQxIGQyID49IDBcbiAgbGV0IG9fZXFfaW50X2ludCBpMSBpMiA9IFouZXF1YWwgaTEgaTJcbiAgbGV0IG9fZXFfcmF0X3JhdCBpMSBpMiA9IFEuZXF1YWwgaTEgaTJcbiAgbGV0IG9fZXFfbW9uX21vbiBtMSBtMiA9IFouZXF1YWwgbTEgbTJcbiAgbGV0IG9fZXFfZHVyX2R1ciBkMSBkMiA9IGVxdWFsX3BlcmlvZHMgZDEgZDJcbiAgbGV0IG9fZXFfZGF0X2RhdCBkMSBkMiA9IERhdGVzX2NhbGMuRGF0ZXMuY29tcGFyZV9kYXRlcyBkMSBkMiA9IDBcbiAgbGV0IG9fZm9sZCA9IEFycmF5LmZvbGRfbGVmdFxuZW5kXG5cbmluY2x1ZGUgT3BlclxuIixudWxsLG51bGwsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDYXRhbGEgY29tcGlsZXIsIGEgc3BlY2lmaWNhdGlvbiBsYW5ndWFnZSBmb3IgdGF4XG4gICBhbmQgc29jaWFsIGJlbmVmaXRzIGNvbXB1dGF0aW9uIHJ1bGVzLiBDb3B5cmlnaHQgKEMpIDIwMjAgSW5yaWEsIGNvbnRyaWJ1dG9yOlxuICAgRW1pbGUgUm9sbGV5IDxlbWlsZS5yb2xsZXlAdHV0YS5pbz4uXG5cbiAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90XG4gICB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZlxuICAgdGhlIExpY2Vuc2UgYXRcblxuICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVFxuICAgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlXG4gICBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlclxuICAgdGhlIExpY2Vuc2UuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBSX29jYW1sID0gUnVudGltZV9vY2FtbC5SdW50aW1lXG5cbmNsYXNzIHR5cGUgc291cmNlX3Bvc2l0aW9uID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGZpbGVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICAgIG1ldGhvZCBzdGFydExpbmUgOiBpbnQgSnMucHJvcFxuICAgIG1ldGhvZCBlbmRMaW5lIDogaW50IEpzLnByb3BcbiAgICBtZXRob2Qgc3RhcnRDb2x1bW4gOiBpbnQgSnMucHJvcFxuICAgIG1ldGhvZCBlbmRDb2x1bW4gOiBpbnQgSnMucHJvcFxuICAgIG1ldGhvZCBsYXdIZWFkaW5ncyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucHJvcFxuICBlbmRcblxuY2xhc3MgdHlwZSByYXdfZXZlbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZXZlbnRUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICAgIG1ldGhvZCBpbmZvcm1hdGlvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucHJvcFxuICAgIG1ldGhvZCBzb3VyY2VQb3NpdGlvbiA6IHNvdXJjZV9wb3NpdGlvbiBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG4gICAgbWV0aG9kIGxvZ2dlZFZhbHVlSnNvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbmNsYXNzIHR5cGUgZXZlbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0YSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbmNsYXNzIHR5cGUgZHVyYXRpb24gPVxuICBvYmplY3RcbiAgICBtZXRob2QgeWVhcnMgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb250aHMgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXlzIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBkdXJhdGlvbl9vZl9qc29vIGQgPVxuICBSX29jYW1sLmR1cmF0aW9uX29mX251bWJlcnMgZCMjLnllYXJzIGQjIy5tb250aHMgZCMjLmRheXNcblxubGV0IGR1cmF0aW9uX3RvX2pzb28gZCA9XG4gIGxldCB5ZWFycywgbW9udGhzLCBkYXlzID0gUl9vY2FtbC5kdXJhdGlvbl90b195ZWFyc19tb250aHNfZGF5cyBkIGluXG4gIG9iamVjdCVqc1xuICAgIHZhbCB5ZWFycyA9IHllYXJzXG4gICAgdmFsIG1vbnRocyA9IG1vbnRoc1xuICAgIHZhbCBkYXlzID0gZGF5c1xuICBlbmRcblxubGV0IGRhdGVfb2ZfanNvbyBkID1cbiAgbGV0IGQgPSBKcy50b19zdHJpbmcgZCBpblxuICBsZXQgZCA9XG4gICAgaWYgU3RyaW5nLmNvbnRhaW5zIGQgJ1QnIHRoZW4gZCB8PiBTdHJpbmcuc3BsaXRfb25fY2hhciAnVCcgfD4gTGlzdC5oZFxuICAgIGVsc2UgZFxuICBpblxuICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciAnLScgZCB3aXRoXG4gIHwgW3llYXI7IG1vbnRoOyBkYXldIC0+XG4gICAgUl9vY2FtbC5kYXRlX29mX251bWJlcnMgKGludF9vZl9zdHJpbmcgeWVhcikgKGludF9vZl9zdHJpbmcgbW9udGgpXG4gICAgICAoaW50X29mX3N0cmluZyBkYXkpXG4gIHwgXyAtPiBmYWlsd2l0aCBcImRhdGVfb2ZfanNvbzogaW52YWxpZCBkYXRlXCJcblxubGV0IGRhdGVfdG9fanNvbyBkID0gSnMuc3RyaW5nIEBAIFJfb2NhbWwuZGF0ZV90b19zdHJpbmcgZFxuXG5jbGFzcyB0eXBlIGV2ZW50X21hbmFnZXIgPVxuICBvYmplY3RcbiAgICBtZXRob2QgcmVzZXRMb2cgOiAodW5pdCwgdW5pdCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmV0cmlldmVFdmVudHMgOlxuICAgICAgKHVuaXQsIGV2ZW50IEpzLnQgSnMuanNfYXJyYXkgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmV0cmlldmVSYXdFdmVudHMgOlxuICAgICAgKHVuaXQsIHJhd19ldmVudCBKcy50IEpzLmpzX2FycmF5IEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcblxubGV0IGV2ZW50X21hbmFnZXIgOiBldmVudF9tYW5hZ2VyIEpzLnQgPVxuICBvYmplY3QlanNcbiAgICBtZXRob2QgcmVzZXRMb2cgPSBKcy53cmFwX21ldGhfY2FsbGJhY2sgUl9vY2FtbC5yZXNldF9sb2dcblxuICAgIG1ldGhvZCByZXRyaWV2ZUV2ZW50cyA9XG4gICAgICBKcy53cmFwX21ldGhfY2FsbGJhY2sgKGZ1biAoKSAtPlxuICAgICAgICAgIEpzLmFycmF5XG4gICAgICAgICAgICAoQXJyYXkub2ZfbGlzdFxuICAgICAgICAgICAgICAgKFJfb2NhbWwucmV0cmlldmVfbG9nICgpXG4gICAgICAgICAgICAgICB8PiBSX29jYW1sLkV2ZW50UGFyc2VyLnBhcnNlX3Jhd19ldmVudHNcbiAgICAgICAgICAgICAgIHw+IExpc3QubWFwIChmdW4gZXZlbnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICBvYmplY3QlanNcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGRhdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8PiBSX29jYW1sLnlvanNvbl9vZl9ldmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8PiBZb2pzb24uU2FmZS50b19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfD4gSnMuc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgZW5kKSkpKVxuXG4gICAgbWV0aG9kIHJldHJpZXZlUmF3RXZlbnRzID1cbiAgICAgIEpzLndyYXBfbWV0aF9jYWxsYmFjayAoZnVuICgpIC0+XG4gICAgICAgICAgSnMuYXJyYXlcbiAgICAgICAgICAgIChBcnJheS5vZl9saXN0XG4gICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgIChmdW4gZXZ0IC0+XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdCVqc1xuICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGV2ZW50VHlwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGV2dCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUl9vY2FtbC5CZWdpbkNhbGwgXyAtPiBcIkJlZ2luIGNhbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVuZENhbGwgXyAtPiBcIkVuZCBjYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gXyAtPiBcIlZhcmlhYmxlIGRlZmluaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlY2lzaW9uVGFrZW4gXyAtPiBcIkRlY2lzaW9uIHRha2VuXCIpXG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBpbmZvcm1hdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBKcy5hcnJheVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQXJyYXkub2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZXZ0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCZWdpbkNhbGwgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVuZENhbGwgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiAoaW5mbywgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcCBKcy5zdHJpbmcgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlY2lzaW9uVGFrZW4gXyAtPiBbXSkpXG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBsb2dnZWRWYWx1ZUpzb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGV2dCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiAoXywgdikgLT4gdlxuICAgICAgICAgICAgICAgICAgICAgICAgfCBFbmRDYWxsIF8gfCBCZWdpbkNhbGwgXyB8IERlY2lzaW9uVGFrZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBSX29jYW1sLnVuZW1iZWRkYWJsZSAoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHw+IFJfb2NhbWwueW9qc29uX29mX3J1bnRpbWVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHw+IFlvanNvbi5TYWZlLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfD4gSnMuc3RyaW5nXG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBzb3VyY2VQb3NpdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBldnQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBEZWNpc2lvblRha2VuIHBvcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBKcy5kZWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2JqZWN0JWpzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgZmlsZU5hbWUgPSBKcy5zdHJpbmcgcG9zLmZpbGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgc3RhcnRMaW5lID0gcG9zLnN0YXJ0X2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBlbmRMaW5lID0gcG9zLmVuZF9saW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgc3RhcnRDb2x1bW4gPSBwb3Muc3RhcnRfY29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgZW5kQ29sdW1uID0gcG9zLmVuZF9jb2x1bW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGxhd0hlYWRpbmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpzLmFycmF5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBcnJheS5vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBKcy5zdHJpbmcgcG9zLmxhd19oZWFkaW5ncykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IEpzLnVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgICAgICAgICAgICAgICAoUl9vY2FtbC5yZXRyaWV2ZV9sb2cgKCkpKSkpXG4gIGVuZFxuXG5sZXQgZXhlY3V0ZV9vcl90aHJvd19lcnJvciBmID1cbiAgbGV0IHRocm93X2Vycm9yIChkZXNjciA6IHN0cmluZykgKHBvcyA6IFJfb2NhbWwuc291cmNlX3Bvc2l0aW9uKSA9XG4gICAgbGV0IG1zZyA9XG4gICAgICBKcy5zdHJpbmdcbiAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVzIGluIGZpbGUgJXMsIHBvc2l0aW9uICVkOiVkLS0lZDolZC5cIiBkZXNjclxuICAgICAgICAgICBwb3MuZmlsZW5hbWUgcG9zLnN0YXJ0X2xpbmUgcG9zLnN0YXJ0X2NvbHVtbiBwb3MuZW5kX2xpbmVcbiAgICAgICAgICAgcG9zLmVuZF9jb2x1bW4pXG4gICAgaW5cbiAgICBKcy5Kc19lcnJvci5yYWlzZV9cbiAgICAgIChKcy5Kc19lcnJvci5vZl9lcnJvclxuICAgICAgICAgKG9iamVjdCVqc1xuICAgICAgICAgICAgdmFsIG11dGFibGUgbmFtZSA9IEpzLnN0cmluZyBcIk5vVmFsdWVQcm92aWRlZFwiXG4gICAgICAgICAgICB2YWwgbXV0YWJsZSBtZXNzYWdlID0gbXNnXG4gICAgICAgICAgICB2YWwgbXV0YWJsZSBzdGFjayA9IEpzLk9wdGRlZi5lbXB0eVxuICAgICAgICAgICAgbWV0aG9kIHRvU3RyaW5nID0gbXNnXG4gICAgICAgICBlbmQpKVxuICBpblxuICB0cnkgZiAoKSB3aXRoXG4gIHwgUl9vY2FtbC5Ob1ZhbHVlUHJvdmlkZWQgcG9zIC0+XG4gICAgdGhyb3dfZXJyb3JcbiAgICAgIFwiTm8gcnVsZSBhcHBsaWVzIGluIHRoZSBnaXZlbiBjb250ZXh0IHRvIGdpdmUgYSB2YWx1ZSB0byB0aGUgdmFyaWFibGVcIiBwb3NcbiAgfCBSX29jYW1sLkNvbmZsaWN0RXJyb3IgcG9zIC0+XG4gICAgdGhyb3dfZXJyb3JcbiAgICAgIFwiQSBjb25mbGljdCBoYXBwZW5lZCBiZXR3ZWVuIHR3byBydWxlcyBnaXZpbmcgYSB2YWx1ZSB0byB0aGUgdmFyaWFibGVcIiBwb3NcbiAgfCBSX29jYW1sLkFzc2VydGlvbkZhaWxlZCBwb3MgLT5cbiAgICB0aHJvd19lcnJvciBcIkEgZmFpbHVyZSBoYXBwZW5lZCBpbiB0aGUgYXNzZXJ0aW9uXCIgcG9zXG4iLCIoKiogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSB0aGUgQ2F0YWxhIGNvbXBpbGVyLCBkbyBub3QgZWRpdCEgKilcblxub3BlbiBSdW50aW1lX29jYW1sLlJ1bnRpbWVcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItNC0yNi0yNy0zMi00MS00MlwiXVxuXG5tb2R1bGUgUHJpc2VFbkNoYXJnZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIG9mIHVuaXRcbiAgICB8IEdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBvZiB1bml0XG4gICAgfCBFZmZlY3RpdmVFdFBlcm1hbmVudGUgb2YgdW5pdFxuICAgIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgb2YgdW5pdFxuICAgIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3ByaXNlX2VuX2NoYXJnZSAoeDogUHJpc2VFbkNoYXJnZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlByaXNlRW5DaGFyZ2VcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyB4IC0+XG4gICAgICAoXCJHYXJkZUFsdGVybsOpZVBhcnRhZ2VBbGxvY2F0aW9uc1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgeCAtPlxuICAgICAgKFwiR2FyZGVBbHRlcm7DqWVBbGxvY2F0YWlyZVVuaXF1ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBFZmZlY3RpdmVFdFBlcm1hbmVudGUgeCAtPiAoXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgeCAtPlxuICAgICAgKFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnPDqWXDgExhRmFtaWxsZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IHggLT5cbiAgICAgIChcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzw6llQXV4U2VydmljZXNTb2NpYXV4XCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZSA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBBdmFudCBvZiB1bml0XG4gICAgfCBQZW5kYW50IG9mIHVuaXRcbiAgICB8IEFwcmVzIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgKHg6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBdmFudCB4IC0+IChcIkF2YW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFBlbmRhbnQgeCAtPiAoXCJQZW5kYW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFwcmVzIHggLT4gKFwiQXByw6hzXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFByaXNlRW5Db21wdGUgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgQ29tcGxldGUgb2YgdW5pdFxuICAgIHwgUGFydGFnZWUgb2YgdW5pdFxuICAgIHwgWmVybyBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3ByaXNlX2VuX2NvbXB0ZSAoeDogUHJpc2VFbkNvbXB0ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlByaXNlRW5Db21wdGVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQ29tcGxldGUgeCAtPiAoXCJDb21wbMOodGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGFydGFnZWUgeCAtPiAoXCJQYXJ0YWfDqWVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgWmVybyB4IC0+IChcIlrDqXJvXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFZlcnNlbWVudEFsbG9jYXRpb25zID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IE5vcm1hbCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdmVyc2VtZW50X2FsbG9jYXRpb25zICh4OiBWZXJzZW1lbnRBbGxvY2F0aW9ucy50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlZlcnNlbWVudEFsbG9jYXRpb25zXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IE5vcm1hbCB4IC0+IChcIk5vcm1hbFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25WZXJzw6llQXV4U2VydmljZXNTb2NpYXV4XCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgb2YgdW5pdFxuICAgIHwgQ29tcGxlbWVudEZhbWlsaWFsIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZSBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyAoeDogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIsOJbMOpbWVudFByZXN0YXRpb25zRmFtaWxpYWxlc1wiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBQcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50IHggLT5cbiAgICAgIChcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbnNGYW1pbGlhbGVzIHggLT4gKFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IENvbXBsZW1lbnRGYW1pbGlhbCB4IC0+IChcIkNvbXBsw6ltZW50RmFtaWxpYWxcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50IHggLT4gKFwiQWxsb2NhdGlvbkxvZ2VtZW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbsOJZHVjYXRpb25FbmZhbnRIYW5kaWNhcMOpXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25SZW50csOpZVNjb2xhaXJlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Kb3VybmFsacOocmVQcmVzZW5jZVBhcmVudGFsZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBDb2xsZWN0aXZpdGUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgR3VhZGVsb3VwZSBvZiB1bml0XG4gICAgfCBHdXlhbmUgb2YgdW5pdFxuICAgIHwgTWFydGluaXF1ZSBvZiB1bml0XG4gICAgfCBMYVJldW5pb24gb2YgdW5pdFxuICAgIHwgU2FpbnRCYXJ0aGVsZW15IG9mIHVuaXRcbiAgICB8IFNhaW50TWFydGluIG9mIHVuaXRcbiAgICB8IE1ldHJvcG9sZSBvZiB1bml0XG4gICAgfCBTYWludFBpZXJyZUV0TWlxdWVsb24gb2YgdW5pdFxuICAgIHwgTWF5b3R0ZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2NvbGxlY3Rpdml0ZSAoeDogQ29sbGVjdGl2aXRlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiQ29sbGVjdGl2aXTDqVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBHdWFkZWxvdXBlIHggLT4gKFwiR3VhZGVsb3VwZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBHdXlhbmUgeCAtPiAoXCJHdXlhbmVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgTWFydGluaXF1ZSB4IC0+IChcIk1hcnRpbmlxdWVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgTGFSZXVuaW9uIHggLT4gKFwiTGFSw6l1bmlvblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBTYWludEJhcnRoZWxlbXkgeCAtPiAoXCJTYWludEJhcnRow6lsZW15XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNhaW50TWFydGluIHggLT4gKFwiU2FpbnRNYXJ0aW5cIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgTWV0cm9wb2xlIHggLT4gKFwiTcOpdHJvcG9sZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBTYWludFBpZXJyZUV0TWlxdWVsb24geCAtPiAoXCJTYWludFBpZXJyZUV0TWlxdWVsb25cIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgTWF5b3R0ZSB4IC0+IChcIk1heW90dGVcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDggPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2FnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfMzogZHVyYXRpb259XG5lbmRcbmxldCBlbWJlZF9hbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4ICh4OiBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhcIl0sXG4gIFsoXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiLCBlbWJlZF9kdXJhdGlvblxuICAgIHguQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDguYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zKV0pXG5cblxubW9kdWxlIEFsbG9jYXRpb25zRmFtaWxpYWxlcyA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudF92ZXJzZTogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzICh4OiBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXSxcbiAgWyhcIm1vbnRhbnRfdmVyc8OpXCIsIGVtYmVkX21vbmV5IHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnRfdmVyc2UpXSlcblxuXG5tb2R1bGUgVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7cjogYm9vbH1cbmVuZFxubGV0IGVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYSAoeDogVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiVsOpcmlmaWNhdGlvbsOCZ2VJbmbDqXJpZXVyT3XDiWdhbMOAXCJdLFxuICBbKFwiclwiLCBlbWJlZF9ib29sIHguVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQS5yKV0pXG5cblxubW9kdWxlIFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckEgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge3I6IGJvb2x9XG5lbmRcbmxldCBlbWJlZF92ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hICh4OiBWZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJWw6lyaWZpY2F0aW9uw4JnZVN1cMOpcmlldXLDgFwiXSxcbiAgWyhcInJcIiwgZW1iZWRfYm9vbCB4LlZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckEucildKVxuXG5cbm1vZHVsZSBTbWljID0gc3RydWN0XG4gIHR5cGUgdCA9IHticnV0X2hvcmFpcmU6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfc21pYyAoeDogU21pYy50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiU21pY1wiXSxcbiAgWyhcImJydXRfaG9yYWlyZVwiLCBlbWJlZF9tb25leSB4LlNtaWMuYnJ1dF9ob3JhaXJlKV0pXG5cblxubW9kdWxlIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge21vbnRhbnQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoeDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXSxcbiAgWyhcIm1vbnRhbnRcIiwgZW1iZWRfbW9uZXkgeC5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnQpXSlcblxuXG5tb2R1bGUgSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG4gIHR5cGUgdCA9IHtpX21vbnRhbnRfdmVyc2U6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgKHg6IEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwiaV9tb250YW50X3ZlcnPDqVwiLCBlbWJlZF9tb25leVxuICAgIHguSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLmlfbW9udGFudF92ZXJzZSldKVxuXG5cbm1vZHVsZSBFbmZhbnRFbnRyZWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRfaWRlbnRpZmlhbnQ6IGludGVnZXI7XG4gICAgZF9yZW11bmVyYXRpb25fbWVuc3VlbGxlOiBtb25leTtcbiAgICBkX2RhdGVfZGVfbmFpc3NhbmNlOiBkYXRlO1xuICAgIGRfcHJpc2VfZW5fY2hhcmdlOiBQcmlzZUVuQ2hhcmdlLnQ7XG4gICAgZF9hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzOiBib29sO1xuICAgIGRfYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50OiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VuZmFudF9lbnRyZWUgKHg6IEVuZmFudEVudHJlZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiRW5mYW50RW50csOpZVwiXSxcbiAgWyhcImRfaWRlbnRpZmlhbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRW5mYW50RW50cmVlLmRfaWRlbnRpZmlhbnQpO1xuICAgIChcImRfcsOpbXVuZXJhdGlvbl9tZW5zdWVsbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVuZmFudEVudHJlZS5kX3JlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgIChcImRfZGF0ZV9kZV9uYWlzc2FuY2VcIiwgZW1iZWRfZGF0ZVxuICAgIHguRW5mYW50RW50cmVlLmRfZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgIChcImRfcHJpc2VfZW5fY2hhcmdlXCIsIGVtYmVkX3ByaXNlX2VuX2NoYXJnZVxuICAgIHguRW5mYW50RW50cmVlLmRfcHJpc2VfZW5fY2hhcmdlKTtcbiAgICAoXCJkX2FfZMOpasOgX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiLCBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnRFbnRyZWUuZF9hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKTtcbiAgICAoXCJkX2LDqW7DqWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudEVudHJlZS5kX2JlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCldKVxuXG5cbm1vZHVsZSBFbmZhbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGlkZW50aWZpYW50OiBpbnRlZ2VyO1xuICAgIG9ibGlnYXRpb25fc2NvbGFpcmU6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50O1xuICAgIHJlbXVuZXJhdGlvbl9tZW5zdWVsbGU6IG1vbmV5O1xuICAgIGRhdGVfZGVfbmFpc3NhbmNlOiBkYXRlO1xuICAgIHByaXNlX2VuX2NoYXJnZTogUHJpc2VFbkNoYXJnZS50O1xuICAgIGFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXM6IGJvb2w7XG4gICAgYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50OiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VuZmFudCAoeDogRW5mYW50LnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJFbmZhbnRcIl0sXG4gIFsoXCJpZGVudGlmaWFudFwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5FbmZhbnQuaWRlbnRpZmlhbnQpO1xuICAgIChcIm9ibGlnYXRpb25fc2NvbGFpcmVcIiwgZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVcbiAgICB4LkVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlKTtcbiAgICAoXCJyw6ltdW5lcmF0aW9uX21lbnN1ZWxsZVwiLCBlbWJlZF9tb25leVxuICAgIHguRW5mYW50LnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgIChcImRhdGVfZGVfbmFpc3NhbmNlXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVuZmFudC5kYXRlX2RlX25haXNzYW5jZSk7XG4gICAgKFwicHJpc2VfZW5fY2hhcmdlXCIsIGVtYmVkX3ByaXNlX2VuX2NoYXJnZVxuICAgIHguRW5mYW50LnByaXNlX2VuX2NoYXJnZSk7XG4gICAgKFwiYV9kw6lqw6Bfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudC5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKTtcbiAgICAoXCJiw6luw6lmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudFwiLCBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnQuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KV0pXG5cblxubW9kdWxlIEVuZmFudExlUGx1c0FnZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bGVfcGx1c19hZ2U6IEVuZmFudC50fVxuZW5kXG5sZXQgZW1iZWRfZW5mYW50X2xlX3BsdXNfYWdlICh4OiBFbmZhbnRMZVBsdXNBZ2UudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkVuZmFudExlUGx1c8OCZ8OpXCJdLFxuICBbKFwibGVfcGx1c1/DomfDqVwiLCBlbWJlZF9lbmZhbnQgeC5FbmZhbnRMZVBsdXNBZ2UubGVfcGx1c19hZ2UpXSlcblxuXG5tb2R1bGUgUHJlc3RhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkcm9pdF9vdXZlcnQ6IEVuZmFudC50IC0+IGJvb2w7XG4gICAgY29uZGl0aW9uc19ob3JzX2FnZTogRW5mYW50LnQgLT4gYm9vbDtcbiAgICBhZ2VfbDUxMl8zXzI6IGR1cmF0aW9uO1xuICAgIHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgKHg6IFByZXN0YXRpb25zRmFtaWxpYWxlcy50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwiZHJvaXRfb3V2ZXJ0XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRyb2l0X291dmVydCk7XG4gICAgKFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5QcmVzdGF0aW9uc0ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSk7XG4gICAgKFwiw6JnZV9sNTEyXzNfMlwiLCBlbWJlZF9kdXJhdGlvblxuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZV9sNTEyXzNfMik7XG4gICAgKFwicsOpZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXCIsIGVtYmVkX2Jvb2xcbiAgICB4LlByZXN0YXRpb25zRmFtaWxpYWxlcy5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSldKVxuXG5cbm1vZHVsZSBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBwcmVzdGF0aW9uX2NvdXJhbnRlX2luOiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQ7XG4gICAgcmVzaWRlbmNlX2luOiBDb2xsZWN0aXZpdGUudFxuICB9XG5lbmRcbmxldCBlbWJlZF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luICh4OiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzX2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJwcmVzdGF0aW9uX2NvdXJhbnRlX2luXCIsIGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucHJlc3RhdGlvbl9jb3VyYW50ZV9pbik7XG4gICAgKFwicsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGVcbiAgICB4LlByZXN0YXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbildKVxuXG5cbm1vZHVsZSBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHVuaXRcbmVuZFxubGV0IGVtYmVkX2FsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gKF86IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4SW4udCkgOiBydW50aW1lX3ZhbHVlID0gVW5pdFxuXG5cbm1vZHVsZSBFbmZhbnRMZVBsdXNBZ2VJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZW5mYW50c19pbjogRW5mYW50LnQgYXJyYXl9XG5lbmRcbmxldCBlbWJlZF9lbmZhbnRfbGVfcGx1c19hZ2VfaW4gKHg6IEVuZmFudExlUGx1c0FnZUluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJFbmZhbnRMZVBsdXPDgmfDqV9pblwiXSxcbiAgWyhcImVuZmFudHNfaW5cIiwgZW1iZWRfYXJyYXkgKGVtYmVkX2VuZmFudCkgeC5FbmZhbnRMZVBsdXNBZ2VJbi5lbmZhbnRzX2luKV0pXG5cblxubW9kdWxlIEFsbG9jYXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbjogYm9vbDtcbiAgICBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luOiBib29sO1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX2luOiBtb25leTtcbiAgICByZXNpZGVuY2VfaW46IENvbGxlY3Rpdml0ZS50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgZW5mYW50c19hX2NoYXJnZV9pbjogRW5mYW50LnQgYXJyYXk7XG4gICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW46IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc19pblwiXSxcbiAgWyhcInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luKTtcbiAgICAoXCJwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucmVzc291cmNlc19tZW5hZ2VfaW4pO1xuICAgIChcInLDqXNpZGVuY2VfaW5cIiwgZW1iZWRfY29sbGVjdGl2aXRlXG4gICAgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiZW5mYW50c1/DoF9jaGFyZ2VfaW5cIiwgZW1iZWRfYXJyYXkgKGVtYmVkX2VuZmFudClcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmVuZmFudHNfYV9jaGFyZ2VfaW4pO1xuICAgIChcImF2YWl0X2VuZmFudF/DoF9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbildKVxuXG5cbm1vZHVsZSBWZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRhdGVfbmFpc3NhbmNlX2luOiBkYXRlO1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgYW5uZWVzX2luOiBkdXJhdGlvblxuICB9XG5lbmRcbmxldCBlbWJlZF92ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4gKHg6IFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiVsOpcmlmaWNhdGlvbsOCZ2VJbmbDqXJpZXVyT3XDiWdhbMOAX2luXCJdLFxuICBbKFwiZGF0ZV9uYWlzc2FuY2VfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQUluLmRhdGVfbmFpc3NhbmNlX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LlZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJhbm7DqWVzX2luXCIsIGVtYmVkX2R1cmF0aW9uXG4gICAgeC5WZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBSW4uYW5uZWVzX2luKV0pXG5cblxubW9kdWxlIFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9uYWlzc2FuY2VfaW46IGRhdGU7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBhbm5lZXNfaW46IGR1cmF0aW9uXG4gIH1cbmVuZFxubGV0IGVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4gKHg6IFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiVsOpcmlmaWNhdGlvbsOCZ2VTdXDDqXJpZXVyw4BfaW5cIl0sXG4gIFsoXCJkYXRlX25haXNzYW5jZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5WZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBSW4uZGF0ZV9uYWlzc2FuY2VfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQUluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcImFubsOpZXNfaW5cIiwgZW1iZWRfZHVyYXRpb24geC5WZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBSW4uYW5uZWVzX2luKV0pXG5cblxubW9kdWxlIFNtaWNJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTsgcmVzaWRlbmNlX2luOiBDb2xsZWN0aXZpdGUudH1cbmVuZFxubGV0IGVtYmVkX3NtaWNfaW4gKHg6IFNtaWNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiU21pY19pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguU21pY0luLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInLDqXNpZGVuY2VfaW5cIiwgZW1iZWRfY29sbGVjdGl2aXRlIHguU21pY0luLnJlc2lkZW5jZV9pbildKVxuXG5cbm1vZHVsZSBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2RhdGVfY291cmFudGVfaW46IGRhdGV9XG5lbmRcbmxldCBlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luICh4OiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luKV0pXG5cblxubW9kdWxlIEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBpX2RhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgaV9lbmZhbnRzX2luOiBFbmZhbnRFbnRyZWUudCBhcnJheTtcbiAgICBpX3Jlc3NvdXJjZXNfbWVuYWdlX2luOiBtb25leTtcbiAgICBpX3Jlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnQ7XG4gICAgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbjogYm9vbDtcbiAgICBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW46IGJvb2w7XG4gICAgaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbjogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9pbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc19pblwiXSxcbiAgWyhcImlfZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX2RhdGVfY291cmFudGVfaW4pO1xuICAgIChcImlfZW5mYW50c19pblwiLCBlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50X2VudHJlZSlcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfZW5mYW50c19pbik7XG4gICAgKFwiaV9yZXNzb3VyY2VzX23DqW5hZ2VfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcmVzc291cmNlc19tZW5hZ2VfaW4pO1xuICAgIChcImlfcsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGVcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcmVzaWRlbmNlX2luKTtcbiAgICAoXCJpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW4pO1xuICAgIChcImlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4pO1xuICAgIChcImlfYXZhaXRfZW5mYW50X8OgX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW4pXSlcblxuXG5cblxubGV0IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDggKGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW46IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4SW4udCkgOiBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOC50ID1cbiAgbGV0IGFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfM186IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhcIjsgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiXVxuICAgIChlbWJlZF9kdXJhdGlvbikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NzY7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkdXJhdGlvbl9vZl9udW1iZXJzICgxNikgKDApICgwKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03NjsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIHtBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOC5hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzMgPVxuICAgICBhZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNffVxuXG5sZXQgZW5mYW50X2xlX3BsdXNfYWdlIChlbmZhbnRfbGVfcGx1c19hZ2VfaW46IEVuZmFudExlUGx1c0FnZUluLnQpIDogRW5mYW50TGVQbHVzQWdlLnQgPVxuICBsZXQgZW5mYW50c186IEVuZmFudC50IGFycmF5ID0gZW5mYW50X2xlX3BsdXNfYWdlX2luLkVuZmFudExlUGx1c0FnZUluLmVuZmFudHNfaW4gaW5cbiAgbGV0IGxlX3BsdXNfYWdlXzogRW5mYW50LnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJFbmZhbnRMZVBsdXPDgmfDqVwiOyBcImxlX3BsdXNfw6Jnw6lcIl0gKGVtYmVkX2VuZmFudCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9ODA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19yZWR1Y2VcbiAgICAgICAgICAgICAgKGZ1biAocG90ZW50aWVsX3BsdXNfYWdlXzFfOiBFbmZhbnQudClcbiAgICAgICAgICAgICAgICAgKHBvdGVudGllbF9wbHVzX2FnZV8yXzogRW5mYW50LnQpIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAobGV0IHBvdGVudGllbF9wbHVzX2FnZV8gOiBFbmZhbnQudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWVsX3BsdXNfYWdlXzFfXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAocG90ZW50aWVsX3BsdXNfYWdlXy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpKVxuICAgICAgICAgICAgICAgICAgICAgIChsZXQgcG90ZW50aWVsX3BsdXNfYWdlXyA6IEVuZmFudC50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBwb3RlbnRpZWxfcGx1c19hZ2VfMl9cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIChwb3RlbnRpZWxfcGx1c19hZ2VfLkVuZmFudC5kYXRlX2RlX25haXNzYW5jZSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgcG90ZW50aWVsX3BsdXNfYWdlXzFfIGVsc2UgcG90ZW50aWVsX3BsdXNfYWdlXzJfKVxuICAgICAgICAgICAgICAoe0VuZmFudC5pZGVudGlmaWFudCA9IChpbnRlZ2VyX29mX3N0cmluZyBcIi0xXCIpO1xuICAgICAgICAgICAgICAgICAgRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgKCkpO1xuICAgICAgICAgICAgICAgICAgRW5mYW50LnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKTtcbiAgICAgICAgICAgICAgICAgIEVuZmFudC5kYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDI5OTkpICgxMikgKDMxKSk7XG4gICAgICAgICAgICAgICAgICBFbmZhbnQucHJpc2VfZW5fY2hhcmdlID1cbiAgICAgICAgICAgICAgICAgICAgKFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlICgpKTtcbiAgICAgICAgICAgICAgICAgIEVuZmFudC5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzID1cbiAgICAgICAgICAgICAgICAgICAgZmFsc2U7XG4gICAgICAgICAgICAgICAgICBFbmZhbnQuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgZmFsc2V9KSBlbmZhbnRzXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT04MDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIHtFbmZhbnRMZVBsdXNBZ2UubGVfcGx1c19hZ2UgPSBsZV9wbHVzX2FnZV99XG5cbmxldCB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2EgKHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbjogVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQUluLnQpIDogVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQS50ID1cbiAgbGV0IGRhdGVfbmFpc3NhbmNlXzogZGF0ZSA9IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbi5WZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBSW4uZGF0ZV9uYWlzc2FuY2VfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luLlZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBhbm5lZXNfOiBkdXJhdGlvbiA9IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbi5WZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBSW4uYW5uZWVzX2luIGluXG4gIGxldCByXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlbDqXJpZmljYXRpb27DgmdlSW5mw6lyaWV1ck91w4lnYWzDgFwiOyBcInJcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvLi4vcHJvbG9ndWVfZnJhbmNlL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTE3OyBlbmRfY29sdW1uPTEzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSAoXG4gICAgICAgICBbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvLi4vcHJvbG9ndWVfZnJhbmNlL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIwOyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19sdGVfZGF0X2RhdCAob19hZGRfZGF0X2R1ciBSb3VuZFVwIGRhdGVfbmFpc3NhbmNlXyBhbm5lZXNfKVxuICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljLy4uL3Byb2xvZ3VlX2ZyYW5jZS9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xNzsgZW5kX2NvbHVtbj0xMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7IFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX0pKSkpIGluXG4gIHtWZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBLnIgPSByX31cblxubGV0IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EgKHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW46IFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi50KSA6IFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckEudCA9XG4gIGxldCBkYXRlX25haXNzYW5jZV86IGRhdGUgPSB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luLlZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi5kYXRlX25haXNzYW5jZV9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luLlZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBhbm5lZXNfOiBkdXJhdGlvbiA9IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4uVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQUluLmFubmVlc19pbiBpblxuICBsZXQgcl86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJWw6lyaWZpY2F0aW9uw4JnZVN1cMOpcmlldXLDgFwiOyBcInJcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvLi4vcHJvbG9ndWVfZnJhbmNlL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTI3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTI3OyBlbmRfY29sdW1uPTEzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSAoXG4gICAgICAgICBbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvLi4vcHJvbG9ndWVfZnJhbmNlL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMwOyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19ndF9kYXRfZGF0IChvX2FkZF9kYXRfZHVyIFJvdW5kVXAgZGF0ZV9uYWlzc2FuY2VfIGFubmVlc18pXG4gICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvLi4vcHJvbG9ndWVfZnJhbmNlL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTI3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTI3OyBlbmRfY29sdW1uPTEzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjsgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSkpKSkgaW5cbiAge1ZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckEuciA9IHJffVxuXG5sZXQgc21pYyAoc21pY19pbjogU21pY0luLnQpIDogU21pYy50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gc21pY19pbi5TbWljSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBzbWljX2luLlNtaWNJbi5yZXNpZGVuY2VfaW4gaW5cbiAgbGV0IGJydXRfaG9yYWlyZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiU21pY1wiOyBcImJydXRfaG9yYWlyZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+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+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2w1MTJfM18yXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXIgQWJvcnRPblJvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9sNTEyXzNfMl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTA7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTU3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAge1ByZXN0YXRpb25zRmFtaWxpYWxlcy5kcm9pdF9vdXZlcnQgPSBkcm9pdF9vdXZlcnRfO1xuICAgICBQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSA9IGNvbmRpdGlvbnNfaG9yc19hZ2VfO1xuICAgICBQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYWdlX2w1MTJfM18yID0gYWdlX2w1MTJfM18yXztcbiAgICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xID0gcmVnaW1lX291dHJlX21lcl9sNzUxXzFffVxuXG5sZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbjogQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9XG4gIGxldCBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF86IGJvb2wgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luIGluXG4gIGxldCBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9faV86IGJvb2wgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlXzogbW9uZXkgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnJlc3NvdXJjZXNfbWVuYWdlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucmVzaWRlbmNlX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgZW5mYW50c19hX2NoYXJnZV86IEVuZmFudC50IGFycmF5ID0gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5lbmZhbnRzX2FfY2hhcmdlX2luIGluXG4gIGxldCBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl86IGJvb2wgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luIGluXG4gIGxldCBwcmlzZV9lbl9jb21wdGVfOiBFbmZhbnQudCAtPiBQcmlzZUVuQ29tcHRlLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTc7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxNTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZW5mYW50Xy5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gUHJpc2VFbkNvbXB0ZS5QYXJ0YWdlZSAoKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk3OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI1NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNTU7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGVuZmFudF8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IFByaXNlRW5Db21wdGUuWmVybyAoKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk3OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk3OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTc7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNjU7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSAoKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwNTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChlbmZhbnRfLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSAoKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODU7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGVuZmFudF8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IFByaXNlRW5Db21wdGUuQ29tcGxldGUgKCkpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTk3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk3OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk3OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IHZlcnNlbWVudF86IEVuZmFudC50IC0+IFZlcnNlbWVudEFsbG9jYXRpb25zLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJ2ZXJzZW1lbnRcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2MDsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZW5mYW50Xy5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzZW1lbnRBbGxvY2F0aW9ucy5BbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk4OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk4OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk4OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI3MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjcxOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLk5vcm1hbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxOTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzZW1lbnRBbGxvY2F0aW9ucy5Ob3JtYWwgKCkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDk7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZW5mYW50Xy5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzZW1lbnRBbGxvY2F0aW9ucy5Ob3JtYWwgKCkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg5OyBlbmRfY29sdW1uPTYwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChlbmZhbnRfLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBWZXJzZW1lbnRBbGxvY2F0aW9ucy5Ob3JtYWwgKCkpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk4OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk4OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG5vbWJyZV9lbmZhbnRzX2w1MjFfMV86IGludGVnZXIgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJub21icmVfZW5mYW50c19sNTIxXzFcIl0gKGVtYmVkX2ludGVnZXIpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE1MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTE7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mjk0OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTUxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE1MTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBub21icmVfZW5mYW50c19hbGluZWFfMl9sNTIxXzNfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibm9tYnJlX2VuZmFudHNfYWxpbsOpYV8yX2w1MjFfM1wiXVxuICAgIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNTQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTU0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NjQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTU0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE1NDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCByZXN1bHRfOiBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInZlcnNpb25fYXZyaWxfMjAwOFwiO1xuICAgICAgXCJBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwidmVyc2lvbl9hdnJpbF8yMDA4XCI7XG4gICAgICBcIkFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4XCJdIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDgpXG4gICAgKCgpKSkpIGluXG4gIGxldCB2ZXJzaW9uX2F2cmlsXzIwMDhfZG90X2FnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfM186IGR1cmF0aW9uID0gcmVzdWx0Xy5BbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOC5hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzMgaW5cbiAgbGV0IGJtYWZfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImJtYWYuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE2Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjc7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjc7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTY3OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiYm1hZlwiOyBcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl1cbiAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiYm1hZlwiOyBcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl1cbiAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKVxuICAgICh7QmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBibWFmX2RvdF9kYXRlX2NvdXJhbnRlX30pKSkgaW5cbiAgbGV0IGJtYWZfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy5tb250YW50IGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzLmRhdGVfY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE2Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjM7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3ByZXN0YXRpb25fY291cmFudGVfOiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5wcmVzdGF0aW9uX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTYxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uc0ZhbWlsaWFsZXMgKCkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYxOyBlbmRfY29sdW1uPTU2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzLnLDqXNpZGVuY2VcIl1cbiAgICAgIChlbWJlZF9jb2xsZWN0aXZpdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTY1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTY1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc2lkZW5jZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTY1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0gcHJlc3RhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAoe1ByZXN0YXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucHJlc3RhdGlvbl9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcHJlc3RhdGlvbl9jb3VyYW50ZV87XG4gICAgICAgIFByZXN0YXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbiA9XG4gICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzaWRlbmNlX30pKSkgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2Ryb2l0X291dmVydF86IEVuZmFudC50IC0+IGJvb2wgPSByZXN1bHRfLlByZXN0YXRpb25zRmFtaWxpYWxlcy5kcm9pdF9vdXZlcnQgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2NvbmRpdGlvbnNfaG9yc19hZ2VfOiBFbmZhbnQudCAtPiBib29sID0gcmVzdWx0Xy5QcmVzdGF0aW9uc0ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfYWdlX2w1MTJfM18yXzogZHVyYXRpb24gPSByZXN1bHRfLlByZXN0YXRpb25zRmFtaWxpYWxlcy5hZ2VfbDUxMl8zXzIgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXzogYm9vbCA9IHJlc3VsdF8uUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xIGluXG4gIGxldCBlbmZhbnRfbGVfcGx1c19hZ2VfZG90X2VuZmFudHNfOiBFbmZhbnQudCBhcnJheSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJlbmZhbnRfbGVfcGx1c1/DomfDqS5lbmZhbnRzXCJdXG4gICAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX2VuZmFudCkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMzOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBlbmZhbnRzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMzOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogRW5mYW50TGVQbHVzQWdlLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZW5mYW50X2xlX3BsdXNfw6Jnw6lcIjsgXCJFbmZhbnRMZVBsdXPDgmfDqVwiXVxuICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJlbmZhbnRfbGVfcGx1c1/DomfDqVwiOyBcIkVuZmFudExlUGx1c8OCZ8OpXCJdXG4gICAgZW5mYW50X2xlX3BsdXNfYWdlKVxuICAgICh7RW5mYW50TGVQbHVzQWdlSW4uZW5mYW50c19pbiA9IGVuZmFudF9sZV9wbHVzX2FnZV9kb3RfZW5mYW50c199KSkpIGluXG4gIGxldCBlbmZhbnRfbGVfcGx1c19hZ2VfZG90X2xlX3BsdXNfYWdlXzogRW5mYW50LnQgPSByZXN1bHRfLkVuZmFudExlUGx1c0FnZS5sZV9wbHVzX2FnZSBpblxuICBsZXQgYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zXzogRW5mYW50LnQgLT4gZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiXSAodW5lbWJlZGRhYmxlKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE1MjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Mzsgc3RhcnRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1ciBBYm9ydE9uUm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDExKSAoMCkgKDApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA4KSAoNCkgKDMwKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb25fYXZyaWxfMjAwOF9kb3RfYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zXykpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkdXJhdGlvbl9vZl9udW1iZXJzICgxNCkgKDApICgwKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTI7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTUyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE1MjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV86IEVuZmFudC50IGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICBcImVuZmFudHNfw6BfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTU7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03NTsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fZmlsdGVyXG4gICAgICAgICAgICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydFwiXVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRcIl1cbiAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvaXRfb3V2ZXJ0XylcbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSkgZW5mYW50c19hX2NoYXJnZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTU7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgZXN0X2VuZmFudF9sZV9wbHVzX2FnZV86IEVuZmFudC50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJlc3RfZW5mYW50X2xlX3BsdXNfw6Jnw6lcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTU1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gKFxuICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICBvX2VxIGVuZmFudF9sZV9wbHVzX2FnZV9kb3RfbGVfcGx1c19hZ2VfIGVuZmFudF8pKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0xNTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTU1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE1NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9faV9pX2Q1MjFfM186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicGxhZm9uZF9JSV9kNTIxXzNcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTU4OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1ODsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1ODsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzA7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2lyY3VsYWlyZSBpbnRlcm1pbmlzdMOpcmllbGxlIE7CsCBEU1MvU0QyQi8yMDE3LzM1MiBkdSAyMiBkw6ljZW1icmUgMjAxNyByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDE4IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzg3NzAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTYyODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1ODsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3TDqXJpZWxsZSBuwrAgRFNTL1NEMkIvMjAxOC8yNzkgZHUgMTcgZMOpY2VtYnJlIDIwMTggcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGphbnZpZXIgMjAxOSBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlcyBk4oCZYXR0cmlidXRpb24gZGUgY2VydGFpbmVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIGxhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc5NTU4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU2ODQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTg7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk2OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0ZXJpZWxsZSBubyBEU1MvU0QyQi8yMDE5LzI2MSBkdSAxOCBkw6ljZW1icmUgMjAxOSByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDIwIGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODA4MzEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTc3NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1ODsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTMyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzMjsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMTQgZMOpY2VtYnJlIDIwMjAgcmVsYXRpZiBhdSBtb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IGF1eCB0cmFuY2hlcyBkdSBiYXLDqG1lIGFwcGxpY2FibGUgYXUgcmVjb3V2cmVtZW50IGRlcyBpbmR1cyBldCDDoCBsYSBzYWlzaWUgZGVzIHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MTU1ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1ODI3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMTQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzgzMDAwMFwiKVxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU1OTUwMFwiKVxuICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTU4OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfX2lfZDUyMV8zXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwbGFmb25kX0lfZDUyMV8zXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE1NzsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTc7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTc7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNpcmN1bGFpcmUgaW50ZXJtaW5pc3TDqXJpZWxsZSBOwrAgRFNTL1NEMkIvMjAxNy8zNTIgZHUgMjIgZMOpY2VtYnJlIDIwMTcgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGphbnZpZXIgMjAxOCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlcyBk4oCZYXR0cmlidXRpb24gZGUgY2VydGFpbmVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIGxhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2Mjg2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU2MjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTc7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0w6lyaWVsbGUgbsKwIERTUy9TRDJCLzIwMTgvMjc5IGR1IDE3IGTDqWNlbWJyZSAyMDE4IHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBqYW52aWVyIDIwMTkgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXMgZOKAmWF0dHJpYnV0aW9uIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBsYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Njg0OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1Njg0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04OTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdGVyaWVsbGUgbm8gRFNTL1NEMkIvMjAxOS8yNjEgZHUgMTggZMOpY2VtYnJlIDIwMTkgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGphbnZpZXIgMjAyMCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlcyBk4oCZYXR0cmlidXRpb24gZGUgY2VydGFpbmVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIExhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU3NzU5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU3NzUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTc7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDE0IGTDqWNlbWJyZSAyMDIwIHJlbGF0aWYgYXUgbW9udGFudCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlcyBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBhdXggdHJhbmNoZXMgZHUgYmFyw6htZSBhcHBsaWNhYmxlIGF1IHJlY291dnJlbWVudCBkZXMgaW5kdXMgZXQgw6AgbGEgc2Fpc2llIGRlcyBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTgyNzkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTgyNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzA0OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU1OTUwMDBcIilcbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NTk1MDBcIilcbiAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTU3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE1NzsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfY29tcGxlbWVudF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRfY29tcGzDqW1lbnRcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEzNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzc7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM3OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM3OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzMDsgZW5kX2NvbHVtbj03MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw3NTUtMTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IERpc3Bvc2l0aW9ucyBwYXJ0aWN1bGnDqHJlcyDDoCBsYSBHdWFkZWxvdXBlLCDDoCBsYSBHdXlhbmUsIMOgIGxhIE1hcnRpbmlxdWUsIMOgIExhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSBldCDDoCBTYWludC1NYXJ0aW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxOyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzc7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTM3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzNzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVfOiBFbmZhbnQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyMDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTIwOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDIzOyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI0OyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNzU1LTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50IChvX2xlbmd0aCBlbmZhbnRzX2FfY2hhcmdlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfZW5mYW50c19hbGluZWFfMl9sNTIxXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2R1cl9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyIEFib3J0T25Sb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudC5kYXRlX2RlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9hZ2VfbDUxMl8zXzJfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoMCkgKDM2NSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudC5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbnNfaG9yc1/DomdlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbnNfaG9yc1/DomdlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfY29uZGl0aW9uc19ob3JzX2FnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjA7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0xMjA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTIwOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjA7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfcXVhdHJpZW1lX2VuZmFudF9ldF9wbHVzX21heW90dGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgXCJtb250YW50X2luaXRpYWxfYmFzZV9xdWF0cmnDqG1lX2VuZmFudF9ldF9wbHVzX21heW90dGVcIl0gKGVtYmVkX21vbmV5KVxuICAgIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTc7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE5NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xOTU7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA0NjNcIikpXG4gICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSkpIGVsc2VcbiAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2luaXRpYWxfYmFzZV90cm9pc2llbWVfZW5mYW50X21heW90dGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgXCJtb250YW50X2luaXRpYWxfYmFzZV90cm9pc2nDqG1lX2VuZmFudF9tYXlvdHRlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzMTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzE7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNDYzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00Mzk7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNTM5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDc7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEzKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTMpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNjE1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTU7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNjlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDYzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ2MzsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA3NjZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDcxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ3MTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNikgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4NDJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ3OTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA5MThcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4NzsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEwODlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDk1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ5NTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEyNTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTAzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTUwMzsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjE0M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE4NjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF8gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xNlwiKSlcbiAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG5vbWJyZV90b3RhbF9lbmZhbnRzXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm5vbWJyZV90b3RhbF9lbmZhbnRzXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb190b3JhdF9pbnRcbiAgICAgICAgICAgICAgKG9fbGVuZ3RoIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTEwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExMDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBub21icmVfbW95ZW5fZW5mYW50c186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJub21icmVfbW95ZW5fZW5mYW50c1wiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwOTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDI7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fcmVkdWNlXG4gICAgICAgICAgICAgIChmdW4gKHN1bTFfOiBkZWNpbWFsKSAoc3VtMl86IGRlY2ltYWwpIC0+XG4gICAgICAgICAgICAgICAgIG9fYWRkX3JhdF9yYXQgc3VtMV8gc3VtMl8pIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgIChvX21hcFxuICAgICAgICAgICAgICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX3ByaXNlX2VuX2NvbXB0ZSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHByaXNlX2VuX2NvbXB0ZV8pICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBlbmZhbnRfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSBfIC0+IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNvbXB0ZS5QYXJ0YWdlZSBfIC0+IChkZWNpbWFsX29mX3N0cmluZyBcIjAuNVwiKVxuICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuWmVybyBfIC0+IChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKVxuICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDk7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfcHJlbWllcl9lbmZhbnRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfaW5pdGlhbF9iYXNlX3ByZW1pZXJfZW5mYW50XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjUxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjUyOyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTQ1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2MTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEzOTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjcwOyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEzKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTMpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTMzNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzk7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMjc4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI4Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4ODsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEyMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTc7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMTYzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwNjsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjExMDVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE1OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDk3NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjQ7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wODQ3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMzMjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzMzsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA3MTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQxOyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NzI4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2Nzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NzsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNTg4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjY7IGVuZF9jb2x1bW49NzE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDc1NS01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNTg4XCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzYyOyBzdGFydF9jb2x1bW49Mjk7IGVuZF9saW5lPTM2MjsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDc1NS01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRMOpcGFydGVtZW50cyBkJ291dHJlLW1lclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgZHJvaXRfb3V2ZXJ0X2Jhc2VfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0X2Jhc2VcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDM7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAzOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAzOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAzOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5OyBlbmRfY29sdW1uPTcxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTA7IGVuZF9jb2x1bW49NzI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw3NTUtMTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEaXNwb3NpdGlvbnMgcGFydGljdWxpw6hyZXMgw6AgbGEgR3VhZGVsb3VwZSwgw6AgbGEgR3V5YW5lLCDDoCBsYSBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXkgZXQgw6AgU2FpbnQtTWFydGluXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAzOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGRyb2l0X291dmVydF9tYWpvcmF0aW9uXzogRW5mYW50LnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyNjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI2OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE4OyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9lbmZhbnRzX2FsaW5lYV8yX2w1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXIgQWJvcnRPblJvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9kdXJhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX2VuZmFudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudF8pKSkpKSkpKSBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAyOyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVzdF9lbmZhbnRfbGVfcGx1c1/DomfDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZXN0X2VuZmFudF9sZV9wbHVzX8OiZ8OpXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZXN0X2VuZmFudF9sZV9wbHVzX8OiZ8OpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXN0X2VuZmFudF9sZV9wbHVzX2FnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlc3RfZW5mYW50X2xlX3BsdXNfw6Jnw6lcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBlbmZhbnRfKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyIEFib3J0T25Sb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudC5kYXRlX2RlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9kdXJhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfZW5mYW50KSBlbmZhbnRfKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXykpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI2OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyNjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI2OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGNvbXBsZW1lbnRfZGVncmVzc2lmXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJjb21wbMOpbWVudF9kw6lncmVzc2lmXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFsbG9jYXRpb25fOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzk7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzk7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzOTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NjsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9kNTIxXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBwbGFmb25kX19pX2Q1MjFfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBhbGxvY2F0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcGxhZm9uZF9faV9kNTIxXzNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBhbGxvY2F0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzOTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3NTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9pX2Q1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBsYWZvbmRfX2lfaV9kNTIxXzNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYWxsb2NhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBsYWZvbmRfX2lfaV9kNTIxXzNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBhbGxvY2F0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODE7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTEzOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzk7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTM5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzOTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlX3Bhcl9lbmZhbnRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfdmVyc8OpX2ZvcmZhaXRhaXJlX3Bhcl9lbmZhbnRcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEyMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTIyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyMTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjIxOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlXyBwbGFmb25kX19pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIwMjM0XCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTIyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM2OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlXyBwbGFmb25kX19pX2Q1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlXyBwbGFmb25kX19pX2lfZDUyMV8zXykpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEwMTE3XCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTIyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI0OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjQ5OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNTA1OVwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTIyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzaWVtZV9lbmZhbnRfZXRfcGx1c186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICBcIm1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzacOobWVfZW5mYW50X2V0X3BsdXNcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA3OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlXyBwbGFmb25kX19pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40MVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg0OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlXyBwbGFmb25kX19pX2Q1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlXyBwbGFmb25kX19pX2lfZDUyMV8zXykpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yMDVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTIyOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTAyNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA3OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9iYXNlX2RldXhpZW1lX2VuZmFudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX2Jhc2VfZGV1eGnDqG1lX2VuZmFudFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1MDsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yMzJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU4OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIzNzlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY2OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEzKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEzKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI0MzdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzc0OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI0OTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzgyOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI1NTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzkwOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE2KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE2KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI2MTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzk4OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI2NzJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA2OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI4MDRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDE0OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI5MzZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDIyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDIyOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjMwNjhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3Nzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3NzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4zMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV8gcGxhZm9uZF9faV9kNTIxXzNfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjMyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Nzk7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTc5OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2Q1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9pX2Q1MjFfM18pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjE2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTc7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IHJhcHBvcnRfZW5mYW50c190b3RhbF9tb3llbl86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJyYXBwb3J0X2VuZmFudHNfdG90YWxfbW95ZW5cIl0gKGVtYmVkX2RlY2ltYWwpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwODsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEyODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMjg7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiAob19lcSBub21icmVfdG90YWxfZW5mYW50c18gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpIHRoZW5cbiAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikgZWxzZVxuICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdCBub21icmVfbW95ZW5fZW5mYW50c18gbm9tYnJlX3RvdGFsX2VuZmFudHNfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA4OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9tZXRyb3BvbGVfbWFqb3JhdGlvbl86IEVuZmFudC50IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX23DqXRyb3BvbGVfbWFqb3JhdGlvblwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfZDUyMV8zXykgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xNlwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjg7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9kNTIxXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSkgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wOFwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjg7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzODsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9pX2Q1MjFfM18pICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBlbmZhbnRfKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDRcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI4OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjg7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3QgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0xMjg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI4OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjg7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF92ZXJzw6lfZm9yZmFpdGFpcmVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMjM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTIzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE5OTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX211bHRfbW9uX3JhdCBtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlX3Bhcl9lbmZhbnRfXG4gICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9mb3JmYWl0YWlyZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBlbmZhbnRfKSkpKSkpKSBlbmZhbnRzX2FfY2hhcmdlXykpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTIzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9iYXNlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfYmFzZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1NzsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRMOpcGFydGVtZW50cyBkJ291dHJlLW1lclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9iYXNlX3ByZW1pZXJfZW5mYW50XykpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MTsgc3RhcnRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUxOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9iYXNlX3ByZW1pZXJfZW5mYW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9pbml0aWFsX2Jhc2VfZGV1eGllbWVfZW5mYW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzaWVtZV9lbmZhbnRfbWF5b3R0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfYmFzZV9xdWF0cmllbWVfZW5mYW50X2V0X3BsdXNfbWF5b3R0ZV8pKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE4OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fYWRkX21vbl9tb24gbW9udGFudF9pbml0aWFsX2Jhc2VfZGV1eGllbWVfZW5mYW50X1xuICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfYmFzZV90cm9pc2llbWVfZW5mYW50X2V0X3BsdXNfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX21ham9yYXRpb25fOiBFbmZhbnQudCAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfaW5pdGlhbF9tYWpvcmF0aW9uXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTMwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzMDsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzMDsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTMwOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzgzOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENzU1LTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb2l0X291dmVydF9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBlbmZhbnRfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyIEFib3J0T25Sb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDExKSAoMCkgKDApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXIgQWJvcnRPblJvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTYpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMzY5XCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzMDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzA7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTI7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyIEFib3J0T25Sb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDE2KSAoMCkgKDApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNTY3XCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRfaW5pdGlhbF9tw6l0cm9wb2xlX21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRfaW5pdGlhbF9tw6l0cm9wb2xlX21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9pbml0aWFsX23DqXRyb3BvbGVfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfbWV0cm9wb2xlX21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9pbml0aWFsX23DqXRyb3BvbGVfbWFqb3JhdGlvblwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBlbmZhbnRfKSkpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTMwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzMDsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMzA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTMwOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyX2ZvcmZhaXRhaXJlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X3ZlcnPDqV9jb21wbMOpbWVudF9wb3VyX2ZvcmZhaXRhaXJlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNDI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTQyOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Mjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0MjsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0MjsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzA7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBwbGFmb25kX19pX2Q1MjFfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBwbGFmb25kX19pX2Q1MjFfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDI7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjgwOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBwbGFmb25kX19pX2lfZDUyMV8zX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBsYWZvbmRfX2lfaV9kNTIxXzNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI4Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yODY7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTQyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0MjsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuZWVfYmFzZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybsOpZV9iYXNlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTExOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgbW9udGFudF9pbml0aWFsX2Jhc2VfIHJhcHBvcnRfZW5mYW50c190b3RhbF9tb3llbl8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTExOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExMTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuZWVfbWFqb3JhdGlvbl86IEVuZmFudC50IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybsOpZV9tYWpvcmF0aW9uXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTMyOyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gKFxuICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NjsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX21ham9yYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfaW5pdGlhbF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgbW9udGFudF9pbml0aWFsX21ham9yYXRpb25fKSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX21ham9yYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgKG1hdGNoICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9wcmlzZV9lbl9jb21wdGUpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICBwcmlzZV9lbl9jb21wdGVfKSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuQ29tcGxldGUgXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuUGFydGFnZWUgXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjVcIilcbiAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ29tcHRlLlplcm8gXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0xMzI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTMyOyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEzMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzI7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF92ZXJzZV9iYXNlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X3ZlcnPDqV9iYXNlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTEyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExMjsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgZHJvaXRfb3V2ZXJ0X2Jhc2VfIHRoZW4gbW9udGFudF9hdmVjX2dhcmRlX2FsdGVybmVlX2Jhc2VfXG4gICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTEyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExMjsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlX21ham9yYXRpb25fOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfdmVyc8OpX21ham9yYXRpb25cIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMzQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM0OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiBkcm9pdF9vdXZlcnRfYmFzZV8gdGhlblxuICAgICAgICAgICAgICAob19yZWR1Y2VcbiAgICAgICAgICAgICAgICAgKGZ1biAoc3VtMV86IG1vbmV5KSAoc3VtMl86IG1vbmV5KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIHN1bTFfIHN1bTJfKSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAob19tYXBcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuw6llX21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm7DqWVfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuw6llX21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9hdmVjX2dhcmRlX2FsdGVybmVlX21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybsOpZV9tYWpvcmF0aW9uXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpIGVuZmFudHNfYV9jaGFyZ2VfKSkgZWxzZVxuICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMzQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM0OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfYmFzZV9jb21wbGVtZW50X3BvdXJfYmFzZV9ldF9tYWpvcmF0aW9uXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgIFwibW9udGFudF9iYXNlX2NvbXBsw6ltZW50X3BvdXJfYmFzZV9ldF9tYWpvcmF0aW9uXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTM4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzODsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE4OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xODk7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfbW9uX21vbiBtb250YW50X3ZlcnNlX2Jhc2VfIG1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbl8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTM4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzODsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlX2NvbXBsZW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25fOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgXCJtb250YW50X3ZlcnPDqV9jb21wbMOpbWVudF9wb3VyX2Jhc2VfZXRfbWFqb3JhdGlvblwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE0MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDE7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTgzOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiBkcm9pdF9vdXZlcnRfY29tcGxlbWVudF8gdGhlblxuICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbXBsw6ltZW50X2TDqWdyZXNzaWZcIl1cbiAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiY29tcGzDqW1lbnRfZMOpZ3Jlc3NpZlwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbXBsw6ltZW50X2TDqWdyZXNzaWZcIl1cbiAgICAgICAgICAgICAgICBjb21wbGVtZW50X2RlZ3Jlc3NpZl8pICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJjb21wbMOpbWVudF9kw6lncmVzc2lmXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgIG1vbnRhbnRfYmFzZV9jb21wbGVtZW50X3BvdXJfYmFzZV9ldF9tYWpvcmF0aW9uXykpKSkpKSkgZWxzZVxuICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTQxOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfdmVyc8OpXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwMDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDU7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgZHJvaXRfb3V2ZXJ0X2Jhc2VfIHRoZW5cbiAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbW9udGFudF92ZXJzZV9iYXNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgbW9udGFudF92ZXJzZV9jb21wbGVtZW50X3BvdXJfYmFzZV9ldF9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICAgbW9udGFudF92ZXJzZV9jb21wbGVtZW50X3BvdXJfZm9yZmFpdGFpcmVfKSBlbHNlXG4gICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDA7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAob19vciBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX19pXykpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzNTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzMTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM1OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0pIGluXG4gIHtBbGxvY2F0aW9uc0ZhbWlsaWFsZXMubW9udGFudF92ZXJzZSA9IG1vbnRhbnRfdmVyc2VffVxuXG5sZXQgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgKGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luOiBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50ID1cbiAgbGV0IGlfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX2RhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGlfZW5mYW50c186IEVuZmFudEVudHJlZS50IGFycmF5ID0gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9lbmZhbnRzX2luIGluXG4gIGxldCBpX3Jlc3NvdXJjZXNfbWVuYWdlXzogbW9uZXkgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3Jlc3NvdXJjZXNfbWVuYWdlX2luIGluXG4gIGxldCBpX3Jlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9yZXNpZGVuY2VfaW4gaW5cbiAgbGV0IGlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfOiBib29sID0gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbiBpblxuICBsZXQgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9faV86IGJvb2wgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4gaW5cbiAgbGV0IGlfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfOiBib29sID0gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbiBpblxuICBsZXQgZW5mYW50c19hX2NoYXJnZV86IEVuZmFudC50IGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZW5mYW50c1/DoF9jaGFyZ2VcIl1cbiAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX2VuZmFudCkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc2OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDEzMS0xXCI7IFwiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19tYXBcbiAgICAgICAgICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50RW50cmVlLnQpIC0+XG4gICAgICAgICAgICAgICAgIHtFbmZhbnQuaWRlbnRpZmlhbnQgPSAoZW5mYW50Xy5FbmZhbnRFbnRyZWUuZF9pZGVudGlmaWFudCk7XG4gICAgICAgICAgICAgICAgICAgIEVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlID1cbiAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1ciBBYm9ydE9uUm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRFbnRyZWUuZF9kYXRlX2RlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMykgKDApICgwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaV9kYXRlX2NvdXJhbnRlXykgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIChTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgKCkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1ciBBYm9ydE9uUm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRFbnRyZWUuZF9kYXRlX2RlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTYpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlfZGF0ZV9jb3VyYW50ZV8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgKCkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzICgpKSkpO1xuICAgICAgICAgICAgICAgICAgICBFbmZhbnQucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSk7XG4gICAgICAgICAgICAgICAgICAgIEVuZmFudC5kYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgICAgICAgICAgICAgICAgICBFbmZhbnQucHJpc2VfZW5fY2hhcmdlID1cbiAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRFbnRyZWUuZF9wcmlzZV9lbl9jaGFyZ2UpO1xuICAgICAgICAgICAgICAgICAgICBFbmZhbnQuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyk7XG4gICAgICAgICAgICAgICAgICAgIEVuZmFudC5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEVudHJlZS5kX2JlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCl9KVxuICAgICAgICAgICAgICBpX2VuZmFudHNfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc2OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgIFwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudFwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05Mjsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTkyOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+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+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NvbGxlY3Rpdml0ZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFnZU1pbmltdW1BbGluZWExTDUyMTM6XG4gICAgICBSdW50aW1lX2pzb28uUnVudGltZS5kdXJhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X3RvX2pzb29cbiAgICAoYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOCA6IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4LnQpXG4gICAgOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFnZU1pbmltdW1BbGluZWExTDUyMTMgPVxuICAgICAgICBkdXJhdGlvbl90b19qc29vIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDguYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zXG4gICAgICBlbmRcbiAgbGV0IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfb2ZfanNvb1xuICAgIChhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IDogYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOCBKcy50KSA6XG4gICAgQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDgudCA9XG4gICAge1xuICAgICAgYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zID1cbiAgICAgICAgZHVyYXRpb25fb2ZfanNvb1xuICAgICAgICAgIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDgjIy5hZ2VNaW5pbXVtQWxpbmVhMUw1MjEzXG4gICAgfVxuXG5jbGFzcyB0eXBlIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRWZXJzZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgIDogQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb250YW50VmVyc2UgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5tb250YW50X3ZlcnNlXG4gICAgICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChhbGxvY2F0aW9uc19mYW1pbGlhbGVzIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSA6XG4gICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnRfdmVyc2UgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyMjLm1vbnRhbnRWZXJzZVxuICAgIH1cblxuY2xhc3MgdHlwZSB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2EgPVxuICBvYmplY3QgbWV0aG9kIHI6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX3RvX2pzb29cbiAgICAodmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hXG4gICAgOiBWZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBLnQpXG4gICAgOiB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2EgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgciA9IEpzLmJvb2wgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hLnJcbiAgICAgIGVuZFxuICBsZXQgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX29mX2pzb29cbiAgICAodmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hXG4gICAgICA6IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYSBKcy50KSA6XG4gICAgVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQS50ID1cbiAgICB7ciA9IEpzLnRvX2Jvb2wgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hIyMuclxuICAgIH1cblxuY2xhc3MgdHlwZSB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hID1cbiAgb2JqZWN0IG1ldGhvZCByOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfdG9fanNvbyAodmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYVxuICAgIDogVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQS50KSA6IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgciA9IEpzLmJvb2wgdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYS5yXG4gICAgICBlbmRcbiAgbGV0IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2Ffb2ZfanNvb1xuICAgICh2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hIDogdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSBKcy50KSA6XG4gICAgVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQS50ID1cbiAgICB7ciA9IEpzLnRvX2Jvb2wgdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSMjLnJcbiAgICB9XG5cbmNsYXNzIHR5cGUgc21pYyA9XG4gIG9iamVjdCBtZXRob2QgYnJ1dEhvcmFpcmU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBzbWljX3RvX2pzb28gKHNtaWMgOiBTbWljLnQpIDogc21pYyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBicnV0SG9yYWlyZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBzbWljLmJydXRfaG9yYWlyZVxuICAgICAgZW5kXG4gIGxldCBzbWljX29mX2pzb28gKHNtaWMgOiBzbWljIEpzLnQpIDogU21pYy50ID1cbiAgICB7XG4gICAgICBicnV0X2hvcmFpcmUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgc21pYyMjLmJydXRIb3JhaXJlXG4gICAgfVxuXG5jbGFzcyB0eXBlIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgIDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50KVxuICAgIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb250YW50ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMubW9udGFudFxuICAgICAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX29mX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQpIDpcbiAgICBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyMjLm1vbnRhbnRcbiAgICB9XG5cbmNsYXNzIHR5cGUgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICBvYmplY3QgbWV0aG9kIGlNb250YW50VmVyc2U6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc190b19qc29vXG4gICAgKGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIDogSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpXG4gICAgOiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBpTW9udGFudFZlcnNlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLmlfbW9udGFudF92ZXJzZVxuICAgICAgZW5kXG4gIGxldCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vXG4gICAgKGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICA6IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQpIDpcbiAgICBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9XG4gICAge1xuICAgICAgaV9tb250YW50X3ZlcnNlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIyMuaU1vbnRhbnRWZXJzZVxuICAgIH1cblxuY2xhc3MgdHlwZSBlbmZhbnRfZW50cmVlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRJZGVudGlmaWFudDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZFJlbXVuZXJhdGlvbk1lbnN1ZWxsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkRGF0ZURlTmFpc3NhbmNlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRQcmlzZUVuQ2hhcmdlOiBwcmlzZV9lbl9jaGFyZ2UgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRBRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZEJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnQ6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVuZmFudF9lbnRyZWVfdG9fanNvbyAoZW5mYW50X2VudHJlZSA6IEVuZmFudEVudHJlZS50KVxuICAgIDogZW5mYW50X2VudHJlZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkSWRlbnRpZmlhbnQgPSBpbnRlZ2VyX3RvX2ludCBlbmZhbnRfZW50cmVlLmRfaWRlbnRpZmlhbnRcbiAgICAgIHZhbCBkUmVtdW5lcmF0aW9uTWVuc3VlbGxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGVuZmFudF9lbnRyZWUuZF9yZW11bmVyYXRpb25fbWVuc3VlbGxlXG4gICAgICB2YWwgZERhdGVEZU5haXNzYW5jZSA9IGRhdGVfdG9fanNvbyBlbmZhbnRfZW50cmVlLmRfZGF0ZV9kZV9uYWlzc2FuY2VcbiAgICAgIHZhbCBkUHJpc2VFbkNoYXJnZSA9XG4gICAgICAgIHByaXNlX2VuX2NoYXJnZV90b19qc29vIGVuZmFudF9lbnRyZWUuZF9wcmlzZV9lbl9jaGFyZ2VcbiAgICAgIHZhbCBkQURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLmJvb2wgZW5mYW50X2VudHJlZS5kX2FfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIHZhbCBkQmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudCA9XG4gICAgICAgIEpzLmJvb2wgZW5mYW50X2VudHJlZS5kX2JlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgZW5kXG4gIGxldCBlbmZhbnRfZW50cmVlX29mX2pzb28gKGVuZmFudF9lbnRyZWUgOiBlbmZhbnRfZW50cmVlIEpzLnQpIDpcbiAgICBFbmZhbnRFbnRyZWUudCA9XG4gICAge1xuICAgICAgZF9pZGVudGlmaWFudCA9IGludGVnZXJfb2ZfaW50IGVuZmFudF9lbnRyZWUjIy5kSWRlbnRpZmlhbnQ7XG4gICAgICBkX3JlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgZW5mYW50X2VudHJlZSMjLmRSZW11bmVyYXRpb25NZW5zdWVsbGU7XG4gICAgICBkX2RhdGVfZGVfbmFpc3NhbmNlID0gZGF0ZV9vZl9qc29vIGVuZmFudF9lbnRyZWUjIy5kRGF0ZURlTmFpc3NhbmNlO1xuICAgICAgZF9wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICBwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyBlbmZhbnRfZW50cmVlIyMuZFByaXNlRW5DaGFyZ2U7XG4gICAgICBkX2FfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICBKcy50b19ib29sIGVuZmFudF9lbnRyZWUjIy5kQURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcztcbiAgICAgIGRfYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGVuZmFudF9lbnRyZWUjIy5kQmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudFxuICAgIH1cblxuY2xhc3MgdHlwZSBlbmZhbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgaWRlbnRpZmlhbnQ6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG9ibGlnYXRpb25TY29sYWlyZTpcbiAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZW11bmVyYXRpb25NZW5zdWVsbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZURlTmFpc3NhbmNlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHByaXNlRW5DaGFyZ2U6IHByaXNlX2VuX2NoYXJnZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlczpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnQ6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVuZmFudF90b19qc29vIChlbmZhbnQgOiBFbmZhbnQudCkgOiBlbmZhbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaWRlbnRpZmlhbnQgPSBpbnRlZ2VyX3RvX2ludCBlbmZhbnQuaWRlbnRpZmlhbnRcbiAgICAgIHZhbCBvYmxpZ2F0aW9uU2NvbGFpcmUgPVxuICAgICAgICBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV90b19qc29vIGVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlXG4gICAgICB2YWwgcmVtdW5lcmF0aW9uTWVuc3VlbGxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGVuZmFudC5yZW11bmVyYXRpb25fbWVuc3VlbGxlXG4gICAgICB2YWwgZGF0ZURlTmFpc3NhbmNlID0gZGF0ZV90b19qc29vIGVuZmFudC5kYXRlX2RlX25haXNzYW5jZVxuICAgICAgdmFsIHByaXNlRW5DaGFyZ2UgPSBwcmlzZV9lbl9jaGFyZ2VfdG9fanNvbyBlbmZhbnQucHJpc2VfZW5fY2hhcmdlXG4gICAgICB2YWwgYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLmJvb2wgZW5mYW50LmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIHZhbCBiZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50ID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnQuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICBlbmRcbiAgbGV0IGVuZmFudF9vZl9qc29vIChlbmZhbnQgOiBlbmZhbnQgSnMudCkgOiBFbmZhbnQudCA9XG4gICAge1xuICAgICAgaWRlbnRpZmlhbnQgPSBpbnRlZ2VyX29mX2ludCBlbmZhbnQjIy5pZGVudGlmaWFudDtcbiAgICAgIG9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV9vZl9qc29vIGVuZmFudCMjLm9ibGlnYXRpb25TY29sYWlyZTtcbiAgICAgIHJlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgZW5mYW50IyMucmVtdW5lcmF0aW9uTWVuc3VlbGxlO1xuICAgICAgZGF0ZV9kZV9uYWlzc2FuY2UgPSBkYXRlX29mX2pzb28gZW5mYW50IyMuZGF0ZURlTmFpc3NhbmNlO1xuICAgICAgcHJpc2VfZW5fY2hhcmdlID0gcHJpc2VfZW5fY2hhcmdlX29mX2pzb28gZW5mYW50IyMucHJpc2VFbkNoYXJnZTtcbiAgICAgIGFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICBKcy50b19ib29sIGVuZmFudCMjLmFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXM7XG4gICAgICBiZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICAgICAgICBKcy50b19ib29sIGVuZmFudCMjLmJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnRcbiAgICB9XG5cbmNsYXNzIHR5cGUgZW5mYW50X2xlX3BsdXNfYWdlID1cbiAgb2JqZWN0IG1ldGhvZCBsZVBsdXNBZ2U6IGVuZmFudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbmZhbnRfbGVfcGx1c19hZ2VfdG9fanNvbyAoZW5mYW50X2xlX3BsdXNfYWdlIDogRW5mYW50TGVQbHVzQWdlLnQpXG4gICAgOiBlbmZhbnRfbGVfcGx1c19hZ2UgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbGVQbHVzQWdlID0gZW5mYW50X3RvX2pzb28gZW5mYW50X2xlX3BsdXNfYWdlLmxlX3BsdXNfYWdlXG4gICAgICBlbmRcbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9vZl9qc29vXG4gICAgKGVuZmFudF9sZV9wbHVzX2FnZSA6IGVuZmFudF9sZV9wbHVzX2FnZSBKcy50KSA6IEVuZmFudExlUGx1c0FnZS50ID1cbiAgICB7bGVfcGx1c19hZ2UgPSBlbmZhbnRfb2ZfanNvbyBlbmZhbnRfbGVfcGx1c19hZ2UjIy5sZVBsdXNBZ2VcbiAgICB9XG5cbmNsYXNzIHR5cGUgcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkcm9pdE91dmVydDpcbiAgICAgICh1bml0LCAgZW5mYW50IEpzLnQgLT4gYm9vbCBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgICBtZXRob2QgY29uZGl0aW9uc0hvcnNBZ2U6XG4gICAgICAodW5pdCwgIGVuZmFudCBKcy50IC0+IGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIGFnZUw1MTIzMjogUnVudGltZV9qc29vLlJ1bnRpbWUuZHVyYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlZ2ltZU91dHJlTWVyTDc1MTE6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc190b19qc29vIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgOiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCkgOiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgbWV0aG9kIGRyb2l0T3V2ZXJ0ID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBlbmZhbnQgSnMudCkgLT5cbiAgICAgICAgICBKcy5ib29sIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzLmRyb2l0X291dmVydCAoZW5mYW50X29mX2pzb29cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgbWV0aG9kIGNvbmRpdGlvbnNIb3JzQWdlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBlbmZhbnQgSnMudCkgLT5cbiAgICAgICAgICBKcy5ib29sIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzLmNvbmRpdGlvbnNfaG9yc19hZ2UgKGVuZmFudF9vZl9qc29vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICB2YWwgYWdlTDUxMjMyID0gZHVyYXRpb25fdG9fanNvbyBwcmVzdGF0aW9uc19mYW1pbGlhbGVzLmFnZV9sNTEyXzNfMlxuICAgICAgdmFsIHJlZ2ltZU91dHJlTWVyTDc1MTEgPVxuICAgICAgICBKcy5ib29sIHByZXN0YXRpb25zX2ZhbWlsaWFsZXMucmVnaW1lX291dHJlX21lcl9sNzUxXzFcbiAgICAgIGVuZFxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vXG4gICAgKHByZXN0YXRpb25zX2ZhbWlsaWFsZXMgOiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQpIDpcbiAgICBQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCA9XG4gICAge1xuICAgICAgZHJvaXRfb3V2ZXJ0ID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ2Ryb2l0X291dmVydCcgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiO1xuICAgICAgY29uZGl0aW9uc19ob3JzX2FnZSA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdjb25kaXRpb25zX2hvcnNfYWdlJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCI7XG4gICAgICBhZ2VfbDUxMl8zXzIgPSBkdXJhdGlvbl9vZl9qc29vIHByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5hZ2VMNTEyMzI7XG4gICAgICByZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLnJlZ2ltZU91dHJlTWVyTDc1MTFcbiAgICB9XG5cbmNsYXNzIHR5cGUgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwcmVzdGF0aW9uQ291cmFudGVJbjpcbiAgICAgIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzaWRlbmNlSW46IGNvbGxlY3Rpdml0ZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX3RvX2pzb28gKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICA6IFByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQpIDogcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBwcmVzdGF0aW9uQ291cmFudGVJbiA9XG4gICAgICAgIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc190b19qc29vIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4ucHJlc3RhdGlvbl9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlc2lkZW5jZUluID1cbiAgICAgICAgY29sbGVjdGl2aXRlX3RvX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5yZXNpZGVuY2VfaW5cbiAgICAgIGVuZFxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gICAgKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpIDpcbiAgICBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIHByZXN0YXRpb25fY291cmFudGVfaW4gPVxuICAgICAgICBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5wcmVzdGF0aW9uQ291cmFudGVJbjtcbiAgICAgIHJlc2lkZW5jZV9pbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV9vZl9qc29vIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5yZXNpZGVuY2VJblxuICAgIH1cblxuY2xhc3MgdHlwZSBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luID1cbm9iamVjdCBlbmRcbmxldCBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luX3RvX2pzb28gKF8gOiBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOEluLnQpIDogYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbiBKcy50ID0gb2JqZWN0JWpzIGVuZFxubGV0IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW5fb2ZfanNvbyAoXyA6IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gSnMudCkgOiBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOEluLnQgPSAoKVxuY2xhc3MgdHlwZSBlbmZhbnRfbGVfcGx1c19hZ2VfaW4gPVxuICBvYmplY3QgbWV0aG9kIGVuZmFudHNJbjogZW5mYW50IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X2xlX3BsdXNfYWdlX2luX3RvX2pzb28gKGVuZmFudF9sZV9wbHVzX2FnZV9pblxuICAgIDogRW5mYW50TGVQbHVzQWdlSW4udCkgOiBlbmZhbnRfbGVfcGx1c19hZ2VfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZW5mYW50c0luID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBlbmZhbnRfdG9fanNvbyB4KSBlbmZhbnRfbGVfcGx1c19hZ2VfaW4uZW5mYW50c19pblxuICAgICAgZW5kXG4gIGxldCBlbmZhbnRfbGVfcGx1c19hZ2VfaW5fb2ZfanNvb1xuICAgIChlbmZhbnRfbGVfcGx1c19hZ2VfaW4gOiBlbmZhbnRfbGVfcGx1c19hZ2VfaW4gSnMudCkgOlxuICAgIEVuZmFudExlUGx1c0FnZUluLnQgPVxuICAgIHtcbiAgICAgIGVuZmFudHNfaW4gPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IGVuZmFudF9vZl9qc29vIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgZW5mYW50X2xlX3BsdXNfYWdlX2luIyMuZW5mYW50c0luXG4gICAgfVxuXG5jbGFzcyB0eXBlIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgcGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlRXN0UGFyZW50SW46XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVSZW1wbGl0VGl0cmVJSW46XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzaWRlbmNlSW46IGNvbGxlY3Rpdml0ZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZW5mYW50c0FDaGFyZ2VJbjogZW5mYW50IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGF2YWl0RW5mYW50QUNoYXJnZUF2YW50MWVySmFudmllcjIwMTJJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qc29vIChhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgOiBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgcGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlRXN0UGFyZW50SW4gPVxuICAgICAgICBKcy5ib29sIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4ucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW5cbiAgICAgIHZhbCBwZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVSZW1wbGl0VGl0cmVJSW4gPVxuICAgICAgICBKcy5ib29sIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4ucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLnJlc3NvdXJjZXNfbWVuYWdlX2luXG4gICAgICB2YWwgcmVzaWRlbmNlSW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfdG9fanNvbyBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLnJlc2lkZW5jZV9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIGVuZmFudHNBQ2hhcmdlSW4gPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IGVuZmFudF90b19qc29vIHgpIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uZW5mYW50c19hX2NoYXJnZV9pblxuICAgICAgdmFsIGF2YWl0RW5mYW50QUNoYXJnZUF2YW50MWVySmFudmllcjIwMTJJbiA9XG4gICAgICAgIEpzLmJvb2wgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pblxuICAgICAgZW5kXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgICAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA6IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCkgOlxuICAgIEFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQgPVxuICAgIHtcbiAgICAgIHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgICAgICAjIy5wZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVFc3RQYXJlbnRJbjtcbiAgICAgIHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgICAgICMjLnBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZVJlbXBsaXRUaXRyZUlJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5yZXNzb3VyY2VzTWVuYWdlSW47XG4gICAgICByZXNpZGVuY2VfaW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfb2ZfanNvbyBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMucmVzaWRlbmNlSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIGVuZmFudHNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IGVuZmFudF9vZl9qc29vIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmVuZmFudHNBQ2hhcmdlSW47XG4gICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuYXZhaXRFbmZhbnRBQ2hhcmdlQXZhbnQxZXJKYW52aWVyMjAxMkluXG4gICAgfVxuXG5jbGFzcyB0eXBlIHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlTmFpc3NhbmNlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYW5uZWVzSW46IFJ1bnRpbWVfanNvby5SdW50aW1lLmR1cmF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbl90b19qc29vXG4gICAgKHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pblxuICAgIDogVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQUluLnQpXG4gICAgOiB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZU5haXNzYW5jZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbi5kYXRlX25haXNzYW5jZV9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgYW5uZWVzSW4gPVxuICAgICAgICBkdXJhdGlvbl90b19qc29vIHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbi5hbm5lZXNfaW5cbiAgICAgIGVuZFxuICBsZXQgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luX29mX2pzb29cbiAgICAodmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luXG4gICAgICA6IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbiBKcy50KSA6XG4gICAgVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQUluLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfbmFpc3NhbmNlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luIyMuZGF0ZU5haXNzYW5jZUluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIGFubmVlc19pbiA9XG4gICAgICAgIGR1cmF0aW9uX29mX2pzb28gdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luIyMuYW5uZWVzSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlTmFpc3NhbmNlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYW5uZWVzSW46IFJ1bnRpbWVfanNvby5SdW50aW1lLmR1cmF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW5fdG9fanNvb1xuICAgICh2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luIDogVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQUluLnQpXG4gICAgOiB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVOYWlzc2FuY2VJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luLmRhdGVfbmFpc3NhbmNlX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgYW5uZWVzSW4gPVxuICAgICAgICBkdXJhdGlvbl90b19qc29vIHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4uYW5uZWVzX2luXG4gICAgICBlbmRcbiAgbGV0IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW5fb2ZfanNvb1xuICAgICh2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luIDogdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbiBKcy50KSA6XG4gICAgVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQUluLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfbmFpc3NhbmNlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4jIy5kYXRlTmFpc3NhbmNlSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIGFubmVlc19pbiA9IGR1cmF0aW9uX29mX2pzb28gdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbiMjLmFubmVlc0luXG4gICAgfVxuXG5jbGFzcyB0eXBlIHNtaWNfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzaWRlbmNlSW46IGNvbGxlY3Rpdml0ZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBzbWljX2luX3RvX2pzb28gKHNtaWNfaW4gOiBTbWljSW4udCkgOiBzbWljX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID0gZGF0ZV90b19qc29vIHNtaWNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlc2lkZW5jZUluID0gY29sbGVjdGl2aXRlX3RvX2pzb28gc21pY19pbi5yZXNpZGVuY2VfaW5cbiAgICAgIGVuZFxuICBsZXQgc21pY19pbl9vZl9qc29vIChzbWljX2luIDogc21pY19pbiBKcy50KSA6IFNtaWNJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID0gZGF0ZV9vZl9qc29vIHNtaWNfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIHJlc2lkZW5jZV9pbiA9IGNvbGxlY3Rpdml0ZV9vZl9qc29vIHNtaWNfaW4jIy5yZXNpZGVuY2VJblxuICAgIH1cblxuY2xhc3MgdHlwZSBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0IG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udClcbiAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCkgOlxuICAgIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmRhdGVDb3VyYW50ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGlEYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBpRW5mYW50c0luOiBlbmZhbnRfZW50cmVlIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGlSZXNzb3VyY2VzTWVuYWdlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaVJlc2lkZW5jZUluOiBjb2xsZWN0aXZpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGlQZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVFc3RQYXJlbnRJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGlQZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVSZW1wbGl0VGl0cmVJSW46XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBpQXZhaXRFbmZhbnRBQ2hhcmdlQXZhbnQxZXJKYW52aWVyMjAxMkluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qc29vXG4gICAgKGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgOiBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KVxuICAgIDogaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaURhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmlfZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIGlFbmZhbnRzSW4gPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IGVuZmFudF9lbnRyZWVfdG9fanNvbyB4KSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX2VuZmFudHNfaW5cbiAgICAgIHZhbCBpUmVzc291cmNlc01lbmFnZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmlfcmVzc291cmNlc19tZW5hZ2VfaW5cbiAgICAgIHZhbCBpUmVzaWRlbmNlSW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfdG9fanNvbyBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX3Jlc2lkZW5jZV9pblxuICAgICAgdmFsIGlQZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVFc3RQYXJlbnRJbiA9XG4gICAgICAgIEpzLmJvb2wgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pblxuICAgICAgdmFsIGlQZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVSZW1wbGl0VGl0cmVJSW4gPVxuICAgICAgICBKcy5ib29sIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pblxuICAgICAgdmFsIGlBdmFpdEVuZmFudEFDaGFyZ2VBdmFudDFlckphbnZpZXIyMDEySW4gPVxuICAgICAgICBKcy5ib29sIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmlfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW5cbiAgICAgIGVuZFxuICBsZXQgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICAgIChpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgOiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KSA6XG4gICAgSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCA9XG4gICAge1xuICAgICAgaV9kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuaURhdGVDb3VyYW50ZUluO1xuICAgICAgaV9lbmZhbnRzX2luID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBlbmZhbnRfZW50cmVlX29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmlFbmZhbnRzSW47XG4gICAgICBpX3Jlc3NvdXJjZXNfbWVuYWdlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuaVJlc3NvdXJjZXNNZW5hZ2VJbjtcbiAgICAgIGlfcmVzaWRlbmNlX2luID1cbiAgICAgICAgY29sbGVjdGl2aXRlX29mX2pzb29cbiAgICAgICAgICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmlSZXNpZGVuY2VJbjtcbiAgICAgIGlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgICAgICAjIy5pUGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlRXN0UGFyZW50SW47XG4gICAgICBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgICAgICAjIy5pUGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlUmVtcGxpdFRpdHJlSUluO1xuICAgICAgaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgICAgICMjLmlBdmFpdEVuZmFudEFDaGFyZ2VBdmFudDFlckphbnZpZXIyMDEySW5cbiAgICB9XG5cblxuXG5cbmxldCBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4XG4gIChhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luIDogYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbiBKcy50KVxuICA6IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDggSnMudCA9XG4gIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW5cbiAgfD4gYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbl9vZl9qc29vXG4gIHw+IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhcbiAgfD4gYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF90b19qc29vXG5cblxubGV0IGVuZmFudF9sZV9wbHVzX2FnZSAoZW5mYW50X2xlX3BsdXNfYWdlX2luIDogZW5mYW50X2xlX3BsdXNfYWdlX2luIEpzLnQpXG4gIDogZW5mYW50X2xlX3BsdXNfYWdlIEpzLnQgPVxuICBlbmZhbnRfbGVfcGx1c19hZ2VfaW5cbiAgfD4gZW5mYW50X2xlX3BsdXNfYWdlX2luX29mX2pzb29cbiAgfD4gZW5mYW50X2xlX3BsdXNfYWdlXG4gIHw+IGVuZmFudF9sZV9wbHVzX2FnZV90b19qc29vXG5cblxubGV0IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYVxuICAodmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luIDogdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luIEpzLnQpXG4gIDogdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hIEpzLnQgPVxuICB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW5cbiAgfD4gdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luX29mX2pzb29cbiAgfD4gdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hXG4gIHw+IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV90b19qc29vXG5cblxubGV0IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FcbiAgKHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4gOiB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luIEpzLnQpXG4gIDogdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSBKcy50ID1cbiAgdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pblxuICB8PiB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luX29mX2pzb29cbiAgfD4gdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYVxuICB8PiB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX3RvX2pzb29cblxuXG5sZXQgc21pYyAoc21pY19pbiA6IHNtaWNfaW4gSnMudClcbiAgOiBzbWljIEpzLnQgPVxuICBzbWljX2luIHw+IHNtaWNfaW5fb2ZfanNvbyB8PiBzbWljIHw+IHNtaWNfdG9fanNvb1xuXG5cbmxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KVxuICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gIHw+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc190b19qc29vXG5cblxubGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpXG4gIDogcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICB8PiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICB8PiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cblxuXG5sZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA6IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudClcbiAgOiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gIHw+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICB8PiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIHw+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuXG5cbmxldCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KVxuICA6IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICB8PiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gIHw+IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIHw+IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cblxuXG5sZXQgXyA9XG4gICBKcy5leHBvcnQgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNMaWJcIlxuICAgIChvYmplY3QlanNcbiAgICAgIFxuICAgICAgbWV0aG9kIGFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4IDogKGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gSnMudCAtPiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4XG4gICAgICBcbiAgICAgIG1ldGhvZCBlbmZhbnRMZVBsdXNBZ2UgOiAoZW5mYW50X2xlX3BsdXNfYWdlX2luIEpzLnQgLT4gZW5mYW50X2xlX3BsdXNfYWdlIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBlbmZhbnRfbGVfcGx1c19hZ2VcbiAgICAgIFxuICAgICAgbWV0aG9kIHZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEEgOiAodmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luIEpzLnQgLT4gdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FcbiAgICAgIFxuICAgICAgbWV0aG9kIHZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckEgOiAodmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbiBKcy50IC0+IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FcbiAgICAgIFxuICAgICAgbWV0aG9kIHNtaWMgOiAoc21pY19pbiBKcy50IC0+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+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50ICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiXSxcbiAgWyhcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpXSlcblxuXG5tb2R1bGUgT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2FnZV9vdXZlcnR1cmVfZHJvaXQ6IGR1cmF0aW9ufVxuZW5kXG5sZXQgZW1iZWRfb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSAoeDogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIk91dmVydHVyZURyb2l0c1JldHJhaXRlXCJdLFxuICBbKFwiw6JnZV9vdXZlcnR1cmVfZHJvaXRcIiwgZW1iZWRfZHVyYXRpb25cbiAgICB4Lk91dmVydHVyZURyb2l0c1JldHJhaXRlLmFnZV9vdXZlcnR1cmVfZHJvaXQpXSlcblxuXG5tb2R1bGUgSW1wYXllRGVwZW5zZUxvZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHttb250YW50X2ltcGF5ZTogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9pbXBheWVfZGVwZW5zZV9sb2dlbWVudCAoeDogSW1wYXllRGVwZW5zZUxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudFwiXSxcbiAgWyhcIm1vbnRhbnRfaW1wYXnDqVwiLCBlbWJlZF9tb25leSB4LkltcGF5ZURlcGVuc2VMb2dlbWVudC5tb250YW50X2ltcGF5ZSldKVxuXG5cbm1vZHVsZSBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBlbGlnaWJpbGl0ZTogYm9vbDtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlOiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlOiBtb25leSAtPiBtb25leTtcbiAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlOiBkZWNpbWFsIGFycmF5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQgKHg6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIl0sXG4gIFsoXCLDqWxpZ2liaWxpdMOpXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuZWxpZ2liaWxpdGUpO1xuICAgIChcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgKFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSk7XG4gICAgKFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIixcbiAgICBlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbClcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSldKVxuXG5cbm1vZHVsZSBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZWxpZ2liaWxpdGU6IGJvb2w7IGFpZGVfZmluYWxlOiBtb25leX1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWUgKHg6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIl0sXG4gIFsoXCLDqWxpZ2liaWxpdMOpXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlLmVsaWdpYmlsaXRlKTtcbiAgICAoXCJhaWRlX2ZpbmFsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUuYWlkZV9maW5hbGUpXSlcblxuXG5tb2R1bGUgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcyA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudDogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzICh4OiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwibW9udGFudFwiLCBlbWJlZF9tb25leSB4LkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMubW9udGFudCldKVxuXG5cbm1vZHVsZSBWZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBID0gc3RydWN0XG4gIHR5cGUgdCA9IHtyOiBib29sfVxuZW5kXG5sZXQgZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hICh4OiBWZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJWw6lyaWZpY2F0aW9uw4JnZUluZsOpcmlldXJPdcOJZ2Fsw4BcIl0sXG4gIFsoXCJyXCIsIGVtYmVkX2Jvb2wgeC5WZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBLnIpXSlcblxuXG5tb2R1bGUgVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7cjogYm9vbH1cbmVuZFxubGV0IGVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EgKHg6IFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckEudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlbDqXJpZmljYXRpb27DgmdlU3Vww6lyaWV1csOAXCJdLFxuICBbKFwiclwiLCBlbWJlZF9ib29sIHguVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQS5yKV0pXG5cblxubW9kdWxlIFNtaWMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2JydXRfaG9yYWlyZTogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9zbWljICh4OiBTbWljLnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJTbWljXCJdLFxuICBbKFwiYnJ1dF9ob3JhaXJlXCIsIGVtYmVkX21vbmV5IHguU21pYy5icnV0X2hvcmFpcmUpXSlcblxuXG5tb2R1bGUgUHJldCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgdHlwZV9wcmV0OiBUeXBlUHJldC50O1xuICAgIGRhdGVfc2lnbmF0dXJlOiBkYXRlO1xuICAgIHRpdHVsYWlyZV9wcmV0OiBUaXR1bGFpcmVQcmV0LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcHJldCAoeDogUHJldC50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiUHLDqnRcIl0sXG4gIFsoXCJ0eXBlX3Byw6p0XCIsIGVtYmVkX3R5cGVfcHJldCB4LlByZXQudHlwZV9wcmV0KTtcbiAgICAoXCJkYXRlX3NpZ25hdHVyZVwiLCBlbWJlZF9kYXRlIHguUHJldC5kYXRlX3NpZ25hdHVyZSk7XG4gICAgKFwidGl0dWxhaXJlX3Byw6p0XCIsIGVtYmVkX3RpdHVsYWlyZV9wcmV0IHguUHJldC50aXR1bGFpcmVfcHJldCldKVxuXG5cbm1vZHVsZSBOZXVmT3VBbmNpZW4gPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgTmV1ZiBvZiB1bml0XG4gICAgfCBBbmNpZW4gb2YgQW1lbGlvcmVQYXJPY2N1cGFudC50XG4gIGVuZFxubGV0IGVtYmVkX25ldWZfb3VfYW5jaWVuICh4OiBOZXVmT3VBbmNpZW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJOZXVmT3VBbmNpZW5cIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTmV1ZiB4IC0+IChcIk5ldWZcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQW5jaWVuIHggLT4gKFwiQW5jaWVuXCIsIGVtYmVkX2FtZWxpb3JlX3Bhcl9vY2N1cGFudCB4KSlcblxuXG5tb2R1bGUgVHJhbmNoZVJldmVudSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7aGF1dDogTGltaXRlVHJhbmNoZS50OyBiYXM6IG1vbmV5OyB0YXV4OiBkZWNpbWFsfVxuZW5kXG5sZXQgZW1iZWRfdHJhbmNoZV9yZXZlbnUgKHg6IFRyYW5jaGVSZXZlbnUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlRyYW5jaGVSZXZlbnVcIl0sXG4gIFsoXCJoYXV0XCIsIGVtYmVkX2xpbWl0ZV90cmFuY2hlIHguVHJhbmNoZVJldmVudS5oYXV0KTtcbiAgICAoXCJiYXNcIiwgZW1iZWRfbW9uZXkgeC5UcmFuY2hlUmV2ZW51LmJhcyk7XG4gICAgKFwidGF1eFwiLCBlbWJlZF9kZWNpbWFsIHguVHJhbmNoZVJldmVudS50YXV4KV0pXG5cblxubW9kdWxlIFRyYW5jaGVSZXZlbnVEZWNpbWFsID0gc3RydWN0XG4gIHR5cGUgdCA9IHtoYXV0OiBMaW1pdGVUcmFuY2hlRGVjaW1hbC50OyBiYXM6IGRlY2ltYWw7IHRhdXg6IGRlY2ltYWx9XG5lbmRcbmxldCBlbWJlZF90cmFuY2hlX3JldmVudV9kZWNpbWFsICh4OiBUcmFuY2hlUmV2ZW51RGVjaW1hbC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiVHJhbmNoZVJldmVudUTDqWNpbWFsXCJdLFxuICBbKFwiaGF1dFwiLCBlbWJlZF9saW1pdGVfdHJhbmNoZV9kZWNpbWFsIHguVHJhbmNoZVJldmVudURlY2ltYWwuaGF1dCk7XG4gICAgKFwiYmFzXCIsIGVtYmVkX2RlY2ltYWwgeC5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpO1xuICAgIChcInRhdXhcIiwgZW1iZWRfZGVjaW1hbCB4LlRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXgpXSlcblxuXG5tb2R1bGUgQXV0cmVQZXJzb25uZUFDaGFyZ2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRhdGVfbmFpc3NhbmNlOiBkYXRlO1xuICAgIHJlc3NvdXJjZXM6IG1vbmV5O1xuICAgIGFzY2VuZGFudF9kZXNjZW5kYW50X2NvbGxhdGVyYWxfZGV1eGllbWVfdHJvaXNpZW1lX2RlZ3JlOiBib29sO1xuICAgIHBhcmVudGU6IFBhcmVudGUudDtcbiAgICBpbmNhcGFjaXRlXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaTogYm9vbDtcbiAgICBiZW5lZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3NlY3U6IGJvb2w7XG4gICAgdGl0dWxhaXJlX2FsbG9jYXRpb25fcGVyc29ubmVfYWdlZTogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9hdXRyZV9wZXJzb25uZV9hX2NoYXJnZSAoeDogQXV0cmVQZXJzb25uZUFDaGFyZ2UudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkF1dHJlUGVyc29ubmXDgENoYXJnZVwiXSxcbiAgWyhcImRhdGVfbmFpc3NhbmNlXCIsIGVtYmVkX2RhdGVcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLmRhdGVfbmFpc3NhbmNlKTtcbiAgICAoXCJyZXNzb3VyY2VzXCIsIGVtYmVkX21vbmV5XG4gICAgeC5BdXRyZVBlcnNvbm5lQUNoYXJnZS5yZXNzb3VyY2VzKTtcbiAgICAoXCJhc2NlbmRhbnRfZGVzY2VuZGFudF9jb2xsYXTDqXJhbF9kZXV4acOobWVfdHJvaXNpw6htZV9kZWdyw6lcIixcbiAgICBlbWJlZF9ib29sXG4gICAgeC5BdXRyZVBlcnNvbm5lQUNoYXJnZS5hc2NlbmRhbnRfZGVzY2VuZGFudF9jb2xsYXRlcmFsX2RldXhpZW1lX3Ryb2lzaWVtZV9kZWdyZSk7XG4gICAgKFwicGFyZW50w6lcIiwgZW1iZWRfcGFyZW50ZVxuICAgIHguQXV0cmVQZXJzb25uZUFDaGFyZ2UucGFyZW50ZSk7XG4gICAgKFwiaW5jYXBhY2l0w6lfODBfcG91cmNlbnRfb3VfcmVzdHJpY3Rpb25fZW1wbG9pXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLmluY2FwYWNpdGVfODBfcG91cmNlbnRfb3VfcmVzdHJpY3Rpb25fZW1wbG9pKTtcbiAgICAoXCJiw6luw6lmaWNpYWlyZV9sMTYxXzE5X2wzNTFfOF9sNjQzXzNfc8OpY3VcIiwgZW1iZWRfYm9vbFxuICAgIHguQXV0cmVQZXJzb25uZUFDaGFyZ2UuYmVuZWZpY2lhaXJlX2wxNjFfMTlfbDM1MV84X2w2NDNfM19zZWN1KTtcbiAgICAoXCJ0aXR1bGFpcmVfYWxsb2NhdGlvbl9wZXJzb25uZV/DomfDqWVcIiwgZW1iZWRfYm9vbFxuICAgIHguQXV0cmVQZXJzb25uZUFDaGFyZ2UudGl0dWxhaXJlX2FsbG9jYXRpb25fcGVyc29ubmVfYWdlZSldKVxuXG5cbm1vZHVsZSBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBNb2luc0RlVHJvaXNFbmZhbnRzIG9mIHVuaXRcbiAgICB8IFBsdXNEZVRyb2lzRW5mYW50cyBvZiBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS50XG4gIGVuZFxubGV0IGVtYmVkX2RhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50XG4gICh4OiBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkRhdGVOYWlzc2FuY2VUcm9pc2nDqG1lT3VEZXJuaWVyUGx1c0VuZmFudFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBNb2luc0RlVHJvaXNFbmZhbnRzIHggLT4gKFwiTW9pbnNEZVRyb2lzRW5mYW50c1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBQbHVzRGVUcm9pc0VuZmFudHMgeCAtPlxuICAgICAgKFwiUGx1c0RlVHJvaXNFbmZhbnRzXCIsIGVtYmVkX2RhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlIHgpKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZWxpZ2liaWxpdGU6IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZTogaW50ZWdlcjtcbiAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlOiBkZWNpbWFsIGFycmF5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgKHg6IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCJdLFxuICBbKFwiw6lsaWdpYmlsaXTDqVwiLCBlbWJlZF90eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LmVsaWdpYmlsaXRlKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSk7XG4gICAgKFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIixcbiAgICBlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbClcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUpXSlcblxuXG5tb2R1bGUgTG9nZW1lbnRGb3llciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgdHlwZV91c2VyOiBUeXBlTG9nZW1lbnRGb3llci50O1xuICAgIHJlbXBsaXRfY29uZGl0aW9uc19yODMyXzIxOiBib29sO1xuICAgIGNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSTogYm9vbDtcbiAgICBkYXRlX2NvbnZlbnRpb25uZW1lbnQ6IGRhdGU7XG4gICAgY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSTogYm9vbDtcbiAgICByZWRldmFuY2U6IG1vbmV5O1xuICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2OlxuICAgICAgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfbG9nZW1lbnRfZm95ZXIgKHg6IExvZ2VtZW50Rm95ZXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkxvZ2VtZW50Rm95ZXJcIl0sXG4gIFsoXCJ0eXBlXCIsIGVtYmVkX3R5cGVfbG9nZW1lbnRfZm95ZXJcbiAgICB4LkxvZ2VtZW50Rm95ZXIudHlwZV91c2VyKTtcbiAgICAoXCJyZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMVwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudEZveWVyLnJlbXBsaXRfY29uZGl0aW9uc19yODMyXzIxKTtcbiAgICAoXCJjb252ZW50aW9ubsOpX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvZ2VtZW50Rm95ZXIuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJKTtcbiAgICAoXCJkYXRlX2NvbnZlbnRpb25uZW1lbnRcIiwgZW1iZWRfZGF0ZVxuICAgIHguTG9nZW1lbnRGb3llci5kYXRlX2NvbnZlbnRpb25uZW1lbnQpO1xuICAgIChcImNvbnN0cnVpdF9hcHBsaWNhdGlvbl9sb2lfMTk1N18xMl9JSUlcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9nZW1lbnRGb3llci5jb25zdHJ1aXRfYXBwbGljYXRpb25fbG9pXzE5NTdfMTJfSUlJKTtcbiAgICAoXCJyZWRldmFuY2VcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkxvZ2VtZW50Rm95ZXIucmVkZXZhbmNlKTtcbiAgICAoXCJjYXTDqWdvcmllX8OpcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2XCIsXG4gICAgZW1iZWRfY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgICB4LkxvZ2VtZW50Rm95ZXIuY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTYpXSlcblxuXG5tb2R1bGUgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBpZGVudGlmaWFudDogaW50ZWdlcjtcbiAgICBvYmxpZ2F0aW9uX3Njb2xhaXJlOiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudDtcbiAgICByZW11bmVyYXRpb25fbWVuc3VlbGxlOiBtb25leTtcbiAgICBkYXRlX2RlX25haXNzYW5jZTogZGF0ZTtcbiAgICBwcmlzZV9lbl9jaGFyZ2U6IFByaXNlRW5DaGFyZ2VFbmZhbnQudDtcbiAgICBhX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzOiBib29sO1xuICAgIGJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudDogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9lbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyAoeDogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0sXG4gIFsoXCJpZGVudGlmaWFudFwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuaWRlbnRpZmlhbnQpO1xuICAgIChcIm9ibGlnYXRpb25fc2NvbGFpcmVcIiwgZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVcbiAgICB4LkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlKTtcbiAgICAoXCJyw6ltdW5lcmF0aW9uX21lbnN1ZWxsZVwiLCBlbWJlZF9tb25leVxuICAgIHguRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgIChcImRhdGVfZGVfbmFpc3NhbmNlXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5kYXRlX2RlX25haXNzYW5jZSk7XG4gICAgKFwicHJpc2VfZW5fY2hhcmdlXCIsIGVtYmVkX3ByaXNlX2VuX2NoYXJnZV9lbmZhbnRcbiAgICB4LkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5wcmlzZV9lbl9jaGFyZ2UpO1xuICAgIChcImFfZMOpasOgX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiLCBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyk7XG4gICAgKFwiYsOpbsOpZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCldKVxuXG5cbm1vZHVsZSBFbmZhbnRBQ2hhcmdlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBpZGVudGlmaWFudDogaW50ZWdlcjtcbiAgICBiZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQ6IGJvb2w7XG4gICAgYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlczogYm9vbDtcbiAgICBkYXRlX2RlX25haXNzYW5jZTogZGF0ZTtcbiAgICByZW11bmVyYXRpb25fbWVuc3VlbGxlOiBtb25leTtcbiAgICBvYmxpZ2F0aW9uX3Njb2xhaXJlOiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudDtcbiAgICBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWU6IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUudFxuICB9XG5lbmRcbmxldCBlbWJlZF9lbmZhbnRfYV9jaGFyZ2UgKHg6IEVuZmFudEFDaGFyZ2UudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkVuZmFudMOAQ2hhcmdlXCJdLFxuICBbKFwiaWRlbnRpZmlhbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRW5mYW50QUNoYXJnZS5pZGVudGlmaWFudCk7XG4gICAgKFwiYsOpbsOpZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50QUNoYXJnZS5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQpO1xuICAgIChcImFfZMOpasOgX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiLCBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnRBQ2hhcmdlLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpO1xuICAgIChcImRhdGVfZGVfbmFpc3NhbmNlXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVuZmFudEFDaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgIChcInLDqW11bmVyYXRpb25fbWVuc3VlbGxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5FbmZhbnRBQ2hhcmdlLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgIChcIm9ibGlnYXRpb25fc2NvbGFpcmVcIiwgZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVcbiAgICB4LkVuZmFudEFDaGFyZ2Uub2JsaWdhdGlvbl9zY29sYWlyZSk7XG4gICAgKFwic2l0dWF0aW9uX2dhcmRlX2FsdGVybsOpZVwiLCBlbWJlZF9zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVcbiAgICB4LkVuZmFudEFDaGFyZ2Uuc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlKV0pXG5cblxubW9kdWxlIFR5cGVCYWlsbGV1ciA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBCYWlsbGV1clNvY2lhbCBvZiBDb252ZW50aW9uQmFpbGxldXJTb2NpYWwudFxuICAgIHwgQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsIG9mIENvbnZlbnRpb25BTkhBLnRcbiAgICB8IEJhaWxsZXVyUHJpdmUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF90eXBlX2JhaWxsZXVyICh4OiBUeXBlQmFpbGxldXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlQmFpbGxldXJcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQmFpbGxldXJTb2NpYWwgeCAtPlxuICAgICAgKFwiQmFpbGxldXJTb2NpYWxcIiwgZW1iZWRfY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwgeClcbiAgICB8IEJhaWxsZXVyUHJpdmVBdmVjQ29udmVudGlvbm5lbWVudFNvY2lhbCB4IC0+XG4gICAgICAoXCJCYWlsbGV1clByaXbDqUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsXCIsIGVtYmVkX2NvbnZlbnRpb25fYV9uX2hfYSB4KVxuICAgIHwgQmFpbGxldXJQcml2ZSB4IC0+IChcIkJhaWxsZXVyUHJpdsOpXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIExvdWVPdVNvdXNMb3VlQURlc1RpZXJzID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IE5vbiBvZiB1bml0XG4gICAgfCBPdWkgb2YgUGVyc29ubmVTb3VzTG9jYXRpb24udFxuICBlbmRcbmxldCBlbWJlZF9sb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyAoeDogTG91ZU91U291c0xvdWVBRGVzVGllcnMudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJMb3XDqU91U291c0xvdcOpw4BEZXNUaWVyc1wiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb24geCAtPiAoXCJOb25cIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgT3VpIHggLT4gKFwiT3VpXCIsIGVtYmVkX3BlcnNvbm5lX3NvdXNfbG9jYXRpb24geCkpXG5cblxubW9kdWxlIE5hdGlvbmFsaXRlID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IEZyYW5jYWlzZSBvZiB1bml0XG4gICAgfCBFdHJhbmdlcmUgb2YgQ29uZGl0aW9uc0V0cmFuZ2Vycy50XG4gIGVuZFxubGV0IGVtYmVkX25hdGlvbmFsaXRlICh4OiBOYXRpb25hbGl0ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIk5hdGlvbmFsaXTDqVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBGcmFuY2Fpc2UgeCAtPiAoXCJGcmFuw6dhaXNlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEV0cmFuZ2VyZSB4IC0+IChcIsOJdHJhbmfDqHJlXCIsIGVtYmVkX2NvbmRpdGlvbnNfZXRyYW5nZXJzIHgpKVxuXG5cbm1vZHVsZSBDaGFuZ2VtZW50TG9nZW1lbnREODQyNCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBDaGFuZ2VtZW50IG9mIEluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudFxuICAgIHwgUGFzRGVDaGFuZ2VtZW50IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgKHg6IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiQ2hhbmdlbWVudExvZ2VtZW50RDg0Ml80XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IENoYW5nZW1lbnQgeCAtPlxuICAgICAgKFwiQ2hhbmdlbWVudFwiLCBlbWJlZF9pbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCB4KVxuICAgIHwgUGFzRGVDaGFuZ2VtZW50IHggLT4gKFwiUGFzRGVDaGFuZ2VtZW50XCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFByb3ByaWV0YWlyZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbG9nZW1lbnRfc2l0dWVfY29tbXVuZV9kZXNlcXVpbGlicmVfbDgzMV8yOiBib29sO1xuICAgIG1lbnN1YWxpdGVfcHJpbmNpcGFsZTogbW9uZXk7XG4gICAgY2hhcmdlc19tZW5zdWVsbGVzX3ByZXQ6IG1vbmV5O1xuICAgIGRhdGVfZW50cmVlX2xvZ2VtZW50OiBkYXRlO1xuICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1OiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQ7XG4gICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNTogVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQ7XG4gICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlOiBib29sO1xuICAgIGNvcHJvcHJpZXRlOiBib29sO1xuICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3OiBib29sO1xuICAgIGFuY2llbm5ldGVfbG9nZW1lbnQ6IE5ldWZPdUFuY2llbi50O1xuICAgIHByZXQ6IFByZXQudFxuICB9XG5lbmRcbmxldCBlbWJlZF9wcm9wcmlldGFpcmUgKHg6IFByb3ByaWV0YWlyZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUHJvcHJpw6l0YWlyZVwiXSxcbiAgWyhcImxvZ2VtZW50X3NpdHXDqV9jb21tdW5lX2TDqXPDqXF1aWxpYnJlX2w4MzFfMlwiLCBlbWJlZF9ib29sXG4gICAgeC5Qcm9wcmlldGFpcmUubG9nZW1lbnRfc2l0dWVfY29tbXVuZV9kZXNlcXVpbGlicmVfbDgzMV8yKTtcbiAgICAoXCJtZW5zdWFsaXTDqV9wcmluY2lwYWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5Qcm9wcmlldGFpcmUubWVuc3VhbGl0ZV9wcmluY2lwYWxlKTtcbiAgICAoXCJjaGFyZ2VzX21lbnN1ZWxsZXNfcHLDqnRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LlByb3ByaWV0YWlyZS5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldCk7XG4gICAgKFwiZGF0ZV9lbnRyw6llX2xvZ2VtZW50XCIsIGVtYmVkX2RhdGVcbiAgICB4LlByb3ByaWV0YWlyZS5kYXRlX2VudHJlZV9sb2dlbWVudCk7XG4gICAgKFwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVcIiwgZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVcbiAgICB4LlByb3ByaWV0YWlyZS50eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSk7XG4gICAgKFwidHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNVwiLCBlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81XG4gICAgeC5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSk7XG4gICAgKFwibG9jYWxfaGFiaXTDqV9wcmVtacOocmVfZm9pc19iw6luw6lmaWNpYWlyZVwiLCBlbWJlZF9ib29sXG4gICAgeC5Qcm9wcmlldGFpcmUubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlKTtcbiAgICAoXCJjb3Byb3ByacOpdMOpXCIsIGVtYmVkX2Jvb2xcbiAgICB4LlByb3ByaWV0YWlyZS5jb3Byb3ByaWV0ZSk7XG4gICAgKFwic2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdcIiwgZW1iZWRfYm9vbFxuICAgIHguUHJvcHJpZXRhaXJlLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3KTtcbiAgICAoXCJhbmNpZW5uZXTDqV9sb2dlbWVudFwiLCBlbWJlZF9uZXVmX291X2FuY2llblxuICAgIHguUHJvcHJpZXRhaXJlLmFuY2llbm5ldGVfbG9nZW1lbnQpO1xuICAgIChcInByw6p0XCIsIGVtYmVkX3ByZXQgeC5Qcm9wcmlldGFpcmUucHJldCldKVxuXG5cbm1vZHVsZSBJbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBub21icmVfZW5mYW50c19hX25haXRyZV9hcHJlc190cm9pc2llbWVfbW9pc19ncm9zc2Vzc2U6IGludGVnZXI7XG4gICAgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX2VuZmFudF9vdV9kZXJuaWVyX3NpX3BsdXM6XG4gICAgICBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2luZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQgKHg6IEluZm9ybWF0aW9uc1ByaW1lRGVEZW1lbmFnZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkluZm9ybWF0aW9uc1ByaW1lRGVEw6ltw6luYWdlbWVudFwiXSxcbiAgWyhcIm5vbWJyZV9lbmZhbnRzX8OgX25hw650cmVfYXByw6hzX3Ryb2lzacOobWVfbW9pc19ncm9zc2Vzc2VcIixcbiAgICBlbWJlZF9pbnRlZ2VyXG4gICAgeC5JbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50Lm5vbWJyZV9lbmZhbnRzX2FfbmFpdHJlX2FwcmVzX3Ryb2lzaWVtZV9tb2lzX2dyb3NzZXNzZSk7XG4gICAgKFwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpw6htZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzXCIsXG4gICAgZW1iZWRfZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRcbiAgICB4LkluZm9ybWF0aW9uc1ByaW1lRGVEZW1lbmFnZW1lbnQuZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX2VuZmFudF9vdV9kZXJuaWVyX3NpX3BsdXMpXSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRyb2l0X291dmVydDogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgLT4gYm9vbDtcbiAgICBjb25kaXRpb25zX2hvcnNfYWdlOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBib29sO1xuICAgIGFnZV9sNTEyXzNfMjogZHVyYXRpb247XG4gICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzE6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyAoeDogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0sXG4gIFsoXCJkcm9pdF9vdXZlcnRcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5kcm9pdF9vdXZlcnQpO1xuICAgIChcImNvbmRpdGlvbnNfaG9yc1/DomdlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSk7XG4gICAgKFwiw6JnZV9sNTEyXzNfMlwiLCBlbWJlZF9kdXJhdGlvblxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYWdlX2w1MTJfM18yKTtcbiAgICAoXCJyw6lnaW1lX291dHJlX21lcl9sNzUxXzFcIiwgZW1iZWRfYm9vbFxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucmVnaW1lX291dHJlX21lcl9sNzUxXzEpXSlcblxuXG5tb2R1bGUgUGVyc29ubmVBQ2hhcmdlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEVuZmFudEFDaGFyZ2Ugb2YgRW5mYW50QUNoYXJnZS50XG4gICAgfCBBdXRyZVBlcnNvbm5lQUNoYXJnZSBvZiBBdXRyZVBlcnNvbm5lQUNoYXJnZS50XG4gIGVuZFxubGV0IGVtYmVkX3BlcnNvbm5lX2FfY2hhcmdlICh4OiBQZXJzb25uZUFDaGFyZ2UudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJQZXJzb25uZcOAQ2hhcmdlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEVuZmFudEFDaGFyZ2UgeCAtPiAoXCJFbmZhbnTDgENoYXJnZVwiLCBlbWJlZF9lbmZhbnRfYV9jaGFyZ2UgeClcbiAgICB8IEF1dHJlUGVyc29ubmVBQ2hhcmdlIHggLT5cbiAgICAgIChcIkF1dHJlUGVyc29ubmXDgENoYXJnZVwiLCBlbWJlZF9hdXRyZV9wZXJzb25uZV9hX2NoYXJnZSB4KSlcblxuXG5tb2R1bGUgRGVtYW5kZXVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX25haXNzYW5jZTogZGF0ZTtcbiAgICBuYXRpb25hbGl0ZTogTmF0aW9uYWxpdGUudDtcbiAgICBwYXRyaW1vaW5lOiBQYXRyaW1vaW5lLnQ7XG4gICAgcGVyc29ubmVfaGViZXJnZWVfY2VudHJlX3NvaW5fbF9MMTYyXzIyXzNfc2VjdXJpdGVfc29jaWFsZTogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9kZW1hbmRldXIgKHg6IERlbWFuZGV1ci50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiRGVtYW5kZXVyXCJdLFxuICBbKFwiZGF0ZV9uYWlzc2FuY2VcIiwgZW1iZWRfZGF0ZSB4LkRlbWFuZGV1ci5kYXRlX25haXNzYW5jZSk7XG4gICAgKFwibmF0aW9uYWxpdMOpXCIsIGVtYmVkX25hdGlvbmFsaXRlXG4gICAgeC5EZW1hbmRldXIubmF0aW9uYWxpdGUpO1xuICAgIChcInBhdHJpbW9pbmVcIiwgZW1iZWRfcGF0cmltb2luZVxuICAgIHguRGVtYW5kZXVyLnBhdHJpbW9pbmUpO1xuICAgIChcInBlcnNvbm5lX2jDqWJlcmfDqWVfY2VudHJlX3NvaW5fbF9MMTYyXzIyXzNfc8OpY3VyaXTDqV9zb2NpYWxlXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguRGVtYW5kZXVyLnBlcnNvbm5lX2hlYmVyZ2VlX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3NlY3VyaXRlX3NvY2lhbGUpXSlcblxuXG5tb2R1bGUgTG9jYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGJhaWxsZXVyOiBUeXBlQmFpbGxldXIudDtcbiAgICBsb3llcl9wcmluY2lwYWw6IG1vbmV5O1xuICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlczogYm9vbDtcbiAgICBsb2dlbWVudF9lc3RfY2hhbWJyZTogYm9vbDtcbiAgICBjb2xvY2F0aW9uOiBib29sO1xuICAgIGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzOiBib29sO1xuICAgIGxvZ2VtZW50X21ldWJsZV9kODQyXzI6IGJvb2w7XG4gICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQ6IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfbG9jYXRpb24gKHg6IExvY2F0aW9uLnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJMb2NhdGlvblwiXSxcbiAgWyhcImJhaWxsZXVyXCIsIGVtYmVkX3R5cGVfYmFpbGxldXIgeC5Mb2NhdGlvbi5iYWlsbGV1cik7XG4gICAgKFwibG95ZXJfcHJpbmNpcGFsXCIsIGVtYmVkX21vbmV5XG4gICAgeC5Mb2NhdGlvbi5sb3llcl9wcmluY2lwYWwpO1xuICAgIChcImLDqW7DqWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcMOpc1wiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2NhdGlvbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXMpO1xuICAgIChcImxvZ2VtZW50X2VzdF9jaGFtYnJlXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvY2F0aW9uLmxvZ2VtZW50X2VzdF9jaGFtYnJlKTtcbiAgICAoXCJjb2xvY2F0aW9uXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvY2F0aW9uLmNvbG9jYXRpb24pO1xuICAgIChcIsOiZ8OpZXNfb3VfaGFuZGljYXBfYWR1bHRlc19ow6liZXJnw6llc19vbsOpcmV1eF9wYXJ0aWN1bGllcnNcIixcbiAgICBlbWJlZF9ib29sXG4gICAgeC5Mb2NhdGlvbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVycyk7XG4gICAgKFwibG9nZW1lbnRfbWV1YmzDqV9kODQyXzJcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9jYXRpb24ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMik7XG4gICAgKFwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRcIiwgZW1iZWRfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRcbiAgICB4LkxvY2F0aW9uLmNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80KV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX2NvdXJhbnRlOiBkYXRlO1xuICAgIGVsaWdpYmlsaXRlOiBib29sO1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZTogaW50ZWdlcjtcbiAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlOiBkZWNpbWFsIGFycmF5O1xuICAgIGNvbmRpdGlvbl8yX3I4MjNfNDogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCAoeDogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmRhdGVfY291cmFudGUpO1xuICAgIChcIsOpbGlnaWJpbGl0w6lcIiwgZW1iZWRfYm9vbFxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuZWxpZ2liaWxpdGUpO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlKTtcbiAgICAoXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiLFxuICAgIGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKVxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSk7XG4gICAgKFwiY29uZGl0aW9uXzJfcjgyM180XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuY29uZGl0aW9uXzJfcjgyM180KV0pXG5cblxubW9kdWxlIENhdGVnb3JpZUNhbGN1bEFQTCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBMb2NhdGlvbiBvZiBMb2NhdGlvbi50XG4gICAgfCBBY2Nlc3Npb25Qcm9wcmlldGUgb2YgUHJvcHJpZXRhaXJlLnRcbiAgICB8IExvZ2VtZW50Rm95ZXIgb2YgTG9nZW1lbnRGb3llci50XG4gIGVuZFxubGV0IGVtYmVkX2NhdGVnb3JpZV9jYWxjdWxfYV9wX2wgKHg6IENhdGVnb3JpZUNhbGN1bEFQTC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkNhdMOpZ29yaWVDYWxjdWxBUExcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTG9jYXRpb24geCAtPiAoXCJMb2NhdGlvblwiLCBlbWJlZF9sb2NhdGlvbiB4KVxuICAgIHwgQWNjZXNzaW9uUHJvcHJpZXRlIHggLT4gKFwiQWNjZXNzaW9uUHJvcHJpw6l0w6lcIiwgZW1iZWRfcHJvcHJpZXRhaXJlIHgpXG4gICAgfCBMb2dlbWVudEZveWVyIHggLT4gKFwiTG9nZW1lbnRGb3llclwiLCBlbWJlZF9sb2dlbWVudF9mb3llciB4KSlcblxuXG5tb2R1bGUgTW9kZU9jY3VwYXRpb24gPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgTG9jYXRhaXJlIG9mIExvY2F0aW9uLnRcbiAgICB8IFJlc2lkZW50TG9nZW1lbnRGb3llciBvZiBMb2dlbWVudEZveWVyLnRcbiAgICB8IEFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gb2YgUHJvcHJpZXRhaXJlLnRcbiAgICB8IFNvdXNMb2NhdGFpcmUgb2YgTG9jYXRpb24udFxuICAgIHwgTG9jYXRpb25BY2Nlc3Npb24gb2YgUHJvcHJpZXRhaXJlLnRcbiAgZW5kXG5sZXQgZW1iZWRfbW9kZV9vY2N1cGF0aW9uICh4OiBNb2RlT2NjdXBhdGlvbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIk1vZGVPY2N1cGF0aW9uXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IExvY2F0YWlyZSB4IC0+IChcIkxvY2F0YWlyZVwiLCBlbWJlZF9sb2NhdGlvbiB4KVxuICAgIHwgUmVzaWRlbnRMb2dlbWVudEZveWVyIHggLT5cbiAgICAgIChcIlLDqXNpZGVudExvZ2VtZW50Rm95ZXJcIiwgZW1iZWRfbG9nZW1lbnRfZm95ZXIgeClcbiAgICB8IEFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24geCAtPlxuICAgICAgKFwiQWNjZXNzaW9uUHJvcHJpw6l0w6lMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uXCIsIGVtYmVkX3Byb3ByaWV0YWlyZSB4KVxuICAgIHwgU291c0xvY2F0YWlyZSB4IC0+IChcIlNvdXNMb2NhdGFpcmVcIiwgZW1iZWRfbG9jYXRpb24geClcbiAgICB8IExvY2F0aW9uQWNjZXNzaW9uIHggLT4gKFwiTG9jYXRpb25BY2Nlc3Npb25cIiwgZW1iZWRfcHJvcHJpZXRhaXJlIHgpKVxuXG5cbm1vZHVsZSBMb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVzaWRlbmNlX3ByaW5jaXBhbGU6IGJvb2w7XG4gICAgZXN0X2VocGFkX291X21haXNvbl9hdXRvbm9taWVfbDMxM18xMl9hc2Y6IGJvb2w7XG4gICAgbW9kZV9vY2N1cGF0aW9uOiBNb2RlT2NjdXBhdGlvbi50O1xuICAgIHByb3ByaWV0YWlyZTogUGFyZW50T3VBdXRyZS50O1xuICAgIGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzOiBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy50O1xuICAgIHVzdWZydWl0OiBQYXJlbnRPdUF1dHJlLnQ7XG4gICAgbG9nZW1lbnRfZGVjZW50X2w4OV80NjI6IGJvb2w7XG4gICAgc3VyZmFjZV9tX2NhcnJlczogaW50ZWdlcjtcbiAgICB6b25lOiBab25lREhhYml0YXRpb24udFxuICB9XG5lbmRcbmxldCBlbWJlZF9sb2dlbWVudCAoeDogTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIkxvZ2VtZW50XCJdLFxuICBbKFwicsOpc2lkZW5jZV9wcmluY2lwYWxlXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvZ2VtZW50LnJlc2lkZW5jZV9wcmluY2lwYWxlKTtcbiAgICAoXCJlc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZlwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudC5lc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZik7XG4gICAgKFwibW9kZV9vY2N1cGF0aW9uXCIsIGVtYmVkX21vZGVfb2NjdXBhdGlvblxuICAgIHguTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKTtcbiAgICAoXCJwcm9wcmnDqXRhaXJlXCIsIGVtYmVkX3BhcmVudF9vdV9hdXRyZVxuICAgIHguTG9nZW1lbnQucHJvcHJpZXRhaXJlKTtcbiAgICAoXCJsb3XDqV9vdV9zb3VzX2xvdcOpX8OgX2Rlc190aWVyc1wiLCBlbWJlZF9sb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyc1xuICAgIHguTG9nZW1lbnQubG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMpO1xuICAgIChcInVzdWZydWl0XCIsIGVtYmVkX3BhcmVudF9vdV9hdXRyZVxuICAgIHguTG9nZW1lbnQudXN1ZnJ1aXQpO1xuICAgIChcImxvZ2VtZW50X2RlY2VudF9sODlfNDYyXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvZ2VtZW50LmxvZ2VtZW50X2RlY2VudF9sODlfNDYyKTtcbiAgICAoXCJzdXJmYWNlX21fY2FycsOpc1wiLCBlbWJlZF9pbnRlZ2VyIHguTG9nZW1lbnQuc3VyZmFjZV9tX2NhcnJlcyk7XG4gICAgKFwiem9uZVwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvbiB4LkxvZ2VtZW50LnpvbmUpXSlcblxuXG5tb2R1bGUgTWVuYWdlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBwcmVzdGF0aW9uc19yZWN1ZXM6IFByZXN0YXRpb25SZWN1ZS50IGFycmF5O1xuICAgIGxvZ2VtZW50OiBMb2dlbWVudC50O1xuICAgIHBlcnNvbm5lc19hX2NoYXJnZTogUGVyc29ubmVBQ2hhcmdlLnQgYXJyYXk7XG4gICAgbm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnQ6IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZTogU2l0dWF0aW9uRmFtaWxpYWxlLnQ7XG4gICAgY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpOiBib29sO1xuICAgIGVuZmFudF9hX25haXRyZV9hcHJlc19xdWF0cmllbWVfbW9pc19ncm9zc2Vzc2U6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfbWVuYWdlICh4OiBNZW5hZ2UudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIk3DqW5hZ2VcIl0sXG4gIFsoXCJwcmVzdGF0aW9uc19yZcOndWVzXCIsIGVtYmVkX2FycmF5IChlbWJlZF9wcmVzdGF0aW9uX3JlY3VlKVxuICAgIHguTWVuYWdlLnByZXN0YXRpb25zX3JlY3Vlcyk7XG4gICAgKFwibG9nZW1lbnRcIiwgZW1iZWRfbG9nZW1lbnQgeC5NZW5hZ2UubG9nZW1lbnQpO1xuICAgIChcInBlcnNvbm5lc1/DoF9jaGFyZ2VcIiwgZW1iZWRfYXJyYXkgKGVtYmVkX3BlcnNvbm5lX2FfY2hhcmdlKVxuICAgIHguTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSk7XG4gICAgKFwibm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguTWVuYWdlLm5vbWJyZV9hdXRyZXNfb2NjdXBhbnRzX2xvZ2VtZW50KTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlXCIsIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVcbiAgICB4Lk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKTtcbiAgICAoXCJjb25kaXRpb25fcmF0dGFjaMOpX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpXCIsIGVtYmVkX2Jvb2xcbiAgICB4Lk1lbmFnZS5jb25kaXRpb25fcmF0dGFjaGVfZm95ZXJfZmlzY2FsX3BhcmVudF9pZmkpO1xuICAgIChcImVuZmFudF/DoF9uYcOudHJlX2FwcsOoc19xdWF0cmnDqG1lX21vaXNfZ3Jvc3Nlc3NlXCIsIGVtYmVkX2Jvb2xcbiAgICB4Lk1lbmFnZS5lbmZhbnRfYV9uYWl0cmVfYXByZXNfcXVhdHJpZW1lX21vaXNfZ3Jvc3Nlc3NlKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbjogdW5pdCAtPiBib29sO1xuICAgIGNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luOiB1bml0IC0+IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gKHg6IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5tZW5hZ2VfaW4pO1xuICAgIChcImRlbWFuZGV1cl9pblwiLCBlbWJlZF9kZW1hbmRldXJcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiY29uZGl0aW9uX2xvZ2VtZW50X3LDqXNpZGVuY2VfcHJpbmNpcGFsZV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luKTtcbiAgICAoXCJjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW4pXSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiAoeDogRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudF9pblwiXSxcbiAgWyhcIm3DqW5hZ2VfaW5cIiwgZW1iZWRfbWVuYWdlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5tZW5hZ2VfaW4pO1xuICAgIChcImRlbWFuZGV1cl9pblwiLCBlbWJlZF9kZW1hbmRldXJcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRlbWFuZGV1cl9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgbWVuYWdlX2luOiBNZW5hZ2UudDtcbiAgICBkZW1hbmRldXJfaW46IERlbWFuZGV1ci50O1xuICAgIGJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW46IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiAoeDogRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudF9pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5tZW5hZ2VfaW4pO1xuICAgIChcImRlbWFuZGV1cl9pblwiLCBlbWJlZF9kZW1hbmRldXJcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGVtYW5kZXVyX2luKTtcbiAgICAoXCJiw6luw6lmaWNpZV9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbildKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgaW5mb3JtYXRpb25zX2luOiBJbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50LnQ7XG4gICAgZGF0ZV9lbW1lbmFnZW1lbnRfaW46IGRhdGU7XG4gICAgbWVuYWdlX2luOiBNZW5hZ2UudDtcbiAgICBkZW1hbmRldXJfaW46IERlbWFuZGV1ci50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzX2luOiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4gKHg6IEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50X2luXCJdLFxuICBbKFwiaW5mb3JtYXRpb25zX2luXCIsIGVtYmVkX2luZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnRcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLmluZm9ybWF0aW9uc19pbik7XG4gICAgKFwiZGF0ZV9lbW3DqW5hZ2VtZW50X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLmRhdGVfZW1tZW5hZ2VtZW50X2luKTtcbiAgICAoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4ubWVuYWdlX2luKTtcbiAgICAoXCJkZW1hbmRldXJfaW5cIiwgZW1iZWRfZGVtYW5kZXVyXG4gICAgeC5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kZW1hbmRldXJfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiZMOpcGVuc2VzX2p1c3RpZmnDqWVzX3LDqWVsbGVtZW50X2VuZ2Fnw6llc19pblwiLCBlbWJlZF9tb25leVxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzX2luKV0pXG5cblxubW9kdWxlIFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVzc291cmNlc19kZW1hbmRldXJfaW46IG1vbmV5O1xuICAgIHJlc3NvdXJjZXNfY29uam9pbnRfaW46IG1vbmV5O1xuICAgIHBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfaW46XG4gICAgICBQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci50IGFycmF5O1xuICAgIGRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luOiBib29sO1xuICAgIGNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW46IGJvb2w7XG4gICAgcGVyc29ubmVzX2FfY2hhcmdlX2luOiBQZXJzb25uZUFDaGFyZ2UudCBhcnJheTtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2luOiBTaXR1YXRpb25GYW1pbGlhbGUudDtcbiAgICBtb2RlX29jY3VwYXRpb25faW46IE1vZGVPY2N1cGF0aW9uLnQ7XG4gICAgY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9pbjogYm9vbDtcbiAgICBkZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlc19pbjogYm9vbDtcbiAgICBkYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXRfaW46IGRhdGU7XG4gICAgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9pbjpcbiAgICAgIFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwudDtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbjogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiAoeDogUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50X2luXCJdLFxuICBbKFwicmVzc291cmNlc19kZW1hbmRldXJfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX2RlbWFuZGV1cl9pbik7XG4gICAgKFwicmVzc291cmNlc19jb25qb2ludF9pblwiLCBlbWJlZF9tb25leVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnJlc3NvdXJjZXNfY29uam9pbnRfaW4pO1xuICAgIChcInBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfaW5cIixcbiAgICBlbWJlZF9hcnJheSAoZW1iZWRfcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyKVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfaW4pO1xuICAgIChcImRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdMOpX3LDqW11bsOpcsOpZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW4pO1xuICAgIChcImNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0w6lfcsOpbXVuw6lyw6llX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luKTtcbiAgICAoXCJwZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2FycmF5IChlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSlcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfaW5cIiwgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4pO1xuICAgIChcIm1vZGVfb2NjdXBhdGlvbl9pblwiLCBlbWJlZF9tb2RlX29jY3VwYXRpb25cbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4pO1xuICAgIChcImNvbmRpdGlvbl/DomdlX2JvdXJzZV9lbnNlaWduZW1lbnRfc3Vww6lyaWV1cl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9pbik7XG4gICAgKFwiZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc1/DqXR1ZGVzX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlc19pbik7XG4gICAgKFwiZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXRfaW4pO1xuICAgIChcInBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfaW5cIixcbiAgICBlbWJlZF9wYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19iYXNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4pXSlcblxuXG5tb2R1bGUgQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2RhdGVfY291cmFudGVfaW46IGRhdGV9XG5lbmRcbmxldCBlbWJlZF9jb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luICh4OiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50X2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGxveWVyX3ByaW5jaXBhbF9iYXNlX2luOiBtb25leTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbjogYm9vbDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV9pbjogYm9vbDtcbiAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbjogYm9vbDtcbiAgICB0eXBlX2FpZGVfaW46IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudDtcbiAgICBjb2xvY2F0aW9uX2luOiBib29sO1xuICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luOiBtb25leTtcbiAgICBsb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmX2luXCJdLFxuICBbKFwibG95ZXJfcHJpbmNpcGFsX2Jhc2VfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2Jhc2VfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJiw6luw6lmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXDDqXNfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbik7XG4gICAgKFwiem9uZV9pblwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi56b25lX2luKTtcbiAgICAoXCJsb2dlbWVudF9lc3RfY2hhbWJyZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luKTtcbiAgICAoXCLDomfDqWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaMOpYmVyZ8OpZXNfb27DqXJldXhfcGFydGljdWxpZXJzX2luXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbik7XG4gICAgKFwidHlwZV9haWRlX2luXCIsIGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luKTtcbiAgICAoXCJjb2xvY2F0aW9uX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbik7XG4gICAgKFwicsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbik7XG4gICAgKFwibG9nZW1lbnRfbWV1YmzDqV9kODQyXzJfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbjogYm9vbDtcbiAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1X2luOiBkZWNpbWFsXG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiAoeDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVfaW5cIl0sXG4gIFsoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcImNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4pO1xuICAgIChcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW5cIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfaW46IGJvb2w7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiAoeDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJfaW5cIl0sXG4gIFsoXCJjb25kaXRpb25fMl9kdV84MzJfMjVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICB0eXBlX2xvZ2VtZW50X2ZveWVyX2luOiBUeXBlTG9nZW1lbnRGb3llci50O1xuICAgIGRhdGVfY29udmVudGlvbm5lbWVudF9pbjogZGF0ZTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIHJlZGV2YW5jZV9pbjogbW9uZXk7XG4gICAgY29uZGl0aW9uXzJfZHVfODMyXzI1X2luOiB1bml0IC0+IGJvb2w7XG4gICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV9pbjogdW5pdCAtPiBkZWNpbWFsXG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4gKHg6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyX2luXCJdLFxuICBbKFwidHlwZV9sb2dlbWVudF9mb3llcl9pblwiLCBlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luKTtcbiAgICAoXCJkYXRlX2NvbnZlbnRpb25uZW1lbnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pO1xuICAgIChcInpvbmVfaW5cIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb25cbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwicmVkZXZhbmNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4pO1xuICAgIChcImNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbik7XG4gICAgKFwibl9ub21icmVfcGFydHNfZDgzMl8yNV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiAoeDogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmnDqXTDqV9pblwiXSxcbiAgWyhcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luOiBtb25leTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW46IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUudDtcbiAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X2luOiBkYXRlO1xuICAgIGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbjogYm9vbDtcbiAgICBkYXRlX2VudHJlZV9sb2dlbWVudF9pbjogZGF0ZTtcbiAgICBjb3Byb3ByaWV0ZV9pbjogYm9vbDtcbiAgICBzaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbjogYm9vbDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICB0eXBlX3ByZXRfaW46IFR5cGVQcmV0LnQ7XG4gICAgYW5jaWVubmV0ZV9sb2dlbWVudF9pbjogTmV1Zk91QW5jaWVuLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gKHg6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqV9pblwiXSxcbiAgWyhcIm1lbnN1YWxpdMOpX3ByaW5jaXBhbGVfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cIixcbiAgICBlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbik7XG4gICAgKFwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2luXCIsIGVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luKTtcbiAgICAoXCJkYXRlX3NpZ25hdHVyZV9wcsOqdF9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pbik7XG4gICAgKFwibG9jYWxfaGFiaXTDqV9wcmVtacOocmVfZm9pc19iw6luw6lmaWNpYWlyZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luKTtcbiAgICAoXCJkYXRlX2VudHLDqWVfbG9nZW1lbnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luKTtcbiAgICAoXCJjb3Byb3ByacOpdMOpX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jb3Byb3ByaWV0ZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uem9uZV9pbik7XG4gICAgKFwidHlwZV9wcsOqdF9pblwiLCBlbWJlZF90eXBlX3ByZXRcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3ByZXRfaW4pO1xuICAgIChcImFuY2llbm5ldMOpX2xvZ2VtZW50X2luXCIsIGVtYmVkX25ldWZfb3VfYW5jaWVuXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uYW5jaWVubmV0ZV9sb2dlbWVudF9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1vZGVfb2NjdXBhdGlvbl9pbjogTW9kZU9jY3VwYXRpb24udDtcbiAgICB0eXBlX2FpZGVfaW46IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudDtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW46IG1vbmV5O1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfaW46IFNpdHVhdGlvbkZhbWlsaWFsZS50O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50X2luXCJdLFxuICBbKFwibW9kZV9vY2N1cGF0aW9uX2luXCIsIGVtYmVkX21vZGVfb2NjdXBhdGlvblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbik7XG4gICAgKFwidHlwZV9haWRlX2luXCIsIGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50eXBlX2FpZGVfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9zYW5zX2Fycm9uZGlfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfaW5cIiwgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uem9uZV9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGxveWVyX3ByaW5jaXBhbF9pbjogbW9uZXk7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luOiBtb25leTtcbiAgICBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW46IGJvb2w7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbjogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQ7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfaW46IGJvb2w7XG4gICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW46IGJvb2w7XG4gICAgdHlwZV9haWRlX2luOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQ7XG4gICAgY29sb2NhdGlvbl9pbjogYm9vbDtcbiAgICByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbjogbW9uZXk7XG4gICAgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbjogYm9vbDtcbiAgICBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pbjogQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZfaW5cIl0sXG4gIFsoXCJsb3llcl9wcmluY2lwYWxfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb3llcl9wcmluY2lwYWxfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcImLDqW7DqWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcMOpc19pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pO1xuICAgIChcInpvbmVfaW5cIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb25cbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi56b25lX2luKTtcbiAgICAoXCJsb2dlbWVudF9lc3RfY2hhbWJyZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW4pO1xuICAgIChcIsOiZ8OpZXNfb3VfaGFuZGljYXBfYWR1bHRlc19ow6liZXJnw6llc19vbsOpcmV1eF9wYXJ0aWN1bGllcnNfaW5cIixcbiAgICBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4pO1xuICAgIChcInR5cGVfYWlkZV9pblwiLCBlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luKTtcbiAgICAoXCJjb2xvY2F0aW9uX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luKTtcbiAgICAoXCJyw6lkdWN0aW9uX2xveWVyX3NvbGlkYXJpdMOpX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW4pO1xuICAgIChcImxvZ2VtZW50X21ldWJsw6lfZDg0Ml8yX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luKTtcbiAgICAoXCJjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pblwiLCBlbWJlZF9jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbjogbW9uZXk7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50O1xuICAgIHpvbmVfaW46IFpvbmVESGFiaXRhdGlvbi50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luOiBtb25leTtcbiAgICBzaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbjogYm9vbDtcbiAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X2luOiBkYXRlO1xuICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbjogVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQ7XG4gICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luOiBib29sO1xuICAgIGRhdGVfZW50cmVlX2xvZ2VtZW50X2luOiBkYXRlO1xuICAgIGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0X2luOiBtb25leTtcbiAgICBjb3Byb3ByaWV0ZV9pbjogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lfaW5cIl0sXG4gIFsoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cIixcbiAgICBlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi56b25lX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcIm1lbnN1YWxpdMOpX3ByaW5jaXBhbGVfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4pO1xuICAgIChcImRhdGVfc2lnbmF0dXJlX3Byw6p0X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4pO1xuICAgIChcInR5cGVfdHJhdmF1eF9sb2dlbWVudF9pblwiLCBlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW4pO1xuICAgIChcImxvY2FsX2hhYml0w6lfcHJlbWnDqHJlX2ZvaXNfYsOpbsOpZmljaWFpcmVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luKTtcbiAgICAoXCJkYXRlX2VudHLDqWVfbG9nZW1lbnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW4pO1xuICAgIChcImNoYXJnZXNfbWVuc3VlbGxlc19wcsOqdF9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW4pO1xuICAgIChcImNvcHJvcHJpw6l0w6lfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY29wcm9wcmlldGVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgdHlwZV9sb2dlbWVudF9mb3llcl9pbjogVHlwZUxvZ2VtZW50Rm95ZXIudDtcbiAgICBkYXRlX2NvbnZlbnRpb25uZW1lbnRfaW46IGRhdGU7XG4gICAgcmVkZXZhbmNlX2luOiBtb25leTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luOlxuICAgICAgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyX2luXCJdLFxuICBbKFwidHlwZV9sb2dlbWVudF9mb3llcl9pblwiLCBlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnR5cGVfbG9nZW1lbnRfZm95ZXJfaW4pO1xuICAgIChcImRhdGVfY29udmVudGlvbm5lbWVudF9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmRhdGVfY29udmVudGlvbm5lbWVudF9pbik7XG4gICAgKFwicmVkZXZhbmNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnJlZGV2YW5jZV9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJjYXTDqWdvcmllX8OpcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luXCIsXG4gICAgZW1iZWRfY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1vZGVfb2NjdXBhdGlvbl9pbjogTW9kZU9jY3VwYXRpb24udDtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW46IG1vbmV5O1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfaW46IFNpdHVhdGlvbkZhbWlsaWFsZS50O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICB0eXBlX2FpZGVfaW46IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiAoeDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudF9pblwiXSxcbiAgWyhcIm1vZGVfb2NjdXBhdGlvbl9pblwiLCBlbWJlZF9tb2RlX29jY3VwYXRpb25cbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX3NhbnNfYXJyb25kaV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2luXCIsIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInpvbmVfaW5cIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb25cbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwidHlwZV9haWRlX2luXCIsIGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnR5cGVfYWlkZV9pbildKVxuXG5cbm1vZHVsZSBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtkYXRlX25haXNzYW5jZV9hc3N1cmVfaW46IGRhdGV9XG5lbmRcbmxldCBlbWJlZF9vdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luICh4OiBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZV9pblwiXSxcbiAgWyhcImRhdGVfbmFpc3NhbmNlX2Fzc3Vyw6lfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi5kYXRlX25haXNzYW5jZV9hc3N1cmVfaW4pXSlcblxuXG5tb2R1bGUgSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1vZGVfb2NjdXBhdGlvbl9pbjogTW9kZU9jY3VwYXRpb24udDtcbiAgICBhaWRlX3ZlcnNlZV9pbjogVmVyc2VtZW50QS50O1xuICAgIG1vbnRhbnRfYXBsX2luOiBtb25leTtcbiAgICBtb250YW50X2NoYXJnZXNfaW46IG1vbmV5O1xuICAgIGRlcGVuc2VfbG9nZW1lbnRfaW46IERlcGVuc2VMb2dlbWVudC50O1xuICAgIG1vbnRhbnRfZGV0dGVfaW46IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2ltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luICh4OiBJbXBheWVEZXBlbnNlTG9nZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiSW1wYXnDqUTDqXBlbnNlTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJtb2RlX29jY3VwYXRpb25faW5cIiwgZW1iZWRfbW9kZV9vY2N1cGF0aW9uXG4gICAgeC5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4pO1xuICAgIChcImFpZGVfdmVyc8OpZV9pblwiLCBlbWJlZF92ZXJzZW1lbnRfYVxuICAgIHguSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4uYWlkZV92ZXJzZWVfaW4pO1xuICAgIChcIm1vbnRhbnRfYXBsX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb250YW50X2FwbF9pbik7XG4gICAgKFwibW9udGFudF9jaGFyZ2VzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb250YW50X2NoYXJnZXNfaW4pO1xuICAgIChcImTDqXBlbnNlX2xvZ2VtZW50X2luXCIsIGVtYmVkX2RlcGVuc2VfbG9nZW1lbnRcbiAgICB4LkltcGF5ZURlcGVuc2VMb2dlbWVudEluLmRlcGVuc2VfbG9nZW1lbnRfaW4pO1xuICAgIChcIm1vbnRhbnRfZGV0dGVfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfZGV0dGVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtZW5hZ2VfaW46IE1lbmFnZS50O1xuICAgIGRlbWFuZGV1cl9pbjogRGVtYW5kZXVyLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luOiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luICh4OiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLm1lbmFnZV9pbik7XG4gICAgKFwiZGVtYW5kZXVyX2luXCIsIGVtYmVkX2RlbWFuZGV1clxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRlbWFuZGV1cl9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX3ByaXNlc19lbl9jb21wdGVfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luKV0pXG5cblxubW9kdWxlIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW46IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gKHg6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZV9pblwiXSxcbiAgWyhcIm3DqW5hZ2VfaW5cIiwgZW1iZWRfbWVuYWdlXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLm1lbmFnZV9pbik7XG4gICAgKFwiZGVtYW5kZXVyX2luXCIsIGVtYmVkX2RlbWFuZGV1clxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5kZW1hbmRldXJfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luKV0pXG5cblxubW9kdWxlIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZX1cbmVuZFxubGV0IGVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gKHg6IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc19pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4pXSlcblxuXG5tb2R1bGUgVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX25haXNzYW5jZV9pbjogZGF0ZTtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIGFubmVlc19pbjogZHVyYXRpb25cbiAgfVxuZW5kXG5sZXQgZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luICh4OiBWZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlbDqXJpZmljYXRpb27DgmdlSW5mw6lyaWV1ck91w4lnYWzDgF9pblwiXSxcbiAgWyhcImRhdGVfbmFpc3NhbmNlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LlZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi5kYXRlX25haXNzYW5jZV9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5WZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiYW5uw6llc19pblwiLCBlbWJlZF9kdXJhdGlvblxuICAgIHguVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQUluLmFubmVlc19pbildKVxuXG5cbm1vZHVsZSBWZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRhdGVfbmFpc3NhbmNlX2luOiBkYXRlO1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgYW5uZWVzX2luOiBkdXJhdGlvblxuICB9XG5lbmRcbmxldCBlbWJlZF92ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luICh4OiBWZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlbDqXJpZmljYXRpb27DgmdlU3Vww6lyaWV1csOAX2luXCJdLFxuICBbKFwiZGF0ZV9uYWlzc2FuY2VfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQUluLmRhdGVfbmFpc3NhbmNlX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LlZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJhbm7DqWVzX2luXCIsIGVtYmVkX2R1cmF0aW9uIHguVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQUluLmFubmVlc19pbildKVxuXG5cbm1vZHVsZSBTbWljSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2RhdGVfY291cmFudGVfaW46IGRhdGU7IHJlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnR9XG5lbmRcbmxldCBlbWJlZF9zbWljX2luICh4OiBTbWljSW4udCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIlNtaWNfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LlNtaWNJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJyw6lzaWRlbmNlX2luXCIsIGVtYmVkX2NvbGxlY3Rpdml0ZSB4LlNtaWNJbi5yZXNpZGVuY2VfaW4pXSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBwcmVzdGF0aW9uX2NvdXJhbnRlX2luOiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQ7XG4gICAgcmVzaWRlbmNlX2luOiBDb2xsZWN0aXZpdGUudFxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luICh4OiBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzX2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInByZXN0YXRpb25fY291cmFudGVfaW5cIiwgZW1iZWRfZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgeC5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnByZXN0YXRpb25fY291cmFudGVfaW4pO1xuICAgIChcInLDqXNpZGVuY2VfaW5cIiwgZW1iZWRfY29sbGVjdGl2aXRlXG4gICAgeC5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbildKVxuXG5cblxuXG5sZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbjogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udCkgOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9XG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgZXhvbmVyZV9jc2dfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiZXhvbsOpcsOpX2NzZ1wiXVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTE5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUxOTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTE5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTE5OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM3OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEwxMzYtMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBEZSBsYSBjb250cmlidXRpb24gc29jaWFsZSBzdXIgbGVzIHJldmVudXMgZCdhY3Rpdml0w6kgZXQgc3VyIGxlcyByZXZlbnVzIGRlIHJlbXBsYWNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNiA6IENvbnRyaWJ1dGlvbiBzb2NpYWxlIGfDqW7DqXJhbGlzw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUk6IFRpdHJlIElJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyByZWxhdGl2ZXMgYXUgZmluYW5jZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTUxOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MTk7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUxOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MTk7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdGF1eF9jcmRzXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcInRhdXhfY3Jkc1wiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTE4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUxODsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE5MTsgc3RhcnRfY29sdW1uPTM5OyBlbmRfbGluZT0xOTE7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE5XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBEZXMgY29udHJpYnV0aW9ucyBwb3VyIGxlIHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZS5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJPcmRvbm5hbmNlIG7CsCA5Ni01MCBkdSAyNCBqYW52aWVyIDE5OTYgcmVsYXRpdmUgYXUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV8gKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDVcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTE4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUxODsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJtb250YW50XCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT01MjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTIxOyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTM7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogRGVzIGNvbnRyaWJ1dGlvbnMgcG91ciBsZSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGUuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJPcmRvbm5hbmNlIG7CsCA5Ni01MCBkdSAyNCBqYW52aWVyIDE5OTYgcmVsYXRpdmUgYXUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoOSkgKDEpKSkpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBvX211bHRfbW9uX3JhdCBhaWRlX2ZpbmFsZV8gdGF1eF9jcmRzXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01MjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTIxOyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUyMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01MjE7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgXzogdW5pdCA9IGlmICh0cnkgZXhvbmVyZV9jc2dfIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Nzsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBEZXMgY29udHJpYnV0aW9ucyBwb3VyIGxlIHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZS5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk9yZG9ubmFuY2UgbsKwIDk2LTUwIGR1IDI0IGphbnZpZXIgMTk5NiByZWxhdGl2ZSBhdSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGVcIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Nzsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBEZXMgY29udHJpYnV0aW9ucyBwb3VyIGxlIHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZS5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk9yZG9ubmFuY2UgbsKwIDk2LTUwIGR1IDI0IGphbnZpZXIgMTk5NiByZWxhdGl2ZSBhdSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGVcIl19KSBpblxuICB7Q29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm1vbnRhbnQgPSBtb250YW50X31cblxubGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSAoY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luOiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi50KSA6IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS50ID1cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiBpblxuICBsZXQgY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gaW5cbiAgbGV0IG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNlwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU5NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01OTU7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY4NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNjg1OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8gdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzYzMlwiKVxuICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NTU3XCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01OTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTk1OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjZfOiBUcmFuY2hlUmV2ZW51LnQgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCI7IFwidHJhbmNoZXNfcmV2ZW51c19kODMyXzI2XCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF90cmFuY2hlX3JldmVudSkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01OTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTkyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTkyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTkyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY1MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjY1MDsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIFt8KHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0MjMwM1wiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpfSk7XG4gICAgICAgICAgICAgICAgICAgICAgKHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNDc2MVwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTQyMzAzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyNFwiKX0pO1xuICAgICAgICAgICAgICAgICAgICAgICh7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjI5ODVcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNDc2MVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yMDhcIil9KTtcbiAgICAgICAgICAgICAgICAgICAgICAoe1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA5NTA1XCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjI5ODVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjMyXCIpfSk7XG4gICAgICAgICAgICAgICAgICAgICAgKHtUcmFuY2hlUmV2ZW51LmhhdXQgPSAoTGltaXRlVHJhbmNoZS5JbmZpbmkgKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwOTUwNVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4zMjhcIil9KXxdKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjYwMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNjAxOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgW3woe1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NDgxMFwiKSk7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNFwiKX0pO1xuICAgICAgICAgICAgICAoe1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2Nzg3MVwiKSk7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ4MTBcIik7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEwNFwiKX0pO1xuICAgICAgICAgICAgICAoe1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4OTYxOFwiKSk7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjc4NzFcIik7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIxNlwiKX0pO1xuICAgICAgICAgICAgICAoe1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzNTc0NFwiKSk7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODk2MThcIik7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI2NFwiKX0pO1xuICAgICAgICAgICAgICAoe1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjYzMzEyOVwiKSk7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MzU3NDRcIik7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjMyXCIpfSk7XG4gICAgICAgICAgICAgICh7VHJhbmNoZVJldmVudS5oYXV0ID0gKExpbWl0ZVRyYW5jaGUuSW5maW5pICgpKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjYzMzEyOVwiKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDhcIil9KXxdKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01OTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTkyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjZfbXVsdGlwbGllZXNfOiBUcmFuY2hlUmV2ZW51RGVjaW1hbC50IGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiO1xuICAgICAgXCJ0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjZfbXVsdGlwbGnDqWVzXCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF90cmFuY2hlX3JldmVudV9kZWNpbWFsKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU5Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01OTM7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDQ3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwNDc7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fbWFwXG4gICAgICAgICAgICAgIChmdW4gKHRyYW5jaGVfOiBUcmFuY2hlUmV2ZW51LnQpIC0+XG4gICAgICAgICAgICAgICAgIHtUcmFuY2hlUmV2ZW51RGVjaW1hbC5oYXV0ID1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51LmhhdXQpXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IExpbWl0ZVRyYW5jaGUuUmV2ZW51IHRyYW5jaGVfaGF1dF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZURlY2ltYWwuUmV2ZW51XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0IChvX3RvcmF0X21vbiB0cmFuY2hlX2hhdXRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKSlcbiAgICAgICAgICAgICAgICAgICAgIHwgTGltaXRlVHJhbmNoZS5JbmZpbmkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlRGVjaW1hbC5JbmZpbmkgKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudURlY2ltYWwuYmFzID1cbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9tb24gKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnUuYmFzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1Xyk7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXggPSAodHJhbmNoZV8uVHJhbmNoZVJldmVudS50YXV4KX0pXG4gICAgICAgICAgICAgIHRyYW5jaGVzX3JldmVudXNfZDgzMl8yNl8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU5Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01OTM7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIjsgXCJtb250YW50XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU5Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01OTc7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01OTc7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01OTc7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwOTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwOTg7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAobGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18gOiBkZWNpbWFsID1cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfbW9uIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIChvX3RvbW9uZXlfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3JlZHVjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChzdW0xXzogZGVjaW1hbCkgKHN1bTJfOiBkZWNpbWFsKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9yYXRfcmF0IHN1bTFfIHN1bTJfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAodHJhbmNoZV86IFRyYW5jaGVSZXZlbnVEZWNpbWFsLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5oYXV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGltaXRlVHJhbmNoZURlY2ltYWwuUmV2ZW51IHRyYW5jaGVfaGF1dF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuY2hlX2hhdXRfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuY2hlX2hhdXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMaW1pdGVUcmFuY2hlRGVjaW1hbC5JbmZpbmkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpcGxpZWVzXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X21vbiBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjZfKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDYwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwNjA7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIChsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXyA6IGRlY2ltYWwgPVxuICAgICAgICAgICAgICAgKG9fdG9yYXRfbW9uIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKG9fdG9tb25leV9yYXRcbiAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgKG9fcmVkdWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChzdW0xXzogZGVjaW1hbCkgKHN1bTJfOiBkZWNpbWFsKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfcmF0X3JhdCBzdW0xXyBzdW0yXylcbiAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAob19tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHRyYW5jaGVfOiBUcmFuY2hlUmV2ZW51RGVjaW1hbC50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9yYXRfcmF0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmhhdXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExpbWl0ZVRyYW5jaGVEZWNpbWFsLlJldmVudSB0cmFuY2hlX2hhdXRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5jaGVfaGF1dF8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdCB0cmFuY2hlX2hhdXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMaW1pdGVUcmFuY2hlRGVjaW1hbC5JbmZpbmkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpcGxpZWVzXykpXG4gICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X21vbiBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU5Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01OTc7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS5tb250YW50ID0gbW9udGFudF99XG5cbmxldCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbjogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi50KSA6IENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyLnQgPVxuICBsZXQgY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llclwiOyBcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYwNDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MDQ7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02MDQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MDQ7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMTI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwMTI7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS4yXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjIuNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjMuXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy43XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC4zXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCI0LjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5MjU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjRcIilcbiAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS44XCIpKSBlbHNlXG4gICAgICAgICAgICAgICggaWYgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSlcbiAgICAgICAgICAgICAgICAgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy5cIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIjNcIikpIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy43XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0XCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjQuM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjQuM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYwNDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MDQ7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUgPVxuICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1X31cblxubGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luOiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnQpIDogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCBuX25vbWJyZV9wYXJ0c19kODMyXzExXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJuX25vbWJyZV9wYXJ0c19kODMyXzExXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjYxOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyNjk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI2OTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS40XCIpXG4gICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAoIGlmIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpXG4gICAgICAgICAgICAgICAgIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjMuXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzXCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjMuN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNFwiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCI0LjNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCI0LjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjAuNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjYxOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUubl9ub21icmVfcGFydHNfZDgzMl8xMSA9XG4gICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFffVxuXG5sZXQgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSAob3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbjogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi50KSA6IE91dmVydHVyZURyb2l0c1JldHJhaXRlLnQgPVxuICBsZXQgZGF0ZV9uYWlzc2FuY2VfYXNzdXJlXzogZGF0ZSA9IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4uT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi5kYXRlX25haXNzYW5jZV9hc3N1cmVfaW4gaW5cbiAgbGV0IGFnZV9vdXZlcnR1cmVfZHJvaXRfOiBkdXJhdGlvbiA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIk91dmVydHVyZURyb2l0c1JldHJhaXRlXCI7IFwiw6JnZV9vdXZlcnR1cmVfZHJvaXRcIl0gKGVtYmVkX2R1cmF0aW9uKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxNDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDE0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxNDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkRhdGUgZCdvdXZlcnR1cmUgZGVzIGRyb2l0cyDDoCBsYSByZXRyYWl0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTk7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDE2MS0xNy0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDEgOiBJbmZvcm1hdGlvbiBldCBzaW1wbGlmaWNhdGlvbiBkZXMgZMOpbWFyY2hlcyBkZXMgYXNzdXLDqXMuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gNCA6IEFzc3VyYW5jZSB2aWVpbGxlc3NlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zIGV0IGF1eCBzb2lucyAtIENvbnRyw7RsZSBtw6lkaWNhbCAtIFR1dGVsbGUgYXV4IHByZXN0YXRpb25zIHNvY2lhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUk6IFRpdHJlIElJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyByZWxhdGl2ZXMgYXUgZmluYW5jZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX25haXNzYW5jZV9hc3N1cmVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTUpICgxKSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDYyKSAoMCkgKDApKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDE0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJEYXRlIGQnb3V2ZXJ0dXJlIGRlcyBkcm9pdHMgw6AgbGEgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI1Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjU2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQxNjEtMi0xLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcmFncmFwaGUgMiA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIEkgOiBHw6luw6lyYWxpdMOpcyAtIERpc3Bvc2l0aW9ucyBjb21tdW5lcyDDoCB0b3V0IG91IHBhcnRpZSBkZXMgcsOpZ2ltZXMgZGUgYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTUxKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkdXJhdGlvbl9vZl9udW1iZXJzICg2MCkgKDApICgwKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2NzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEMTYxLTItMS05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDIgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gNCA6IEFzc3VyYW5jZSB2aWVpbGxlc3NlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zIGV0IGF1eCBzb2lucyAtIENvbnRyw7RsZSBtw6lkaWNhbCAtIFR1dGVsbGUgYXV4IHByZXN0YXRpb25zIHNvY2lhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBJIDogR8OpbsOpcmFsaXTDqXMgLSBEaXNwb3NpdGlvbnMgY29tbXVuZXMgw6AgdG91dCBvdSBwYXJ0aWUgZGVzIHLDqWdpbWVzIGRlIGJhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTUxKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTUxKSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX2FkZF9kdXJfZHVyIChkdXJhdGlvbl9vZl9udW1iZXJzICg2MCkgKDApICgwKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMCkgKDQpICgwKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxNDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkRhdGUgZCdvdXZlcnR1cmUgZGVzIGRyb2l0cyDDoCBsYSByZXRyYWl0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzY7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDE2MS0yLTEtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAyIDogT3V2ZXJ0dXJlIGR1IGRyb2l0IGV0IGxpcXVpZGF0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQsOpbsOpZmljaWFpcmVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgSSA6IEfDqW7DqXJhbGl0w6lzIC0gRGlzcG9zaXRpb25zIGNvbW11bmVzIMOgIHRvdXQgb3UgcGFydGllIGRlcyByw6lnaW1lcyBkZSBiYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZXEgKG9fZ2V0WWVhciBkYXRlX25haXNzYW5jZV9hc3N1cmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxOTUyXCIpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fYWRkX2R1cl9kdXIgKGR1cmF0aW9uX29mX251bWJlcnMgKDYwKSAoMCkgKDApKVxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoOSkgKDApKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4NTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEMTYxLTItMS05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDIgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gNCA6IEFzc3VyYW5jZSB2aWVpbGxlc3NlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zIGV0IGF1eCBzb2lucyAtIENvbnRyw7RsZSBtw6lkaWNhbCAtIFR1dGVsbGUgYXV4IHByZXN0YXRpb25zIHNvY2lhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBJIDogR8OpbsOpcmFsaXTDqXMgLSBEaXNwb3NpdGlvbnMgY29tbXVuZXMgw6AgdG91dCBvdSBwYXJ0aWUgZGVzIHLDqWdpbWVzIGRlIGJhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19lcSAob19nZXRZZWFyIGRhdGVfbmFpc3NhbmNlX2Fzc3VyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjE5NTNcIikpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19hZGRfZHVyX2R1ciAoZHVyYXRpb25fb2ZfbnVtYmVycyAoNjEpICgwKSAoMCkpXG4gICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDApICgyKSAoMCkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDE0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJEYXRlIGQnb3V2ZXJ0dXJlIGRlcyBkcm9pdHMgw6AgbGEgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk0OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQxNjEtMi0xLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcmFncmFwaGUgMiA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIEkgOiBHw6luw6lyYWxpdMOpcyAtIERpc3Bvc2l0aW9ucyBjb21tdW5lcyDDoCB0b3V0IG91IHBhcnRpZSBkZXMgcsOpZ2ltZXMgZGUgYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2VxIChvX2dldFllYXIgZGF0ZV9uYWlzc2FuY2VfYXNzdXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMTk1NFwiKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX2FkZF9kdXJfZHVyIChkdXJhdGlvbl9vZl9udW1iZXJzICg2MSkgKDApICgwKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMCkgKDcpICgwKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMTQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTAxNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkRhdGUgZCdvdXZlcnR1cmUgZGVzIGRyb2l0cyDDoCBsYSByZXRyYWl0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7T3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUuYWdlX291dmVydHVyZV9kcm9pdCA9IGFnZV9vdXZlcnR1cmVfZHJvaXRffVxuXG5sZXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luOiBJbXBheWVEZXBlbnNlTG9nZW1lbnRJbi50KSA6IEltcGF5ZURlcGVuc2VMb2dlbWVudC50ID1cbiAgbGV0IG1vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4gaW5cbiAgbGV0IGFpZGVfdmVyc2VlXzogVmVyc2VtZW50QS50ID0gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4uSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4uYWlkZV92ZXJzZWVfaW4gaW5cbiAgbGV0IG1vbnRhbnRfYXBsXzogbW9uZXkgPSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb250YW50X2FwbF9pbiBpblxuICBsZXQgbW9udGFudF9jaGFyZ2VzXzogbW9uZXkgPSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb250YW50X2NoYXJnZXNfaW4gaW5cbiAgbGV0IGRlcGVuc2VfbG9nZW1lbnRfOiBEZXBlbnNlTG9nZW1lbnQudCA9IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLkltcGF5ZURlcGVuc2VMb2dlbWVudEluLmRlcGVuc2VfbG9nZW1lbnRfaW4gaW5cbiAgbGV0IG1vbnRhbnRfZGV0dGVfOiBtb25leSA9IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfZGV0dGVfaW4gaW5cbiAgbGV0IG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfOiBNb2RlT2NjdXBhdGlvbkltcGF5ZS50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiSW1wYXnDqUTDqXBlbnNlTG9nZW1lbnRcIjsgXCJtb2RlX29jY3VwYXRpb25faW1wYXnDqVwiXVxuICAgIChlbWJlZF9tb2RlX29jY3VwYXRpb25faW1wYXllKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDMwOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM1NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMzU0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgKE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgIChNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0ICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAoTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCAoKSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgKE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgKE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyICgpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAzMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDMwOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX2xvZ2VtZW50X2JydXRlXzogRGVwZW5zZUxvZ2VtZW50LnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudFwiOyBcImTDqXBlbnNlX2xvZ2VtZW50X2JydXRlXCJdXG4gICAgKGVtYmVkX2RlcGVuc2VfbG9nZW1lbnQpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDMxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMzE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDMxOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAzMTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzMTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAzMTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjMyMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjMyMjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlcGVuc2VfbG9nZW1lbnRfKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjI2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjIyNjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlcGVuc2VfbG9nZW1lbnRfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDMxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMzE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGRlcGVuc2VfbG9nZW1lbnRfbmV0dGVfOiBEZXBlbnNlTG9nZW1lbnQudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50XCI7IFwiZMOpcGVuc2VfbG9nZW1lbnRfbmV0dGVcIl1cbiAgICAoZW1iZWRfZGVwZW5zZV9sb2dlbWVudCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMzI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAzMjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDMyOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjIzNTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyMzU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X2JydXRlX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzIHRvdGFsXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyB0b3RhbF8pXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgbWVuc3VhbGl0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBtZW5zdWFsaXRlXylcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgbW9udGFudF9sb3llcl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChEZXBlbnNlTG9nZW1lbnQuTG95ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIG1vbnRhbnRfbG95ZXJfIG1vbnRhbnRfYXBsXykpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDMyOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjMzMTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzMzE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzIHRvdGFsX2VjaGVhbmNlc18gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChEZXBlbnNlTG9nZW1lbnQuVG90YWxBbm51ZWxFY2hlYW5jZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHRvdGFsX2VjaGVhbmNlc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBtb250YW50X2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlIG1lbnN1YWxpdGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIG1lbnN1YWxpdGVfIG1vbnRhbnRfYXBsXykpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LkxveWVyIGxveWVyXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKERlcGVuc2VMb2dlbWVudC5Mb3llciBsb3llcl8pKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDMyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMzI7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNldWlsX2ltcGF5ZV9kZXBlbnNlX2RlX2xvZ2VtZW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudFwiOyBcInNldWlsX2ltcGF5w6lfZMOpcGVuc2VfZGVfbG9nZW1lbnRcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDI5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMjk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDI5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAyOTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxOTY7IHN0YXJ0X2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTk2OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYWlkZV92ZXJzZWVfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmFpbGxldXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkJlbmVmaWNpYWlyZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5FdGFibGlzc2VtZW50SGFiaWxpdGUgXyAtPiBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZGVwZW5zZV9sb2dlbWVudF9icnV0ZV9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LkxveWVyIGxveWVyX2JydXRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGxveWVyX2JydXRfIG1vbnRhbnRfY2hhcmdlc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLlwiKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMjk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjEyOyBzdGFydF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjIxMjsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFpZGVfdmVyc2VlX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkJhaWxsZXVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkJlbmVmaWNpYWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuRXRhYmxpc3NlbWVudEhhYmlsaXRlIF8gLT4gZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGRlcGVuc2VfbG9nZW1lbnRfbmV0dGVfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuVG90YWxBbm51ZWxFY2hlYW5jZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Mb3llciBsb3llcl9uZXRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGxveWVyX25ldF8gbW9udGFudF9jaGFyZ2VzXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuXCIpKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDI5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAyOTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyNzg7IHN0YXJ0X2NvbHVtbj03O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyNzg7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhaWRlX3ZlcnNlZV9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5CYWlsbGV1ciBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmVuZWZpY2lhaXJlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkV0YWJsaXNzZW1lbnRIYWJpbGl0ZSBfIC0+IGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X2JydXRlX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzIGVjaGVhbmNlX3ByZXRfYnJ1dGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgZWNoZWFuY2VfcHJldF9icnV0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgbWVuc3VhbGl0ZV9icnV0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBtZW5zdWFsaXRlX2JydXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi5cIikpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LkxveWVyIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyOTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMjk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzA2OyBzdGFydF9jb2x1bW49NztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzA2OyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYWlkZV92ZXJzZWVfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmFpbGxldXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkJlbmVmaWNpYWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuRXRhYmxpc3NlbWVudEhhYmlsaXRlIF8gLT4gdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZGVwZW5zZV9sb2dlbWVudF9uZXR0ZV9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyBlY2hlYW5jZV9wcmV0X25ldHRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGVjaGVhbmNlX3ByZXRfbmV0dGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNi5cIikpKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlIG1lbnN1YWxpdGVfbmV0dGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgbWVuc3VhbGl0ZV9uZXR0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuXCIpKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Mb3llciBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDI5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMjk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW1wYXllXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudFwiOyBcIm1vbnRhbnRfaW1wYXnDqVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDM0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwMzQ7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDM0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAzNDsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzNDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAzNDsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI1NDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI1NDsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vbiBtb250YW50X2RldHRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V1aWxfaW1wYXllX2RlcGVuc2VfZGVfbG9nZW1lbnRfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2RldHRlXyBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTkxOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE5MTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uIG1vbnRhbnRfZGV0dGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgc2V1aWxfaW1wYXllX2RlcGVuc2VfZGVfbG9nZW1lbnRfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9kZXR0ZV8gZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAzNDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDM0OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtJbXBheWVEZXBlbnNlTG9nZW1lbnQubW9udGFudF9pbXBheWUgPSBtb250YW50X2ltcGF5ZV99XG5cbmxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBtb250YW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIG1pbmlzdMOpcmllbGxlIE7CsERTUy9TRDJCLzIwMTkvNjUgZHUgMjUgbWFycyAyMDE5IHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDE5IGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTMxNlwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG5vIERTUy9TRDJCLzIwMjAvMzMgZHUgMTggZsOpdnJpZXIgMjAyMCByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAyMCBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgZGFucyBsZSBkw6lwYXJ0ZW1lbnQgZGUgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ0MFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsERTUy8yQi8yMDIxLzY1IGR1IDE5IG1hcnMgMjAyMSByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAyMSBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgZGFucyBsZSBkw6lwYXJ0ZW1lbnQgZGUgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ4MVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgzOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsERTUy8yQi8yMDIyLzgyIGR1IDI4IG1hcnMgMjAyMiByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAyMiBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgZGFucyBsZSBkw6lwYXJ0ZW1lbnQgZGUgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjIyOFwiKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIHtCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnQgPSBtb250YW50X31cblxubGV0IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYSAodmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luOiBWZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBSW4udCkgOiBWZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBLnQgPVxuICBsZXQgZGF0ZV9uYWlzc2FuY2VfOiBkYXRlID0gdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luLlZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi5kYXRlX25haXNzYW5jZV9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4uVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQUluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGFubmVlc186IGR1cmF0aW9uID0gdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luLlZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi5hbm5lZXNfaW4gaW5cbiAgbGV0IHJfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiVsOpcmlmaWNhdGlvbsOCZ2VJbmbDqXJpZXVyT3XDiWdhbMOAXCI7IFwiclwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy8uLi9wcm9sb2d1ZV9mcmFuY2UvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTc7IGVuZF9jb2x1bW49MTM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19IChcbiAgICAgICAgIFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy8uLi9wcm9sb2d1ZV9mcmFuY2UvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjA7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2x0ZV9kYXRfZGF0IChvX2FkZF9kYXRfZHVyIFJvdW5kVXAgZGF0ZV9uYWlzc2FuY2VfIGFubmVlc18pXG4gICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvLi4vcHJvbG9ndWVfZnJhbmNlL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTE3OyBlbmRfY29sdW1uPTEzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjsgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSkpKSkgaW5cbiAge1ZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEEuciA9IHJffVxuXG5sZXQgdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSAodmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbjogVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQUluLnQpIDogVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQS50ID1cbiAgbGV0IGRhdGVfbmFpc3NhbmNlXzogZGF0ZSA9IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4uVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQUluLmRhdGVfbmFpc3NhbmNlX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4uVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQUluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGFubmVlc186IGR1cmF0aW9uID0gdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbi5WZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBSW4uYW5uZWVzX2luIGluXG4gIGxldCByXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlbDqXJpZmljYXRpb27DgmdlU3Vww6lyaWV1csOAXCI7IFwiclwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy8uLi9wcm9sb2d1ZV9mcmFuY2UvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Mjc7IGVuZF9jb2x1bW49MTM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19IChcbiAgICAgICAgIFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy8uLi9wcm9sb2d1ZV9mcmFuY2UvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzA7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2d0X2RhdF9kYXQgKG9fYWRkX2RhdF9kdXIgUm91bmRVcCBkYXRlX25haXNzYW5jZV8gYW5uZWVzXylcbiAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy8uLi9wcm9sb2d1ZV9mcmFuY2UvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mjc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Mjc7IGVuZF9jb2x1bW49MTM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiOyBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19KSkpKSBpblxuICB7VmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQS5yID0gcl99XG5cbmxldCBzbWljIChzbWljX2luOiBTbWljSW4udCkgOiBTbWljLnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBzbWljX2luLlNtaWNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IHNtaWNfaW4uU21pY0luLnJlc2lkZW5jZV9pbiBpblxuICBsZXQgYnJ1dF9ob3JhaXJlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJTbWljXCI7IFwiYnJ1dF9ob3JhaXJlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMTgtMTE3MyBkdSAxOSBkw6ljZW1icmUgMjAxOCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMDNcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMTgtMTE3MyBkdSAxOSBkw6ljZW1icmUgMjAxOCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NTdcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03NzsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMTktMTM4NyBkdSAxOCBkw6ljZW1icmUgMjAxOSBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMTVcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04ODsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMTktMTM4NyBkdSAxOCBkw6ljZW1icmUgMjAxOSBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NjZcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMC0xNTk4IGR1IDE2IGTDqWNlbWJyZSAyMDIwIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAyNVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjc7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIwLTE1OTggZHUgMTYgZMOpY2VtYnJlIDIwMjAgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzc0XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjEtMTc0MSBkdSAyMiBkw6ljZW1icmUgMjAyMSBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNCkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA1N1wiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjc7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIxLTE3NDEgZHUgMjIgZMOpY2VtYnJlIDIwMjEgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI3OThcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk1OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMTkgYXZyaWwgMjAyMiByZWxhdGlmIGF1IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDUpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA4NVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDY7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAxOSBhdnJpbCAyMDIyIHJlbGF0aWYgYXUgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODE5XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzNDsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI5IGp1aWxsZXQgMjAyMiByZWxhdGlmIGF1IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDgpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjExMDdcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI0Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjQ1OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjkganVpbGxldCAyMDIyIHJlbGF0aWYgYXUgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoOCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgzNVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzQ7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIyLTE2MDggZHUgMjIgZMOpY2VtYnJlIDIwMjIgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMTI3XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjItMTYwOCBkdSAyMiBkw6ljZW1icmUgMjAyMiBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NTFcIikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiOyBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19KSkpKSBpblxuICB7U21pYy5icnV0X2hvcmFpcmUgPSBicnV0X2hvcmFpcmVffVxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW46IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udCkgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50ID1cbiAgbGV0IGxveWVyX3ByaW5jaXBhbF9iYXNlXzogbW9uZXkgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb3llcl9wcmluY2lwYWxfYmFzZV9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gaW5cbiAgbGV0IGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc186IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiBpblxuICBsZXQgem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uem9uZV9pbiBpblxuICBsZXQgbG9nZW1lbnRfZXN0X2NoYW1icmVfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW4gaW5cbiAgbGV0IGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXzogYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luIGluXG4gIGxldCB0eXBlX2FpZGVfOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50eXBlX2FpZGVfaW4gaW5cbiAgbGV0IGNvbG9jYXRpb25fOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbiBpblxuICBsZXQgcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luIGluXG4gIGxldCBsb2dlbWVudF9tZXVibGVfZDg0Ml8yXzogYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X21ldWJsZV9kODQyXzJfaW4gaW5cbiAgbGV0IGZyYWN0aW9uX2w4MzJfM186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJmcmFjdGlvbl9sODMyXzNcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU1NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTQ7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE5MTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTkxMzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45OFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NTQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU0OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgyM18xNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgyM18xNlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI3NDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01ODE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTgxOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTU4MTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01ODE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTgxOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICh7Q29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVffSkpKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubW9udGFudCBpblxuICBsZXQgdGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwidGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU2NTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjU7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2NTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2NTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2NTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTY1OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2NTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjU7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDY5OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMzE1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE4NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjZcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwMDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjZcIikpKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjczOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDMxNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTg1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwMDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNlwiKSkpKSkpKSkpKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDg7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDg7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMzE1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIzOFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE4NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwMDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkpKSkpKSkpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2NTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjU7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWJhdHRlbWVudF9mb3JmYWl0YWlyZV9kODIzXzE3XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwiYWJhdHRlbWVudF9mb3JmYWl0YWlyZV9kODIzXzE3XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU1OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTk7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1OTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1OTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY3OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDk0OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzA5MDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODQ1NjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg2NDYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4OTc3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTMxMTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjk2NDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5OTc1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjk5NzUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTk7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjc7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBqdWlsbGV0IDIwMjIgYXUgMzEgZMOpY2VtYnJlIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ4NzAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY5NzcwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgzMjIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NTA5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODgzNDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjkxNjMwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5NDg4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTgxNjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5ODE2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzIzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTU5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTU5OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04MjI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MjI7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBqYW52aWVyIDIwMjIgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NjgzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2NzA5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MDAyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODE5MjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg0OTUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4ODExMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTEyNDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjk0MzkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTQzOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1OTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1OTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQxODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0MTg7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBqYW52aWVyIDIwMjAgYXUgMzEgZMOpY2VtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ1ODgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY1NzIwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc4MzkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MDE1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODMyMjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg2MzEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4OTM4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTI0NjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5MjQ2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkpKSkpKSkpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTk7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbG95ZXJfcmVmZXJlbmNlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJsb3llcl9yw6lmw6lyZW5jZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU1Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTM7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1Mzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1Mzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUzOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU5OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTk7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTk3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTc5N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzgwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MjA4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzE7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTk3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxNzk3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzgwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MjA4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTM7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNTI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTUyOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1ODY5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE2NjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUxODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTUzOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMTZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJtb250YW50X21pbmltYWxfYWlkZV9kODIzXzE2XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU1ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTg7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mjg2OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCB0eXBlX2FpZGVfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgIHwgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgXyAtPlxuICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAwXCIpXG4gICAgICAgICAgICB8IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMDBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTg7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcInBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Mjk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTMwOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMTM4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAxNjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODkwMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTM4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTUzOTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzkwNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0NjgzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjI5MTFcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU0Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NDc7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNTM5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDU3NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzc3NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwNDNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU2ODlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwNzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIzNTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ4NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MjYxXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDE2OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjk2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzODQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIxMzZcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjQ7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDQ3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0MjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY4MzVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0ODIxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOTc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE5ODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjI2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NDAyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgxODVcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTIwNzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjg0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNzQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIwNDRcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTIxNTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzAzNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDAzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2NzIzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg5MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDcxN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTU7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMTM4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTY1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4OTAwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3OTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMzU1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NDg0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MjYxXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk3NTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc18pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjI2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQwMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODE4NVwiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODg7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg4OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjc3NjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQxOThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjI2ODBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTcyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3MjsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlXykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjgyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzM4MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTkxM1wiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Njg7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTY4OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlXykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjcxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzI4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTgyMVwiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwODUwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY4ODdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTIwMFwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MjA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzI5MTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDU0OFwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjA1MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxMDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcwMzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MzkwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MjUyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDkwOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg4OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5ODA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU5NzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDM0OFwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU5NDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTc5N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NTE1XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA3OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDYzMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4OTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU3ODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MjA4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzMDk0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDc0M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg4NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04ODU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTY4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1ODU5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQyNDZcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg5NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04OTU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTc5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNjY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjkzOTJcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkwNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05MDQ7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA0NjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1ODcwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NjMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTE4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjk1NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ3MjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NzI7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3MjsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjgwNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDUwOyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTA7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzEwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjQxOyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjQxOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzOTlcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjMwOyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzA7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA5XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTI3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxNDsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE0OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxMDsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxMDsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBsb3llcl9wcmluY2lwYWxfYXZlY19yZWR1Y3Rpb25fbWV1YmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwibG95ZXJfcHJpbmNpcGFsX2F2ZWNfcsOpZHVjdGlvbl9tZXVibMOpXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUzMjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01MzI7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQyMjA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDIyMDsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiBsb2dlbWVudF9tZXVibGVfZDg0Ml8yXyB0aGVuXG4gICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBsb3llcl9wcmluY2lwYWxfYmFzZV9cbiAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi5cIilcbiAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy5cIikpKSBlbHNlIGxveWVyX3ByaW5jaXBhbF9iYXNlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTMyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTUzMjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX3N1cHByZXNzaW9uX2Q4MjNfMTZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJwbGFmb25kX3N1cHByZXNzaW9uX2Q4MjNfMTZcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTU2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1NjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI1OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNTk7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yX1xuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjQuXCIpKVxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLjFcIikpXG4gICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yX1xuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjMuMVwiKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTY7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9kZWdyZXNzaXZpdGVfZDgyM18xNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInBsYWZvbmRfZMOpZ3Jlc3Npdml0w6lfZDgyM18xNlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU1OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjUzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI1MzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy40XCIpKVxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLjVcIikpXG4gICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yX1xuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuNVwiKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTU7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbG95ZXJfZWxpZ2libGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImxveWVyX8OpbGlnaWJsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU0ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NDg7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE4MTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTgxNDsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2d0X21vbl9tb24gbG95ZXJfcHJpbmNpcGFsX2F2ZWNfcmVkdWN0aW9uX21ldWJsZV9cbiAgICAgICAgICAgICAgICAgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfKSB0aGVuIHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXyBlbHNlXG4gICAgICAgICAgICAgIGxveWVyX3ByaW5jaXBhbF9hdmVjX3JlZHVjdGlvbl9tZXVibGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NDg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTQ4OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51ZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51w6lcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NzQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc0OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NzQ7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4NjM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg2MzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzXykpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gYWlkZV9maW5hbGVfKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODQ5OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg0OTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gbG95ZXJfcHJpbmNpcGFsX2F2ZWNfcmVkdWN0aW9uX21ldWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX3N1cHByZXNzaW9uX2Q4MjNfMTZfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIGxveWVyX3ByaW5jaXBhbF9hdmVjX3JlZHVjdGlvbl9tZXVibGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9kZWdyZXNzaXZpdGVfZDgyM18xNl8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYWlkZV9maW5hbGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxveWVyX3ByaW5jaXBhbF9hdmVjX3JlZHVjdGlvbl9tZXVibGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9kZWdyZXNzaXZpdGVfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gcGxhZm9uZF9zdXBwcmVzc2lvbl9kODIzXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfZGVncmVzc2l2aXRlX2Q4MjNfMTZfKSkpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgYWlkZV9maW5hbGVfKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01NzQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc0OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTc0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NDsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwYXJ0aWNpcGF0aW9uX21pbmltYWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJwYXJ0aWNpcGF0aW9uX21pbmltYWxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTY0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2NDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTY0OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBsb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wODVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBsb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wODVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY2M1wiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjQ7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBsb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wODVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MzlcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBsb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wODVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUzOVwiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjQ7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMjQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDI0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDEzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGxveWVyX2VsaWdpYmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4NVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUyNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGxveWVyX2VsaWdpYmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTI0XCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NjQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTY0OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJhcHBvcnRfbG95ZXJzXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcInJhcHBvcnRfbG95ZXJzXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTUyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExMDM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTEwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxveWVyX3JlZmVyZW5jZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzA3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDc7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9tb25fbW9uIGxveWVyX2VsaWdpYmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG95ZXJfcmVmZXJlbmNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4MTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4MTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X21vbl9tb24gbG95ZXJfZWxpZ2libGVfIGxveWVyX3JlZmVyZW5jZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTUyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1MjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NzU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc1OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4NzM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODczOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnXDqVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnXDqVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludcOpXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51ZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludcOpXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTZfKVxuICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9mb3JmYWl0YWlyZV9kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTU3NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzU7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NzU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc1OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfbG95ZXJfZWxpZ2libGVfZm9ybXVsZV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwidGF1eF9sb3llcl/DqWxpZ2libGVfZm9ybXVsZVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU1MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NTA7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1MDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MDsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1MDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUwOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1MDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTA7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEyNzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTI3OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjQ1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA0NVwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuM1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA2OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzNDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjQ1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40NVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIikpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4zXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA3OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2x0X3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40NVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40NVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA0NVwiKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuM1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTUwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU1MDsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdICh1bmVtYmVkZGFibGUpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NzY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc2OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4OTA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODkwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGNyZHNfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MFwiKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01NzY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc2OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTc2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NjsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X2xveWVyX2VsaWdpYmxlX3RhdXhfYXJyb25kaV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwidGF1eF9sb3llcl/DqWxpZ2libGVfdGF1eF9hcnJvbmRpXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTUxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU1MTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTUxOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUxOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTUxOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTUxOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTM0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExMzQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfbG95ZXJfZWxpZ2libGVfZm9ybXVsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwMDAwLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMDAwMC5cIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0MTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCB0YXV4X2xveWVyX2VsaWdpYmxlX2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAwMDAuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMDAwMC5cIikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCB0YXV4X2xveWVyX2VsaWdpYmxlX2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwMDAwLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwMDAwLlwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTUxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU1MTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yw6lkdWN0aW9uX2xveWVyX3NvbGlkYXJpdMOpXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04MTA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MTA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uX2w4MzJfM18pKSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbl9sODMyXzNfKSkgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTU3Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01Nzc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01Nzc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfcHJpc2VfY29tcHRlX3Jlc3NvdXJjZXNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRhdXhfcHJpc2VfY29tcHRlX3Jlc3NvdXJjZXNcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NjA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTYwOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTczOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE5NzM7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fYWRkX3JhdF9yYXQgdGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVfXG4gICAgICAgICAgICAgIHRhdXhfbG95ZXJfZWxpZ2libGVfdGF1eF9hcnJvbmRpXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTYwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU2MDsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3ODsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTIyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTkyMjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yw6lkdWN0aW9uX2xveWVyX3NvbGlkYXJpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yw6lkdWN0aW9uX2xveWVyX3NvbGlkYXJpdMOpXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yw6lkdWN0aW9uX2xveWVyX3NvbGlkYXJpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZSBhaWRlX2ZpbmFsZV8pKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01Nzg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc4OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTc4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3ODsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTY2OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2NjsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTkzOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xOTM5OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAobGV0IHBhcnRpY2lwYXRpb25fcmVzc291cmNlc18gOiBtb25leSA9XG4gICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgIGFiYXR0ZW1lbnRfZm9yZmFpdGFpcmVfZDgyM18xN18pXG4gICAgICAgICAgICAgICAgICB0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzXylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAobGV0IHBhcnRpY2lwYXRpb25fcmVzc291cmNlc18gOiBtb25leSA9XG4gICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAob19sdF9tb25fbW9uIHBhcnRpY2lwYXRpb25fcmVzc291cmNlc19cbiAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlIHBhcnRpY2lwYXRpb25fcmVzc291cmNlc18pXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcGFydGljaXBhdGlvbl9taW5pbWFsZV8gcGFydGljaXBhdGlvbl9yZXNzb3VyY2VzXykpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTY2OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2NjsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTcxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU3MTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc5Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNzk2OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBsb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggaWYgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NzE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vbiBwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuNVwiKSkpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4NjY7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODY2OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4NjY7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODY2OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IGZyYWN0aW9uX2w4MzJfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfcmF0X3JhdCBmcmFjdGlvbl9sODMyXzNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOThcIikpKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04MjA7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MjA7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODIwOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODIwOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAge0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2ID1cbiAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMiA9XG4gICAgICAgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX21pbmltYWxlID1cbiAgICAgICBwYXJ0aWNpcGF0aW9uX21pbmltYWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgIHRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSA9XG4gICAgICAgcGFydGljaXBhdGlvbl9wZXJzb25uZWxsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF99XG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50KSA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50ID1cbiAgbGV0IHR5cGVfbG9nZW1lbnRfZm95ZXJfOiBUeXBlTG9nZW1lbnRGb3llci50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luIGluXG4gIGxldCBkYXRlX2NvbnZlbnRpb25uZW1lbnRfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZWRldmFuY2VfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luIGluXG4gIGxldCBjb25kaXRpb25fMl9kdV84MzJfMjVfOiB1bml0IC0+IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8yNV86IHVuaXQgLT4gZGVjaW1hbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiBpblxuICBsZXQgY29lZmZpY2llbnRfcl9kODMyXzI1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY29lZmZpY2llbnRfcl9kODMyXzI1XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjE5OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYxOTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTY1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI1NjU7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIxNzI2XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxOTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MTk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYyNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02Mjc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU0MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNTQwOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Mjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjI3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X21pbmltYWxfYWlkZV9kODIzXzI0XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwibW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18yNFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYyOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02Mjk7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU1MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNTUxOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjI5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYyOTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJjb25kaXRpb25fMl9kdV84MzJfMjVcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYxNjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MTY7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT4gY29uZGl0aW9uXzJfZHVfODMyXzI1XyAoKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYxNjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MTY7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4NTk7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODU5OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgbWF0Y2ggdHlwZV9sb2dlbWVudF9mb3llcl9cbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICB8IFR5cGVMb2dlbWVudEZveWVyLkxvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgIHwgVHlwZUxvZ2VtZW50Rm95ZXIuUmVzaWRlbmNlU29jaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvbnZlbnRpb25uZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICB8IFR5cGVMb2dlbWVudEZveWVyLkZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY29udmVudGlvbm5lbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTApICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgfCBUeXBlTG9nZW1lbnRGb3llci5BdXRyZSBfIC0+IGZhbHNlKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE2OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYxNjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NjUxOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTY1MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT02NTE7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY1MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT02NTE7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50IGluXG4gIGxldCBwbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcInBsYWZvbmRfw6lxdWl2YWxlbmNlX2xveWVyX8OpbGlnaWJsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02MjI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjIyOyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjIyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjIyOyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ4Njsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0ODY7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDYxOTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQxNTJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTc3NDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MTc5NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY1ODYyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzEwMzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjczNjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIyNDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDkyOTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTI1NjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjI2OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU5OTU3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjM4ODdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY2NTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAwOTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDY2MzRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDk0NzVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Mjc0MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MDA0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTk2NzVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjIyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjIyOyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTUyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUyOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ0NjMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyMzIxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU1Nzg4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTk3MDRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MzYzNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY4NjM3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3MTE5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwODE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ3NjMyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwNzg3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQzNjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NzkyOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxNzI3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NDM0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NzQwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ1MDU3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ3ODAyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTA5NTdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDExMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU3NjU3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1OTcxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyMjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyMjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNDc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzQ3OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ0NDQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyMTAxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU1NTU1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTk0NTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MzM2OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY4MzUwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3MDg5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNjQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ3NDMzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwNTc1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQxMzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NzY4N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxNDY5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NDA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NTc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ0ODY5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ3NjAyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTA3NDRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Mzg4NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU3NDE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1OTQ2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjIyOyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0NTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc5Mjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM3OTI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNF8pIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI0XylcbiAgICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTY0NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDU7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjQ1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0NTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5jb25kaXRpb25fMl9kdV84MzJfMjVcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zOTQ4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5NDg7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NDg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzk0ODsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zOTQ4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5NDg7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl0gKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zOTQ0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5NDQ7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NDQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzk0NDsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mzk0NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTQ0OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk0Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTQ2OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTQ2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5NDY7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mzk0Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTQ2OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF9ub21icmVfcGFydHNcIjtcbiAgICAgIFwiQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7XG4gICAgICBcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyXCJdIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcilcbiAgICAoe0NhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICAgQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICAgQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF99KSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI3XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI3XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjI4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYyODsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzE0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI3MTQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgY29uZGl0aW9uXzJfZHVfODMyXzI1XyB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNTAwXCIpXG4gICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NjhcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYyODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02Mjg7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02MTg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjE4OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI1NzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjU3NTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiBjb25kaXRpb25fMl9kdV84MzJfMjVfIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxNDIwOTFcIilcbiAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTMzOTM0MFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYxODsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCLDqXF1aXZhbGVuY2VfbG95ZXJfw6lsaWdpYmxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjIxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYyMTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3NjY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc2NjsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uIHJlZGV2YW5jZV8gcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV8pXG4gICAgICAgICAgICAgIHRoZW4gcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV8gZWxzZSByZWRldmFuY2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjIxOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBuX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJuX25vbWJyZV9wYXJ0c19kODMyXzI1XCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02MjA7IHN0YXJ0X2NvbHVtbj0yMTsgZW5kX2xpbmU9NjIwOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+IG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfICgpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjIwOyBzdGFydF9jb2x1bW49MjE7IGVuZF9saW5lPTYyMDsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk1MDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5NTA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XykpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYyMDsgc3RhcnRfY29sdW1uPTIxOyBlbmRfbGluZT02MjA7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN186IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFsbG9jYXRpb25fbWVuc3VlbGxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjI1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYyNTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE0Njsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxNDY7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICBvX3N1Yl9tb25fbW9uIGVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlX1xuICAgICAgICAgICAgICAgICAgIGFsbG9jYXRpb25fbWVuc3VlbGxlXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02MjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjI1OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYyNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02MjU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc4Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzgyOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzgyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3ODI7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mzc4Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzgyOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5jb25kaXRpb25fMl9kdV84MzJfMjVcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzgwOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzgwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3ODA7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBjb25kaXRpb25fMl9kdV84MzJfMjVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mzc4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzgwOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUubl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgICAgKGVtYmVkX2RlY2ltYWwpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNzg0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3ODQ7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3ODQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc4NDsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mzc4NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzg0OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUpXG4gICAgKHtDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfO1xuICAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS5tb250YW50IGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9mb3JtdWxlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfZm9ybXVsZVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYzOTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02Mzk7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02Mzk7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02Mzk7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NjI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5NjI7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX3N1Yl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjAuOVwiKVxuICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1XykpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODc0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM4NzQ7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIChsZXQgZGVub21pbmF0ZXVyXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBjb2VmZmljaWVudF9yX2Q4MzJfMjVfXG4gICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1XykpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKGxldCBkZW5vbWluYXRldXJfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgKCBpZiAob19sdF9tb25fbW9uIGRlbm9taW5hdGV1cl8gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgZGVub21pbmF0ZXVyXylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAob19zdWJfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpXG4gICAgICAgICAgICAgICAob19kaXZfbW9uX21vbiBkZW5vbWluYXRldXJfXG4gICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV9cbiAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKSkpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYzOTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02Mzk7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhbGxvY2F0aW9uX21lbnN1ZWxsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02MjM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNTA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTUwOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIl1cbiAgICAgICAgICAgICAgICAgICAgZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfXG4gICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yN18pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI3X1xuICAgICAgICAgICAgICAgICAgICAgICBkZXBlbnNlX25ldHRlX21pbmltYWxlXykgZWxzZVxuICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTYyMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02MjM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjIzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYyMzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCLDqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02MzA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjMwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc3ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzc4OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYzMDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MzA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2NvZWZmX2Fycm9uZGlfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9jb2VmZl9hcnJvbmRpXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjQwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0MDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0MDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY0MDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk3OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzk3OTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg5NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODk1OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgIChvX3JvdW5kX3JhdFxuICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfZm9ybXVsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDVcIikpXG4gICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NDA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQwOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0NjsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgwNjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4MDY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgYWJhdHRlbWVudF9kZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vbiBhaWRlX2ZpbmFsZV8gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gYWlkZV9maW5hbGVfIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0NjsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NDY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ2OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjQxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0MTsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0MTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY0MTsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk4NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzk4NTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfY29lZmZfYXJyb25kaV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjlcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2NvZWZmX2Fycm9uZGlfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODk4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM4OTg7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdFxuICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9jb2VmZl9hcnJvbmRpX1xuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOTVcIilcbiAgICAgICAgICAgICAgZWxzZSBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9jb2VmZl9hcnJvbmRpXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjQxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0MTsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl0gKHVuZW1iZWRkYWJsZSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDc7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4MjA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODIwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGNyZHNfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MFwiKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02NDc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ3OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDc7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjQzOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY0MzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3NDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc0NTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlX1xuICAgICAgICAgICAgICAgICAgICAgZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggaWYgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02NDM7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0ODsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg0MTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4NDE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19sdF9tb25fbW9uIGFpZGVfZmluYWxlXyBtb250YW50X21pbmltYWxfYWlkZV9kODIzXzI0XylcbiAgICAgICAgICAgICAgICAgICAgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlIGFpZGVfZmluYWxlXykpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTY0ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDg7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjQ4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0ODsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjUgPVxuICAgICBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3JfZDgzMl8yNSA9XG4gICAgICAgY29lZmZpY2llbnRfcl9kODMyXzI1XztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUgPVxuICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgPVxuICAgICAgIGVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgPVxuICAgICAgIHBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgPVxuICAgICAgIGVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1ID1cbiAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX31cblxubGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCkgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICBsZXQgbWVuc3VhbGl0ZV9wcmluY2lwYWxlXzogbW9uZXkgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gaW5cbiAgbGV0IHR5cGVfdHJhdmF1eF9sb2dlbWVudF86IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luIGluXG4gIGxldCBkYXRlX3NpZ25hdHVyZV9wcmV0XzogZGF0ZSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pbiBpblxuICBsZXQgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlXzogYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luIGluXG4gIGxldCBkYXRlX2VudHJlZV9sb2dlbWVudF86IGRhdGUgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luIGluXG4gIGxldCBjb3Byb3ByaWV0ZV86IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luIGluXG4gIGxldCBzaXR1YXRpb25fcjgyMl8xMV8xM18xN186IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4gaW5cbiAgbGV0IHR5cGVfcHJldF86IFR5cGVQcmV0LnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfcHJldF9pbiBpblxuICBsZXQgYW5jaWVubmV0ZV9sb2dlbWVudF86IE5ldWZPdUFuY2llbi50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5hbmNpZW5uZXRlX2xvZ2VtZW50X2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzEwXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8xMFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02OTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njk5OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzQ0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIzNDQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDIwXCI7IFwiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X21pbmltYWxfYWlkZV9kODMyXzEwXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MzJfMTBcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzAwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwMDsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM1NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMzU1OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyMVwiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzAwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwMDsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMTFfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xMVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MDI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzAyOyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzY0OyBzdGFydF9jb2x1bW49MTU7IGVuZF9saW5lPTIzNjQ7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDIyXCI7IFwiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIxMTEzM1wiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MDI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzAyOyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xOF86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMThcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzAzOyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDU3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI0NTc7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI2XCI7IFwiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIxNi4yNVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzAzOyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xNV8xXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMTVfMVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzA0OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzc5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIzNzk7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDIzXCI7IFwiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYwMDg1XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcwNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X3RyYW5jaGVfaW5mZXJpZXVyZV9kODMyXzE1XzFfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0YXV4X3RyYW5jaGVfaW5mw6lyaWV1cmVfZDgzMl8xNV8xXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzA1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwNTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMzgwOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyM1wiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yMDhcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzA1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwNTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfdHJhbmNoZV9zdXBlcmlldXJlX2Q4MzJfMTVfMV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRhdXhfdHJhbmNoZV9zdXDDqXJpZXVyZV9kODMyXzE1XzFcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MDY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzA2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIzODE7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDIzXCI7IFwiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjQxNlwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MDY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzA2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdGF1eF9mcmFuY3NfdmVyc19ldXJvc186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MDc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzA3OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBwcmVtaWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUsOoZ2xlbWVudCAoQ0UpIG7CsDI4NjYvOTggZHUgY29uc2VpbCBkdSAzMSBkw6ljZW1icmUgMTk5OCBjb25jZXJuYW50IGxlcyB0YXV4IGRlIGNvbnZlcnNpb24gZW50cmUgbCdldXJvIGV0IGxlcyBtb25uYWllcyBkZXMgw4l0YXRzIG1lbWJyZXMgYWRvcHRhbnQgbCdldXJvXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19kaXZfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LjU1OTU3XCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MDc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzA3OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl0gKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMjkwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyOTA7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI5MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjkwOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMyOTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI5MDsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzI5Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjkyOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyOTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI5MjsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMyOTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI5MjsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7IFwiQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiXVxuICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF9ub21icmVfcGFydHNcIjsgXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpXCJdXG4gICAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgICh7Q2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxffSkpKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8xMV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTEgaW5cbiAgbGV0IGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMTdfM186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMTdfM1wiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcwMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDE7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI0Mzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjQzOTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjVcIjsgXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk4KSAoMTApICgxKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMjZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIzNFwiKSlcbiAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBhbWVsaW9yZV9wYXJfb2NjdXBhbnRfIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIGFtZWxpb3JlX3Bhcl9vY2N1cGFudF9cbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICB8IEFtZWxpb3JlUGFyT2NjdXBhbnQuT3VpIF8gLT4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTcyXCIpXG4gICAgICAgICAgICAgICAgIHwgQW1lbGlvcmVQYXJPY2N1cGFudC5Ob24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTgpICgxMCkgKDEpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjI2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIzNFwiKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzAxOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NzI0OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03MjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NzI0OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzI0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTcyNDsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAoe0NvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXRlX2NvdXJhbnRlX30pKSkgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfOiBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm1vbnRhbnQgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODMyXzEwXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODMyXzEwXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY5ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njk4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njk4OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5ODsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQxMjsgc3RhcnRfY29sdW1uPTc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNDEyOyBlbmRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjRcIjsgXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Byb3ByaWV0ZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjgwNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY5ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njk4OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01MTc7IHN0YXJ0X2NvbHVtbj03O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTE3OyBlbmRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29wcm9wcmlldGVfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5ODsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTMxMDsgc3RhcnRfY29sdW1uPTc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzEwOyBlbmRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Byb3ByaWV0ZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Mzk5XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY5ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY5ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njk4OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzMzOyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzMzOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTlcIjsgXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYxMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY5ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njk4OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODM7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4MzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE5XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njk4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02OTg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNzY7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNzY7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Mzk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njk4OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcxODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MTg7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTM5OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzEzOTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzEwXykgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMTBfKVxuICAgICAgICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzE4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcxODsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzE4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcxODsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfZDgzMl8xOF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXZlY19kODMyXzE4XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY5Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njk3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njk3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzYwNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzYwNDsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXykpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU5Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNTk2OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfXG4gICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMThfKSkgdGhlblxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX1xuICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE4XykgZWxzZVxuICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njk3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfOiBkYXRlIC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoZGF0ZV9zaWduYXR1cmVfcHJldF86IGRhdGUpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODA2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODIxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTIpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMSkgKDI3KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gYW1lbGlvcmVfcGFyX29jY3VwYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1lbGlvcmVfcGFyX29jY3VwYW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBbWVsaW9yZVBhck9jY3VwYW50Lk91aSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBbWVsaW9yZVBhck9jY3VwYW50Lk5vbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODY5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjk3MTAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxMDczMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2NTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTIpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwODUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTE1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NDUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODYwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIzOTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjE4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTczNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwODIwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQyODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDk0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDk4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MikgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTY3ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMjUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM3MjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0OTYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODAxMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxMzk3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTY3NjAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTU1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExMjc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExMzE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAwKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTgxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM5MDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzk5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTc2ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMjgwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ4ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzYwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NTAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTc5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2NDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMSkgKDI3KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDApICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE1OTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTI1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyNTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDIyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTcxMjAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDAyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTMyODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE1OTMwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg1ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTkzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTk3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAwMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0MTQwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTgyNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3ODYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTUwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MTQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjY3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk5OTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzMxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMjY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMzA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAwKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAxKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjExMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk0NDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjc3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTQzNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3MjkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAyMjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjkzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEzNDEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjA5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NzcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI2MzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDEpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAxKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAyNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NDMwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjg2MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4MDcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTc1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1NDMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjg3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAyMzAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzU5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyOTI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyOTY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwODcxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MjQzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzYxNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYzNzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzU0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzE0OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg3NjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NjEwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU3MThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA4NDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1OTYyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTEyMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzMjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzMjk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAxKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2MzAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTY3MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDUzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTc1MDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDQ3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTM1NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2MjgwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg5OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjcxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzU4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzYyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDg0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTk4N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzUxMjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MTM4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIxNTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY2NzlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxMjA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDUyOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNjg3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0ODE4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODk0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzkxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzk1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAzKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEyNDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc2ODlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0MTM3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjQ0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3ODc5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNTU2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTIzM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU2NzdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjAyN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTIxMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzYzOTNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MTgzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQyNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQyODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MTQ3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwMzQ3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTU0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjQxN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjk5OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE1ODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA5MzVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjUxMTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5Mjk3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE4MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NTc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NjE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAzKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDUpICg4KSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTYxNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODE0MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ2NjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NTI1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjgyMTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM5NTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5NzA0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTc0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2MzM5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNTg0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjgyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDkwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDk0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA1KSAoOCkgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU0NDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA3MTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1OTczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTI2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyNjg2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3MzIzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTk2MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ2MzdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTE4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTQxN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk2NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjMxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUyMzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUyNzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDUpICg4KSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjE4NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODgyN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDU0NjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NjQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjg3MjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ1NzBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwNDE4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTg0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2ODEzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyMTUyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ5MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUzMzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTU2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTYwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNSkgKDgpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA2KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1OTA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxMjY0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjYyMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUzNTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA5NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzgxNFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzI1MzRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NzIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE1NjdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU4NzRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwMTgxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1OTM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA2KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA3KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzMDg2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5OTE0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0Njc0MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY4MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTUyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTUzOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE1NTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MDEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjc1NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMwNTJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NTQxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTQ4OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MjI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MjY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA2KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA3KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2NjMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyMTM5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzY0NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU1MDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzc0MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODU5M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM0NDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0ODUyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIxNzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY1OThcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxMDI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQyOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NTk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA3KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA4KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzOTk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMDE2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0ODAzMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjcwMTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDM0MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjUxOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI2OTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjgzMjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM5NjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5NjA1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTYzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2ODg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2OTI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA3KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA4KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3MzY3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzMDI2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODY4NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU2NTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDM5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTM4MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQzNjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0OTg2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI3ODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjczMzJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxODgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDU1MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3MjE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3MjU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA4KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MDAyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyMjI2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0OTQ0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjcyMjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTIzNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzU5NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDM5NTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MzYwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjkxNjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ5NjZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwNzczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTgwNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3NTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3NTg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA4KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4MTc0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0MDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTgyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTExNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDI0OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzUzODJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MTMzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM0NTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjgxMzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyODIzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDY4NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3ODc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3OTE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MTE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyMzYxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0OTYwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjcyNDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTMzNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzcxNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQwOThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MzgwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjkyNTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzUwNzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwOTAzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTgyNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4MjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4MjQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4MjY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0MTA5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTk1M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4NDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTE5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDM0NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU0OTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MTQ5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM1MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjgyMjhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyOTI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDY5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4NTM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NTc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyODI3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MDE1M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjczMjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTY4MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODEzMVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ1ODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NDUwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk1NzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU0NjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMzUzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTg4OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4ODY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4OTA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEwKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4NTc1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NDg0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDM5MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU5MDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTQ3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDY4MFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU4ODVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MjA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM3ODlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjg1MzlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzMjkwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDc1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE5MTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5MjM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1ODU1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMjU1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MDY1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjczOTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTk5OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODUxMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDUwMjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NTE1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk4NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU4MTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxNzY3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTk0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE5NTI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5NTY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4ODYxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0ODI5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDc5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU5NjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTcyOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDk4N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzYyNDRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MjU4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQwMjdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjg4MjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNjIzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDc5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE5ODU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5ODk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY2MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQxODVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUxNzQ0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzU1OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyNjg2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MzQwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTk5N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY2NTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDUxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjU4OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI2NjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MDc1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjAxODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjAyMjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTQ4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTU3OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE2NzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MDk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYyODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE2NTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MDIzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTM3MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NTQ0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NDQ0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDM0NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ5MDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDUxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDU1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4MzVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ0MzdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyMDM5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzYwMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyODcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5NTY0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NjI1OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY2OTNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDY4OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjc5OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI5MDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTEwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA4NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA4ODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NjUwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NzgxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTkxMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxMzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjQzMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTgzM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcyMzRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NDAyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ2ODRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk2MTJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NTQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDkzMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxMTc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxMjE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjg2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDQ3M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTIwODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3NjA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzI4OThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk1OTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ2Mjk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjY5OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNzEzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2ODI3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0Mjk0MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxMTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTUwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTU0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk2NzRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU4MTBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxOTQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjEzNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2NDUyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxODU4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzI2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU0MDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDcwNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTYzNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ1NzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0OTM0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE4Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE4NzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MTQwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0ODA3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MjQ3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjc2NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzE0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTg5M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDY2NDNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NzQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA5NDNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcxMDNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMjY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjE2MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyMTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyMjA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTg5N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjA3OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDIyNjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY2NTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzIwOTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NTQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTQ0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0ODg5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5ODU4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDgyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ5NzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjQ5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjUyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcyNTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ5NDFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyNjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzY4N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzMjQ0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwMDEzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0Njc4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY3NjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTAzNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzIxNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMzOTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTc5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI4MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI4NDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk5ODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzYxODdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyMzg2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjIwMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2NzMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyMTkzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzY1NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU0NjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDk2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTk0OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ5MzRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0OTg2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjE4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjIxOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMSkgKDI3KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDg1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjUxNTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTQ1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NjAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjM5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2MTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTczNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwODIwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQyODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjYyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjY1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMSkgKDI3KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjc4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAyNTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzcyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0OTYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODAxMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTM5NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NzYwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk1NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjc5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzA5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODQwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIwMDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjAwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NDIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTc3MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMTIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTUzMjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4MzcwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE0MjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzUwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzUyOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDgxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTc4NzAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDkzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEzMjAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNTg5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTIzMzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0NzkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTcyNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gZmFsc2UpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBuX25vbWJyZV9wYXJ0c19kODMyXzExXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibl9ub21icmVfcGFydHNfZDgzMl8xMVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY4ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02ODg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI4ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjg4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8xMV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY4ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02ODg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhbGxvY2F0aW9uX21lbnN1ZWxsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY5Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02OTM7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY5Mzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjkzOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1NDA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU0MDsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5OSkgKDYpICgzMCkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgzMl8xMF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uX21lbnN1ZWxsZV8pKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1NTE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTUxOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgb19zdWJfbW9uX21vbiBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfIGFsbG9jYXRpb25fbWVuc3VlbGxlXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02OTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjkzOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjkzOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iYXNlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInBsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zX2Jhc2VcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY4NDsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzc1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzc1OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKGxldCBwbGFmb25kX3NpZ25hdHVyZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2RhdGUpIGRhdGVfc2lnbmF0dXJlX3ByZXRfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAobGV0IHBsYWZvbmRfZW50cmVlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZGF0ZSkgZGF0ZV9lbnRyZWVfbG9nZW1lbnRfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoIGlmIChvX2x0X21vbl9tb24gcGxhZm9uZF9zaWduYXR1cmVfIHBsYWZvbmRfZW50cmVlXylcbiAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBwbGFmb25kX2VudHJlZV8gZWxzZSBwbGFmb25kX3NpZ25hdHVyZV8pKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMzNTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzM1NTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl1cbiAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiXVxuICAgICAgICAgICAgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfKSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwiaW5wdXQwXCJdIChlbWJlZF9kYXRlKVxuICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF8pKSkpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM0OTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzQ5NjsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDk2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0OTY7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNDk2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0OTY7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM0OTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzQ5NTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDk1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0OTU7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzQ5NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNDk1OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5uX25vbWJyZV9wYXJ0c19kODMyXzI1XCJdXG4gICAgICAoZW1iZWRfZGVjaW1hbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM0OTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzQ5ODsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDk4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0OTg7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzQ5ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNDk4OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSlcbiAgICAoe0NhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV99KSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLm1vbnRhbnQgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX2Zvcm11bGVfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9mb3JtdWxlXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjkwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY5MDsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjAzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyMDM7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19zdWJfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpXG4gICAgICAgICAgICAgIChvX2Rpdl9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMTFfXG4gICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTA7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWxsb2NhdGlvbl9tZW5zdWVsbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njk1OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU2Mjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1NjI7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXVxuICAgICAgICAgICAgICAgICAgICBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBhbGxvY2F0aW9uX21lbnN1ZWxsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfZDgzMl8xOF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xN18zXykpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfZDgzMl8xOF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xN18zXylcbiAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02OTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njk1OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njk1OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19jb3Byb3ByaWV0YWlyZXNfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwicGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNfY29wcm9wcmnDqXRhaXJlc1wiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02ODU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Njg1OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg1OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODU7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODU7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg1OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI5MDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjkwOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb3Byb3ByaWV0ZV8gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iYXNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYmFzZV8pKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00OTc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ5NzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29wcm9wcmlldGVfIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iYXNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iYXNlXykpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzOTM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzkzOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI0XCI7IFwiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmIGNvcHJvcHJpZXRlXyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYmFzZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iYXNlXykpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njg1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY4NTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1lbnN1YWxpdGVfbWluaW1hbGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibWVuc3VhbGl0w6lfbWluaW1hbGVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjgyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY4MjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODI7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDM1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDQ3OyBlbmRfY29sdW1uPTc3O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlBhc0RlVHJhdmF1eCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5QYXNEZVRyYXZhdXggXyAtPiB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAobGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18gOiBkZWNpbWFsID1cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfbW9uIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIChsZXQgbW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xNV8xXyA6IGRlY2ltYWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9tb24gbW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xNV8xXylcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKG9fdG9tb25leV9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xNV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzExXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfdHJhbmNoZV9zdXBlcmlldXJlX2Q4MzJfMTVfMV8pIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX3JhdF9yYXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xNV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzExXykpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF90cmFuY2hlX2luZmVyaWV1cmVfZDgzMl8xNV8xXykgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMTVfMV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8xMV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfdHJhbmNoZV9pbmZlcmlldXJlX2Q4MzJfMTVfMV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODI7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDkwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDkwOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlBhc0RlVHJhdmF1eCBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY4Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02ODI7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9jb2VmZl9hcnJvbmRpXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfY29lZmZfYXJyb25kaVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY5MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTE7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzIxOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjE5OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgKG9fcm91bmRfcmF0XG4gICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9mb3JtdWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTE7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzE5OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcxOTsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNTM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTUzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb24gYWlkZV9maW5hbGVfIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIGFpZGVfZmluYWxlXyBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTcxOTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MTk7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcxOTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MTk7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtZW5zdWFsaXRlX2VsaWdpYmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1lbnN1YWxpdMOpX8OpbGlnaWJsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02ODE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjgxOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMxMTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzExNDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfXG4gICAgICAgICAgICAgICAgIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfY29wcm9wcmlldGFpcmVzXykgdGhlblxuICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2NvcHJvcHJpZXRhaXJlc18gZWxzZVxuICAgICAgICAgICAgICBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjgxOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9zZXVpbFwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY5Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTI7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzIyMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjIyOyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdFxuICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9jb2VmZl9hcnJvbmRpX1xuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOTVcIilcbiAgICAgICAgICAgICAgZWxzZSBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9jb2VmZl9hcnJvbmRpXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjkyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY5MjsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdICh1bmVtYmVkZGFibGUpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MjA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzIwOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE2Nzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNjc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgY3Jkc18gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwXCIpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTcyMDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MjA7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcyMDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MjA7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImFpZGVfZmluYWxlX2Zvcm11bGVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzE1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTcxNTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDk0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMwOTQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBtZW5zdWFsaXRlX2VsaWdpYmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MzJfMTBfKVxuICAgICAgICAgICAgICAgICAgICAgbWVuc3VhbGl0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9zZXVpbF8pXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBpZiAob19sdF9tb25fbW9uIGFpZGVfZmluYWxlXyAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZSBhaWRlX2ZpbmFsZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzE1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTcxNTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzIxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcyMTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxODc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTg3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9taW5pbWFsX2FpZGVfZDgzMl8xMF8pXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZSBhaWRlX2ZpbmFsZV8pKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT03MjE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzIxOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MjE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzIxOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX2VsaWdpYmxlID1cbiAgICAgbWVuc3VhbGl0ZV9lbGlnaWJsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUubWVuc3VhbGl0ZV9taW5pbWFsZSA9XG4gICAgICAgbWVuc3VhbGl0ZV9taW5pbWFsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTAgPVxuICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX3NldWlsXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF99XG5cbmxldCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IChyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luOiBSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udCkgOiBSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPVxuICBsZXQgcmVzc291cmNlc19kZW1hbmRldXJfOiBtb25leSA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnJlc3NvdXJjZXNfZGVtYW5kZXVyX2luIGluXG4gIGxldCByZXNzb3VyY2VzX2NvbmpvaW50XzogbW9uZXkgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX2NvbmpvaW50X2luIGluXG4gIGxldCBwZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyXzogUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5ID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl9pbiBpblxuICBsZXQgZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfOiBib29sID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW4gaW5cbiAgbGV0IGNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfOiBib29sID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uam9pbnRfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9pbiBpblxuICBsZXQgcGVyc29ubmVzX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQgYXJyYXkgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfOiBTaXR1YXRpb25GYW1pbGlhbGUudCA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4gaW5cbiAgbGV0IG1vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4gaW5cbiAgbGV0IGNvbmRpdGlvbl9hZ2VfYm91cnNlX2Vuc2VpZ25lbWVudF9zdXBlcmlldXJfOiBib29sID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9pbiBpblxuICBsZXQgZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXNfOiBib29sID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXNfaW4gaW5cbiAgbGV0IGRhdGVfZGVtYW5kZV9vdV9yZWV4YW1lbl9kcm9pdF86IGRhdGUgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXRfaW4gaW5cbiAgbGV0IHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfOiBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLnQgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5wYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV86IG1vbmV5ID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19zZXVpbF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX3NldWlsXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ5Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00OTY7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDk0OyBzdGFydF9jb2x1bW49NDY7IGVuZF9saW5lPTQ5NDsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IGZhbHNlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ5Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00OTY7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfOF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfOFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjE7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBhcHBsaWNhYmxlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU4OTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfN186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfN1wiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUwMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDI7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBhcHBsaWNhYmxlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MDI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTAyOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX2ZvcmZhaXRhaXJlc19yODIyXzIwXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwicmVzc291cmNlc19mb3JmYWl0YWlyZXNfcjgyMl8yMFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUwNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDQ7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTA0OyBzdGFydF9jb2x1bW49NTE7IGVuZF9saW5lPTUwNDsgZW5kX2NvbHVtbj01NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IGZhbHNlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUwNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDQ7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfcGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJyZXNzb3VyY2VzX3BlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ5ODsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEyOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMjk7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAxIDogTW9kYWxpdMOpcyBnw6luw6lyYWxlcyBkZSBsJ2FwcHLDqWNpYXRpb24gZGVzIHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX3JlZHVjZVxuICAgICAgICAgICAgICAoZnVuIChzdW0xXzogbW9uZXkpIChzdW0yXzogbW9uZXkpIC0+IG9fYWRkX21vbl9tb24gc3VtMV8gc3VtMl8pXG4gICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgIChvX21hcFxuICAgICAgICAgICAgICAgICAoZnVuIChwZXJzb25uZV86IFBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgIHBlcnNvbm5lXy5QZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci5yZXNzb3VyY2VzKVxuICAgICAgICAgICAgICAgICBwZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyXykpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ5ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00OTg7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfcl84MjJfMTBfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJhYmF0dGVtZW50X3JfODIyXzEwXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTAzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUwMzsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTUyNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01MjQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IFByaW5jaXBlcyBkZSBuZXV0cmFsaXNhdGlvbiBldCBkJ2FiYXR0ZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAobGV0IGFiYXR0ZW1lbnRfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgKG9fZXEgKG9fbGVuZ3RoIHBlcnNvbm5lc19hX2NoYXJnZV8pIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9pbnRfaW50IChvX2xlbmd0aCBwZXJzb25uZXNfYV9jaGFyZ2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjkwMTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzUwMDBcIikpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZSBfIC0+IGFiYXR0ZW1lbnRfXG4gICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgXyAtPiBhYmF0dGVtZW50X1xuICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDM7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgXCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE4OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IFByaW5jaXBlcyBkZSBuZXV0cmFsaXNhdGlvbiBldCBkJ2FiYXR0ZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE4OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IFByaW5jaXBlcyBkZSBuZXV0cmFsaXNhdGlvbiBldCBkJ2FiYXR0ZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0XykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQxODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTg7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogUHJpbmNpcGVzIGRlIG5ldXRyYWxpc2F0aW9uIGV0IGQnYWJhdHRlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXVxuICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgKHtCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVffSkpKSBpblxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9udGFudF86IG1vbmV5ID0gcmVzdWx0Xy5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnQgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfcl84MjJfOF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcImFiYXR0ZW1lbnRfcl84MjJfOFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ5OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00OTk7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDYyOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IFByaW5jaXBlcyBkZSBuZXV0cmFsaXNhdGlvbiBldCBkJ2FiYXR0ZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLk91aUF2ZWNMb3llck91Q2hhcmdlcyBsb3llcl9vdV9jaGFyZ2VzXyAtPlxuICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfOF9cbiAgICAgICAgICAgIHwgUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC5Ob24gXyAtPlxuICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00OTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDk5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJyZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MDk7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTA5OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTA5OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTA5OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU0OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTc7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0yMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDMgOiBNb250YW50IGZvcmZhaXRhaXJlIGRlIHJlc3NvdXJjZXMgYXBwbGljYWJsZSBhdXggw6l0dWRpYW50c1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmQgY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXNfKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNzb3VyY2VzX2ZvcmZhaXRhaXJlc19yODIyXzIwXykpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyNDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDEgOiBNb2RhbGl0w6lzIGfDqW7DqXJhbGVzIGRlIGwnYXBwcsOpY2lhdGlvbiBkZXMgcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcmVzc291cmNlc19kZW1hbmRldXJfIHJlc3NvdXJjZXNfY29uam9pbnRfKVxuICAgICAgICAgICAgICByZXNzb3VyY2VzX3BlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MDk7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTA5OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X3JfODIyXzdfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJhYmF0dGVtZW50X3JfODIyXzdcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTAxOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwOTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi03XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBQcmluY2lwZXMgZGUgbmV1dHJhbGlzYXRpb24gZXQgZCdhYmF0dGVtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2FuZCBkZW1hbmRldXJfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9cbiAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmpvaW50X2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfXG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHJlc3NvdXJjZXNfZGVtYW5kZXVyX1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX2NvbmpvaW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKSkgdGhlblxuICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzdfIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUwMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDE7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChhY2NfOiBib29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfOiBQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FuZCBhY2NfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lXy5QZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci5kdXJlZV9yZXNpZGVuY2VfZHVyYW50X3BlcmlvZGVfcl84MjJfM18xX3N1cGVyaWV1cmVfYV82X21vaXMpKVxuICAgICAgICAgICAgICAgICAgICAgICB0cnVlIHBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDI7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDM7IGVuZF9jb2x1bW49NzQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMSA6IE1vZGFsaXTDqXMgZ8OpbsOpcmFsZXMgZGUgbCdhcHByw6ljaWF0aW9uIGRlcyByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Mjsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0MzsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAxIDogTW9kYWxpdMOpcyBnw6luw6lyYWxlcyBkZSBsJ2FwcHLDqWNpYXRpb24gZGVzIHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSBpblxuICB7UmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5yZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICByZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGVffVxuXG5sZXQgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luOiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpIDogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9XG4gIGxldCBtZW5hZ2VfOiBNZW5hZ2UudCA9IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubWVuYWdlX2luIGluXG4gIGxldCBkZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXzogdW5pdCAtPiBib29sID0gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfaW4gaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXzogdW5pdCAtPiBib29sID0gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pbiBpblxuICBsZXQgY29uZGl0aW9uX3ByZXRfOiBQcmV0LnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJjb25kaXRpb25fcHLDqnRcIl1cbiAgICAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwcmV0XzogUHJldC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0yOTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MjkyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTI5Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uX3BldXBsZW1lbnRfbG9nZW1lbnRfbDgyMl8xMF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9wZXVwbGVtZW50X2xvZ2VtZW50X2w4MjJfMTBcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzAxOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzAxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzZXVpbF9sODIyXzNfcGFydHNfcHJvcHJpZXRlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwic2V1aWxfbDgyMl8zX3BhcnRzX3Byb3ByacOpdMOpXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzExOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxMTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXUgYsOpbsOpZmljaWFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTE7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc2V1aWxfbDgyMl8zX3BhcnRzX3VzdWZydWl0XzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJzZXVpbF9sODIyXzNfcGFydHNfdXN1ZnJ1aXRcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMxMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTI7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1IGLDqW7DqWZpY2lhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuMVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzEyOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNldWlsX2w4MjJfNV9wYXRyaW1vaW5lXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwic2V1aWxfbDgyMl81X3BhdHJpbW9pbmVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzEzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05Mjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTI3OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBQcmlzZSBlbiBjb21wdGUgZHUgcGF0cmltb2luZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDAwMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTM7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdXN1ZnJ1aXRfb3VfcHJvcHJpZXRlX2ZhbWlsbGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJ1c3VmcnVpdF9vdV9wcm9wcmnDqXTDqV9mYW1pbGxlXCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzEwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxMDsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0NjsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX29yXG4gICAgICAgICAgICAgIChtYXRjaCAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5wcm9wcmlldGFpcmUpXG4gICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICB8IFBhcmVudE91QXV0cmUuRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzIHBhcnRzXyAtPlxuICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5BdXRyZSBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAobWF0Y2ggKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQudXN1ZnJ1aXQpXG4gICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICB8IFBhcmVudE91QXV0cmUuRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzIHBhcnRzXyAtPlxuICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5BdXRyZSBfIC0+IGZhbHNlKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzEwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxMDsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbm9uX291dmVydHVyZV9sODIyXzlfZGVjZW5jZV9sb2dlbWVudF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOV9kZWNlbmNlX2xvZ2VtZW50XCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5OTsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk5OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjM7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjM7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubG9nZW1lbnRfZGVjZW50X2w4OV80NjIpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Mjk5OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0yOTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Mjk5OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOFwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTI5ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTg7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ5OyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ5OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmNvbmRpdGlvbl9yYXR0YWNoZV9mb3llcl9maXNjYWxfcGFyZW50X2lmaSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mjk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTI5Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0yOTc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPiBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV8gKCkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5Nzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2MzsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBub21icmVfcGVyc29ubmVzX2xvZ2VtZW50XyA6IGludGVnZXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9taW5pbWFsZV9zYW5zX3NldWlsX21fY2FycmVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50ZWdlciA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuUGFjc2VzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxNlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiOVwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9taW5pbWFsZV9zYW5zX3NldWlsX21fY2FycmVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjcwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiOFwiKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnN1cmZhY2VfbV9jYXJyZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNzBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnN1cmZhY2VfbV9jYXJyZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfbWluaW1hbGVfc2Fuc19zZXVpbF9tX2NhcnJlc18pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk3OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0yOTc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9sb2dlbWVudF9yw6lzaWRlbmNlX3ByaW5jaXBhbGVcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0yOTQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Mjk0OyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT4gY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXyAoKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0yOTQ7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTQ7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDEgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogUsOoZ2xlcyBkZSBub24tY3VtdWxcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogUHJpbmNpcGVzIGfDqW7DqXJhdXhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnJlc2lkZW5jZV9wcmluY2lwYWxlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NDsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mjk0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTI5NDsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2RvdF9kYXRlX25haXNzYW5jZV9hc3N1cmVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgXCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlLmRhdGVfbmFpc3NhbmNlX2Fzc3Vyw6lcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTIzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyMzsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDE2MS0xNy0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAxIDogSW5mb3JtYXRpb24gZXQgc2ltcGxpZmljYXRpb24gZGVzIGTDqW1hcmNoZXMgZGVzIGFzc3Vyw6lzLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUk6IFRpdHJlIElJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyByZWxhdGl2ZXMgYXUgZmluYW5jZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTIzOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTYxLTE3LTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDEgOiBJbmZvcm1hdGlvbiBldCBzaW1wbGlmaWNhdGlvbiBkZXMgZMOpbWFyY2hlcyBkZXMgYXNzdXLDqXMuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSTogVGl0cmUgSUlJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIHJlbGF0aXZlcyBhdSBmaW5hbmNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfLkRlbWFuZGV1ci5kYXRlX25haXNzYW5jZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTIzOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTYxLTE3LTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDEgOiBJbmZvcm1hdGlvbiBldCBzaW1wbGlmaWNhdGlvbiBkZXMgZMOpbWFyY2hlcyBkZXMgYXNzdXLDqXMuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSTogVGl0cmUgSUlJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIHJlbGF0aXZlcyBhdSBmaW5hbmNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZVwiO1xuICAgICAgXCJPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZVwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVcIjtcbiAgICAgIFwiT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVcIl0gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSlcbiAgICAoe091dmVydHVyZURyb2l0c1JldHJhaXRlSW4uZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX2luID1cbiAgICAgICAgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX30pKSkgaW5cbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfZG90X2FnZV9vdXZlcnR1cmVfZHJvaXRfOiBkdXJhdGlvbiA9IHJlc3VsdF8uT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUuYWdlX291dmVydHVyZV9kcm9pdCBpblxuICBsZXQgcGF0cmltb2luZV90b3RhbF9kZW1hbmRldXJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJwYXRyaW1vaW5lX3RvdGFsX2RlbWFuZGV1clwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMwOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDk7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI0OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNDk7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAoKGRlbWFuZGV1cl8uRGVtYW5kZXVyLnBhdHJpbW9pbmUpLlBhdHJpbW9pbmUucHJvZHVpc2FudF9yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQpXG4gICAgICAgICAgICAgICgoZGVtYW5kZXVyXy5EZW1hbmRldXIucGF0cmltb2luZSkuUGF0cmltb2luZS5uZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzA5OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9uYXRpb25hbGl0ZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiY29uZGl0aW9uX25hdGlvbmFsaXTDqVwiXVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MjkzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5MzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjkzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjkzOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExMDsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZGVtYW5kZXVyXy5EZW1hbmRldXIubmF0aW9uYWxpdGUpXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE5hdGlvbmFsaXRlLkZyYW5jYWlzZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTmF0aW9uYWxpdGUuRXRyYW5nZXJlIGNvbmRpdGlvbnNfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbnNfLkNvbmRpdGlvbnNFdHJhbmdlcnMuc2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc2VjdXJpdGVfc29jaWFsZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI5Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTI5Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9pbmRpdmlkdWVsX2w4MTVfOV9zZWN1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcInBsYWZvbmRfaW5kaXZpZHVlbF9sODE1Xzlfc8OpY3VcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzE3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxNzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzA7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgxNS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24gZGUgbCdhbGxvY2F0aW9uIGRlIHNvbGlkYXJpdMOpIGF1eCBwZXJzb25uZXMgw6Jnw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IEFsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJIDogQWxsb2NhdGlvbnMgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWxsb2NhdGlvbnMgYXV4IHBlcnNvbm5lcyDDomfDqWVzIC0gQWxsb2NhdGlvbiBhdXggYWR1bHRlcyBoYW5kaWNhcMOpcyAtIEFpZGVzIMOgIGwnZW1wbG9pIHBvdXIgbGEgZ2FyZGUgZGVzIGpldW5lcyBlbmZhbnRzIC0gUHJvdGVjdGlvbiBjb21wbMOpbWVudGFpcmUgZW4gbWF0acOocmUgZGUgc2FudMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoNCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI5OTk4NDBcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzNTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODE1LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbiBkZSBsJ2FsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogQWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIEkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXMgLSBBbGxvY2F0aW9uIGF1eCBhZHVsdGVzIGhhbmRpY2Fww6lzIC0gQWlkZXMgw6AgbCdlbXBsb2kgcG91ciBsYSBnYXJkZSBkZXMgamV1bmVzIGVuZmFudHMgLSBQcm90ZWN0aW9uIGNvbXBsw6ltZW50YWlyZSBlbiBtYXRpw6hyZSBkZSBzYW50w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwNDE4NDBcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0MDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODE1LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbiBkZSBsJ2FsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogQWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIEkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXMgLSBBbGxvY2F0aW9uIGF1eCBhZHVsdGVzIGhhbmRpY2Fww6lzIC0gQWlkZXMgw6AgbCdlbXBsb2kgcG91ciBsYSBnYXJkZSBkZXMgamV1bmVzIGVuZmFudHMgLSBQcm90ZWN0aW9uIGNvbXBsw6ltZW50YWlyZSBlbiBtYXRpw6hyZSBkZSBzYW50w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICg0KSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwODM4NDBcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNpcmN1bGFpcmUgZGUgbGEgQ05BViAyMDIzLTMgZHUgMDkvMDEvMjAyMiBcXFwiUmV2YWxvcmlzYXRpb24gw6AgY29tcHRlciBkdSAxZXIgamFudmllciAyMDIzXFxcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudHMgcmV2YWxvcmlzw6lzIGRlIGwnYWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDI0KSAoMSkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTE1MzMwMlwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05MTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2lyY3VsYWlyZSBkZSBsYSBDTkFWIDIwMjItMyBkdSAxMS8wMS8yMDIyIFxcXCJSZXZhbG9yaXNhdGlvbiDDoCBjb21wdGVyIGR1IDFlciBqYW52aWVyIDIwMjJcXFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50cyByZXZhbG9yaXPDqXMgZGUgbCdhbGxvY2F0aW9uIGRlIHNvbGlkYXJpdMOpIGF1eCBwZXJzb25uZXMgw6Jnw6llc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMTAwMTQ0XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNpcmN1bGFpcmUgZGUgbGEgQ05BViAyMDIxLTEgZHUgMTEvMDEvMjAyMSBcXFwiUmV2YWxvcmlzYXRpb24gw6AgY29tcHRlciBkdSAxZXIgamFudmllciAyMDIxXFxcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudHMgcmV2YWxvcmlzw6lzIGRlIGwnYWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA4ODE3NVwiKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aWVyc186IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aWVyc1wiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTI5Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTY7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjExOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5sb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLk5vbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy5PdWkgcGVyc29ubmVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQS50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiVsOpcmlmaWNhdGlvbsOCZ2VTdXDDqXJpZXVyw4BcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiVsOpcmlmaWNhdGlvbsOCZ2VTdXDDqXJpZXVyw4BcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlyZWN0XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1ZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi5kYXRlX25haXNzYW5jZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lXy5QZXJzb25uZVNvdXNMb2NhdGlvbi5kYXRlX25haXNzYW5jZV9wZXJzb25uZV9zb3VzX2xvY2F0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA3OyBlbmRfY29sdW1uPTc2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDg7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQUluLmFubmVlc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDMwKSAoMCkgKDApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDk7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKX0pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckEudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1ZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckEuciA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQS5yKX0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIlbDqXJpZmljYXRpb27DgmdlU3Vww6lyaWV1csOAXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlyZWN0XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIlbDqXJpZmljYXRpb27DgmdlU3Vww6lyaWV1csOAXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlyZWN0XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwNjsgc3RhcnRfY29sdW1uPTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIHRoZW4gcmVzdWx0XyBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpLlZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckEucilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV8uUGVyc29ubmVTb3VzTG9jYXRpb24uY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzEpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE5Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk4OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LmxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy5Ob24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLk91aSBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mjk2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfbW9kZV9vY2N1cGF0aW9uXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiY29uZGl0aW9uX2xvZ2VtZW50X21vZGVfb2NjdXBhdGlvblwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTI5NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTU7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTU7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzc7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIHVzdWZydWl0X291X3Byb3ByaWV0ZV9mYW1pbGxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnByb3ByaWV0YWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXJlbnRPdUF1dHJlLkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlcyBwYXJ0c18gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydHNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXJlbnRPdUF1dHJlLkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXVpbF9sODIyXzNfcGFydHNfcHJvcHJpZXRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQudXN1ZnJ1aXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5EZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgcGFydHNfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V1aWxfbDgyMl8zX3BhcnRzX3VzdWZydWl0XykpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXN1ZnJ1aXRfb3VfcHJvcHJpZXRlX2ZhbWlsbGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQucmVzaWRlbmNlX3ByaW5jaXBhbGUpXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5NTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mjk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5NTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fb3V2ZXJ0dXJlX2w4MjJfMTBfcGV1cGxlbWVudF9sb2dlbWVudF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9vdXZlcnR1cmVfbDgyMl8xMF9wZXVwbGVtZW50X2xvZ2VtZW50XCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzAwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMDsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAwOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAwOyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODg7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODg7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDA7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDA7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWdlX2wxNjFfMTdfMl9zZWN1XzogZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiw6JnZV9sMTYxXzE3XzJfc8OpY3VcIl1cbiAgICAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE2OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyNTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDE2MS0xNy0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAxIDogSW5mb3JtYXRpb24gZXQgc2ltcGxpZmljYXRpb24gZGVzIGTDqW1hcmNoZXMgZGVzIGFzc3Vyw6lzLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUk6IFRpdHJlIElJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyByZWxhdGl2ZXMgYXUgZmluYW5jZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfYWdlX291dmVydHVyZV9kcm9pdF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTY7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGF0cmltb2luZV9wcmlzX2VuX2NvbXB0ZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcInBhdHJpbW9pbmVfcHJpc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg5OyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4OTsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5lc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzA7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3MjsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGJvb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXN0YXRpb25fOiBQcmVzdGF0aW9uUmVjdWUudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX29yIGFjY19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBwcmVzdGF0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcHJlc3RhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnByZXN0YXRpb25zX3JlY3VlcykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk0NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTQ0OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogUHJpc2UgZW4gY29tcHRlIGR1IHBhdHJpbW9pbmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uIHBhdHJpbW9pbmVfdG90YWxfZGVtYW5kZXVyX1xuICAgICAgICAgICAgICAgICAgICAgICBzZXVpbF9sODIyXzVfcGF0cmltb2luZV8pKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKGRlbWFuZGV1cl8uRGVtYW5kZXVyLnBhdHJpbW9pbmUpLlBhdHJpbW9pbmUubmVfcHJvZHVpc2FudF9wYXNfcmV2ZW51X3BlcmlvZGVfcjgyMl8zXzNfcjgyMl80KSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTM7IHN0YXJ0X2NvbHVtbj0zMzsgZW5kX2xpbmU9MjUzOyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHBhdHJpbW9pbmVfdG90YWxfZGVtYW5kZXVyX1xuICAgICAgICAgICAgICAgICBzZXVpbF9sODIyXzVfcGF0cmltb2luZV8pIHRoZW4gcGF0cmltb2luZV90b3RhbF9kZW1hbmRldXJfXG4gICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfbG9nZW1lbnRfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfbG9nZW1lbnRcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMwMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDI7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgY29uZGl0aW9uX25vbl9vdXZlcnR1cmVfbDgyMl84X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOV9kZWNlbmNlX2xvZ2VtZW50XykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZCBjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZCBjb25kaXRpb25fbG9nZW1lbnRfbW9kZV9vY2N1cGF0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmQgY29uZGl0aW9uX2xvZ2VtZW50X2xvY2F0aW9uX3RpZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fb3V2ZXJ0dXJlX2w4MjJfMTBfcGV1cGxlbWVudF9sb2dlbWVudF8pKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhZ2VfbDM1MV84XzFfc2VjdV86IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIsOiZ2VfbDM1MV84XzFfc8OpY3VcIl1cbiAgICAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE1OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDM1MS04XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiA1IDogVGF1eCBldCBtb250YW50IGRlIGxhIHBlbnNpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBPdXZlcnR1cmUgZHUgZHJvaXQsIGxpcXVpZGF0aW9uIGV0IGNhbGN1bCBkZXMgcGVuc2lvbnMgZGUgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWIDogQXNzdXJhbmNlIHZpZWlsbGVzc2UgLSBBc3N1cmFuY2UgdmV1dmFnZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIElJSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IGFzc3VyYW5jZXMgc29jaWFsZXMgZXQgw6AgZGl2ZXJzZXMgY2F0w6lnb3JpZXMgZGUgcGVyc29ubmVzIHJhdHRhY2jDqWVzIGF1IHLDqWdpbWUgZ8OpbsOpcmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfZHVyX2R1ciBhZ2VfbDE2MV8xN18yX3NlY3VfXG4gICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICg1KSAoMCkgKDApKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzE1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxNTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqVwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyMDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMjA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyMDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyMDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMzMTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzMzOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmQgY29uZGl0aW9uX25hdGlvbmFsaXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAob19hbmQgY29uZGl0aW9uX2xvZ2VtZW50X21vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfbG9nZW1lbnRfKSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzIwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyMDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzIwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyMDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fMl9yODIzXzRfOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcImNvbmRpdGlvbl8yX3I4MjNfNFwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyNDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyNDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOTc7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIzLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgcGFyZW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5wYXJlbnRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBhcmVudGUuQXNjZW5kYW50ICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLnJlc3NvdXJjZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfaW5kaXZpZHVlbF9sODE1Xzlfc2VjdV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuMjVcIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXIgQWJvcnRPblJvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5kYXRlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9sMzUxXzhfMV9zZWN1XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS50aXR1bGFpcmVfYWxsb2NhdGlvbl9wZXJzb25uZV9hZ2VlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiVsOpcmlmaWNhdGlvbsOCZ2VJbmbDqXJpZXVyT3XDiWdhbMOAXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiVsOpcmlmaWNhdGlvbsOCZ2VJbmbDqXJpZXVyT3XDiWdhbMOAXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1ZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi5kYXRlX25haXNzYW5jZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UuZGF0ZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTg4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE4ODsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgUjgyMy00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE4OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTg5OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgUjgyMy00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi5hbm5lZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICg2NSkgKDApICgwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTkwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOTA7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQXJ0aWNsZSBSODIzLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKX0pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEEudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtWZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBLnIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLlZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEEucil9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJWw6lyaWZpY2F0aW9uw4JnZUluZsOpcmlldXJPdcOJZ2Fsw4BcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIlbDqXJpZmljYXRpb27DgmdlSW5mw6lyaWV1ck91w4lnYWzDgFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExODc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOTA7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMy00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIHRoZW4gcmVzdWx0XyBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpLlZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEEucikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXIgQWJvcnRPblJvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5kYXRlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9sMTYxXzE3XzJfc2VjdV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmJlbmVmaWNpYWlyZV9sMTYxXzE5X2wzNTFfOF9sNjQzXzNfc2VjdSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyNDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyNDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTMyNDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMjQ7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzI0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyNDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwcmlzZV9lbl9jb21wdGVfcGVyc29ubmVfYV9jaGFyZ2VfOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJwcmlzZV9lbl9jb21wdGVfcGVyc29ubmVfw6BfY2hhcmdlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjIxOyBzdGFydF9jb2x1bW49NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTIyNzsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMy00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgcGFyZW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UuaW5jYXBhY2l0ZV84MF9wb3VyY2VudF9vdV9yZXN0cmljdGlvbl9lbXBsb2kpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLnJlc3NvdXJjZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2luZGl2aWR1ZWxfbDgxNV85X3NlY3VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuMjVcIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMDI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTIwMjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjMtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25fMl9yODIzXzRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCJdIGNvbmRpdGlvbl8yX3I4MjNfNF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX3BlcnNvbm5lX2FfY2hhcmdlKSBwZXJzb25uZV9hX2NoYXJnZV8pKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE0OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTU1OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMy00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxldCByZXN1bHRfIDogVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQS50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiVsOpcmlmaWNhdGlvbsOCZ2VTdXDDqXJpZXVyw4BcIjsgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJWw6lyaWZpY2F0aW9uw4JnZVN1cMOpcmlldXLDgFwiOyBcImRpcmVjdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF92ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7VmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQUluLmRhdGVfbmFpc3NhbmNlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNTI7IHN0YXJ0X2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNTI7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIzLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQUluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgZGF0ZV9jb3VyYW50ZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTUzOyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNTM7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjMtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBSW4uYW5uZWVzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMjEpICgwKSAoMCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTU0OyBzdGFydF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNTQ7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjMtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpfSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOiBWZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtWZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBLnIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLlZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckEucil9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJWw6lyaWZpY2F0aW9uw4JnZVN1cMOpcmlldXLDgFwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiVsOpcmlmaWNhdGlvbsOCZ2VTdXDDqXJpZXVyw4BcIjsgXCJkaXJlY3RcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF92ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE1MTsgc3RhcnRfY29sdW1uPTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE1NDsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIzLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkgdGhlbiByZXN1bHRfIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyYWlzZSBFbXB0eUVycm9yKSkpKSkpKSkuVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQS5yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBwYXJlbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAzOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzAzOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXzogUGVyc29ubmVBQ2hhcmdlLnQgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcInBlcnNvbm5lc1/DoF9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzA1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEzNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTM3OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIzLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19maWx0ZXJcbiAgICAgICAgICAgICAgKGZ1biAocGVyc29ubmVfYV9jaGFyZ2VfOiBQZXJzb25uZUFDaGFyZ2UudCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgXCJwcmlzZV9lbl9jb21wdGVfcGVyc29ubmVfw6BfY2hhcmdlXCJdXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgIFwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX8OgX2NoYXJnZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgXCJwcmlzZV9lbl9jb21wdGVfcGVyc29ubmVfw6BfY2hhcmdlXCJdXG4gICAgICAgICAgICAgICAgIHByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV9hX2NoYXJnZV8pXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgIFwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX8OgX2NoYXJnZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UpIHBlcnNvbm5lX2FfY2hhcmdlXykpKSkpKSlcbiAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMwNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IGRlY2ltYWwgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyMjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMjI7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzM3OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX21hcFxuICAgICAgICAgICAgICAoZnVuIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPlxuICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSlcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLlBhc0RlR2FyZGVBbHRlcm5lZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgY29lZmZfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmXylcbiAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpXG4gICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAoZnVuIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5QYXNEZUdhcmRlQWx0ZXJuZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5HYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzIyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyMjsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCJdIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzIxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyMTsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMzNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMzU7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gb19sZW5ndGggcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzIxOyBlbmRfY29sdW1uPTU0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfcmF0X3JhdCBzZXVpbF9sODIyXzNfcGFydHNfdXN1ZnJ1aXRfXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMlwiKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTgyOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTgyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODI7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfcmF0X3JhdCBzZXVpbF9sODIyXzNfcGFydHNfcHJvcHJpZXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjJcIikpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4MTsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4MTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTgxOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTgxOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pIGluXG4gIHtFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5kYXRlX2NvdXJhbnRlID0gZGF0ZV9jb3VyYW50ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmVsaWdpYmlsaXRlID0gZWxpZ2liaWxpdGVfO1xuICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgPVxuICAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfO1xuICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5jb25kaXRpb25fMl9yODIzXzQgPVxuICAgICAgIGNvbmRpdGlvbl8yX3I4MjNfNF99XG5cbmxldCBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luOiBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQpIDogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCA9XG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBwcmVzdGF0aW9uX2NvdXJhbnRlXzogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID0gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnByZXN0YXRpb25fY291cmFudGVfaW4gaW5cbiAgbGV0IHJlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbiBpblxuICBsZXQgYWdlX2w1MTJfM18yXzogZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiw6JnZV9sNTEyXzNfMlwiXSAoZW1iZWRfZHVyYXRpb24pXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDU7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIxOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTEyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDIwKSAoMCkgKDApKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQ1OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKSkgaW5cbiAgbGV0IHNtaWNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJzbWljLmRhdGVfY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTQ7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTU0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTU0OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTQ7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkgaW5cbiAgbGV0IHNtaWNfZG90X3Jlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJzbWljLnLDqXNpZGVuY2VcIl1cbiAgICAgIChlbWJlZF9jb2xsZWN0aXZpdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01MzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTM7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzaWRlbmNlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTUzOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBTbWljLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWNcIjsgXCJTbWljXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pY1wiOyBcIlNtaWNcIl0gc21pYylcbiAgICAoe1NtaWNJbi5kYXRlX2NvdXJhbnRlX2luID0gc21pY19kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIFNtaWNJbi5yZXNpZGVuY2VfaW4gPSBzbWljX2RvdF9yZXNpZGVuY2VffSkpKSBpblxuICBsZXQgc21pY19kb3RfYnJ1dF9ob3JhaXJlXzogbW9uZXkgPSByZXN1bHRfLlNtaWMuYnJ1dF9ob3JhaXJlIGluXG4gIGxldCByZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwicsOpZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ2OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQ2OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gKFxuICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTMxOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw3NTEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEaXNwb3NpdGlvbnMgcGFydGljdWxpw6hyZXMgw6AgbGEgR3VhZGVsb3VwZSwgw6AgbGEgR3V5YW5lLCDDoCBsYSBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXkgZXQgw6AgU2FpbnQtTWFydGluXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiAoKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00NjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00NjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2w1MTJfM18yXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwicGxhZm9uZF9sNTEyXzNfMlwiXSAoZW1iZWRfbW9uZXkpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDQ7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSAoXG4gICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjI7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNzU1LTAtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHNtaWNfZG90X2JydXRfaG9yYWlyZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjU1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjE2OS5cIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMxOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTEyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgc21pY19kb3RfYnJ1dF9ob3JhaXJlX1xuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjU1XCIpKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxNjkuXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ0OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbnNfaG9yc19hZ2VfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbmRpdGlvbnNfaG9yc1/DomdlXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MTItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfbDUxMl8zXzJfKSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTQyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQwOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MTsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2w1MTJfM18yXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1ciBBYm9ydE9uUm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VfbDUxMl8zXzJfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXykpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MTItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTQwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQwOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MDsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIHtFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5kcm9pdF9vdXZlcnQgPSBkcm9pdF9vdXZlcnRfO1xuICAgICBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5jb25kaXRpb25zX2hvcnNfYWdlID1cbiAgICAgICBjb25kaXRpb25zX2hvcnNfYWdlXztcbiAgICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYWdlX2w1MTJfM18yID0gYWdlX2w1MTJfM18yXztcbiAgICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucmVnaW1lX291dHJlX21lcl9sNzUxXzEgPVxuICAgICAgIHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX31cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW46IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi50KSA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudCA9XG4gIGxldCBsb3llcl9wcmluY2lwYWxfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmxveWVyX3ByaW5jaXBhbF9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gaW5cbiAgbGV0IGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc186IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiBpblxuICBsZXQgem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uem9uZV9pbiBpblxuICBsZXQgbG9nZW1lbnRfZXN0X2NoYW1icmVfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW4gaW5cbiAgbGV0IGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luIGluXG4gIGxldCB0eXBlX2FpZGVfOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi50eXBlX2FpZGVfaW4gaW5cbiAgbGV0IGNvbG9jYXRpb25fOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbiBpblxuICBsZXQgcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luIGluXG4gIGxldCBsb2dlbWVudF9tZXVibGVfZDg0Ml8yXzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X21ldWJsZV9kODQyXzJfaW4gaW5cbiAgbGV0IGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80XzogQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X2luIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xveWVyX3ByaW5jaXBhbF9iYXNlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi5sb3llcl9wcmluY2lwYWxfYmFzZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Nzk5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTc5OTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03OTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Nzk5OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBsb3llcl9wcmluY2lwYWxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc5OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03OTk7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODAxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwMTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODAxOyBlbmRfY29sdW1uPTYwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgwMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MDE7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2JlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc186IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi5iw6luw6lmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXDDqXNcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MDM7IGVuZF9jb2x1bW49Nzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODAzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwMzsgZW5kX2NvbHVtbj03ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODAzOyBlbmRfY29sdW1uPTc4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiY2FsY3VsX2FwbF9sb2NhdGlmLmRhdGVfY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MDY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODA2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODA2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXSAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MDg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODA4OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgwODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MDg7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgwODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MDg7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODEwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxMDsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODEwOyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgxMDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTA7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiY2FsY3VsX2FwbF9sb2NhdGlmLnpvbmVcIl1cbiAgICAgIChlbWJlZF96b25lX2RfaGFiaXRhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODEyOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgxMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTI7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHpvbmVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgxMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTI7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xvZ2VtZW50X2VzdF9jaGFtYnJlXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLmxvZ2VtZW50X2VzdF9jaGFtYnJlXCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgxNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTQ7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODE0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxNDsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbG9nZW1lbnRfZXN0X2NoYW1icmVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgxNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTQ7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2FnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLsOiZ8OpZXNfb3VfaGFuZGljYXBfYWR1bHRlc19ow6liZXJnw6llc19vbsOpcmV1eF9wYXJ0aWN1bGllcnNcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgxNzsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTgxODsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MTc7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT04MTg7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODE3OyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9ODE4OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90eXBlX2FpZGVfOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImNhbGN1bF9hcGxfbG9jYXRpZi50eXBlX2FpZGVcIl1cbiAgICAgIChlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgyMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MjE7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgyMTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHlwZV9haWRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODIxOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9jb2xvY2F0aW9uXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiY2FsY3VsX2FwbF9sb2NhdGlmLmNvbG9jYXRpb25cIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgyMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MjM7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODIzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgyMzsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gY29sb2NhdGlvbl8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODIzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgyMzsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLnLDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgyNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MjU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgyNTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgyNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MjU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xvZ2VtZW50X21ldWJsZV9kODQyXzJfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYubG9nZW1lbnRfbWV1YmzDqV9kODQyXzJcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODI3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgyNzsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04Mjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODI3OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBsb2dlbWVudF9tZXVibGVfZDg0Ml8yXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04Mjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODI3OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiY2FsY3VsX2FwbF9sb2NhdGlmXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImNhbGN1bF9hcGxfbG9jYXRpZlwiO1xuICAgICAgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIl1cbiAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYpXG4gICAgKHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxveWVyX3ByaW5jaXBhbF9iYXNlX2luID1cbiAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb3llcl9wcmluY2lwYWxfYmFzZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2JlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc187XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnpvbmVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfem9uZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG9nZW1lbnRfZXN0X2NoYW1icmVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2FnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50eXBlX2FpZGVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHlwZV9haWRlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2NvbG9jYXRpb25fO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3JlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xvZ2VtZW50X21ldWJsZV9kODQyXzJffSkpKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNiBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMiBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9wYXJ0aWNpcGF0aW9uX21pbmltYWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fbWluaW1hbGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVfOiBkZWNpbWFsID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9wYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogXG4gICAgbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT03OTU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Nzk1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03OTU7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTc5NTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI5MDsgc3RhcnRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI5MDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZWN0ZXVyIGxvY2F0aWYgb3JkaW5haXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuQ2hhbmdlbWVudCBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uIGxveWVyX3ByaW5jaXBhbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5hbmNpZW5fbG95ZXJfcHJpbmNpcGFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5QYXNEZUNoYW5nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkgKGZ1biAoXzogdW5pdCkgLT4gYWlkZV9maW5hbGVfKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODMyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODMyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl1cbiAgICAgICAgICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF8pXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT03OTU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Nzk1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03OTU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Nzk1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc5Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03OTM7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03OTM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03OTM7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjgyOyBzdGFydF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI4MjsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNlY3RldXIgbG9jYXRpZiBvcmRpbmFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LkNoYW5nZW1lbnQgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb24gbG95ZXJfcHJpbmNpcGFsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5hbmNpZW5fbG95ZXJfcHJpbmNpcGFsKSlcbiAgICAgICAgICAgICAgICAgICAgIHwgQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuUGFzRGVDaGFuZ2VtZW50IF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5DaGFuZ2VtZW50IGluZm9zXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gbG95ZXJfcHJpbmNpcGFsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5hbmNpZW5fbG95ZXJfcHJpbmNpcGFsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnQpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5QYXNEZUNoYW5nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODMxOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03OTM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NzkzOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUgPSBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX31cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbjogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi50KSA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQgPVxuICBsZXQgdHlwZV9sb2dlbWVudF9mb3llcl86IFR5cGVMb2dlbWVudEZveWVyLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnR5cGVfbG9nZW1lbnRfZm95ZXJfaW4gaW5cbiAgbGV0IGRhdGVfY29udmVudGlvbm5lbWVudF86IGRhdGUgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmRhdGVfY29udmVudGlvbm5lbWVudF9pbiBpblxuICBsZXQgcmVkZXZhbmNlXzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnJlZGV2YW5jZV9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gaW5cbiAgbGV0IHpvbmVfOiBab25lREhhYml0YXRpb24udCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uem9uZV9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2XzogQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luIGluXG4gIGxldCBtb250YW50X21pbmltYWxfYWlkZV9kODQyXzE1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfMTVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTQxOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTAwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxMDA7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk0MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NDE7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzE1XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTQyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk0MjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA4OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDg5OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0MVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk0Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NDI7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X21pbmltYWxfZGVwZW5zZV9uZXR0ZV9kODQyXzE3XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJtb250YW50X21pbmltYWxfZMOpcGVuc2VfbmV0dGVfZDg0Ml8xN1wiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTQzOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTkxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxOTE7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk0Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NDM7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5jb25kaXRpb25fMl9kdV84MzJfMjVcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODQ5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NDk7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg0OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODQ5OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDg0OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODQ5OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7IFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDg0NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODQ1OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7IFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4NDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDg0NTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODQ1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NDU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODQ3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NDc7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg0Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODQ3OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDg0Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODQ3OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7IFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF9ub21icmVfcGFydHNcIjtcbiAgICAgIFwiQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llclwiXSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIpXG4gICAgKHtDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxffSkpKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk4Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05ODM7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk4Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05ODM7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05ODM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTgzOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICh7Q29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVffSkpKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubW9udGFudCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfdHlwZV9sb2dlbWVudF9mb3llcl86IFR5cGVMb2dlbWVudEZveWVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnR5cGVfbG9nZW1lbnRfZm95ZXJcIl1cbiAgICAgIChlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Njc7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk2Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Njc7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0eXBlX2xvZ2VtZW50X2ZveWVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Njc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTY3OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY29udmVudGlvbm5lbWVudF86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLmRhdGVfY29udmVudGlvbm5lbWVudFwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTY5OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTY5OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb252ZW50aW9ubmVtZW50XykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTY5OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5yZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTczOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk3MzsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTczOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk3MzsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTczOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk3MzsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl1cbiAgICAgIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk3NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NzU7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk3NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NzU7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTc1OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05Nzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTc3OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTc3OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Nzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTc3OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuem9uZVwiXVxuICAgICAgKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Nzk7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Nzk7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB6b25lXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Nzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTc5OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk4MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05ODE7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk4MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05ODE7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05ODE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTgxOyBlbmRfY29sdW1uPTUzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3JlZGV2YW5jZV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5yZWRldmFuY2VcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk3MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NzE7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk3MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NzE7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZWRldmFuY2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk3MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NzE7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogdW5pdCAtPiBib29sID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5jb25kaXRpb25fMl9kdV84MzJfMjVcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODEyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MTI7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDgxMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODEyOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogdW5pdCAtPiBkZWNpbWFsID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1XCJdIChlbWJlZF9kZWNpbWFsKVxuICAgICAgKHJhaXNlIEVtcHR5RXJyb3IpKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llclwiO1xuICAgICAgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCJdXG4gICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcilcbiAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnR5cGVfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF90eXBlX2xvZ2VtZW50X2ZveWVyXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9kYXRlX2NvbnZlbnRpb25uZW1lbnRfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3pvbmVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9yZWRldmFuY2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfcl9kODMyXzI1XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9yX2Q4MzJfMjUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IFxuICAgIG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc1wiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk0Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05NDY7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ2OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTQ2OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDc2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA3NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0MFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk0Njsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk0NjsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NDY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTQ2OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZXF1aXZhbGVuY2VfbG95ZXJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiw6lxdWl2YWxlbmNlX2xveWVyXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk0NTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05NDU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ1OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTQ1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTE4OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTE4OyBlbmRfY29sdW1uPTc5O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWSUkgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NzA4XCIpXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM1NTlcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ1OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTQ1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTUzOyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTU0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWSUkgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTM2MlwiKVxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzMTk2XCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk0NTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk0NTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk0NTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTQ1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNzE7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDE3MjsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTc2MDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjczNjVcIikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTM1OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTM2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWSUkgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzYwN1wiKVxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MzY1XCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk0NTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk0NTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA5OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDk7IGVuZF9jb2x1bW49Nzk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NDE0XCIpXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTMxMDBcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ1OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTQ1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03NDY7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTc0NzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0M1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwNjQwXCIpXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzIwNzNcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ1OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTQ1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ1OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NDU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzY1OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTc2NjsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MDEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NDQwXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzI3OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03Mjg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzAxMlwiKVxuICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NDQwXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NDU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTQ1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NjA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTYwOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4NjE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00ODYxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xNV8pIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTVfKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05NjA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTYwOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTYwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk2MDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ4NDI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDg0MjsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODQyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NDI7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODQyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NDI7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODQxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NDE7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg0MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODQxOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDg0MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODQxOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7IFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUubl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgICAgKGVtYmVkX2RlY2ltYWwpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODUxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NTE7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg1MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODUxOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODUxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NTE7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlKVxuICAgICh7Q2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1X30pKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUubW9udGFudCBpblxuICBsZXQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NDQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTQ0OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4MTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgxNTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk0NDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05NDQ7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWxsb2NhdGlvbl9tZW5zdWVsbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Mzc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTM3OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5NzM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTczOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgb19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGVxdWl2YWxlbmNlX2xveWVyX1xuICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc18pIGFsbG9jYXRpb25fbWVuc3VlbGxlXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05Mzc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTM3OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTM3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTkzNzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGxveWVyX21pbmltYWxfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwibG95ZXJfbWluaW1hbFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NDc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTQ3OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4NTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDg1MzsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk0Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05NDc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFsbG9jYXRpb25fbWVuc3VlbGxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTM5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTkzOTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00OTgyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk4MjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb24gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSBkZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRpb25fbWVuc3VlbGxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICBtb250YW50X21pbmltYWxfZGVwZW5zZV9uZXR0ZV9kODQyXzE3XykgdGhlblxuICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIG1vbnRhbnRfbWluaW1hbF9kZXBlbnNlX25ldHRlX2Q4NDJfMTdfXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSBkZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRpb25fbWVuc3VlbGxlXykpKSkpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05Mzk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTM5OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTM5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTkzOTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NTc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTU3OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3OTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDc5NDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBlcXVpdmFsZW5jZV9sb3llcl9cbiAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXykgbG95ZXJfbWluaW1hbF8pXG4gICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk1Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05NTc7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NjE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTYxOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4NzU7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00ODc1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgYWJhdHRlbWVudF8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgIGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vbiAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gYWJhdHRlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIGFiYXR0ZW1lbnRfKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT05NjE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTYxOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTYxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk2MTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NjI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTYyOyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4OTM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00ODkzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmIChvX2d0X21vbl9tb24gYWlkZV9maW5hbGVfIHJlZGV2YW5jZV8pIHRoZW4gcmVkZXZhbmNlX1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGFpZGVfZmluYWxlXykpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTk2Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjI7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTYyOyBlbmRfY29sdW1uPTE5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdICh1bmVtYmVkZGFibGUpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NjM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTYzOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5MDc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTA3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgY3Jkc18gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwXCIpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTk2Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTYzOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTY0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk2NDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00OTI4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDkyODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19sdF9tb25fbW9uIGFpZGVfZmluYWxlXyBtb250YW50X21pbmltYWxfYWlkZV9kODQyXzE1XylcbiAgICAgICAgICAgICAgICAgICAgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlIGFpZGVfZmluYWxlXykpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTk2NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjQ7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTY0OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlID1cbiAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXIgPSBlcXVpdmFsZW5jZV9sb3llcl87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlcyA9XG4gICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIubG95ZXJfbWluaW1hbCA9IGxveWVyX21pbmltYWxfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlID0gYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX31cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW46IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQpIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luIGluXG4gIGxldCBzaXR1YXRpb25fcjgyMl8xMV8xM18xN186IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luIGluXG4gIGxldCBkYXRlX3NpZ25hdHVyZV9wcmV0XzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pbiBpblxuICBsZXQgdHlwZV90cmF2YXV4X2xvZ2VtZW50XzogVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiBpblxuICBsZXQgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlXzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luIGluXG4gIGxldCBkYXRlX2VudHJlZV9sb2dlbWVudF86IGRhdGUgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luIGluXG4gIGxldCBjaGFyZ2VzX21lbnN1ZWxsZXNfcHJldF86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldF9pbiBpblxuICBsZXQgY29wcm9wcmlldGVfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jb3Byb3ByaWV0ZV9pbiBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml82XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg2NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjU7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5NjM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODY1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2NTsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04Njg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODY4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzMxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMzMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgcHJlbWllclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlLDqGdsZW1lbnQgKENFKSBuwrAyODY2Lzk4IGR1IGNvbnNlaWwgZHUgMzEgZMOpY2VtYnJlIDE5OTggY29uY2VybmFudCBsZXMgdGF1eCBkZSBjb252ZXJzaW9uIGVudHJlIGwnZXVybyBldCBsZXMgbW9ubmFpZXMgZGVzIMOJdGF0cyBtZW1icmVzIGFkb3B0YW50IGwnZXVyb1wiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fZGl2X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNi41NTk1N1wiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODY4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X21pbmltYWxfYWlkZV9kODQyXzZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfNlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NzM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODczOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk3Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTczOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NzM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODczOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xMV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzExXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg3NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDI3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwMjc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg3NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzEyXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTJcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODc1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg3NTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDA1MjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MDAwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NzU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODc1OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X2Q4NDJfMTFfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJjb2VmZmljaWVudF9kODQyXzExXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODc2OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAzNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDM0OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMzRcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODc2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg3NjsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9kODQyXzEyXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwiY29lZmZpY2llbnRfZDg0Ml8xMlwiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDA0NTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTYuMjVcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODc3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg3NzsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl0gKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NDU1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NTU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0NTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ1NTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDQ1NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDU1OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ0NTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ1NzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ1Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDU3OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ0NTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ1NzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZS50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImNhbGN1bF9ub21icmVfcGFydHNcIjtcbiAgICAgIFwiQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiXVxuICAgIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSlcbiAgICAoe0NhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgICBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX30pKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfOiBkZWNpbWFsID0gcmVzdWx0Xy5DYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZS5uX25vbWJyZV9wYXJ0c19kODMyXzExIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05MTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTE5OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTE5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkxOTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTE5OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICh7Q29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVffSkpKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubW9udGFudCBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODU3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg1NzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjU1OyBlbmRfY29sdW1uPTE2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29wcm9wcmlldGVfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02MTc7IHN0YXJ0X2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MTc7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg1Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODU3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDA1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwMDU7IGVuZF9jb2x1bW49MTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHJvcHJpZXRlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODA1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyNzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk1MTsgc3RhcnRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5NTE7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYxMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTI3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTg1Nzsgc3RhcnRfY29sdW1uPTQ3OyBlbmRfbGluZT04NTc7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IGZhbHNlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg1Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NTc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT04OTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODkxOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDY1OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDQ2NTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAob19sdF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml82XylcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzZfKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT04OTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODkxOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg5MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04OTE7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYmFzZV86IGRhdGUgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChkYXRlX2NhbGN1bF86IGRhdGUpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjkxMzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTEzOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg3KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNTg3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MTMwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwNTUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjExMzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTcxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIyOTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyODAwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjgwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzOTMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTcwNjAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg0NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTEyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NzcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDQyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE4NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxODcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTMwNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNTg0MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzI2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3OTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg3MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5NDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDg2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA4NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTgyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk1OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTU5OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTcpICg3KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjA0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MzQwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwNzgwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjEzNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTk2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI1NTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE0MDgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTcyNTAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg2NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTMzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5OTkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDY1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIxMTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTMyMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODAxMDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzQ1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg5MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5NjQwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTA5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjEwOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAwNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDA1OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk3KSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTgpICg3KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjMzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NjkwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxMTYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE3NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjM2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI5NjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNDYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzQ2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE0MzMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTc1NjAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkwMTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTY2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMzUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTAyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI1MTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyNTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM0NDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjMwMDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzc3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4NTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkyNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5OTkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTQ3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE0NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzA1MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDUxOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk4KSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTkpICg3KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjcyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTYwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxNjcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIyODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjkwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM1MTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDAyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE0NjcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTc5ODAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDE1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwODQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTUyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM3NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjY5MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODIwMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4OTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk3MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNDcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTk5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE5OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzA5Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDk3OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk5KSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDApICg3KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjc0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTgwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxNjkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIzMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjkyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM1MzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MDQwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDA0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE0NjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgwMDAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDE3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwODYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTU0MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM3NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjcxMDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODIyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4OTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk3MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNDkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjAxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIwMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE0Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTQzOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAwKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDEpICg3KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjkxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMzgwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxOTEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjI1MjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzE1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM3NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MjgwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDI4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE0ODMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgxODAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk2ODAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDM3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxMDcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTc2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMzMDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMzAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM5MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjg4MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODQwMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MTYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk5MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNjkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjIzMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIyMzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE4OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTg5OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAxKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzExMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwNjIwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMTcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjI3OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzQzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQwNjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NTcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDU3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1MDEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg0MDAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk5MjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDYxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxMzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjAyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM1ODAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQwODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzA4MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODYyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MzkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAxNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwOTQwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjUwMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI1MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzIzNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjM1OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICg3KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYwODRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxNDM1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM3OThcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NzQzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTcxOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY2NzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc0NTdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc0NTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjYyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjI4ODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4MDUxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzAzNjhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxNDIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjUwMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM1NjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU5NDdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU5NDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTI1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE0NjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2MDM4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjgzODZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NTYwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDc0OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE5MjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQzMDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQzMDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjgwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyODA7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjM5N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE4MTJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDIwNFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUxNjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MTQ4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzExOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzkwNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzkwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzMDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzE1OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjgzODhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDczMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE3OTdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyODkyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzk3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjM3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjM3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTcyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYzNTBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODcyN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk5MTVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMTE4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjMwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDcxM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDcxM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwMDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjM7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMzMjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzMyNTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA1KSAoOSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NzE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjE5NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NjE0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTU4MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY1ODJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NTY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4MzYxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4MzYxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM0MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNDM2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODcyOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMTAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjE3OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzMyODdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MzgwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2ODE1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2ODE1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzIwMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxOTg0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjY2NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5MDcyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDI3NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0OTFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNjk0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MTMwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MTMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM3MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzcwOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA1KSAoOSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDcpICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxOTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNzczXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUyMzdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MjIyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzI0MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgyNDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzkwNTFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzkwNTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM4NThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5MjQ2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE2NjFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNzU4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzg4NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ5OTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc0NzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc0NzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjU5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIzODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MTQ2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk1OTVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwODE5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjA1OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzMyODJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU3NjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU3NjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDE1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0MTU7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDcpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzk1NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM2OTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjIyNFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcyMzZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4MjgzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTMxMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDE0NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDE0NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0OTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDUyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzAwNjVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjU0OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM2NzVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0ODY1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTk3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODUyN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODUyN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzAwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjc5MDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDQyNFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE2ODJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyOTU2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDIxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjczM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjczM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxODdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjM7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0NjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ2MDsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA5KSAoMSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4NzI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDYyMVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MjI0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODI2NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkzNDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMzk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMjUyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMjUyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU5MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1MjAzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDg5NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNDQ2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDYwNFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU3OTZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2OTcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5NTkwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5NTkwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ0MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNjQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODY3NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMjY0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjU1NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM4NjZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MTU4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3Nzc4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3Nzc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzI3NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzUwNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTA1OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTApICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk1NzVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NjQyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgzMjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MzkzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDUwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE1ODhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI0NjlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI0NjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjk4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU5NDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxODA2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ0MzNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NjI1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjg1MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgwNjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA3NThcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA3NThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTQ0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQzMzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NTIyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzIxODZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNTE2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDg2NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYxOTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg4OTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg4OTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTUwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1NTA7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTY3MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU3NTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODQ0NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzk1MTlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNjAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTcyMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjYwNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjYwNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjAyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE5MDhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDY0M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU3MzlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2OTcwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODE4NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDg4OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDg4OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDQxN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk2MTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjI4OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM2MjNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0OTc3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjMxMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTAxNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTAxNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjM7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1OTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU5NTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5OTk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjE0OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4ODY4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTk1NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDEwNzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMTgwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMDc0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMDc0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2MzE1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjI1OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0OTIzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjEzMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzczNzNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NjA1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMzM4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMzM4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU5NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0Njg2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTk0MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNjQ0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzk5M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUzNjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NzEwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5NDQ1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5NDQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQyMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY0MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjQwOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTMpICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzAyOTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NTEwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkyNTdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMzU0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ4OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDI2MDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDM1MDVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDM1MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzg5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY1NzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNTgyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUyNzJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NDkzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzc1MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg5OTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE3NTFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE3NTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQ5MzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwMjQxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI5NzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MzMzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTcxNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcwNzdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk4MzlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk4MzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDU0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjg1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2ODU7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTMpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEwKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA5NDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3Mjk1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAxMDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxMjIyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjM4MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDM1MThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ0NDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ0NDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODcwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxNDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzMjgzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYwMzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3Mjc4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODU2M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzk4MjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI2NDlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI2NTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzA4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU0NjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwODkxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM2NzlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MDcxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjQ4NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc4NzRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA2OTZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA2OTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzMwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM3MzA7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxMCkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMTIzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzUwOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMzMwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ1N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDI2MjNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzNzY2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NjkzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NjkzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg5MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MzA0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzQ3M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MjM1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzQ5MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg3ODNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMDU2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyODkyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyODkyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1NjE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTA2N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzODcxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTI3MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY2OTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4MDkwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwOTI4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwOTI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc3NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzc1OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTApICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTE0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc1MzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDM2MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE0OTBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyNjU3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MzgwMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDcyOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDcyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4OTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzMyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjI2NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc1MjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4ODE0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDA4OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjkyNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjkyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTYzNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEwOTJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzg5OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUyOTlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NzIxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODEyMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDk2MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDk2MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjM7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4MjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzgyMDsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEzODJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3ODIwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA2NjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxODAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0Mjk3N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDQxMzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDUwNjRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDUwNjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTI0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjc1MzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNzUxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY1MzZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3ODAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTEwNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzODlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMyNDhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMyNDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzYwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU4MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMzI1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQxNTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NTY0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjk5NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg0MDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEyNjhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEyNjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODY1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4NjU7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0NzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3OTMzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA3ODdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxOTI3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MzEwNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDQyNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDUyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDUyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTM2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjc2MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzODUzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY2NDZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3OTE1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTIyMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA1MTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMzNzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMzNzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzcxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU5MDRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxNDE5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQyNTVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NjcwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzEwN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg1MjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEzOTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEzOTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTg4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04NjM7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzZXVpbF9taW5pbWFsX3Jlc3NvdXJjZXNfbWVuYWdlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJzZXVpbF9taW5pbWFsX3Jlc3NvdXJjZXNfbcOpbmFnZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04Njc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODY3OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Njc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04Njc7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3MDY7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ3MTI7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MikgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoOSkgKDMwKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IG1lbnN1YWxpdGVfcHJpbmNpcGFsZV9cbiAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9kODQyXzEyXykpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Njc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04Njc7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3MjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ3MjU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2RhdF9kYXQgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT4gZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xMl8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg2Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04Njc7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWxsb2NhdGlvbl9tZW5zdWVsbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Njk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODY5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjQ2OyBzdGFydF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY0NjsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgb19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc18pIGFsbG9jYXRpb25fbWVuc3VlbGxlXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT04Njk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODY5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg2OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04Njk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYXZlY19jb3Byb3ByaWV0ZV86IGRhdGUgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdICh1bmVtYmVkZGFibGUpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoZGF0ZV9jYWxjdWxfOiBkYXRlKSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04NjQ7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODY0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjQ7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjQ7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODY0OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjQ7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjQ7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02MzM7IHN0YXJ0X2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MzM7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb3Byb3ByaWV0ZV8gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYmFzZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NhbGN1bF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYmFzZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9kYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jYWxjdWxfKSkpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5ODU7IHN0YXJ0X2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzk4NTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvcHJvcHJpZXRlXyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2Jhc2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9kYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NhbGN1bF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2Jhc2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jYWxjdWxfKSkpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5MDk7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTA5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYmFzZV8pXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9kYXRlKSBkYXRlX2NhbGN1bF8pKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODY0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg2NDsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NjQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODY0OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19zZXVpbF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19zZXVpbFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NDI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODQyOyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NDI7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NDI7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3NDU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ3NDU7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzM1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ3MzU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfXG4gICAgICAgICAgICAgICAgIHNldWlsX21pbmltYWxfcmVzc291cmNlc19tZW5hZ2VfKSB0aGVuXG4gICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAob19yb3VuZF9tb25cbiAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHNldWlsX21pbmltYWxfcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0OTk5XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxXCIpKSlcbiAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkgZWxzZVxuICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg0Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04NDI7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwicGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODYwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2MDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYwOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTk1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTk1OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlXykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIChsZXQgcGxhZm9uZF9zaWduYXR1cmVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2F2ZWNfY29wcm9wcmlldGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX2RhdGUpIGRhdGVfc2lnbmF0dXJlX3ByZXRfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAobGV0IHBsYWZvbmRfZW50cmVlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9hdmVjX2NvcHJvcHJpZXRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9kYXRlKSBkYXRlX2VudHJlZV9sb2dlbWVudF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICggaWYgKG9fbHRfbW9uX21vbiBwbGFmb25kX3NpZ25hdHVyZV8gcGxhZm9uZF9lbnRyZWVfKVxuICAgICAgICAgICAgICAgICAgICAgICB0aGVuIHBsYWZvbmRfZW50cmVlXyBlbHNlIHBsYWZvbmRfc2lnbmF0dXJlXykpKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDU3Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NTc3OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiXVxuICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9hdmVjX2NvcHJvcHJpZXRlXylcbiAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfZGF0ZSkgZGF0ZV9zaWduYXR1cmVfcHJldF8pKSkpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg2MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ1MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDUxOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDUxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NTE7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfc2V1aWxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDQ1MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDUxOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ0NTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ1MDsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ1MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDUwOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ0NTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ1MDsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5uX25vbWJyZV9wYXJ0c19kODMyXzI1XCJdXG4gICAgICAoZW1iZWRfZGVjaW1hbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ0NTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ1MzsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ1Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDUzOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDQ1Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDUzOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSlcbiAgICAoe0NhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV99KSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLm1vbnRhbnQgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3R5cGVfbG9nZW1lbnRfZm95ZXJfOiBUeXBlTG9nZW1lbnRGb3llci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci50eXBlX2xvZ2VtZW50X2ZveWVyXCJdXG4gICAgICAoZW1iZWRfdHlwZV9sb2dlbWVudF9mb3llcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05MDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTAzOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTAzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkwMzsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBUeXBlTG9nZW1lbnRGb3llci5BdXRyZSAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTAzOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9kYXRlX2NvbnZlbnRpb25uZW1lbnRfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5kYXRlX2NvbnZlbnRpb25uZW1lbnRcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTA1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkwNTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTkwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDU7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9vZl9udW1iZXJzICgxOTcwKSAoMSkgKDEpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDU7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5yZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTA5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkwOTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTkwOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDk7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NldWlsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MDk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTA5OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl1cbiAgICAgIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkxMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MTE7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05MTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTExOyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkxMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MTE7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05MTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTEzOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTEzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkxMzsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkxMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MTM7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuem9uZVwiXSAoZW1iZWRfem9uZV9kX2hhYml0YXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTE1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkxNTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTkxNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MTU7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gem9uZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTE1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkxNTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTE3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkxNzsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTkxNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MTc7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTE3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkxNzsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcmVkZXZhbmNlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnJlZGV2YW5jZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTA3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkwNzsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTkwNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDc7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkwNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDc7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IHVuaXQgLT4gYm9vbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQxMDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDEwOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDEwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0MTA7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogdW5pdCAtPiBkZWNpbWFsID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1XCJdIChlbWJlZF9kZWNpbWFsKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQxNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDE3OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDE3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0MTc7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8xMV8pKSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJcIjsgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCJdXG4gICAgKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJcIjsgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCJdXG4gICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcilcbiAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnR5cGVfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF90eXBlX2xvZ2VtZW50X2ZveWVyXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9kYXRlX2NvbnZlbnRpb25uZW1lbnRfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3pvbmVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9yZWRldmFuY2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfcl9kODMyXzI1XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9yX2Q4MzJfMjUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IFxuICAgIG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBpblxuICBsZXQgc2V1aWxfbWluaW1hbF9kZXBlbnNlX25ldHRlX21pbmltYWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJzZXVpbF9taW5pbWFsX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg2Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2NjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY4MTsgc3RhcnRfY29sdW1uPTc7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY4NDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5OSkgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19zZXVpbF9cbiAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9kODQyXzExXykpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NjY5OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xMV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg2Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NjY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbWVuc3VhbGl0ZV9lbGlnaWJsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJtZW5zdWFsaXTDqV/DqWxpZ2libGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODU2OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDMxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0MzE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndF9tb25fbW9uIG1lbnN1YWxpdGVfcHJpbmNpcGFsZV8gcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl8pXG4gICAgICAgICAgICAgIHRoZW4gcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl8gZWxzZSBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODU2OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1lbnN1YWxpdGVfbWluaW1hbGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwibWVuc3VhbGl0w6lfbWluaW1hbGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODU4OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDQ2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDY7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODU4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg1ODsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODU5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg1OTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQyMDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDIwOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg1OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NTk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWJhdHRlbWVudF9kZXBlbnNlX25ldHRlX21pbmltYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFsbG9jYXRpb25fbWVuc3VlbGxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODcxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg3MTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY1ODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ2NTg7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgIGFsbG9jYXRpb25fbWVuc3VlbGxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19sdF9tb25fbW9uIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfXG4gICAgICAgICAgICAgICAgICAgICAgIHNldWlsX21pbmltYWxfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gc2V1aWxfbWluaW1hbF9kZXBlbnNlX25ldHRlX21pbmltYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICBkZXBlbnNlX25ldHRlX21pbmltYWxlXykgZWxzZVxuICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg3MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzE7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODcxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg3MTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImFpZGVfZmluYWxlX2Zvcm11bGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04ODc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9ODg3OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzkxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQzOTE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIG1lbnN1YWxpdGVfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc18pIG1lbnN1YWxpdGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04ODc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9ODg3OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg5Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04OTI7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0Nzk7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDc5OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGFiYXR0ZW1lbnRfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIGFiYXR0ZW1lbnRfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIGFiYXR0ZW1lbnRfKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT04OTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODkyOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg5Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04OTI7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdICh1bmVtYmVkZGFibGUpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT04OTM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODkzOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDkzOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDQ5MzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgY3Jkc18gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwXCIpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg5Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04OTM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODkzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg5MzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT04OTQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODk0OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTEzOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDUxMzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml82XylcbiAgICAgICAgICAgICAgICAgICAgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlIGFpZGVfZmluYWxlXykpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg5NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04OTQ7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODk0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg5NDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxffVxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbjogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQpIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC50ID1cbiAgbGV0IG1vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4gaW5cbiAgbGV0IHR5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnR5cGVfYWlkZV9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpXzogbW9uZXkgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfOiBTaXR1YXRpb25GYW1pbGlhbGUudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uem9uZV9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBjYXRlZ29yaWVfY2FsY3VsX2FwbF86IENhdGVnb3JpZUNhbGN1bEFQTC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJjYXTDqWdvcmllX2NhbGN1bF9hcGxcIl1cbiAgICAoZW1iZWRfY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc0Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03NDY7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0MjE7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uIGxvY2F0aW9uXylcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIGxvZ2VtZW50Zm95ZXJfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyIGxvZ2VtZW50Zm95ZXJfKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSBwcm9wcmlldGFpcmVfKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIGxvY2F0aW9uXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gbG9jYXRpb25fKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBwcm9wcmlldGFpcmVfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgcHJvcHJpZXRhaXJlXykpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc0Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03NDY7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXZlY19hcnJvbmRpXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzQwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc0MDsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE5ODI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTk4MjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgKG9fcm91bmRfbW9uXG4gICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDFcIikpIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgXCI0OVwiKSkpIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc0MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03NDA7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NDc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzQ3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTc4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTc4OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLlBhY3NlcyBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbnMgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKCkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03NDc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzQ3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzb3VzX2NhbGN1bF90cmFpdGVtZW50XzogVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcInNvdXNfY2FsY3VsX3RyYWl0ZW1lbnRcIl1cbiAgICAoZW1iZWRfdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzQ5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc0OTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NDQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQ0NDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIGNhdGVnb3JpZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gbG9jYXRpb25fIC0+XG4gICAgICAgICAgICAgICAgKGxldCB0cmFpdGVtZW50X2Zvcm11bGVfIDpcbiAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luKVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb3llcl9wcmluY2lwYWxfYmFzZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgKGxvY2F0aW9uXy5Mb2NhdGlvbi5sb3llcl9wcmluY2lwYWwpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ1NDsgc3RhcnRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ1NDsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGlfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ0OTsgc3RhcnRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDQ5OyBlbmRfY29sdW1uPTYwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhdGlvbl8uTG9jYXRpb24uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ1Njsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDU2OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ1Mjsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDUyOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ1MDsgc3RhcnRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDUwOyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NTM7IHN0YXJ0X2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ1MzsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uem9uZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSB6b25lXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NTE7IHN0YXJ0X2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ1MTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgKGxvY2F0aW9uXy5Mb2NhdGlvbi5sb2dlbWVudF9lc3RfY2hhbWJyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NTc7IHN0YXJ0X2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ1NzsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhdGlvbl8uTG9jYXRpb24uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDYwOyBzdGFydF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NjA7IGVuZF9jb2x1bW49ODA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSB0eXBlX2FpZGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2MTsgc3RhcnRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDYxOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IChsb2NhdGlvbl8uTG9jYXRpb24uY29sb2NhdGlvbikgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDU4OyBzdGFydF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NTg7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGxvY2F0aW9uXy5Mb2NhdGlvbi5iYWlsbGV1cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJTb2NpYWwgYmFpbGxldXJfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYWlsbGV1cl8uQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX3BlcmN1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyUHJpdmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NjM7IHN0YXJ0X2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ2NjsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxvZ2VtZW50X21ldWJsZV9kODQyXzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDY3OyBzdGFydF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0Njc7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpfSkpKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTYgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBsYWZvbmRfbG95ZXJfZDgyM18xNl8yID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fbWluaW1hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fbWluaW1hbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBhcmFtMF86IG1vbmV5KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW0wXykpKSkpKSl9KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCI7XG4gICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYpXG4gICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ0ODsgc3RhcnRfY29sdW1uPTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0Njg7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkgdGhlbiByZXN1bHRfIGVsc2UgKHJhaXNlIEVtcHR5RXJyb3IpKSkpKSkpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKHtUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSlcbiAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSBwcm9wcmlldGFpcmVfIC0+XG4gICAgICAgICAgICAgICAgKGxldCB0cmFpdGVtZW50X2Zvcm11bGVfIDpcbiAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlyZWN0XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luKVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLm1lbnN1YWxpdGVfcHJpbmNpcGFsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTA1OyBzdGFydF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTA1OyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDA7IHN0YXJ0X2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwMDsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUwMTsgc3RhcnRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTAxOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUwNDsgc3RhcnRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTA0OyBlbmRfY29sdW1uPTc3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUwNjsgc3RhcnRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTA2OyBlbmRfY29sdW1uPTgwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDc7IHN0YXJ0X2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwNzsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTA5OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MDk7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5kYXRlX2VudHJlZV9sb2dlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MTA7IHN0YXJ0X2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUxMDsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jb3Byb3ByaWV0ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUuY29wcm9wcmlldGUpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUxMTsgc3RhcnRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTExOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUuc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTEyOyBzdGFydF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MTI7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uem9uZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSB6b25lXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDI7IHN0YXJ0X2NvbHVtbj0yMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwMjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3ByZXRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC50eXBlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTEzOyBzdGFydF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MTM7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uYW5jaWVubmV0ZV9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmFuY2llbm5ldGVfbG9nZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTE0OyBzdGFydF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MTQ7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBkYXRlX2NvdXJhbnRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDM7IHN0YXJ0X2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwMzsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSl9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDpcbiAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX2VsaWdpYmxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX2VsaWdpYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX21pbmltYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfbWluaW1hbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBhcmFtMF86IG1vbmV5KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW0wXykpKSkpKSl9KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0OTk7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUxNTsgZW5kX2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSlcbiAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvZ2VtZW50Rm95ZXIgbG9nZW1lbnRfZm95ZXJfXyAtPlxuICAgICAgICAgICAgICAgIChsZXQgdHJhaXRlbWVudF9mb3JtdWxlXyA6XG4gICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQgPVxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJkaXJlY3RcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbilcbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnR5cGVfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9nZW1lbnRfZm95ZXJfXy5Mb2dlbWVudEZveWVyLnR5cGVfdXNlcikgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDg2OyBzdGFydF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDg2OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY29udmVudGlvbm5lbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2VtZW50X2ZveWVyX18uTG9nZW1lbnRGb3llci5kYXRlX2NvbnZlbnRpb25uZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDg3OyBzdGFydF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0ODc7IGVuZF9jb2x1bW49NzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0ODA7IHN0YXJ0X2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ4MDsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDgxOyBzdGFydF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0ODE7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0ODQ7IHN0YXJ0X2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ4NDsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHpvbmVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ4Mjsgc3RhcnRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDgyOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBkYXRlX2NvdXJhbnRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0ODM7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ4MzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnJlZGV2YW5jZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9nZW1lbnRfZm95ZXJfXy5Mb2dlbWVudEZveWVyLnJlZGV2YW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0ODU7IHN0YXJ0X2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ4NTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpfSkpKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcl9kODMyXzI1ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcl9kODMyXzI1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBhcmFtMF86IG1vbmV5KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbTBfKSkpKSkpKX0pXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImRpcmVjdFwiO1xuICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcilcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDc5OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ4ODsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpfSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03NDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzQ5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhcmdfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT03NTI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NzUyOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDM0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQzNDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKHNvdXNfY2FsY3VsX3RyYWl0ZW1lbnRfLlRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKVxuICAgICAgICAgICAgICAgICAgIGFyZ18pKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzUyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTc1MjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03NTI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NzUyOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcImFpZGVfZmluYWxlX2Zvcm11bGVcIl0gKGVtYmVkX21vbmV5KVxuICAgIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NTE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NzUxOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQzMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDMyOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgc291c19jYWxjdWxfdHJhaXRlbWVudF8uVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGUpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc1MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03NTE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSA9IGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVffVxuXG5sZXQgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50IChlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW46IEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLnQpIDogRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50LnQgPVxuICBsZXQgaW5mb3JtYXRpb25zXzogSW5mb3JtYXRpb25zUHJpbWVEZURlbWVuYWdlbWVudC50ID0gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLmluZm9ybWF0aW9uc19pbiBpblxuICBsZXQgZGF0ZV9lbW1lbmFnZW1lbnRfOiBkYXRlID0gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLmRhdGVfZW1tZW5hZ2VtZW50X2luIGluXG4gIGxldCBtZW5hZ2VfOiBNZW5hZ2UudCA9IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5tZW5hZ2VfaW4gaW5cbiAgbGV0IGRlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLmRlbWFuZGV1cl9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzXzogbW9uZXkgPSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzX2luIGluXG4gIGxldCBkZWxhaV9hcHJlc19lbW1lbmFnZW1lbnRfbDgyM184XzJfOiBkdXJhdGlvbiA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgIFwiZMOpbGFpX2FwcsOoc19lbW3DqW5hZ2VtZW50X2w4MjNfOF8yXCJdIChlbWJlZF9kdXJhdGlvbikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ1ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTg7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDkyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIwOTI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMjBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBQcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZHVyYXRpb25fb2ZfbnVtYmVycyAoMCkgKDYpICgwKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDU4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ1ODsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uX3JhbmdfZW5mYW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCJjb25kaXRpb25fcmFuZ19lbmZhbnRcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ1NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTU7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTU7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDY4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDczOyBlbmRfY29sdW1uPTc3O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMjBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfYV9jaGFyZ2VfOiBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZm9ybWF0aW9uc18uSW5mb3JtYXRpb25zUHJpbWVEZURlbWVuYWdlbWVudC5ub21icmVfZW5mYW50c19hX25haXRyZV9hcHJlc190cm9pc2llbWVfbW9pc19ncm9zc2Vzc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU1OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDU1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ1NTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgICBcImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NzI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDcyOyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NzI7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ3Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NzI7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgXCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgIFwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdXG4gICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAoe0Jhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9tb250YW50XzogbW9uZXkgPSByZXN1bHRfLkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMubW9udGFudCBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9tZW5hZ2VfOiBNZW5hZ2UudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9hcGwubcOpbmFnZVwiXVxuICAgICAgKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00Njg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDY4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Njg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDY4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ2ODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FwbF9kb3RfZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfYXBsLmRlbWFuZGV1clwiXVxuICAgICAgKGVtYmVkX2RlbWFuZGV1cilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDY5OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Njk7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlbWFuZGV1cl8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDY5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ2OTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FwbF9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYXBsLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDcwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ3MDsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDcwOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NzA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDcwOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfOiB1bml0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYXBsLmNvbmRpdGlvbl9sb2dlbWVudF9yw6lzaWRlbmNlX3ByaW5jaXBhbGVcIl1cbiAgICAgIChlbWJlZF9ib29sKSAocmFpc2UgRW1wdHlFcnJvcikpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXzogdW5pdCAtPiBib29sID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FwbC5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZVwiXSAoZW1iZWRfYm9vbCkgKHJhaXNlXG4gICAgICBFbXB0eUVycm9yKSkgaW5cbiAgbGV0IHJlc3VsdF86IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfYXBsXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2FwbFwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgIGVsaWdpYmlsaXRlX2FwbF9kb3RfbWVuYWdlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FwbF9kb3RfZGVtYW5kZXVyXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hcGxfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX30pKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FwbF9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmRhdGVfY291cmFudGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FwbF9kb3RfZWxpZ2liaWxpdGVfOiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5lbGlnaWJpbGl0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FwbF9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IFxuICAgIGRlY2ltYWwgYXJyYXkgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uXzJfcjgyM180XzogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuY29uZGl0aW9uXzJfcjgyM180IGluXG4gIGxldCBjb25kaXRpb25fcGVyaW9kZV9kZW1lbmFnZW1lbnRfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgXCJjb25kaXRpb25fcMOpcmlvZGVfZMOpbcOpbmFnZW1lbnRcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDU2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDU2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA3Nzsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA4ODsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTIwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBQcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgKGluZm9ybWF0aW9uc18uSW5mb3JtYXRpb25zUHJpbWVEZURlbWVuYWdlbWVudC5kYXRlX25haXNzYW5jZV90cm9pc2llbWVfZW5mYW50X291X2Rlcm5pZXJfc2lfcGx1cylcbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQuTW9pbnNEZVRyb2lzRW5mYW50cyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQuUGx1c0RlVHJvaXNFbmZhbnRzIGRhdGVfbmFpc3NhbmNlX291X2dyb3NzZXNzZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZGF0ZV9uYWlzc2FuY2Vfb3VfZ3Jvc3Nlc3NlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UuRGF0ZURlTmFpc3NhbmNlIGRhdGVfbmFpc3NhbmNlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyIEFib3J0T25Sb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZmlyc3REYXlPZk1vbnRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1ciBBYm9ydE9uUm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfbmFpc3NhbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDIpICgwKSAoMCkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoMCkgKC0xKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLkF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS5BcHJlc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDU2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ1NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9kODIzXzIyXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7IFwicGxhZm9uZF9kODIzXzIyXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ1OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTk7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDIwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MjA2OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSUkgOiBQcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLjRcIikpXG4gICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkpXG4gICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMlwiKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU5OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9sb2dlbWVudF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9sb2dlbWVudFwiXVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDU3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ1NzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ1NzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTY5OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjMtOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGVsaWdpYmlsaXRlX2FwbF9kb3RfZWxpZ2liaWxpdGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZCBjb25kaXRpb25fcmFuZ19lbmZhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZCBjb25kaXRpb25fcGVyaW9kZV9kZW1lbmFnZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kdXJfZHVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FwbF9kb3RfZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9lbW1lbmFnZW1lbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxhaV9hcHJlc19lbW1lbmFnZW1lbnRfbDgyM184XzJfKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU3OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDU3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ1NzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCJtb250YW50X3ByaW1lX2TDqW3DqW5hZ2VtZW50XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDY1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQ2NTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIxMTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjExODsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0yMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiBkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfXG4gICAgICAgICAgICAgICAgIHBsYWZvbmRfZDgyM18yMl8pIHRoZW5cbiAgICAgICAgICAgICAgZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzXyBlbHNlIHBsYWZvbmRfZDgyM18yMl8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ2NTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00NjU7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0VsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudC5tb250YW50X3ByaW1lX2RlbWVuYWdlbWVudCA9XG4gICAgIG1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50X31cblxubGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCAoZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luOiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50KSA6IEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC50ID1cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBjYXJhY3RlcmlzdGlxdWVzX3ByZXRfbDgzMV8xXzFfOiBQcmV0LnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfMVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwcmV0XzogUHJldC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAzMDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAzMzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODMyLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmV0Xy5QcmV0LnRpdHVsYWlyZV9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LkRlbWFuZGV1ciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5WZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHByZXRfLlByZXQudHlwZV9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChwcmV0Xy5QcmV0LnR5cGVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTk1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk5NzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgzMi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChwcmV0Xy5QcmV0LnRpdHVsYWlyZV9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuRGVtYW5kZXVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5WZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChwcmV0Xy5QcmV0LnR5cGVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHByZXRfLlByZXQudHlwZV9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0zNjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzY2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzY2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM2NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfNl86IFByZXQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV82XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHByZXRfOiBQcmV0LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM2NzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0zNjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzY3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzY3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM2NzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9wcmV0XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcImNvbmRpdGlvbl9sb2dlbWVudF9wcsOqdFwiXVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzY1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM2NTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzQzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzU2OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLmFuY2llbm5ldGVfbG9nZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUubG9nZW1lbnRfc2l0dWVfY29tbXVuZV9kZXNlcXVpbGlicmVfbDgzMV8yKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBwcm9wcmlldGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQuZGF0ZV9zaWduYXR1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQuZGF0ZV9zaWduYXR1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5hbmNpZW5uZXRlX2xvZ2VtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLmxvZ2VtZW50X3NpdHVlX2NvbW11bmVfZGVzZXF1aWxpYnJlX2w4MzFfMikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcyNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03Mjk7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQuZGF0ZV9zaWduYXR1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIHByb3ByaWV0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQuZGF0ZV9zaWduYXR1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MTk7IHN0YXJ0X2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MTk7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM2NTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzY1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfbWVuYWdlXzogTWVuYWdlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLm3DqW5hZ2VcIl0gKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc4OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc4OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbWVuYWdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc4OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5kZW1hbmRldXJcIl0gKGVtYmVkX2RlbWFuZGV1cilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc5OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc5OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc5OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODA7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODA7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zODA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzgwOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV86IFxuICAgIHVuaXQgLT4gYm9vbCA9IGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuY29uZGl0aW9uX2xvZ2VtZW50X3LDqXNpZGVuY2VfcHJpbmNpcGFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpIChyYWlzZSBFbXB0eUVycm9yKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXzogdW5pdCAtPiBib29sID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZVwiXSAoZW1iZWRfYm9vbClcbiAgICAgIChyYWlzZSBFbXB0eUVycm9yKSkgaW5cbiAgbGV0IHJlc3VsdF86IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZVwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X21lbmFnZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kZW1hbmRldXJfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VffSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmRhdGVfY291cmFudGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2VsaWdpYmlsaXRlXzogYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuZWxpZ2liaWxpdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IFxuICAgIGRlY2ltYWwgYXJyYXkgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl8yX3I4MjNfNF86IFBlcnNvbm5lQUNoYXJnZS50IC0+IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvbmRpdGlvbl8yX3I4MjNfNCBpblxuICBsZXQgY29uZGl0aW9uX2xvZ2VtZW50X2JhaWxsZXVyXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJjb25kaXRpb25fbG9nZW1lbnRfYmFpbGxldXJcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNjQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzcwMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM3MDc7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQXJ0aWNsZSBSODMyLTIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMSA6IENvbmRpdGlvbnMgZCdhc3NpbWlsYXRpb24gZGVzIGxvZ2VtZW50cy1mb3llcnMgYXV4IGxvZ2VtZW50cyDDoCB1c2FnZSBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIGxvZ2VtZW50X2ZveWVyXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfLkxvZ2VtZW50Rm95ZXIucmVtcGxpdF9jb25kaXRpb25zX3I4MzJfMjEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MDc7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gcHJvcHJpZXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV82XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfNlwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV82XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV82XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5MDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgbG9jYXRpb25fIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2F0aW9uXy5Mb2dlbWVudEZveWVyLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY1MzsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChsb2NhdGlvbl8uTG9jYXRpb24uYmFpbGxldXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clNvY2lhbCBjb252ZW50aW9uXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb252ZW50aW9uXy5Db252ZW50aW9uQmFpbGxldXJTb2NpYWwuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsIGNvbnZlbnRpb25fIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnZlbnRpb25fLkNvbnZlbnRpb25BTkhBLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfSUlfY2hhcF9JX3NlY18zKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjIzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyNjsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV8xXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzFcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfMV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM2NDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNjQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IGRlY2ltYWwgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgIFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzczOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTM3MzsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM4NDsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzczOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTM3MzsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgIFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVwiXSAoZW1iZWRfaW50ZWdlcikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM3Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zNzI7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM4Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODI7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzcyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTM3MjsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lcIl0gKGVtYmVkX2Jvb2wpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM3MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zNzE7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzcxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzcxOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU5NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTk2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZCBjb25kaXRpb25fbG9nZW1lbnRfYmFpbGxldXJfXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZCBjb25kaXRpb25fbG9nZW1lbnRfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZWxpZ2liaWxpdGVfKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzcxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTM3MTsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNzE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzcxOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7RWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LmRhdGVfY291cmFudGUgPSBkYXRlX2NvdXJhbnRlXztcbiAgICAgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LmVsaWdpYmlsaXRlID0gZWxpZ2liaWxpdGVfO1xuICAgICBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlID1cbiAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfO1xuICAgICBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSA9XG4gICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV99XG5cbmxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IChlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLnQpIDogRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudCA9XG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBtZW5hZ2VfOiBNZW5hZ2UudCA9IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5tZW5hZ2VfaW4gaW5cbiAgbGV0IGRlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmRlbWFuZGV1cl9pbiBpblxuICBsZXQgYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF86IGJvb2wgPSBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBpblxuICBsZXQgZHVyZWVfbDg0MV8xXzNfOiBkdXJhdGlvbiA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJkdXLDqWVfbDg0MV8xXzNcIl0gKGVtYmVkX2R1cmF0aW9uKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDA1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQwNTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTgwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxODA7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZHVyYXRpb25fb2ZfbnVtYmVycyAoNSkgKDApICgwKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDA1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQwNTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQyMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MjE7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcHJlc3RhdGlvbl9jb3VyYW50ZV86IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5wcmVzdGF0aW9uX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQyMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MjI7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQyMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MjI7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uc0ZhbWlsaWFsZXMgKCkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDIyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5yw6lzaWRlbmNlXCJdIChlbWJlZF9jb2xsZWN0aXZpdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDI2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDI2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl1cbiAgICBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzKVxuICAgICh7RWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucHJlc3RhdGlvbl9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcHJlc3RhdGlvbl9jb3VyYW50ZV87XG4gICAgICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucmVzaWRlbmNlX2luID1cbiAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNpZGVuY2VffSkpKSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvaXRfb3V2ZXJ0XzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZHJvaXRfb3V2ZXJ0IGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9jb25kaXRpb25zX2hvcnNfYWdlXzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmNvbmRpdGlvbnNfaG9yc19hZ2UgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2FnZV9sNTEyXzNfMl86IGR1cmF0aW9uID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5hZ2VfbDUxMl8zXzIgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXzogYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucmVnaW1lX291dHJlX21lcl9sNzUxXzEgaW5cbiAgbGV0IGNvbmRpdGlvbl9hY2Nlc3Npb25fcHJvcHJpZXRlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJjb25kaXRpb25fYWNjZXNzaW9uX3Byb3ByacOpdMOpXCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MDI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDAyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwMjsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwMjsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwMjsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM3MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM3ODsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5EZW1hbmRldXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzNjE7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGFpcmVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LnRpdHVsYWlyZV9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5EZW1hbmRldXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMzOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzNDY7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGFpcmVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LnRpdHVsYWlyZV9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LkRlbWFuZGV1ciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMwOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDMxMTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODQyLTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+IHRydWUpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MDI7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQwMjsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUubcOpbmFnZVwiXVxuICAgICAgKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00Mjg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDI4OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mjg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDI4OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbWVuYWdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Mjg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDI4OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuZGVtYW5kZXVyXCJdXG4gICAgICAoZW1iZWRfZGVtYW5kZXVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQyOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mjk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQyOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mjk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQyOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mjk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQzMDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MzA7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQzMDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MzA7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MzA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDMwOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV86IFxuICAgIHVuaXQgLT4gYm9vbCA9IGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmNvbmRpdGlvbl9sb2dlbWVudF9yw6lzaWRlbmNlX3ByaW5jaXBhbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKVxuICAgICAgICAgICAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc3ODsgc3RhcnRfY29sdW1uPTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ3Nzg7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc3ODsgc3RhcnRfY29sdW1uPTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ3Nzg7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBsb2dlbWVudF9mb3llcl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2VtZW50X2ZveWVyXy5Mb2dlbWVudEZveWVyLmNvbnN0cnVpdF9hcHBsaWNhdGlvbl9sb2lfMTk1N18xMl9JSUkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPiBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfOiB1bml0IC0+IGJvb2wgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZVwiXSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ3Nzk7IHN0YXJ0X2NvbHVtbj05OyBlbmRfbGluZT00Nzc5OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODQyLTE0XCI7IFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3Nzk7IHN0YXJ0X2NvbHVtbj05OyBlbmRfbGluZT00Nzc5OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODQyLTE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIChtYXRjaCAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBsb2dlbWVudF9mb3llcl8gLT5cbiAgICAgICAgICAgICAgICAgKGxvZ2VtZW50X2ZveWVyXy5Mb2dlbWVudEZveWVyLmNvbnN0cnVpdF9hcHBsaWNhdGlvbl9sb2lfMTk1N18xMl9JSUkpXG4gICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPiBmYWxzZSkpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpKSBpblxuICBsZXQgcmVzdWx0XzogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmVcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICh7RWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5tZW5hZ2VfaW4gPVxuICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9tZW5hZ2VfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGVtYW5kZXVyXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX30pKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5kYXRlX2NvdXJhbnRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmVsaWdpYmlsaXRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fMl9yODIzXzRfOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5jb25kaXRpb25fMl9yODIzXzQgaW5cbiAgbGV0IGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBkZWNpbWFsIGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbCkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MTU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDE1OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDM0OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MTU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDE1OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXzogaW50ZWdlciA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgIFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVwiXSAoZW1iZWRfaW50ZWdlcikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQxNDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MTQ7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQzMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MzI7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDE0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQxNDsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2Rpc3Bvc2l0aW9uc19jb21tdW5lc186IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgXCLDqWxpZ2liaWxpdMOpX2Rpc3Bvc2l0aW9uc19jb21tdW5lc1wiXVxuICAgIChlbWJlZF90eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDEyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTg0Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04NDM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX29yIChvX25vdCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9lbGlnaWJpbGl0ZV8pXG4gICAgICAgICAgICAgICAgIChvX25vdCBjb25kaXRpb25fYWNjZXNzaW9uX3Byb3ByaWV0ZV8pKSB0aGVuXG4gICAgICAgICAgICAgIChUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgKCkpIGVsc2VcbiAgICAgICAgICAgICAgKFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlICgpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDEyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQxMjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZmFtaWxpYWxlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgIFwiw6lsaWdpYmlsaXTDqV9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZhbWlsaWFsZVwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQwNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MDQ7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA0OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDQ7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDQ7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA0OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA0OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDA2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDEwOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UuZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLk1hcmllcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwNDsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwNDsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA0OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05ODM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTk0OyBlbmRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBcnRpY2xlIEw4NDEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIHBhcmVudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmFzY2VuZGFudF9kZXNjZW5kYW50X2NvbGxhdGVyYWxfZGV1eGllbWVfdHJvaXNpZW1lX2RlZ3JlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5pbmNhcGFjaXRlXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk2NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk2NzsgZW5kX2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgTDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25fMl9yODIzXzRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fMl9yODIzXzRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25fMl9yODIzXzRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX3BlcnNvbm5lX2FfY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzb25uZV9hX2NoYXJnZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTI1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTUxOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV9hX2NoYXJnZV86XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlcnNvbm5lQUNoYXJnZS50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3QgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuaWRlbnRpZmlhbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmlkZW50aWZpYW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2Uub2JsaWdhdGlvbl9zY29sYWlyZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZGF0ZV9kZV9uYWlzc2FuY2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucHJpc2VfZW5fY2hhcmdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuUGFzRGVHYXJkZUFsdGVybmVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaXNlRW5DaGFyZ2VFbmZhbnQuRWZmZWN0aXZlRXRQZXJtYW5lbnRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlRW5mYW50LkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KX0pKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIGRhdGVfbWFyaWFnZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXIgQWJvcnRPblJvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfbWFyaWFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyZWVfbDg0MV8xXzNfKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04OTM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTE0OyBlbmRfY29sdW1uPTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlcnNvbm5lQUNoYXJnZS50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7RW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmlkZW50aWZpYW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuaWRlbnRpZmlhbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLm9ibGlnYXRpb25fc2NvbGFpcmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRhdGVfZGVfbmFpc3NhbmNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5kYXRlX2RlX25haXNzYW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucHJpc2VfZW5fY2hhcmdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2Uuc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLlBhc0RlR2FyZGVBbHRlcm5lZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaXNlRW5DaGFyZ2VFbmZhbnQuRWZmZWN0aXZlRXRQZXJtYW5lbnRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaXNlRW5DaGFyZ2VFbmZhbnQuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQpfSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg3Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODc4OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2ZvbGRcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoYWNjXzogYm9vbCkgKHByZXN0YXRpb25fOiBQcmVzdGF0aW9uUmVjdWUudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb19vciBhY2NfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBwcmVzdGF0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvbnNGYW1pbGlhbGVzICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHByZXN0YXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByZXN0YXRpb25SZWN1ZS5Db21wbGVtZW50RmFtaWxpYWwgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcHJlc3RhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcHJlc3RhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnByZXN0YXRpb25zX3JlY3VlcykpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MDQ7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDA0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQwNDsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2w4NDFfMl86IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfbDg0MV8yXCJdXG4gICAgKGVtYmVkX3R5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQxMzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00MTM7IGVuZF9jb2x1bW49MTY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDEzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDEzOyBlbmRfY29sdW1uPTE2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDEzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTM7IGVuZF9jb2x1bW49MTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTI4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExMjg7IGVuZF9jb2x1bW49NzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbWFuZGV1cl8uRGVtYW5kZXVyLnBlcnNvbm5lX2hlYmVyZ2VlX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3NlY3VyaXRlX3NvY2lhbGUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDEzOyBlbmRfY29sdW1uPTE2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE0MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTQ0OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGFpcmVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQuZGF0ZV9zaWduYXR1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSAoKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDM3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwMzc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgKG9fZXEgZWxpZ2liaWxpdGVfZGlzcG9zaXRpb25zX2NvbW11bmVzX1xuICAgICAgICAgICAgICAgICAgICAoVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlICgpKSlcbiAgICAgICAgICAgICAgICAgYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF8pIHRoZW5cbiAgICAgICAgICAgICAgKFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSAoKSkgZWxzZVxuICAgICAgICAgICAgICAoIGlmIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZmFtaWxpYWxlXyB0aGVuXG4gICAgICAgICAgICAgICAgIChUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXG4gICAgICAgICAgICAgICAgICAgICgpKSBlbHNlXG4gICAgICAgICAgICAgICAgIChUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVxuICAgICAgICAgICAgICAgICAgICAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MTM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDEzOyBlbmRfY29sdW1uPTE2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7RWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuZWxpZ2liaWxpdGUgPSBlbGlnaWJpbGl0ZV9sODQxXzJfO1xuICAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgPVxuICAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVffVxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi50KSA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudC50ID1cbiAgbGV0IG1vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlXzogU2l0dWF0aW9uRmFtaWxpYWxlLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHpvbmVfOiBab25lREhhYml0YXRpb24udCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnpvbmVfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4udHlwZV9haWRlX2luIGluXG4gIGxldCBjYXRlZ29yaWVfY2FsY3VsX2FwbF86IENhdGVnb3JpZUNhbGN1bEFQTC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwiY2F0w6lnb3JpZV9jYWxjdWxfYXBsXCJdXG4gICAgKGVtYmVkX2NhdGVnb3JpZV9jYWxjdWxfYV9wX2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDAwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMDA7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQwMzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIGxvY2F0aW9uXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gbG9jYXRpb25fKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgbG9nZW1lbnRmb3llcl8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvZ2VtZW50Rm95ZXIgbG9nZW1lbnRmb3llcl8pXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlIHByb3ByaWV0YWlyZV8pXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgbG9jYXRpb25fIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiBsb2NhdGlvbl8pXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSBwcm9wcmlldGFpcmVfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDAwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwicmVzc291cmNlc19tw6luYWdlX2F2ZWNfYXJyb25kaVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk5Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05OTM7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4MjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgyMTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAob19yb3VuZF9tb25cbiAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMVwiKSkgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICBcIjQ5XCIpKSkgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTkzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk5MzsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAwMTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTg4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg4OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLlBhY3NlcyBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbnMgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKCkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDAxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMDE7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc291c19jYWxjdWxfdHJhaXRlbWVudF86IFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwic291c19jYWxjdWxfdHJhaXRlbWVudFwiXVxuICAgIChlbWJlZF90cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDAzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMDM7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mjg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTUyODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIGxvY2F0aW9uXyAtPlxuICAgICAgICAgICAgICAgIChsZXQgdHJhaXRlbWVudF9mb3JtdWxlXyA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudFxuICAgICAgICAgICAgICAgICAgID1cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxveWVyX3ByaW5jaXBhbCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTM4OyBzdGFydF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTM4OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MzM7IHN0YXJ0X2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzMzsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhdGlvbl8uTG9jYXRpb24uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU0MDsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTQwOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgZGF0ZV9jb3VyYW50ZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTM2OyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MzY7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MzQ7IHN0YXJ0X2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzNDsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mzc7IHN0YXJ0X2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzNzsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi56b25lX2luID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB6b25lXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MzU7IHN0YXJ0X2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzNTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxvZ2VtZW50X2VzdF9jaGFtYnJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU0MTsgc3RhcnRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTQxOyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25fLkxvY2F0aW9uLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU0NDsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTQ0OyBlbmRfY29sdW1uPTgwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgdHlwZV9haWRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NDU7IHN0YXJ0X2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU0NTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmNvbG9jYXRpb24pIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU0Mjsgc3RhcnRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTQyOyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGxvY2F0aW9uXy5Mb2NhdGlvbi5iYWlsbGV1cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJTb2NpYWwgYmFpbGxldXJfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYWlsbGV1cl8uQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX3BlcmN1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyUHJpdmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NDc7IHN0YXJ0X2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU1MDsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2NhdGlvbl8uTG9jYXRpb24ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NTE7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU1MTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2F0aW9uXy5Mb2NhdGlvbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NTI7IHN0YXJ0X2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU1MjsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSl9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW0wXzogbW9uZXkpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbTBfKSkpKSkpKX0pXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmKVxuICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MzI7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTUzOyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIHRoZW4gcmVzdWx0XyBlbHNlIChyYWlzZSBFbXB0eUVycm9yKSkpKSkpKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICh7VHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgbG9nZW1lbnRfZm95ZXJfXyAtPlxuICAgICAgICAgICAgICAgIChsZXQgdHJhaXRlbWVudF9mb3JtdWxlXyA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQgPVxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImRpcmVjdFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luKVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgKGxvZ2VtZW50X2ZveWVyX18uTG9nZW1lbnRGb3llci50eXBlX3VzZXIpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYwNTsgc3RhcnRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYwNTsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmRhdGVfY29udmVudGlvbm5lbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2VtZW50X2ZveWVyX18uTG9nZW1lbnRGb3llci5kYXRlX2NvbnZlbnRpb25uZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjA2OyBzdGFydF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MDY7IGVuZF9jb2x1bW49NzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnJlZGV2YW5jZV9pbiA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgKGxvZ2VtZW50X2ZveWVyX18uTG9nZW1lbnRGb3llci5yZWRldmFuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjAyOyBzdGFydF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MDI7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGlfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5Nzsgc3RhcnRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTk3OyBlbmRfY29sdW1uPTYwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5ODsgc3RhcnRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTk4OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MDE7IHN0YXJ0X2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYwMTsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uem9uZV9pbiA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgem9uZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTk5OyBzdGFydF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1OTk7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgZGF0ZV9jb3VyYW50ZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjAwOyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MDA7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfXy5Mb2dlbWVudEZveWVyLmNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYwNDsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjA0OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKX0pKSkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIubG95ZXJfbWluaW1hbCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIubG95ZXJfbWluaW1hbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChwYXJhbTBfOiBtb25leSkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW0wXykpKSkpKSl9KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGwgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJkaXJlY3RcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIpXG4gICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5Njsgc3RhcnRfY29sdW1uPTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MDc7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkgdGhlbiByZXN1bHRfIGVsc2UgKHJhaXNlIEVtcHR5RXJyb3IpKSkpKSkpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKHtUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGFpcmVfIC0+XG4gICAgICAgICAgICAgICAgKGxldCB0cmFpdGVtZW50X2Zvcm11bGVfIDpcbiAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDpcbiAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MTg7IHN0YXJ0X2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MTg7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MTk7IHN0YXJ0X2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYxOTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYyMjsgc3RhcnRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjIyOyBlbmRfY29sdW1uPTc3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uem9uZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSB6b25lXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MjA7IHN0YXJ0X2NvbHVtbj0yMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYyMDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgZGF0ZV9jb3VyYW50ZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjIxOyBzdGFydF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MjE7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5tZW5zdWFsaXRlX3ByaW5jaXBhbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjIzOyBzdGFydF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MjM7IGVuZF9jb2x1bW49NzI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYzMTsgc3RhcnRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjMxOyBlbmRfY29sdW1uPTc2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYyNjsgc3RhcnRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjI2OyBlbmRfY29sdW1uPTY4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MjU7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYyNTsgZW5kX2NvbHVtbj03OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2Mjg7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYyODsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUuZGF0ZV9lbnRyZWVfbG9nZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjI5OyBzdGFydF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2Mjk7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmNoYXJnZXNfbWVuc3VlbGxlc19wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYyNDsgc3RhcnRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjI0OyBlbmRfY29sdW1uPTc2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY29wcm9wcmlldGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmNvcHJvcHJpZXRlKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MzA7IHN0YXJ0X2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYzMDsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSl9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDpcbiAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBhcmFtMF86IG1vbmV5KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW0wXykpKSkpKSl9KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImRpcmVjdFwiO1xuICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSlcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjE3OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MzI7IGVuZF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkgdGhlbiByZXN1bHRfIGVsc2UgKHJhaXNlIEVtcHR5RXJyb3IpKSkpKSkpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKHtUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIGxvY2F0aW9uXyAtPlxuICAgICAgICAgICAgICAgIChsZXQgdHJhaXRlbWVudF9mb3JtdWxlXyA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudFxuICAgICAgICAgICAgICAgICAgID1cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxveWVyX3ByaW5jaXBhbCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTcwOyBzdGFydF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTcwOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NjU7IHN0YXJ0X2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2NTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhdGlvbl8uTG9jYXRpb24uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3Mjsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTcyOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgZGF0ZV9jb3VyYW50ZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTY4OyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1Njg7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NjY7IHN0YXJ0X2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2NjsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Njk7IHN0YXJ0X2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2OTsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi56b25lX2luID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB6b25lXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Njc7IHN0YXJ0X2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2NzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxvZ2VtZW50X2VzdF9jaGFtYnJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3Mzsgc3RhcnRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTczOyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25fLkxvY2F0aW9uLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3Njsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTc2OyBlbmRfY29sdW1uPTgwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgdHlwZV9haWRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Nzc7IHN0YXJ0X2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3NzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmNvbG9jYXRpb24pIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3NDsgc3RhcnRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTc0OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGxvY2F0aW9uXy5Mb2NhdGlvbi5iYWlsbGV1cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJTb2NpYWwgYmFpbGxldXJfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYWlsbGV1cl8uQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX3BlcmN1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyUHJpdmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Nzk7IHN0YXJ0X2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4MjsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2NhdGlvbl8uTG9jYXRpb24ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODM7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4MzsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2F0aW9uXy5Mb2NhdGlvbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODQ7IHN0YXJ0X2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4NDsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSl9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW0wXzogbW9uZXkpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbTBfKSkpKSkpKX0pXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmKVxuICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NjQ7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTg1OyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIHRoZW4gcmVzdWx0XyBlbHNlIChyYWlzZSBFbXB0eUVycm9yKSkpKSkpKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICh7VHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBwcm9wcmlldGFpcmVfIC0+XG4gICAgICAgICAgICAgICAgKGxldCB0cmFpdGVtZW50X2Zvcm11bGVfIDpcbiAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDpcbiAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NDU7IHN0YXJ0X2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NDU7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NDY7IHN0YXJ0X2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY0NjsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY0OTsgc3RhcnRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjQ5OyBlbmRfY29sdW1uPTc3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uem9uZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSB6b25lXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NDc7IHN0YXJ0X2NvbHVtbj0yMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY0NzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgZGF0ZV9jb3VyYW50ZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjQ4OyBzdGFydF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NDg7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5tZW5zdWFsaXRlX3ByaW5jaXBhbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjUwOyBzdGFydF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NTA7IGVuZF9jb2x1bW49NzI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY1ODsgc3RhcnRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjU4OyBlbmRfY29sdW1uPTc2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY1Mzsgc3RhcnRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjUzOyBlbmRfY29sdW1uPTY4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTI7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY1MjsgZW5kX2NvbHVtbj03OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTU7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY1NTsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUuZGF0ZV9lbnRyZWVfbG9nZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjU2OyBzdGFydF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NTY7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmNoYXJnZXNfbWVuc3VlbGxlc19wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY1MTsgc3RhcnRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjUxOyBlbmRfY29sdW1uPTc2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY29wcm9wcmlldGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmNvcHJvcHJpZXRlKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTc7IHN0YXJ0X2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY1NzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSl9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDpcbiAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBhcmFtMF86IG1vbmV5KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW0wXykpKSkpKSl9KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImRpcmVjdFwiO1xuICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSlcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjQ0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NTk7IGVuZF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkgdGhlbiByZXN1bHRfIGVsc2UgKHJhaXNlIEVtcHR5RXJyb3IpKSkpKSkpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKHtUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDAzOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYXJnXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAwNjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMDY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MTY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDE2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAoc291c19jYWxjdWxfdHJhaXRlbWVudF8uVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpXG4gICAgICAgICAgICAgICAgICAgYXJnXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0xMDA2OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwMDY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAwNjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDA2OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImFpZGVfZmluYWxlX2Zvcm11bGVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAwNTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDA1OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDE0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0MTQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBzb3VzX2NhbGN1bF90cmFpdGVtZW50Xy5UcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAwNTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDA1OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlID0gYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudC50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX31cblxubGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQgKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW46IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi50KSA6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudCA9XG4gIGxldCBtZW5hZ2VfOiBNZW5hZ2UudCA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IG1vbmV5ID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYWxsb2NhdGlvbl9sb2dlbWVudC5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA4NjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA4NjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnQubcOpbmFnZVwiXSAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA3ODsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzg7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA3ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDc4OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYWxsb2NhdGlvbl9sb2dlbWVudC5kZW1hbmRldXJcIl0gKGVtYmVkX2RlbWFuZGV1cilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDgyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODI7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDgyOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwODI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA4MjsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2JlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnQuYsOpbsOpZmljaWVfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudFwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDUzOyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9MTA1MzsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTM7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMDUzOyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA1Mzsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTEwNTM7IGVuZF9jb2x1bW49NzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiOyBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfYWxsb2NhdGlvbl9sb2dlbWVudFwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9hbGxvY2F0aW9uX2xvZ2VtZW50XCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIl0gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudClcbiAgICAoe0VsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfbWVuYWdlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2RlbWFuZGV1cl87XG4gICAgICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF99KSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV9sODQxXzJfOiBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuZWxpZ2liaWxpdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IFxuICAgIGRlY2ltYWwgYXJyYXkgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfbWVuYWdlXzogTWVuYWdlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5tw6luYWdlXCJdIChlbWJlZF9tZW5hZ2UpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDc2OyBlbmRfY29sdW1uPTYwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA3NjsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbWVuYWdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDc2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzY7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQuZGVtYW5kZXVyXCJdXG4gICAgICAoZW1iZWRfZGVtYW5kZXVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA4MDsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDgwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODA7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlbWFuZGV1cl8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDgwOyBlbmRfY29sdW1uPTYzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50LmRhdGVfY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA4NDsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDg0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODQ7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwODQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA4NDsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgIFwiw6lsaWdpYmlsaXTDqV9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50XCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgXCLDqWxpZ2liaWxpdMOpX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnRcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCJdXG4gICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50KVxuICAgICh7RWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ubWVuYWdlX2luID1cbiAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9tZW5hZ2VfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZGVtYW5kZXVyXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlX30pKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5kYXRlX2NvdXJhbnRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlXzogYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LmVsaWdpYmlsaXRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IFxuICAgIGRlY2ltYWwgYXJyYXkgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfbW9kZV9vY2N1cGF0aW9uXzogTW9kZU9jY3VwYXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uXCJdIChlbWJlZF9tb2RlX29jY3VwYXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDkwOyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwOTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5MDsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA5MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDkwOyBlbmRfY29sdW1uPTU2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudC5yZXNzb3VyY2VzX23DqW5hZ2Vfc2Fuc19hcnJvbmRpXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDk0OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwOTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5NDsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA5NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDk0OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfOiBTaXR1YXRpb25GYW1pbGlhbGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQuc2l0dWF0aW9uX2ZhbWlsaWFsZVwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDk4OyBlbmRfY29sdW1uPTYwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwOTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5ODsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbWVuYWdlXy5NZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDk4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTg7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdXG4gICAgICAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTA1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMDU7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTA1OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTA1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMDU7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3Rfem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudC56b25lXCJdXG4gICAgICAoZW1iZWRfem9uZV9kX2hhYml0YXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTA5OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExMDk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEwOTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC56b25lKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMDk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEwOTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTEzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMTM7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTExMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTEzOyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTEzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMTM7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudC50eXBlX2FpZGVcIl1cbiAgICAgIChlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDY5OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDY5OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfbDg0MV8yX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgXyAtPlxuICAgICAgICAgICAgICAgIChUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgKCkpXG4gICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgXyAtPlxuICAgICAgICAgICAgICAgIChUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSAoKSlcbiAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgXyAtPlxuICAgICAgICAgICAgICAgIChUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgKCkpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDY5OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjsgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcIjtcbiAgICAgIFwiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcIjtcbiAgICAgIFwiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCJdIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50KVxuICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4ubW9kZV9vY2N1cGF0aW9uX2luID1cbiAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X21vZGVfb2NjdXBhdGlvbl87XG4gICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV87XG4gICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlXztcbiAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi56b25lX2luID1cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3Rfem9uZV87XG4gICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4udHlwZV9haWRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfdHlwZV9haWRlX30pKSkgaW5cbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBpblxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfbW9kZV9vY2N1cGF0aW9uXzogTW9kZU9jY3VwYXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uXCJdXG4gICAgICAoZW1iZWRfbW9kZV9vY2N1cGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwODg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA4ODsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDg4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwODg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA4ODsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3R5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQudHlwZV9haWRlXCJdXG4gICAgICAoZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2NzsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2NzsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2NzsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7IFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfcmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50LnJlc3NvdXJjZXNfbcOpbmFnZV9zYW5zX2Fycm9uZGlcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDkyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTI7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDkyOyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDkyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTI7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlXzogU2l0dWF0aW9uRmFtaWxpYWxlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50LnNpdHVhdGlvbl9mYW1pbGlhbGVcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwOTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5NjsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDk2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTY7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA5Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDk2OyBlbmRfY29sdW1uPTY4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdXG4gICAgICAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTAxOyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9MTEwMTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTAxOyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9MTEwMTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTAxOyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9MTEwMTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQuem9uZVwiXSAoZW1iZWRfem9uZV9kX2hhYml0YXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTA3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExMDc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEwNzsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC56b25lKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMDc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEwNzsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTExMTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTExOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMTE7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTExMTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnRcIjtcbiAgICAgIFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudFwiO1xuICAgICAgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiXSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50KVxuICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X21vZGVfb2NjdXBhdGlvbl87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50eXBlX2FpZGVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3R5cGVfYWlkZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4gPVxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uem9uZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfem9uZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlX30pKSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXzogXG4gICAgbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBpblxuICBsZXQgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IGRlY2ltYWwgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICBcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNzI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTA3MjsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTE2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMTY7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDcyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwNzI7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpXCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2ODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDY4OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDU4OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19vciBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX1xuICAgICAgICAgICAgICAobWF0Y2ggZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfbDg0MV8yX1xuICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICB0cnVlKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA2ODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDY4OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzA7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDcwOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwOTY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDk2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV9hcGxfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV9hbF8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZiAob19ub3QgZWxpZ2liaWxpdGVfKSB0aGVuIGFpZGVfZmluYWxlXyBlbHNlXG4gICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfbDg0MV8yX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgKCBpZiAob19ndF9tb25fbW9uIGFpZGVfZmluYWxlX2FwbF8gYWlkZV9maW5hbGVfYWxfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIGFpZGVfZmluYWxlX2FwbF8gZWxzZSBhaWRlX2ZpbmFsZV9hbF8pIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIGFpZGVfZmluYWxlX2FwbF8gZWxzZSBhaWRlX2ZpbmFsZV9hbF8pKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0xMDcwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwNzA7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDcwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwNzA7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNjk7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTA2OTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA3OTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiAob19ub3QgZWxpZ2liaWxpdGVfKSB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV9cbiAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV9sODQxXzJfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkgdGhlblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXylcbiAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfXG4gICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV9cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA2OTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDY5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LmVsaWdpYmlsaXRlID0gZWxpZ2liaWxpdGVfO1xuICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LmFpZGVfZmluYWxlX2Zvcm11bGUgPSBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlXztcbiAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlID1cbiAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX31cblxubGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWUgKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW46IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4udCkgOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZS50ID1cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXzogbW9uZXkgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiBpblxuICBsZXQgbWVuYWdlX3NhbnNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV86IE1lbmFnZS50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICBcIm3DqW5hZ2Vfc2Fuc19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZVwiXSAoZW1iZWRfbWVuYWdlKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTEzNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTM1OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNjc7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAge01lbmFnZS5wcmVzdGF0aW9uc19yZWN1ZXMgPSAobWVuYWdlXy5NZW5hZ2UucHJlc3RhdGlvbnNfcmVjdWVzKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5sb2dlbWVudCA9IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCk7XG4gICAgICAgICAgICAgICBNZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlID1cbiAgICAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgIChmdW4gKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLlBhc0RlR2FyZGVBbHRlcm5lZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCA9XG4gICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCk7XG4gICAgICAgICAgICAgICBNZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZSA9XG4gICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5jb25kaXRpb25fcmF0dGFjaGVfZm95ZXJfZmlzY2FsX3BhcmVudF9pZmkgPVxuICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UuY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5lbmZhbnRfYV9uYWl0cmVfYXByZXNfcXVhdHJpZW1lX21vaXNfZ3Jvc3Nlc3NlID1cbiAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmVuZmFudF9hX25haXRyZV9hcHJlc19xdWF0cmllbWVfbW9pc19ncm9zc2Vzc2UpfSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTEzNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTM1OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfbWVuYWdlXzogTWVuYWdlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiY2FsY3VsZXR0ZS5tw6luYWdlXCJdXG4gICAgICAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE0NjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE0Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTQ2OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbWVuYWdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTQ2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNDY7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiY2FsY3VsZXR0ZS5kZW1hbmRldXJcIl1cbiAgICAgIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE0ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTQ4OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTQ4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNDg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNDg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE0ODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCJjYWxjdWxldHRlLmRhdGVfY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE1MDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE1MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTUwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE1MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTUwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bGV0dGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgICAgXCJjYWxjdWxldHRlLnJlc3NvdXJjZXNfbcOpbmFnZV9wcmlzZXNfZW5fY29tcHRlXCJdIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTUyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTI7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE1MjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE1MjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiY2FsY3VsZXR0ZVwiO1xuICAgICAgXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCJjYWxjdWxldHRlXCI7XG4gICAgICBcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIl0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudClcbiAgICAoe0NhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5tZW5hZ2VfaW4gPSBjYWxjdWxldHRlX2RvdF9tZW5hZ2VfO1xuICAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID0gY2FsY3VsZXR0ZV9kb3RfZGVtYW5kZXVyXztcbiAgICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGNhbGN1bGV0dGVfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiA9XG4gICAgICAgICAgY2FsY3VsZXR0ZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV99KSkpIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuZWxpZ2liaWxpdGUgaW5cbiAgbGV0IGNhbGN1bGV0dGVfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IFxuICAgIGRlY2ltYWwgYXJyYXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9tZW5hZ2VfOiBNZW5hZ2UudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgICAgXCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuw6llLm3DqW5hZ2VcIl0gKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTU0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTQ7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE1NDsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV9zYW5zX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE1NDsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgICBcImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm7DqWUuZGVtYW5kZXVyXCJdIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE1Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTU2OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTU2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTY7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE1NjsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgICBcImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm7DqWUuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTU4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTg7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE1ODsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE1ODsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgICAgXCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuw6llLnJlc3NvdXJjZXNfbcOpbmFnZV9wcmlzZXNfZW5fY29tcHRlXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2MTsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTExNjE7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjE7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMTYxOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE2MTsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTExNjE7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgXCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuw6llXCI7IFwiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiXVxuICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgIFwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybsOpZVwiOyBcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIl1cbiAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50KVxuICAgICh7Q2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfbWVuYWdlXztcbiAgICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiA9XG4gICAgICAgICAgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9kZW1hbmRldXJfO1xuICAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4gPVxuICAgICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV99KSkpIGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2VsaWdpYmlsaXRlXzogYm9vbCA9IHJlc3VsdF8uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5lbGlnaWJpbGl0ZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXzogbW9uZXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uZXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogXG4gICAgZGVjaW1hbCBhcnJheSA9IHJlc3VsdF8uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCLDqWxpZ2liaWxpdMOpXCJdIChlbWJlZF9ib29sKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTQyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTExNDI7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExOTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE5MzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNhbGN1bGV0dGVfZG90X2VsaWdpYmlsaXRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE0Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMTQyOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IGRlY2ltYWwgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgIFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTEzNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTM2OyBlbmRfY29sdW1uPTYwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNjU7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgY2FsY3VsZXR0ZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEzNjsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCJhaWRlX2ZpbmFsZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNDM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTE0MzsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI4NDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNvbnNlaWwgZCfDiXRhdCwgNcOobWUgLSA0w6htZSBjaGFtYnJlcyByw6l1bmllcywgMjEvMDcvMjAxNywgMzk4NTYzXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgIGNhbGN1bGV0dGVfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV9cbiAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfKVxuICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBjYWxjdWxldHRlX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXylcbiAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAob19yZWR1Y2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHN1bTFfOiBkZWNpbWFsKSAoc3VtMl86IGRlY2ltYWwpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9yYXRfcmF0IHN1bTFfIHN1bTJfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfKSkpKSkpKSkpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTQzOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTExNDM7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZS5lbGlnaWJpbGl0ZSA9IGVsaWdpYmlsaXRlXztcbiAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUuYWlkZV9maW5hbGUgPSBhaWRlX2ZpbmFsZV99XG4iLCIoKiogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSB0aGUgQ2F0YWxhIGNvbXBpbGVyLCBkbyBub3QgZWRpdCEgKilcblxub3BlbiBSdW50aW1lX29jYW1sLlJ1bnRpbWVcbm9wZW4gUnVudGltZV9qc29vLlJ1bnRpbWVcbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4gQWlkZXNfbG9nZW1lbnRcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItNC0yNi0yNy0zMi00MS00MlwiXVxuXG4oKiBHZW5lcmF0ZWQgQVBJICopXG5cbmNsYXNzIHR5cGUgdHlwZV9wcmV0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRDMzMV8zMlwiXG4gICAgICAgIC0gXCJEMzMxXzYzXzY0XCJcbiAgICAgICAgLSBcIkQzMzFfNTlfOFwiXG4gICAgICAgIC0gXCJEMzMxXzc2XzFcIlxuICAgICAgICAtIFwiQXV0cmVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0eXBlX3ByZXRfdG9fanNvbyA6IFR5cGVQcmV0LnQgLT4gdHlwZV9wcmV0IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEQzMzFfMzIgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEMzMxXzMyXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRDMzMV82M182NCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkQzMzFfNjNfNjRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBEMzMxXzU5XzggYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEMzMxXzU5XzhcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBEMzMxXzc2XzEgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEMzMxXzc2XzFcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBdXRyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkF1dHJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0eXBlX3ByZXRfb2ZfanNvbyAodHlwZV9wcmV0IDogdHlwZV9wcmV0IEpzLnQpIDogVHlwZVByZXQudCA9XG4gIG1hdGNoIHR5cGVfcHJldCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkQzMzFfMzJcIiAtPiBUeXBlUHJldC5EMzMxXzMyICgpXG4gIHwgXCJEMzMxXzYzXzY0XCIgLT4gVHlwZVByZXQuRDMzMV82M182NCAoKVxuICB8IFwiRDMzMV81OV84XCIgLT4gVHlwZVByZXQuRDMzMV81OV84ICgpXG4gIHwgXCJEMzMxXzc2XzFcIiAtPiBUeXBlUHJldC5EMzMxXzc2XzEgKClcbiAgfCBcIkF1dHJlXCIgLT4gVHlwZVByZXQuQXV0cmUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1R5cGVQcmV0LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHRpdHVsYWlyZV9wcmV0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRGVtYW5kZXVyXCJcbiAgICAgICAgLSBcIlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb25cIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0aXR1bGFpcmVfcHJldF90b19qc29vIDogVGl0dWxhaXJlUHJldC50IC0+IHRpdHVsYWlyZV9wcmV0IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IERlbWFuZGV1ciBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkRlbWFuZGV1clwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJWZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0aXR1bGFpcmVfcHJldF9vZl9qc29vICh0aXR1bGFpcmVfcHJldCA6IHRpdHVsYWlyZV9wcmV0IEpzLnQpXG4gIDogVGl0dWxhaXJlUHJldC50ID1cbiAgbWF0Y2ggdGl0dWxhaXJlX3ByZXQjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJEZW1hbmRldXJcIiAtPiBUaXR1bGFpcmVQcmV0LkRlbWFuZGV1ciAoKVxuICB8IFwiVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvblwiIC0+XG4gICAgVGl0dWxhaXJlUHJldC5WZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUaXR1bGFpcmVQcmV0LnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMVwiXG4gICAgICAgIC0gXCJUcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yXCJcbiAgICAgICAgLSBcIlBhc0RlVHJhdmF1eFwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1X3RvX2pzb29cbiAgOiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQgLT4gdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzFcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBUcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMlwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBhc0RlVHJhdmF1eCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhc0RlVHJhdmF1eFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfb2ZfanNvb1xuICAodHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgOiB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSBKcy50KVxuICA6IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUudCA9XG4gIG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMVwiIC0+XG4gICAgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xICgpXG4gIHwgXCJUcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yXCIgLT5cbiAgICBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzIgKClcbiAgfCBcIlBhc0RlVHJhdmF1eFwiIC0+IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuUGFzRGVUcmF2YXV4ICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJPYmplY3RpZkRlY2VuY2VMb2dlbWVudFwiXG4gICAgICAgIC0gXCJQcmV2dURhbnNMaXN0ZVIzMjFfMTVcIlxuICAgICAgICAtIFwiQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjNcIlxuICAgICAgICAtIFwiUGFzRGVUcmF2YXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV90b19qc29vXG4gIDogVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQgLT4gdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBPYmplY3RpZkRlY2VuY2VMb2dlbWVudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUHJldnVEYW5zTGlzdGVSMzIxXzE1IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUHJldnVEYW5zTGlzdGVSMzIxXzE1XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82M1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBhc0RlVHJhdmF1eCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhc0RlVHJhdmF1eFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV9vZl9qc29vXG4gICh0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IDogdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSBKcy50KVxuICA6IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS50ID1cbiAgbWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50XCIgLT5cbiAgICBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgKClcbiAgfCBcIlByZXZ1RGFuc0xpc3RlUjMyMV8xNVwiIC0+XG4gICAgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSAoKVxuICB8IFwiQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjNcIiAtPlxuICAgIFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyAoKVxuICB8IFwiUGFzRGVUcmF2YXV4XCIgLT4gVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGFtZWxpb3JlX3Bhcl9vY2N1cGFudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk91aVwiXG4gICAgICAgIC0gXCJOb25cIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBhbWVsaW9yZV9wYXJfb2NjdXBhbnRfdG9fanNvb1xuICA6IEFtZWxpb3JlUGFyT2NjdXBhbnQudCAtPiBhbWVsaW9yZV9wYXJfb2NjdXBhbnQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgT3VpIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiT3VpXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTm9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTm9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBhbWVsaW9yZV9wYXJfb2NjdXBhbnRfb2ZfanNvb1xuICAoYW1lbGlvcmVfcGFyX29jY3VwYW50IDogYW1lbGlvcmVfcGFyX29jY3VwYW50IEpzLnQpXG4gIDogQW1lbGlvcmVQYXJPY2N1cGFudC50ID1cbiAgbWF0Y2ggYW1lbGlvcmVfcGFyX29jY3VwYW50IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiT3VpXCIgLT4gQW1lbGlvcmVQYXJPY2N1cGFudC5PdWkgKClcbiAgfCBcIk5vblwiIC0+IEFtZWxpb3JlUGFyT2NjdXBhbnQuTm9uICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdBbWVsaW9yZVBhck9jY3VwYW50LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGxpbWl0ZV90cmFuY2hlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiUmV2ZW51XCJcbiAgICAgICAgLSBcIkluZmluaVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGxpbWl0ZV90cmFuY2hlX3RvX2pzb28gOiBMaW1pdGVUcmFuY2hlLnQgLT4gbGltaXRlX3RyYW5jaGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUmV2ZW51IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUmV2ZW51XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGFyZykpXG4gICAgZW5kXG4gIHwgSW5maW5pIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiSW5maW5pXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBsaW1pdGVfdHJhbmNoZV9vZl9qc29vIChsaW1pdGVfdHJhbmNoZSA6IGxpbWl0ZV90cmFuY2hlIEpzLnQpXG4gIDogTGltaXRlVHJhbmNoZS50ID1cbiAgbWF0Y2ggbGltaXRlX3RyYW5jaGUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJSZXZlbnVcIiAtPlxuICBMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBsaW1pdGVfdHJhbmNoZSMjLnBheWxvYWQpKVxuICB8IFwiSW5maW5pXCIgLT4gTGltaXRlVHJhbmNoZS5JbmZpbmkgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0xpbWl0ZVRyYW5jaGUudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgbGltaXRlX3RyYW5jaGVfZGVjaW1hbCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlJldmVudVwiXG4gICAgICAgIC0gXCJJbmZpbmlcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX3RvX2pzb29cbiAgOiBMaW1pdGVUcmFuY2hlRGVjaW1hbC50IC0+IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWwgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUmV2ZW51IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUmV2ZW51XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcbiAgfCBJbmZpbmkgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJJbmZpbmlcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWxfb2ZfanNvb1xuICAobGltaXRlX3RyYW5jaGVfZGVjaW1hbCA6IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWwgSnMudClcbiAgOiBMaW1pdGVUcmFuY2hlRGVjaW1hbC50ID1cbiAgbWF0Y2ggbGltaXRlX3RyYW5jaGVfZGVjaW1hbCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlJldmVudVwiIC0+XG4gIExpbWl0ZVRyYW5jaGVEZWNpbWFsLlJldmVudSAoZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgbGltaXRlX3RyYW5jaGVfZGVjaW1hbCMjLnBheWxvYWQpKVxuICB8IFwiSW5maW5pXCIgLT4gTGltaXRlVHJhbmNoZURlY2ltYWwuSW5maW5pICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdMaW1pdGVUcmFuY2hlRGVjaW1hbC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBwcmVzdGF0aW9uX3JlY3VlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJcbiAgICAgICAgLSBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uSmV1bmVFbmZhbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uQWR1bHRlSGFuZGljYXBlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcHJlc3RhdGlvbl9yZWN1ZV90b19qc29vIDogUHJlc3RhdGlvblJlY3VlLnQgLT4gcHJlc3RhdGlvbl9yZWN1ZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb21wbGVtZW50RmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb21wbGVtZW50RmFtaWxpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uSmV1bmVFbmZhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uSmV1bmVFbmZhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvblNvdXRpZW5FbmZhbnRIYW5kaWNhcGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uQWR1bHRlSGFuZGljYXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcHJlc3RhdGlvbl9yZWN1ZV9vZl9qc29vIChwcmVzdGF0aW9uX3JlY3VlIDogcHJlc3RhdGlvbl9yZWN1ZSBKcy50KVxuICA6IFByZXN0YXRpb25SZWN1ZS50ID1cbiAgbWF0Y2ggcHJlc3RhdGlvbl9yZWN1ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiIC0+IFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uc0ZhbWlsaWFsZXMgKClcbiAgfCBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiIC0+IFByZXN0YXRpb25SZWN1ZS5Db21wbGVtZW50RmFtaWxpYWwgKClcbiAgfCBcIkFsbG9jYXRpb25KZXVuZUVuZmFudFwiIC0+IFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uSmV1bmVFbmZhbnQgKClcbiAgfCBcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIiAtPlxuICAgIFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkZhbWlsaWFsICgpXG4gIHwgXCJBbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZVwiIC0+XG4gICAgUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlICgpXG4gIHwgXCJBbGxvY2F0aW9uQWR1bHRlSGFuZGljYXBlXCIgLT5cbiAgICBQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUHJlc3RhdGlvblJlY3VlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHBhcmVudF9vdV9hdXRyZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlc1wiXG4gICAgICAgIC0gXCJBdXRyZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHBhcmVudF9vdV9hdXRyZV90b19qc29vIDogUGFyZW50T3VBdXRyZS50IC0+IHBhcmVudF9vdV9hdXRyZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuICB8IEF1dHJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXV0cmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHBhcmVudF9vdV9hdXRyZV9vZl9qc29vIChwYXJlbnRfb3VfYXV0cmUgOiBwYXJlbnRfb3VfYXV0cmUgSnMudClcbiAgOiBQYXJlbnRPdUF1dHJlLnQgPVxuICBtYXRjaCBwYXJlbnRfb3VfYXV0cmUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXNcIiAtPlxuICBQYXJlbnRPdUF1dHJlLkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlcyAoZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgcGFyZW50X291X2F1dHJlIyMucGF5bG9hZCkpXG4gIHwgXCJBdXRyZVwiIC0+IFBhcmVudE91QXV0cmUuQXV0cmUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1BhcmVudE91QXV0cmUudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiUGFzRGVHYXJkZUFsdGVybmVlXCJcbiAgICAgICAgLSBcIkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2VcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVfdG9fanNvb1xuICA6IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUudCAtPiBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUGFzRGVHYXJkZUFsdGVybmVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFzRGVHYXJkZUFsdGVybmVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2VcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlX29mX2pzb29cbiAgKHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSA6IHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSBKcy50KVxuICA6IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUudCA9XG4gIG1hdGNoIHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlBhc0RlR2FyZGVBbHRlcm5lZVwiIC0+IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuUGFzRGVHYXJkZUFsdGVybmVlICgpXG4gIHwgXCJHYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlXCIgLT5cbiAgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5HYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlIChkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1NpdHVhdGlvbkdhcmRlQWx0ZXJuZWUudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgcGFyZW50ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkFzY2VuZGFudFwiXG4gICAgICAgIC0gXCJEZXNjZW5kYW50XCJcbiAgICAgICAgLSBcIkNvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcGFyZW50ZV90b19qc29vIDogUGFyZW50ZS50IC0+IHBhcmVudGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQXNjZW5kYW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXNjZW5kYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRGVzY2VuZGFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkRlc2NlbmRhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBwYXJlbnRlX29mX2pzb28gKHBhcmVudGUgOiBwYXJlbnRlIEpzLnQpIDogUGFyZW50ZS50ID1cbiAgbWF0Y2ggcGFyZW50ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkFzY2VuZGFudFwiIC0+IFBhcmVudGUuQXNjZW5kYW50ICgpXG4gIHwgXCJEZXNjZW5kYW50XCIgLT4gUGFyZW50ZS5EZXNjZW5kYW50ICgpXG4gIHwgXCJDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZVwiIC0+XG4gICAgUGFyZW50ZS5Db2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUGFyZW50ZS50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkRhdGVEZU5haXNzYW5jZVwiXG4gICAgICAgIC0gXCJBdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlXCJcbiAgICAgICAgLSBcIkFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2VcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZV90b19qc29vXG4gIDogRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UudCAtPiBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBEYXRlRGVOYWlzc2FuY2UgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEYXRlRGVOYWlzc2FuY2VcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChkYXRlX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBBdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBcHJlc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZV9vZl9qc29vXG4gIChkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZVxuICAgIDogZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2UgSnMudClcbiAgOiBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS50ID1cbiAgbWF0Y2ggZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2UjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJEYXRlRGVOYWlzc2FuY2VcIiAtPlxuICBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS5EYXRlRGVOYWlzc2FuY2UgKGRhdGVfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSMjLnBheWxvYWQpKVxuICB8IFwiQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZVwiIC0+XG4gICAgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UuQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSAoKVxuICB8IFwiQXByZXNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZVwiIC0+XG4gICAgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UuQXByZXNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgem9uZV9kX2hhYml0YXRpb24gPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJab25lMVwiXG4gICAgICAgIC0gXCJab25lMlwiXG4gICAgICAgIC0gXCJab25lM1wiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gOiBab25lREhhYml0YXRpb24udCAtPiB6b25lX2RfaGFiaXRhdGlvbiBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBab25lMSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlpvbmUxXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgWm9uZTIgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJab25lMlwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFpvbmUzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiWm9uZTNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb28gKHpvbmVfZF9oYWJpdGF0aW9uIDogem9uZV9kX2hhYml0YXRpb24gSnMudClcbiAgOiBab25lREhhYml0YXRpb24udCA9XG4gIG1hdGNoIHpvbmVfZF9oYWJpdGF0aW9uIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiWm9uZTFcIiAtPiBab25lREhhYml0YXRpb24uWm9uZTEgKClcbiAgfCBcIlpvbmUyXCIgLT4gWm9uZURIYWJpdGF0aW9uLlpvbmUyICgpXG4gIHwgXCJab25lM1wiIC0+IFpvbmVESGFiaXRhdGlvbi5ab25lMyAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnWm9uZURIYWJpdGF0aW9uLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWwgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJPdWlBdmVjTG95ZXJPdUNoYXJnZXNcIlxuICAgICAgICAtIFwiTm9uXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF90b19qc29vXG4gIDogUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC50IC0+IHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWwgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgT3VpQXZlY0xveWVyT3VDaGFyZ2VzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiT3VpQXZlY0xveWVyT3VDaGFyZ2VzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGFyZykpXG4gICAgZW5kXG4gIHwgTm9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTm9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsX29mX2pzb29cbiAgKHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxcbiAgICA6IHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWwgSnMudClcbiAgOiBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLnQgPVxuICBtYXRjaCBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiT3VpQXZlY0xveWVyT3VDaGFyZ2VzXCIgLT5cbiAgUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC5PdWlBdmVjTG95ZXJPdUNoYXJnZXMgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbCMjLnBheWxvYWQpKVxuICB8IFwiTm9uXCIgLT4gUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC5Ob24gKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1BhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgdmVyc2VtZW50X2EgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJCYWlsbGV1clwiXG4gICAgICAgIC0gXCJCZW5lZmljaWFpcmVcIlxuICAgICAgICAtIFwiRXRhYmxpc3NlbWVudEhhYmlsaXRlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdmVyc2VtZW50X2FfdG9fanNvbyA6IFZlcnNlbWVudEEudCAtPiB2ZXJzZW1lbnRfYSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBCYWlsbGV1ciBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkJhaWxsZXVyXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQmVuZWZpY2lhaXJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQmVuZWZpY2lhaXJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRXRhYmxpc3NlbWVudEhhYmlsaXRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRXRhYmxpc3NlbWVudEhhYmlsaXRlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB2ZXJzZW1lbnRfYV9vZl9qc29vICh2ZXJzZW1lbnRfYSA6IHZlcnNlbWVudF9hIEpzLnQpIDogVmVyc2VtZW50QS50ID1cbiAgbWF0Y2ggdmVyc2VtZW50X2EjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJCYWlsbGV1clwiIC0+IFZlcnNlbWVudEEuQmFpbGxldXIgKClcbiAgfCBcIkJlbmVmaWNpYWlyZVwiIC0+IFZlcnNlbWVudEEuQmVuZWZpY2lhaXJlICgpXG4gIHwgXCJFdGFibGlzc2VtZW50SGFiaWxpdGVcIiAtPiBWZXJzZW1lbnRBLkV0YWJsaXNzZW1lbnRIYWJpbGl0ZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVmVyc2VtZW50QS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBkZXBlbnNlX2xvZ2VtZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiVG90YWxBbm51ZWxFY2hlYW5jZXNcIlxuICAgICAgICAtIFwiTWVuc3VhbGl0ZVwiXG4gICAgICAgIC0gXCJMb3llclwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGRlcGVuc2VfbG9nZW1lbnRfdG9fanNvbyA6IERlcGVuc2VMb2dlbWVudC50IC0+IGRlcGVuc2VfbG9nZW1lbnQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgVG90YWxBbm51ZWxFY2hlYW5jZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJUb3RhbEFubnVlbEVjaGVhbmNlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuICB8IE1lbnN1YWxpdGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNZW5zdWFsaXRlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGFyZykpXG4gICAgZW5kXG4gIHwgTG95ZXIgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJMb3llclwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgZGVwZW5zZV9sb2dlbWVudF9vZl9qc29vIChkZXBlbnNlX2xvZ2VtZW50IDogZGVwZW5zZV9sb2dlbWVudCBKcy50KVxuICA6IERlcGVuc2VMb2dlbWVudC50ID1cbiAgbWF0Y2ggZGVwZW5zZV9sb2dlbWVudCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlRvdGFsQW5udWVsRWNoZWFuY2VzXCIgLT5cbiAgRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIChKcy5VbnNhZmUuY29lcmNlIGRlcGVuc2VfbG9nZW1lbnQjIy5wYXlsb2FkKSlcbiAgfCBcIk1lbnN1YWxpdGVcIiAtPlxuICBEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBkZXBlbnNlX2xvZ2VtZW50IyMucGF5bG9hZCkpXG4gIHwgXCJMb3llclwiIC0+XG4gIERlcGVuc2VMb2dlbWVudC5Mb3llciAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBkZXBlbnNlX2xvZ2VtZW50IyMucGF5bG9hZCkpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdEZXBlbnNlTG9nZW1lbnQudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkltcGF5ZUxveWVyXCJcbiAgICAgICAgLSBcIkltcGF5ZVByZXRcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBtb2RlX29jY3VwYXRpb25faW1wYXllX3RvX2pzb29cbiAgOiBNb2RlT2NjdXBhdGlvbkltcGF5ZS50IC0+IG1vZGVfb2NjdXBhdGlvbl9pbXBheWUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgSW1wYXllTG95ZXIgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJJbXBheWVMb3llclwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEltcGF5ZVByZXQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJJbXBheWVQcmV0XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBtb2RlX29jY3VwYXRpb25faW1wYXllX29mX2pzb29cbiAgKG1vZGVfb2NjdXBhdGlvbl9pbXBheWUgOiBtb2RlX29jY3VwYXRpb25faW1wYXllIEpzLnQpXG4gIDogTW9kZU9jY3VwYXRpb25JbXBheWUudCA9XG4gIG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9pbXBheWUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJJbXBheWVMb3llclwiIC0+IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyICgpXG4gIHwgXCJJbXBheWVQcmV0XCIgLT4gTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnTW9kZU9jY3VwYXRpb25JbXBheWUudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiUGFzRWxpZ2libGVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfdG9fanNvb1xuICA6IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50IC0+IHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBQYXNFbGlnaWJsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhc0VsaWdpYmxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9vZl9qc29vXG4gICh0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICA6IHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50KVxuICA6IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID1cbiAgbWF0Y2ggdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUGFzRWxpZ2libGVcIiAtPiBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgKClcbiAgfCBcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiIC0+XG4gICAgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSAoKVxuICB8IFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiIC0+XG4gICAgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1R5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvb1xuICA6IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCAtPiB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAodHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCA6IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudClcbiAgOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPVxuICBtYXRjaCB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudFwiIC0+XG4gICAgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIiAtPlxuICAgIFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCIgLT5cbiAgICBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1R5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgc2l0dWF0aW9uX2ZhbWlsaWFsZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkNlbGliYXRhaXJlXCJcbiAgICAgICAgLSBcIk1hcmllc1wiXG4gICAgICAgIC0gXCJQYWNzZXNcIlxuICAgICAgICAtIFwiQ29uY3ViaW5zXCJcbiAgICAgICAgLSBcIkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0XCJcbiAgICAgICAgLSBcIkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdFwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfdG9fanNvb1xuICA6IFNpdHVhdGlvbkZhbWlsaWFsZS50IC0+IHNpdHVhdGlvbl9mYW1pbGlhbGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQ2VsaWJhdGFpcmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDZWxpYmF0YWlyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE1hcmllcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1hcmllc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGRhdGVfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IFBhY3NlcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhY3Nlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IENvbmN1YmlucyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNvbmN1Ymluc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IENlbGliYXRhaXJlU2VwYXJlRGVGYWl0IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvb1xuICAoc2l0dWF0aW9uX2ZhbWlsaWFsZSA6IHNpdHVhdGlvbl9mYW1pbGlhbGUgSnMudCkgOiBTaXR1YXRpb25GYW1pbGlhbGUudCA9XG4gIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJDZWxpYmF0YWlyZVwiIC0+IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZSAoKVxuICB8IFwiTWFyaWVzXCIgLT5cbiAgU2l0dWF0aW9uRmFtaWxpYWxlLk1hcmllcyAoZGF0ZV9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIHNpdHVhdGlvbl9mYW1pbGlhbGUjIy5wYXlsb2FkKSlcbiAgfCBcIlBhY3Nlc1wiIC0+IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgKClcbiAgfCBcIkNvbmN1Ymluc1wiIC0+IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbnMgKClcbiAgfCBcIkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0XCIgLT5cbiAgICBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgKClcbiAgfCBcIkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdFwiIC0+XG4gICAgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnU2l0dWF0aW9uRmFtaWxpYWxlLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHByaXNlX2VuX2NoYXJnZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiXG4gICAgICAgIC0gXCJSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgICAgLSBcIlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHByaXNlX2VuX2NoYXJnZV90b19qc29vIDogUHJpc2VFbkNoYXJnZS50IC0+IHByaXNlX2VuX2NoYXJnZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBFZmZlY3RpdmVFdFBlcm1hbmVudGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcHJpc2VfZW5fY2hhcmdlX29mX2pzb28gKHByaXNlX2VuX2NoYXJnZSA6IHByaXNlX2VuX2NoYXJnZSBKcy50KVxuICA6IFByaXNlRW5DaGFyZ2UudCA9XG4gIG1hdGNoIHByaXNlX2VuX2NoYXJnZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiIC0+IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlICgpXG4gIHwgXCJSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCIgLT5cbiAgICBQcmlzZUVuQ2hhcmdlLlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgKClcbiAgfCBcIlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGlvbnNQYXJ0YWdlZVwiIC0+XG4gICAgUHJpc2VFbkNoYXJnZS5SZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRpb25zUGFydGFnZWUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1ByaXNlRW5DaGFyZ2UudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgdHlwZV9sb2dlbWVudF9mb3llciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkxvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzXCJcbiAgICAgICAgLSBcIlJlc2lkZW5jZVNvY2lhbGVcIlxuICAgICAgICAtIFwiRm95ZXJKZXVuZXNUcnZhaWxsZXVyc091TWlncmFudHNDb252ZW50aW9ubmVMMzUzXzJBdmFudDE5OTVcIlxuICAgICAgICAtIFwiQXV0cmVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0eXBlX2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cbiAgOiBUeXBlTG9nZW1lbnRGb3llci50IC0+IHR5cGVfbG9nZW1lbnRfZm95ZXIgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgTG9nZW1lbnRQZXJzb25uZXNBZ2Vlc091SGFuZGljYXBlZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJMb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFJlc2lkZW5jZVNvY2lhbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJSZXNpZGVuY2VTb2NpYWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRm95ZXJKZXVuZXNUcnZhaWxsZXVyc091TWlncmFudHNDb252ZW50aW9ubmVMMzUzXzJBdmFudDE5OTUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJGb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEF1dHJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXV0cmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHR5cGVfbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAodHlwZV9sb2dlbWVudF9mb3llciA6IHR5cGVfbG9nZW1lbnRfZm95ZXIgSnMudCkgOiBUeXBlTG9nZW1lbnRGb3llci50ID1cbiAgbWF0Y2ggdHlwZV9sb2dlbWVudF9mb3llciMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkxvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzXCIgLT5cbiAgICBUeXBlTG9nZW1lbnRGb3llci5Mb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlcyAoKVxuICB8IFwiUmVzaWRlbmNlU29jaWFsZVwiIC0+IFR5cGVMb2dlbWVudEZveWVyLlJlc2lkZW5jZVNvY2lhbGUgKClcbiAgfCBcIkZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1XCIgLT5cbiAgICBUeXBlTG9nZW1lbnRGb3llci5Gb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NSAoKVxuICB8IFwiQXV0cmVcIiAtPiBUeXBlTG9nZW1lbnRGb3llci5BdXRyZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZUxvZ2VtZW50Rm95ZXIudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1wiXG4gICAgICAgIC0gXCJFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlXCJcbiAgICAgICAgLSBcIlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2XCJcbiAgICAgICAgLSBcIkF1dHJlc1BlcnNvbm5lc1wiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cbiAgOiBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCAtPiBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBQZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQXV0cmVzUGVyc29ubmVzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXV0cmVzUGVyc29ubmVzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vZl9qc29vXG4gIChjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICAgIDogY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgSnMudClcbiAgOiBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCA9XG4gIG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIyMua2luZFxuICAgIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1wiIC0+XG4gICAgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTICgpXG4gIHwgXCJFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlXCIgLT5cbiAgICBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZSAoKVxuICB8IFwiUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTZcIiAtPlxuICAgIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiAoKVxuICB8IFwiQXV0cmVzUGVyc29ubmVzXCIgLT5cbiAgICBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJQZXJzb25uZVNldWxlXCJcbiAgICAgICAgLSBcIkNvdXBsZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb29cbiAgOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBQZXJzb25uZVNldWxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGVyc29ubmVTZXVsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IENvdXBsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNvdXBsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAoc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgOiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCBKcy50KVxuICA6IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID1cbiAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJQZXJzb25uZVNldWxlXCIgLT4gU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgKClcbiAgfCBcIkNvdXBsZVwiIC0+IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1NpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBjb2xsZWN0aXZpdGUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJHdWFkZWxvdXBlXCJcbiAgICAgICAgLSBcIkd1eWFuZVwiXG4gICAgICAgIC0gXCJNYXJ0aW5pcXVlXCJcbiAgICAgICAgLSBcIkxhUmV1bmlvblwiXG4gICAgICAgIC0gXCJTYWludEJhcnRoZWxlbXlcIlxuICAgICAgICAtIFwiU2FpbnRNYXJ0aW5cIlxuICAgICAgICAtIFwiTWV0cm9wb2xlXCJcbiAgICAgICAgLSBcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiXG4gICAgICAgIC0gXCJNYXlvdHRlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgY29sbGVjdGl2aXRlX3RvX2pzb28gOiBDb2xsZWN0aXZpdGUudCAtPiBjb2xsZWN0aXZpdGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgR3VhZGVsb3VwZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkd1YWRlbG91cGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBHdXlhbmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHdXlhbmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNYXJ0aW5pcXVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWFydGluaXF1ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IExhUmV1bmlvbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkxhUmV1bmlvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNhaW50QmFydGhlbGVteSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNhaW50QmFydGhlbGVteVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNhaW50TWFydGluIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiU2FpbnRNYXJ0aW5cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNZXRyb3BvbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNZXRyb3BvbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBTYWludFBpZXJyZUV0TWlxdWVsb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTYWludFBpZXJyZUV0TWlxdWVsb25cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNYXlvdHRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWF5b3R0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgY29sbGVjdGl2aXRlX29mX2pzb28gKGNvbGxlY3Rpdml0ZSA6IGNvbGxlY3Rpdml0ZSBKcy50KVxuICA6IENvbGxlY3Rpdml0ZS50ID1cbiAgbWF0Y2ggY29sbGVjdGl2aXRlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiR3VhZGVsb3VwZVwiIC0+IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpXG4gIHwgXCJHdXlhbmVcIiAtPiBDb2xsZWN0aXZpdGUuR3V5YW5lICgpXG4gIHwgXCJNYXJ0aW5pcXVlXCIgLT4gQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKClcbiAgfCBcIkxhUmV1bmlvblwiIC0+IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKClcbiAgfCBcIlNhaW50QmFydGhlbGVteVwiIC0+IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKClcbiAgfCBcIlNhaW50TWFydGluXCIgLT4gQ29sbGVjdGl2aXRlLlNhaW50TWFydGluICgpXG4gIHwgXCJNZXRyb3BvbGVcIiAtPiBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpXG4gIHwgXCJTYWludFBpZXJyZUV0TWlxdWVsb25cIiAtPiBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uICgpXG4gIHwgXCJNYXlvdHRlXCIgLT4gQ29sbGVjdGl2aXRlLk1heW90dGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NvbGxlY3Rpdml0ZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9uc1wiXG4gICAgICAgIC0gXCJHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIlxuICAgICAgICAtIFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCJcbiAgICAgICAgLSBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlXCJcbiAgICAgICAgLSBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50X3RvX2pzb29cbiAgOiBQcmlzZUVuQ2hhcmdlRW5mYW50LnQgLT4gcHJpc2VfZW5fY2hhcmdlX2VuZmFudCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9uc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcHJpc2VfZW5fY2hhcmdlX2VuZmFudF9vZl9qc29vXG4gIChwcmlzZV9lbl9jaGFyZ2VfZW5mYW50IDogcHJpc2VfZW5fY2hhcmdlX2VuZmFudCBKcy50KVxuICA6IFByaXNlRW5DaGFyZ2VFbmZhbnQudCA9XG4gIG1hdGNoIHByaXNlX2VuX2NoYXJnZV9lbmZhbnQjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zXCIgLT5cbiAgICBQcmlzZUVuQ2hhcmdlRW5mYW50LkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgKClcbiAgfCBcIkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZVwiIC0+XG4gICAgUHJpc2VFbkNoYXJnZUVuZmFudC5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgKClcbiAgfCBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiIC0+IFByaXNlRW5DaGFyZ2VFbmZhbnQuRWZmZWN0aXZlRXRQZXJtYW5lbnRlICgpXG4gIHwgXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZVwiIC0+XG4gICAgUHJpc2VFbkNoYXJnZUVuZmFudC5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSAoKVxuICB8IFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eFwiIC0+XG4gICAgUHJpc2VFbkNoYXJnZUVuZmFudC5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4ICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdQcmlzZUVuQ2hhcmdlRW5mYW50LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQXZhbnRcIlxuICAgICAgICAtIFwiUGVuZGFudFwiXG4gICAgICAgIC0gXCJBcHJlc1wiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX3RvX2pzb29cbiAgOiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudCAtPiBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBBdmFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkF2YW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUGVuZGFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBlbmRhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBcHJlcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFwcmVzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV9vZl9qc29vXG4gIChzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSA6IHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlIEpzLnQpXG4gIDogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQgPVxuICBtYXRjaCBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkF2YW50XCIgLT4gU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50ICgpXG4gIHwgXCJQZW5kYW50XCIgLT4gU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgKClcbiAgfCBcIkFwcmVzXCIgLT4gU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIlxuICAgICAgICAtIFwiQ29tcGxlbWVudEZhbWlsaWFsXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25Mb2dlbWVudFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc190b19qc29vXG4gIDogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50IC0+IGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBQcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25zRmFtaWxpYWxlcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IENvbXBsZW1lbnRGYW1pbGlhbCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Mb2dlbWVudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Mb2dlbWVudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vXG4gIChlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgOiBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudClcbiAgOiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICBtYXRjaCBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJQcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50XCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnQgKClcbiAgfCBcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uc0ZhbWlsaWFsZXMgKClcbiAgfCBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5Db21wbGVtZW50RmFtaWxpYWwgKClcbiAgfCBcIkFsbG9jYXRpb25Mb2dlbWVudFwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uTG9nZW1lbnQgKClcbiAgfCBcIkFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGVcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZSAoKVxuICB8IFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uU291dGllbkZhbWlsaWFsICgpXG4gIHwgXCJBbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlXCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmUgKClcbiAgfCBcIkFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlXCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGNvbnZlbnRpb25uZUxpdnJlSUlJVGl0cmVWQ2hhcElJSTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlUGVyY3VlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWxfdG9fanNvbyAoY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWxcbiAgICA6IENvbnZlbnRpb25CYWlsbGV1clNvY2lhbC50KSA6IGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGNvbnZlbnRpb25uZUxpdnJlSUlJVGl0cmVWQ2hhcElJSSA9XG4gICAgICAgIEpzLmJvb2wgY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJXG4gICAgICB2YWwgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlUGVyY3VlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX3BlcmN1ZVxuICAgICAgZW5kXG4gIGxldCBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbF9vZl9qc29vXG4gICAgKGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsIDogY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwgSnMudCkgOlxuICAgIENvbnZlbnRpb25CYWlsbGV1clNvY2lhbC50ID1cbiAgICB7XG4gICAgICBjb252ZW50aW9ubmVfbGl2cmVfSUlJX3RpdHJlX1ZfY2hhcF9JSUkgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwjIy5jb252ZW50aW9ubmVMaXZyZUlJSVRpdHJlVkNoYXBJSUk7XG4gICAgICByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9wZXJjdWUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwjIy5yZWR1Y3Rpb25Mb3llclNvbGlkYXJpdGVQZXJjdWVcbiAgICB9XG5cbmNsYXNzIHR5cGUgY29udmVudGlvbl9hX25faF9hID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGNvbnZlbnRpb25uZUxpdnJlSUlJVGl0cmVJSUNoYXBJU2VjMzogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjb252ZW50aW9uX2Ffbl9oX2FfdG9fanNvbyAoY29udmVudGlvbl9hX25faF9hIDogQ29udmVudGlvbkFOSEEudClcbiAgICA6IGNvbnZlbnRpb25fYV9uX2hfYSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBjb252ZW50aW9ubmVMaXZyZUlJSVRpdHJlSUlDaGFwSVNlYzMgPVxuICAgICAgICBKcy5ib29sIGNvbnZlbnRpb25fYV9uX2hfYS5jb252ZW50aW9ubmVfbGl2cmVfSUlJX3RpdHJlX0lJX2NoYXBfSV9zZWNfM1xuICAgICAgZW5kXG4gIGxldCBjb252ZW50aW9uX2Ffbl9oX2Ffb2ZfanNvb1xuICAgIChjb252ZW50aW9uX2Ffbl9oX2EgOiBjb252ZW50aW9uX2Ffbl9oX2EgSnMudCkgOiBDb252ZW50aW9uQU5IQS50ID1cbiAgICB7XG4gICAgICBjb252ZW50aW9ubmVfbGl2cmVfSUlJX3RpdHJlX0lJX2NoYXBfSV9zZWNfMyA9XG4gICAgICAgIEpzLnRvX2Jvb2wgY29udmVudGlvbl9hX25faF9hIyMuY29udmVudGlvbm5lTGl2cmVJSUlUaXRyZUlJQ2hhcElTZWMzXG4gICAgfVxuXG5jbGFzcyB0eXBlIHBlcnNvbm5lX3NvdXNfbG9jYXRpb24gPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZU5haXNzYW5jZVBlcnNvbm5lU291c0xvY2F0aW9uOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25mb3JtZUFydGljbGVMNDQyMTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwZXJzb25uZV9zb3VzX2xvY2F0aW9uX3RvX2pzb28gKHBlcnNvbm5lX3NvdXNfbG9jYXRpb25cbiAgICA6IFBlcnNvbm5lU291c0xvY2F0aW9uLnQpIDogcGVyc29ubmVfc291c19sb2NhdGlvbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlTmFpc3NhbmNlUGVyc29ubmVTb3VzTG9jYXRpb24gPVxuICAgICAgICBkYXRlX3RvX2pzb28gcGVyc29ubmVfc291c19sb2NhdGlvbi5kYXRlX25haXNzYW5jZV9wZXJzb25uZV9zb3VzX2xvY2F0aW9uXG4gICAgICB2YWwgY29uZm9ybWVBcnRpY2xlTDQ0MjEgPVxuICAgICAgICBKcy5ib29sIHBlcnNvbm5lX3NvdXNfbG9jYXRpb24uY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzFcbiAgICAgIGVuZFxuICBsZXQgcGVyc29ubmVfc291c19sb2NhdGlvbl9vZl9qc29vXG4gICAgKHBlcnNvbm5lX3NvdXNfbG9jYXRpb24gOiBwZXJzb25uZV9zb3VzX2xvY2F0aW9uIEpzLnQpIDpcbiAgICBQZXJzb25uZVNvdXNMb2NhdGlvbi50ID1cbiAgICB7XG4gICAgICBkYXRlX25haXNzYW5jZV9wZXJzb25uZV9zb3VzX2xvY2F0aW9uID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgcGVyc29ubmVfc291c19sb2NhdGlvbiMjLmRhdGVOYWlzc2FuY2VQZXJzb25uZVNvdXNMb2NhdGlvbjtcbiAgICAgIGNvbmZvcm1lX2FydGljbGVfbDQ0Ml8xID1cbiAgICAgICAgSnMudG9fYm9vbCBwZXJzb25uZV9zb3VzX2xvY2F0aW9uIyMuY29uZm9ybWVBcnRpY2xlTDQ0MjFcbiAgICB9XG5cbmNsYXNzIHR5cGUgcGF0cmltb2luZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBwcm9kdWlzYW50UmV2ZW51UGVyaW9kZVI4MjIzM1I4MjI0OlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBuZVByb2R1aXNhbnRQYXNSZXZlbnVQZXJpb2RlUjgyMjMzUjgyMjQ6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgcGF0cmltb2luZV90b19qc29vIChwYXRyaW1vaW5lIDogUGF0cmltb2luZS50KSA6IHBhdHJpbW9pbmUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgcHJvZHVpc2FudFJldmVudVBlcmlvZGVSODIyMzNSODIyNCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBwYXRyaW1vaW5lLnByb2R1aXNhbnRfcmV2ZW51X3BlcmlvZGVfcjgyMl8zXzNfcjgyMl80XG4gICAgICB2YWwgbmVQcm9kdWlzYW50UGFzUmV2ZW51UGVyaW9kZVI4MjIzM1I4MjI0ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHBhdHJpbW9pbmUubmVfcHJvZHVpc2FudF9wYXNfcmV2ZW51X3BlcmlvZGVfcjgyMl8zXzNfcjgyMl80XG4gICAgICBlbmRcbiAgbGV0IHBhdHJpbW9pbmVfb2ZfanNvbyAocGF0cmltb2luZSA6IHBhdHJpbW9pbmUgSnMudCkgOiBQYXRyaW1vaW5lLnQgPVxuICAgIHtcbiAgICAgIHByb2R1aXNhbnRfcmV2ZW51X3BlcmlvZGVfcjgyMl8zXzNfcjgyMl80ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHBhdHJpbW9pbmUjIy5wcm9kdWlzYW50UmV2ZW51UGVyaW9kZVI4MjIzM1I4MjI0O1xuICAgICAgbmVfcHJvZHVpc2FudF9wYXNfcmV2ZW51X3BlcmlvZGVfcjgyMl8zXzNfcjgyMl80ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHBhdHJpbW9pbmUjIy5uZVByb2R1aXNhbnRQYXNSZXZlbnVQZXJpb2RlUjgyMjMzUjgyMjRcbiAgICB9XG5cbmNsYXNzIHR5cGUgY29uZGl0aW9uc19ldHJhbmdlcnMgPVxuICBvYmplY3RcbiAgICBtZXRob2Qgc2F0aXNmYWl0Q29uZGl0aW9uc0w1MTIyQ29kZVNlY3VyaXRlU29jaWFsZTpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY29uZGl0aW9uc19ldHJhbmdlcnNfdG9fanNvbyAoY29uZGl0aW9uc19ldHJhbmdlcnNcbiAgICA6IENvbmRpdGlvbnNFdHJhbmdlcnMudCkgOiBjb25kaXRpb25zX2V0cmFuZ2VycyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBzYXRpc2ZhaXRDb25kaXRpb25zTDUxMjJDb2RlU2VjdXJpdGVTb2NpYWxlID1cbiAgICAgICAgSnMuYm9vbCBjb25kaXRpb25zX2V0cmFuZ2Vycy5zYXRpc2ZhaXRfY29uZGl0aW9uc19sNTEyXzJfY29kZV9zZWN1cml0ZV9zb2NpYWxlXG4gICAgICBlbmRcbiAgbGV0IGNvbmRpdGlvbnNfZXRyYW5nZXJzX29mX2pzb29cbiAgICAoY29uZGl0aW9uc19ldHJhbmdlcnMgOiBjb25kaXRpb25zX2V0cmFuZ2VycyBKcy50KSA6XG4gICAgQ29uZGl0aW9uc0V0cmFuZ2Vycy50ID1cbiAgICB7XG4gICAgICBzYXRpc2ZhaXRfY29uZGl0aW9uc19sNTEyXzJfY29kZV9zZWN1cml0ZV9zb2NpYWxlID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNvbmRpdGlvbnNfZXRyYW5nZXJzIyMuc2F0aXNmYWl0Q29uZGl0aW9uc0w1MTIyQ29kZVNlY3VyaXRlU29jaWFsZVxuICAgIH1cblxuY2xhc3MgdHlwZSBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXIgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZHVyZWVSZXNpZGVuY2VEdXJhbnRQZXJpb2RlUjgyMjMxU3VwZXJpZXVyZUE2TW9pczpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXM6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXJfdG9fanNvb1xuICAgIChwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXJcbiAgICA6IFBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLnQpXG4gICAgOiBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXIgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZHVyZWVSZXNpZGVuY2VEdXJhbnRQZXJpb2RlUjgyMjMxU3VwZXJpZXVyZUE2TW9pcyA9XG4gICAgICAgIEpzLmJvb2wgcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyLmR1cmVlX3Jlc2lkZW5jZV9kdXJhbnRfcGVyaW9kZV9yXzgyMl8zXzFfc3VwZXJpZXVyZV9hXzZfbW9pc1xuICAgICAgdmFsIHJlc3NvdXJjZXMgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyLnJlc3NvdXJjZXNcbiAgICAgIGVuZFxuICBsZXQgcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyX29mX2pzb29cbiAgICAocGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyXG4gICAgICA6IHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llciBKcy50KSA6XG4gICAgUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIudCA9XG4gICAge1xuICAgICAgZHVyZWVfcmVzaWRlbmNlX2R1cmFudF9wZXJpb2RlX3JfODIyXzNfMV9zdXBlcmlldXJlX2FfNl9tb2lzID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llclxuICAgICAgICAgICMjLmR1cmVlUmVzaWRlbmNlRHVyYW50UGVyaW9kZVI4MjIzMVN1cGVyaWV1cmVBNk1vaXM7XG4gICAgICByZXNzb3VyY2VzID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llciMjLnJlc3NvdXJjZXNcbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlbGlnaWJpbGl0ZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gICAgOiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudClcbiAgICA6IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGUgPVxuICAgICAgICBkYXRlX3RvX2pzb28gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50LmRhdGVfY291cmFudGVcbiAgICAgIHZhbCBlbGlnaWJpbGl0ZSA9XG4gICAgICAgIEpzLmJvb2wgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50LmVsaWdpYmlsaXRlXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVxuICAgICAgdmFsIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGUgPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IHgpIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAgICAgOiBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCMjLmRhdGVDb3VyYW50ZTtcbiAgICAgIGVsaWdpYmlsaXRlID1cbiAgICAgICAgSnMudG9fYm9vbCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQjIy5lbGlnaWJpbGl0ZTtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gICAgICAgICAgIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlO1xuICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgeCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgICAgICAgICAjIy5jb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCA9XG4gIG9iamVjdCBtZXRob2QgbW9udGFudFByaW1lRGVtZW5hZ2VtZW50OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50IDogRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50LnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudFByaW1lRGVtZW5hZ2VtZW50ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudC5tb250YW50X3ByaW1lX2RlbWVuYWdlbWVudFxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRcbiAgICAgIDogZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50IEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnQudCA9XG4gICAge1xuICAgICAgbW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50IyMubW9udGFudFByaW1lRGVtZW5hZ2VtZW50XG4gICAgfVxuXG5jbGFzcyB0eXBlIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICBvYmplY3QgbWV0aG9kIHJlc3NvdXJjZXNQcmlzZXNFbkNvbXB0ZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvb1xuICAgIChyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgOiBSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQpXG4gICAgOiByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHJlc3NvdXJjZXNQcmlzZXNFbkNvbXB0ZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50LnJlc3NvdXJjZXNfcHJpc2VzX2VuX2NvbXB0ZVxuICAgICAgZW5kXG4gIGxldCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X29mX2pzb29cbiAgICAocmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgOiByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQpIDpcbiAgICBSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIHJlc3NvdXJjZXNfcHJpc2VzX2VuX2NvbXB0ZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IyMucmVzc291cmNlc1ByaXNlc0VuQ29tcHRlXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgbW9udGFudDpcbiAgICAgICh1bml0LCAgSnMubnVtYmVyIEpzLnQgLT4gSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvb1xuICAgIChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudClcbiAgICA6IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICBtZXRob2QgbW9udGFudCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogSnMubnVtYmVyIEpzLnQpIC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50Lm1vbnRhbnQgXG4gICAgICAgICAgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgZW5kXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X29mX2pzb29cbiAgICAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgOiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQpIDpcbiAgICBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9XG4gICAge1xuICAgICAgbW9udGFudCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdtb250YW50JyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXNEODIzMTY6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGxhZm9uZExveWVyRDgyMzE2MjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwYXJ0aWNpcGF0aW9uTWluaW1hbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdGF1eENvbXBvc2l0aW9uRmFtaWxpYWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBhcnRpY2lwYXRpb25QZXJzb25uZWxsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhaWRlRmluYWxlRm9ybXVsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZTpcbiAgICAgICh1bml0LCAgSnMubnVtYmVyIEpzLnQgLT4gSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZlxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb250YW50Rm9yZmFpdGFpcmVDaGFyZ2VzRDgyMzE2ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZi5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNlxuICAgICAgdmFsIHBsYWZvbmRMb3llckQ4MjMxNjIgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmLnBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXG4gICAgICB2YWwgcGFydGljaXBhdGlvbk1pbmltYWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZi5wYXJ0aWNpcGF0aW9uX21pbmltYWxlXG4gICAgICB2YWwgdGF1eENvbXBvc2l0aW9uRmFtaWxpYWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmLnRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlXG4gICAgICB2YWwgcGFydGljaXBhdGlvblBlcnNvbm5lbGxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZi5wYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXG4gICAgICB2YWwgYWlkZUZpbmFsZUZvcm11bGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGVcbiAgICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZSA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogSnMubnVtYmVyIEpzLnQpIC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBcbiAgICAgICAgICAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9vZl9qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZlxuICAgICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYgSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZlxuICAgICAgICAgICMjLm1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXNEODIzMTY7XG4gICAgICBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYjIy5wbGFmb25kTG95ZXJEODIzMTYyO1xuICAgICAgcGFydGljaXBhdGlvbl9taW5pbWFsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYjIy5wYXJ0aWNpcGF0aW9uTWluaW1hbGU7XG4gICAgICB0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gICAgICAgICAgIyMudGF1eENvbXBvc2l0aW9uRmFtaWxpYWxlO1xuICAgICAgcGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZcbiAgICAgICAgICAjIy5wYXJ0aWNpcGF0aW9uUGVyc29ubmVsbGU7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZiMjLmFpZGVGaW5hbGVGb3JtdWxlO1xuICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlID1cbiAgb2JqZWN0IG1ldGhvZCBtb250YW50OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX3RvX2pzb29cbiAgICAoY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLnQpXG4gICAgOiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUubW9udGFudFxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfb2ZfanNvb1xuICAgIChjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcbiAgICAgIDogY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIEpzLnQpIDpcbiAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUudCA9XG4gICAge1xuICAgICAgbW9udGFudCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUjIy5tb250YW50XG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciA9XG4gIG9iamVjdCBtZXRob2Qgbk5vbWJyZVBhcnRzRDgzMjI1OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyIDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIudClcbiAgICA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBuTm9tYnJlUGFydHNEODMyMjUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAgIChjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJcbiAgICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyIEpzLnQpIDpcbiAgICBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci50ID1cbiAgICB7XG4gICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIjIy5uTm9tYnJlUGFydHNEODMyMjVcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBjb2VmZmljaWVudE11bHRpcGxpY2F0ZXVyRDgzMjI1OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvZWZmaWNpZW50UkQ4MzIyNTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBuTm9tYnJlUGFydHNEODMyMjU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZXF1aXZhbGVuY2VMb3llckVsaWdpYmxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBsYWZvbmRFcXVpdmFsZW5jZUxveWVyRWxpZ2libGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZXF1aXZhbGVuY2VMb3llck1pbmltYWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZUQ4MzIyNTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhaWRlRmluYWxlRm9ybXVsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZTpcbiAgICAgICh1bml0LCAgSnMubnVtYmVyIEpzLnQgLT4gSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gICAgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgY29lZmZpY2llbnRNdWx0aXBsaWNhdGV1ckQ4MzIyNSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyLmNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVcbiAgICAgIHZhbCBjb2VmZmljaWVudFJEODMyMjUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci5jb2VmZmljaWVudF9yX2Q4MzJfMjVcbiAgICAgIHZhbCBuTm9tYnJlUGFydHNEODMyMjUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcbiAgICAgIHZhbCBlcXVpdmFsZW5jZUxveWVyRWxpZ2libGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci5lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZVxuICAgICAgdmFsIHBsYWZvbmRFcXVpdmFsZW5jZUxveWVyRWxpZ2libGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci5wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXG4gICAgICB2YWwgZXF1aXZhbGVuY2VMb3llck1pbmltYWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcbiAgICAgIHZhbCBjb2VmZmljaWVudFByaXNlRW5DaGFyZ2VEODMyMjUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1XG4gICAgICB2YWwgYWlkZUZpbmFsZUZvcm11bGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IEpzLm51bWJlciBKcy50KSAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlIFxuICAgICAgICAgIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9vZl9qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJcbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciBKcy50KSA6XG4gICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQgPVxuICAgIHtcbiAgICAgIGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llclxuICAgICAgICAgICMjLmNvZWZmaWNpZW50TXVsdGlwbGljYXRldXJEODMyMjU7XG4gICAgICBjb2VmZmljaWVudF9yX2Q4MzJfMjUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciMjLmNvZWZmaWNpZW50UkQ4MzIyNTtcbiAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIjIy5uTm9tYnJlUGFydHNEODMyMjU7XG4gICAgICBlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIyMuZXF1aXZhbGVuY2VMb3llckVsaWdpYmxlO1xuICAgICAgcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gICAgICAgICAgIyMucGxhZm9uZEVxdWl2YWxlbmNlTG95ZXJFbGlnaWJsZTtcbiAgICAgIGVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIjIy5lcXVpdmFsZW5jZUxveWVyTWluaW1hbGU7XG4gICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNSA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llclxuICAgICAgICAgICMjLmNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZUQ4MzIyNTtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciMjLmFpZGVGaW5hbGVGb3JtdWxlO1xuICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlID1cbiAgb2JqZWN0IG1ldGhvZCBuTm9tYnJlUGFydHNEODMyMTE6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfdG9fanNvb1xuICAgIChjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICA6IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLnQpXG4gICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbk5vbWJyZVBhcnRzRDgzMjExID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX29mX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICA6IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50KSA6XG4gICAgQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gICAge1xuICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8xMSA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlIyMubk5vbWJyZVBhcnRzRDgzMjExXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtZW5zdWFsaXRlRWxpZ2libGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbWVuc3VhbGl0ZU1pbmltYWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZUQ4MzIxMDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhaWRlRmluYWxlRm9ybXVsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZTpcbiAgICAgICh1bml0LCAgSnMubnVtYmVyIEpzLnQgLT4gSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50KVxuICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbnN1YWxpdGVFbGlnaWJsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUubWVuc3VhbGl0ZV9lbGlnaWJsZVxuICAgICAgdmFsIG1lbnN1YWxpdGVNaW5pbWFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUubWVuc3VhbGl0ZV9taW5pbWFsZVxuICAgICAgdmFsIGNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZUQ4MzIxMCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZS5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMFxuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IEpzLm51bWJlciBKcy50KSAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgXG4gICAgICAgICAgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgIHtcbiAgICAgIG1lbnN1YWxpdGVfZWxpZ2libGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICAgICAgIyMubWVuc3VhbGl0ZUVsaWdpYmxlO1xuICAgICAgbWVuc3VhbGl0ZV9taW5pbWFsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICAgICAgICAjIy5tZW5zdWFsaXRlTWluaW1hbGU7XG4gICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMCA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICAgICAgIyMuY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlRDgzMjEwO1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICAgICAgICAjIy5haWRlRmluYWxlRm9ybXVsZTtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIHRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBhaWRlRmluYWxlRm9ybXVsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZTpcbiAgICAgICh1bml0LCAgSnMubnVtYmVyIEpzLnQgLT4gSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZV90b19qc29vICh0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGVcbiAgICA6IFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50KSA6IHRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCB0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBKcy5udW1iZXIgSnMudCkgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKHRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlIFxuICAgICAgICAgIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlX29mX2pzb29cbiAgICAodHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlIDogdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlIEpzLnQpIDpcbiAgICBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudCA9XG4gICAge1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICB0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUjIy5haWRlRmluYWxlRm9ybXVsZTtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X3RvX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYWlkZUZpbmFsZUZvcm11bGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IEpzLm51bWJlciBKcy50KSAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudC50cmFpdGVtZW50X2FpZGVfZmluYWxlIFxuICAgICAgICAgIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vZl9qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCBKcy50KSA6XG4gICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC50ID1cbiAgICB7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQjIy5haWRlRmluYWxlRm9ybXVsZTtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFuY2llbkxveWVyUHJpbmNpcGFsOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFuY2llbm5lQWxsb2NhdGlvbkxvZ2VtZW50OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fanNvb1xuICAgIChpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCA6IEluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudClcbiAgICA6IGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFuY2llbkxveWVyUHJpbmNpcGFsID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80LmFuY2llbl9sb3llcl9wcmluY2lwYWxcbiAgICAgIHZhbCBhbmNpZW5uZUFsbG9jYXRpb25Mb2dlbWVudCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNC5hbmNpZW5uZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgICBlbmRcbiAgbGV0IGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X29mX2pzb29cbiAgICAoaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRcbiAgICAgIDogaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgSnMudCkgOlxuICAgIEluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudCA9XG4gICAge1xuICAgICAgYW5jaWVuX2xveWVyX3ByaW5jaXBhbCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCMjLmFuY2llbkxveWVyUHJpbmNpcGFsO1xuICAgICAgYW5jaWVubmVfYWxsb2NhdGlvbl9sb2dlbWVudCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCMjLmFuY2llbm5lQWxsb2NhdGlvbkxvZ2VtZW50XG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX3RvX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudClcbiAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYWlkZUZpbmFsZUZvcm11bGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IEpzLm51bWJlciBKcy50KSAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlIFxuICAgICAgICAgIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZcbiAgICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiBKcy50KSA6XG4gICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICB7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYjIy5haWRlRmluYWxlRm9ybXVsZTtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX3RvX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQpXG4gICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBKcy5udW1iZXIgSnMudCkgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBcbiAgICAgICAgICAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICB7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUjIy5haWRlRmluYWxlRm9ybXVsZTtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlcXVpdmFsZW5jZUxveWVyOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXM6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG95ZXJNaW5pbWFsOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlOlxuICAgICAgKHVuaXQsICBKcy5udW1iZXIgSnMudCAtPiBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfdG9fanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQpXG4gICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBjb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VcbiAgICAgIHZhbCBlcXVpdmFsZW5jZUxveWVyID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyLmVxdWl2YWxlbmNlX2xveWVyXG4gICAgICB2YWwgbW9udGFudEZvcmZhaXRhaXJlQ2hhcmdlcyA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llci5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNcbiAgICAgIHZhbCBsb3llck1pbmltYWwgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIubG95ZXJfbWluaW1hbFxuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGVcbiAgICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZSA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogSnMubnVtYmVyIEpzLnQpIC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlIFxuICAgICAgICAgIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICAgICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50KSA6XG4gICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCA9XG4gICAge1xuICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciMjLmNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZTtcbiAgICAgIGVxdWl2YWxlbmNlX2xveWVyID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIyMuZXF1aXZhbGVuY2VMb3llcjtcbiAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlcyA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciMjLm1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXM7XG4gICAgICBsb3llcl9taW5pbWFsID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIyMubG95ZXJNaW5pbWFsO1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciMjLmFpZGVGaW5hbGVGb3JtdWxlO1xuICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF90b19qc29vIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudFxuICAgIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LnQpIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYWlkZUZpbmFsZUZvcm11bGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBKcy5udW1iZXIgSnMudCkgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgXG4gICAgICAgICAgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50IDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudC50ID1cbiAgICB7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50IyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFnZU91dmVydHVyZURyb2l0OlxuICAgICAgUnVudGltZV9qc29vLlJ1bnRpbWUuZHVyYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV90b19qc29vIChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlXG4gICAgOiBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZS50KSA6IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYWdlT3V2ZXJ0dXJlRHJvaXQgPVxuICAgICAgICBkdXJhdGlvbl90b19qc29vIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUuYWdlX291dmVydHVyZV9kcm9pdFxuICAgICAgZW5kXG4gIGxldCBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX29mX2pzb29cbiAgICAob3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSA6IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUgSnMudCkgOlxuICAgIE91dmVydHVyZURyb2l0c1JldHJhaXRlLnQgPVxuICAgIHtcbiAgICAgIGFnZV9vdXZlcnR1cmVfZHJvaXQgPVxuICAgICAgICBkdXJhdGlvbl9vZl9qc29vIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUjIy5hZ2VPdXZlcnR1cmVEcm9pdFxuICAgIH1cblxuY2xhc3MgdHlwZSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudCA9XG4gIG9iamVjdCBtZXRob2QgbW9udGFudEltcGF5ZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X3RvX2pzb28gKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50XG4gICAgOiBJbXBheWVEZXBlbnNlTG9nZW1lbnQudCkgOiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb250YW50SW1wYXllID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50Lm1vbnRhbnRfaW1wYXllXG4gICAgICBlbmRcbiAgbGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X29mX2pzb29cbiAgICAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgOiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudCBKcy50KSA6XG4gICAgSW1wYXllRGVwZW5zZUxvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnRfaW1wYXllID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50IyMubW9udGFudEltcGF5ZVxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGVsaWdpYmlsaXRlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhaWRlRmluYWxlRm9ybXVsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZTpcbiAgICAgICh1bml0LCAgSnMubnVtYmVyIEpzLnQgLT4gSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICAgIG1ldGhvZCBjb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF90b19qc29vIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50XG4gICAgOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LnQpIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBlbGlnaWJpbGl0ZSA9IEpzLmJvb2wgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudC5lbGlnaWJpbGl0ZVxuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBKcy5udW1iZXIgSnMudCkgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBcbiAgICAgICAgICAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICB2YWwgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZSA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgeCkgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfb2ZfanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCBKcy50KSA6XG4gICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50ID1cbiAgICB7XG4gICAgICBlbGlnaWJpbGl0ZSA9IEpzLnRvX2Jvb2wgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCMjLmVsaWdpYmlsaXRlO1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudFxuICAgICAgICAgICMjLmNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGVcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBlbGlnaWJpbGl0ZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfdG9fanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlXG4gICAgOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZS50KVxuICAgIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBlbGlnaWJpbGl0ZSA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZS5lbGlnaWJpbGl0ZVxuICAgICAgdmFsIGFpZGVGaW5hbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZS5haWRlX2ZpbmFsZVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX29mX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZVxuICAgICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlIEpzLnQpIDpcbiAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZS50ID1cbiAgICB7XG4gICAgICBlbGlnaWJpbGl0ZSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSMjLmVsaWdpYmlsaXRlO1xuICAgICAgYWlkZV9maW5hbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSMjLmFpZGVGaW5hbGVcbiAgICB9XG5cbmNsYXNzIHR5cGUgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdCBtZXRob2QgbW9udGFudDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpXG4gICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vbnRhbnQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5tb250YW50XG4gICAgICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9XG4gICAge1xuICAgICAgbW9udGFudCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIyMubW9udGFudFxuICAgIH1cblxuY2xhc3MgdHlwZSB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2EgPVxuICBvYmplY3QgbWV0aG9kIHI6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX3RvX2pzb29cbiAgICAodmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hXG4gICAgOiBWZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBLnQpXG4gICAgOiB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2EgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgciA9IEpzLmJvb2wgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hLnJcbiAgICAgIGVuZFxuICBsZXQgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX29mX2pzb29cbiAgICAodmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hXG4gICAgICA6IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYSBKcy50KSA6XG4gICAgVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQS50ID1cbiAgICB7ciA9IEpzLnRvX2Jvb2wgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hIyMuclxuICAgIH1cblxuY2xhc3MgdHlwZSB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hID1cbiAgb2JqZWN0IG1ldGhvZCByOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfdG9fanNvbyAodmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYVxuICAgIDogVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQS50KSA6IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgciA9IEpzLmJvb2wgdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYS5yXG4gICAgICBlbmRcbiAgbGV0IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2Ffb2ZfanNvb1xuICAgICh2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hIDogdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSBKcy50KSA6XG4gICAgVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQS50ID1cbiAgICB7ciA9IEpzLnRvX2Jvb2wgdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSMjLnJcbiAgICB9XG5cbmNsYXNzIHR5cGUgc21pYyA9XG4gIG9iamVjdCBtZXRob2QgYnJ1dEhvcmFpcmU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBzbWljX3RvX2pzb28gKHNtaWMgOiBTbWljLnQpIDogc21pYyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBicnV0SG9yYWlyZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBzbWljLmJydXRfaG9yYWlyZVxuICAgICAgZW5kXG4gIGxldCBzbWljX29mX2pzb28gKHNtaWMgOiBzbWljIEpzLnQpIDogU21pYy50ID1cbiAgICB7XG4gICAgICBicnV0X2hvcmFpcmUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgc21pYyMjLmJydXRIb3JhaXJlXG4gICAgfVxuXG5jbGFzcyB0eXBlIHByZXQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgdHlwZVByZXQ6IHR5cGVfcHJldCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZVNpZ25hdHVyZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0aXR1bGFpcmVQcmV0OiB0aXR1bGFpcmVfcHJldCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwcmV0X3RvX2pzb28gKHByZXQgOiBQcmV0LnQpIDogcHJldCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCB0eXBlUHJldCA9IHR5cGVfcHJldF90b19qc29vIHByZXQudHlwZV9wcmV0XG4gICAgICB2YWwgZGF0ZVNpZ25hdHVyZSA9IGRhdGVfdG9fanNvbyBwcmV0LmRhdGVfc2lnbmF0dXJlXG4gICAgICB2YWwgdGl0dWxhaXJlUHJldCA9IHRpdHVsYWlyZV9wcmV0X3RvX2pzb28gcHJldC50aXR1bGFpcmVfcHJldFxuICAgICAgZW5kXG4gIGxldCBwcmV0X29mX2pzb28gKHByZXQgOiBwcmV0IEpzLnQpIDogUHJldC50ID1cbiAgICB7XG4gICAgICB0eXBlX3ByZXQgPSB0eXBlX3ByZXRfb2ZfanNvbyBwcmV0IyMudHlwZVByZXQ7XG4gICAgICBkYXRlX3NpZ25hdHVyZSA9IGRhdGVfb2ZfanNvbyBwcmV0IyMuZGF0ZVNpZ25hdHVyZTtcbiAgICAgIHRpdHVsYWlyZV9wcmV0ID0gdGl0dWxhaXJlX3ByZXRfb2ZfanNvbyBwcmV0IyMudGl0dWxhaXJlUHJldFxuICAgIH1cblxuY2xhc3MgdHlwZSBuZXVmX291X2FuY2llbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk5ldWZcIlxuICAgICAgICAtIFwiQW5jaWVuXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbmV1Zl9vdV9hbmNpZW5fdG9fanNvbyA6IE5ldWZPdUFuY2llbi50IC0+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+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiBcbiAgICAgICAgICAoXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udCA9XG4gICAge1xuICAgICAgdHlwZV9sb2dlbWVudF9mb3llcl9pbiA9XG4gICAgICAgIHR5cGVfbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4jIy50eXBlTG9nZW1lbnRGb3llckluO1xuICAgICAgZGF0ZV9jb252ZW50aW9ubmVtZW50X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLmRhdGVDb252ZW50aW9ubmVtZW50SW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLnJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5cbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluO1xuICAgICAgem9uZV9pbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luIyMuem9uZUluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIHJlZGV2YW5jZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luIyMucmVkZXZhbmNlSW47XG4gICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnY29uZGl0aW9uXzJfZHVfODMyXzI1X2luJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCI7XG4gICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4nIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl90b19qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgIDogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi50KVxuICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luXG4gICAgICB2YWwgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF90b19qc29vIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luX29mX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICA6IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50KSA6XG4gICAgQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi50ID1cbiAgICB7XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1lbnN1YWxpdGVQcmluY2lwYWxlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW46XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHlwZVRyYXZhdXhMb2dlbWVudEluOlxuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVTaWduYXR1cmVQcmV0SW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUVudHJlZUxvZ2VtZW50SW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29wcm9wcmlldGVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uUjgyMjExMTMxN0luOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlUHJldEluOiB0eXBlX3ByZXQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFuY2llbm5ldGVMb2dlbWVudEluOiBuZXVmX291X2FuY2llbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50KVxuICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbnN1YWxpdGVQcmluY2lwYWxlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHR5cGVUcmF2YXV4TG9nZW1lbnRJbiA9XG4gICAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1X3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pblxuICAgICAgdmFsIGRhdGVTaWduYXR1cmVQcmV0SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW5cbiAgICAgIHZhbCBsb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZUluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luXG4gICAgICB2YWwgZGF0ZUVudHJlZUxvZ2VtZW50SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luXG4gICAgICB2YWwgY29wcm9wcmlldGVJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmNvcHJvcHJpZXRlX2luXG4gICAgICB2YWwgc2l0dWF0aW9uUjgyMjExMTMxN0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW5cbiAgICAgIHZhbCB6b25lSW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi56b25lX2luXG4gICAgICB2YWwgdHlwZVByZXRJbiA9XG4gICAgICAgIHR5cGVfcHJldF90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi50eXBlX3ByZXRfaW5cbiAgICAgIHZhbCBhbmNpZW5uZXRlTG9nZW1lbnRJbiA9XG4gICAgICAgIG5ldWZfb3VfYW5jaWVuX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmFuY2llbm5ldGVfbG9nZW1lbnRfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCA9XG4gICAge1xuICAgICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLm1lbnN1YWxpdGVQcmluY2lwYWxlSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMucmVzc291cmNlc01lbmFnZUFycm9uZGllc0luO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluO1xuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2luID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnR5cGVUcmF2YXV4TG9nZW1lbnRJbjtcbiAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5kYXRlU2lnbmF0dXJlUHJldEluO1xuICAgICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW47XG4gICAgICBkYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmRhdGVFbnRyZWVMb2dlbWVudEluO1xuICAgICAgY29wcm9wcmlldGVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuY29wcm9wcmlldGVJbjtcbiAgICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnNpdHVhdGlvblI4MjIxMTEzMTdJbjtcbiAgICAgIHpvbmVfaW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIyMuem9uZUluO1xuICAgICAgdHlwZV9wcmV0X2luID1cbiAgICAgICAgdHlwZV9wcmV0X29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy50eXBlUHJldEluO1xuICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIG5ldWZfb3VfYW5jaWVuX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5hbmNpZW5uZXRlTG9nZW1lbnRJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1vZGVPY2N1cGF0aW9uSW46IG1vZGVfb2NjdXBhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHlwZUFpZGVJbjogdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZVNhbnNBcnJvbmRpSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlSW46IHNpdHVhdGlvbl9mYW1pbGlhbGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgem9uZUluOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vZGVPY2N1cGF0aW9uSW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLm1vZGVfb2NjdXBhdGlvbl9pblxuICAgICAgdmFsIHR5cGVBaWRlSW4gPVxuICAgICAgICB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi50eXBlX2FpZGVfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi56b25lX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gICAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBtb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5tb2RlT2NjdXBhdGlvbkluO1xuICAgICAgdHlwZV9haWRlX2luID1cbiAgICAgICAgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLnR5cGVBaWRlSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLnJlc3NvdXJjZXNNZW5hZ2VTYW5zQXJyb25kaUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5zaXR1YXRpb25GYW1pbGlhbGVJbjtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy56b25lSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGxveWVyUHJpbmNpcGFsSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXNJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW46XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgem9uZUluOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnRFc3RDaGFtYnJlSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFnZWVzT3VIYW5kaWNhcEFkdWx0ZXNIZWJlcmdlZXNPbmVyZXV4UGFydGljdWxpZXJzSW46XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlQWlkZUluOiB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2xvY2F0aW9uSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlZHVjdGlvbkxveWVyU29saWRhcml0ZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxvZ2VtZW50TWV1YmxlRDg0MjJJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY2hhbmdlbWVudExvZ2VtZW50RDg0MjRJbjpcbiAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udClcbiAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbG95ZXJQcmluY2lwYWxJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLmxveWVyX3ByaW5jaXBhbF9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIGJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXNJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cbiAgICAgIHZhbCB6b25lSW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uem9uZV9pblxuICAgICAgdmFsIGxvZ2VtZW50RXN0Q2hhbWJyZUluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luXG4gICAgICB2YWwgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pblxuICAgICAgdmFsIHR5cGVBaWRlSW4gPVxuICAgICAgICB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi50eXBlX2FpZGVfaW5cbiAgICAgIHZhbCBjb2xvY2F0aW9uSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uY29sb2NhdGlvbl9pblxuICAgICAgdmFsIHJlZHVjdGlvbkxveWVyU29saWRhcml0ZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW5cbiAgICAgIHZhbCBsb2dlbWVudE1ldWJsZUQ4NDIySW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pblxuICAgICAgdmFsIGNoYW5nZW1lbnRMb2dlbWVudEQ4NDI0SW4gPVxuICAgICAgICBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnQgPVxuICAgIHtcbiAgICAgIGxveWVyX3ByaW5jaXBhbF9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMubG95ZXJQcmluY2lwYWxJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMucmVzc291cmNlc01lbmFnZUFycm9uZGllc0luO1xuICAgICAgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5iZW5lZmljaWFpcmVBaWRlQWR1bHRlT3VFbmZhbnRIYW5kaWNhcGVzSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluO1xuICAgICAgem9uZV9pbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMuem9uZUluO1xuICAgICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmxvZ2VtZW50RXN0Q2hhbWJyZUluO1xuICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmFnZWVzT3VIYW5kaWNhcEFkdWx0ZXNIZWJlcmdlZXNPbmVyZXV4UGFydGljdWxpZXJzSW47XG4gICAgICB0eXBlX2FpZGVfaW4gPVxuICAgICAgICB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMudHlwZUFpZGVJbjtcbiAgICAgIGNvbG9jYXRpb25faW4gPVxuICAgICAgICBKcy50b19ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5jb2xvY2F0aW9uSW47XG4gICAgICByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMucmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW47XG4gICAgICBsb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5sb2dlbWVudE1ldWJsZUQ4NDIySW47XG4gICAgICBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pbiA9XG4gICAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMuY2hhbmdlbWVudExvZ2VtZW50RDg0MjRJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNCYXNlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtZW5zdWFsaXRlUHJpbmNpcGFsZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvblI4MjIxMTEzMTdJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZVNpZ25hdHVyZVByZXRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlVHJhdmF1eExvZ2VtZW50SW46XG4gICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlRW50cmVlTG9nZW1lbnRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjaGFyZ2VzTWVuc3VlbGxlc1ByZXRJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb3Byb3ByaWV0ZUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzQmFzZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cbiAgICAgIHZhbCB6b25lSW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uem9uZV9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIG1lbnN1YWxpdGVQcmluY2lwYWxlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25SODIyMTExMzE3SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW5cbiAgICAgIHZhbCBkYXRlU2lnbmF0dXJlUHJldEluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pblxuICAgICAgdmFsIHR5cGVUcmF2YXV4TG9nZW1lbnRJbiA9XG4gICAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pblxuICAgICAgdmFsIGxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luXG4gICAgICB2YWwgZGF0ZUVudHJlZUxvZ2VtZW50SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pblxuICAgICAgdmFsIGNoYXJnZXNNZW5zdWVsbGVzUHJldEluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW5cbiAgICAgIHZhbCBjb3Byb3ByaWV0ZUluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmNvcHJvcHJpZXRlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQgPVxuICAgIHtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzQmFzZUluO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4jIy56b25lSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5tZW5zdWFsaXRlUHJpbmNpcGFsZUluO1xuICAgICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnNpdHVhdGlvblI4MjIxMTEzMTdJbjtcbiAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuZGF0ZVNpZ25hdHVyZVByZXRJbjtcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiA9XG4gICAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy50eXBlVHJhdmF1eExvZ2VtZW50SW47XG4gICAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW47XG4gICAgICBkYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5kYXRlRW50cmVlTG9nZW1lbnRJbjtcbiAgICAgIGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0X2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5jaGFyZ2VzTWVuc3VlbGxlc1ByZXRJbjtcbiAgICAgIGNvcHJvcHJpZXRlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4jIy5jb3Byb3ByaWV0ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHR5cGVMb2dlbWVudEZveWVySW46IHR5cGVfbG9nZW1lbnRfZm95ZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb252ZW50aW9ubmVtZW50SW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkZXZhbmNlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW46XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgem9uZUluOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckQ4NDIxNkluOlxuICAgICAgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4udClcbiAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHR5cGVMb2dlbWVudEZveWVySW4gPVxuICAgICAgICB0eXBlX2xvZ2VtZW50X2ZveWVyX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4udHlwZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgdmFsIGRhdGVDb252ZW50aW9ubmVtZW50SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luXG4gICAgICB2YWwgcmVkZXZhbmNlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4ucmVkZXZhbmNlX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICB2YWwgem9uZUluID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi56b25lX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIGNhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJEODQyMTZJbiA9XG4gICAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pblxuICAgICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi50ID1cbiAgICB7XG4gICAgICB0eXBlX2xvZ2VtZW50X2ZveWVyX2luID1cbiAgICAgICAgdHlwZV9sb2dlbWVudF9mb3llcl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy50eXBlTG9nZW1lbnRGb3llckluO1xuICAgICAgZGF0ZV9jb252ZW50aW9ubmVtZW50X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5kYXRlQ29udmVudGlvbm5lbWVudEluO1xuICAgICAgcmVkZXZhbmNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIyMucmVkZXZhbmNlSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluO1xuICAgICAgem9uZV9pbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLnpvbmVJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luID1cbiAgICAgICAgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICAgICAgIyMuY2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckQ4NDIxNkluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1vZGVPY2N1cGF0aW9uSW46IG1vZGVfb2NjdXBhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZVNhbnNBcnJvbmRpSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlSW46IHNpdHVhdGlvbl9mYW1pbGlhbGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgem9uZUluOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHlwZUFpZGVJbjogdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl90b19qc29vIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pblxuICAgIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb2RlT2NjdXBhdGlvbkluID1cbiAgICAgICAgbW9kZV9vY2N1cGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4ubW9kZV9vY2N1cGF0aW9uX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZVNhbnNBcnJvbmRpSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luXG4gICAgICB2YWwgc2l0dWF0aW9uRmFtaWxpYWxlSW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCB6b25lSW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLnpvbmVfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgdHlwZUFpZGVJbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi50eXBlX2FpZGVfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBtb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMubW9kZU9jY3VwYXRpb25JbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLnJlc3NvdXJjZXNNZW5hZ2VTYW5zQXJyb25kaUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMuc2l0dWF0aW9uRmFtaWxpYWxlSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHpvbmVfaW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMuem9uZUluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgdHlwZV9haWRlX2luID1cbiAgICAgICAgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy50eXBlQWlkZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gPVxuICBvYmplY3QgbWV0aG9kIGRhdGVOYWlzc2FuY2VBc3N1cmVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fdG9fanNvbyAob3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pblxuICAgIDogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi50KSA6IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZU5haXNzYW5jZUFzc3VyZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4uZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX2luXG4gICAgICBlbmRcbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fb2ZfanNvb1xuICAgIChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIDogb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiBKcy50KSA6XG4gICAgT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX25haXNzYW5jZV9hc3N1cmVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiMjLmRhdGVOYWlzc2FuY2VBc3N1cmVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtb2RlT2NjdXBhdGlvbkluOiBtb2RlX29jY3VwYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFpZGVWZXJzZWVJbjogdmVyc2VtZW50X2EgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRhbnRBcGxJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb250YW50Q2hhcmdlc0luOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlcGVuc2VMb2dlbWVudEluOiBkZXBlbnNlX2xvZ2VtZW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb250YW50RGV0dGVJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX3RvX2pzb28gKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luXG4gICAgOiBJbXBheWVEZXBlbnNlTG9nZW1lbnRJbi50KSA6IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vZGVPY2N1cGF0aW9uSW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fdG9fanNvbyBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5tb2RlX29jY3VwYXRpb25faW5cbiAgICAgIHZhbCBhaWRlVmVyc2VlSW4gPVxuICAgICAgICB2ZXJzZW1lbnRfYV90b19qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLmFpZGVfdmVyc2VlX2luXG4gICAgICB2YWwgbW9udGFudEFwbEluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLm1vbnRhbnRfYXBsX2luXG4gICAgICB2YWwgbW9udGFudENoYXJnZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5tb250YW50X2NoYXJnZXNfaW5cbiAgICAgIHZhbCBkZXBlbnNlTG9nZW1lbnRJbiA9XG4gICAgICAgIGRlcGVuc2VfbG9nZW1lbnRfdG9fanNvbyBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5kZXBlbnNlX2xvZ2VtZW50X2luXG4gICAgICB2YWwgbW9udGFudERldHRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4ubW9udGFudF9kZXR0ZV9pblxuICAgICAgZW5kXG4gIGxldCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIEltcGF5ZURlcGVuc2VMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl9vZl9qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMubW9kZU9jY3VwYXRpb25JbjtcbiAgICAgIGFpZGVfdmVyc2VlX2luID1cbiAgICAgICAgdmVyc2VtZW50X2Ffb2ZfanNvbyBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiMjLmFpZGVWZXJzZWVJbjtcbiAgICAgIG1vbnRhbnRfYXBsX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMubW9udGFudEFwbEluO1xuICAgICAgbW9udGFudF9jaGFyZ2VzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMubW9udGFudENoYXJnZXNJbjtcbiAgICAgIGRlcGVuc2VfbG9nZW1lbnRfaW4gPVxuICAgICAgICBkZXBlbnNlX2xvZ2VtZW50X29mX2pzb29cbiAgICAgICAgICBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiMjLmRlcGVuc2VMb2dlbWVudEluO1xuICAgICAgbW9udGFudF9kZXR0ZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiMjLm1vbnRhbnREZXR0ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbWVuYWdlSW46IG1lbmFnZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVtYW5kZXVySW46IGRlbWFuZGV1ciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiA6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi50KVxuICAgIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtZW5hZ2VJbiA9IG1lbmFnZV90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4ubWVuYWdlX2luXG4gICAgICB2YWwgZGVtYW5kZXVySW4gPVxuICAgICAgICBkZW1hbmRldXJfdG9fanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VQcmlzZXNFbkNvbXB0ZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBtZW5hZ2VfaW4gPSBtZW5hZ2Vfb2ZfanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiMjLnJlc3NvdXJjZXNNZW5hZ2VQcmlzZXNFbkNvbXB0ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbWVuYWdlSW46IG1lbmFnZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVtYW5kZXVySW46IGRlbWFuZGV1ciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luX3RvX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pblxuICAgIDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi50KVxuICAgIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtZW5hZ2VJbiA9XG4gICAgICAgIG1lbmFnZV90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4ubWVuYWdlX2luXG4gICAgICB2YWwgZGVtYW5kZXVySW4gPVxuICAgICAgICBkZW1hbmRldXJfdG9fanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VQcmlzZXNFbkNvbXB0ZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luX29mX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pblxuICAgICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIEpzLnQpIDpcbiAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLnQgPVxuICAgIHtcbiAgICAgIG1lbmFnZV9pbiA9XG4gICAgICAgIG1lbmFnZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiMjLm1lbmFnZUluO1xuICAgICAgZGVtYW5kZXVyX2luID1cbiAgICAgICAgZGVtYW5kZXVyX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIyMuZGVtYW5kZXVySW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgICAgICAgIyMucmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA9XG4gIG9iamVjdCBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX3RvX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgIDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpXG4gICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpIDpcbiAgICBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZU5haXNzYW5jZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFubmVlc0luOiBSdW50aW1lX2pzb28uUnVudGltZS5kdXJhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW5fdG9fanNvb1xuICAgICh2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW5cbiAgICA6IFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi50KVxuICAgIDogdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVOYWlzc2FuY2VJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4uZGF0ZV9uYWlzc2FuY2VfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIGFubmVlc0luID1cbiAgICAgICAgZHVyYXRpb25fdG9fanNvbyB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4uYW5uZWVzX2luXG4gICAgICBlbmRcbiAgbGV0IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbl9vZl9qc29vXG4gICAgKHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pblxuICAgICAgOiB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4gSnMudCkgOlxuICAgIFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX25haXNzYW5jZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbiMjLmRhdGVOYWlzc2FuY2VJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBhbm5lZXNfaW4gPVxuICAgICAgICBkdXJhdGlvbl9vZl9qc29vIHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbiMjLmFubmVlc0luXG4gICAgfVxuXG5jbGFzcyB0eXBlIHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZU5haXNzYW5jZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFubmVlc0luOiBSdW50aW1lX2pzb28uUnVudGltZS5kdXJhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luX3RvX2pzb29cbiAgICAodmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbiA6IFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi50KVxuICAgIDogdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlTmFpc3NhbmNlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbi5kYXRlX25haXNzYW5jZV9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIGFubmVlc0luID1cbiAgICAgICAgZHVyYXRpb25fdG9fanNvbyB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luLmFubmVlc19pblxuICAgICAgZW5kXG4gIGxldCB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luX29mX2pzb29cbiAgICAodmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbiA6IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4gSnMudCkgOlxuICAgIFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX25haXNzYW5jZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luIyMuZGF0ZU5haXNzYW5jZUluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBhbm5lZXNfaW4gPSBkdXJhdGlvbl9vZl9qc29vIHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4jIy5hbm5lZXNJblxuICAgIH1cblxuY2xhc3MgdHlwZSBzbWljX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc2lkZW5jZUluOiBjb2xsZWN0aXZpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgc21pY19pbl90b19qc29vIChzbWljX2luIDogU21pY0luLnQpIDogc21pY19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9IGRhdGVfdG9fanNvbyBzbWljX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCByZXNpZGVuY2VJbiA9IGNvbGxlY3Rpdml0ZV90b19qc29vIHNtaWNfaW4ucmVzaWRlbmNlX2luXG4gICAgICBlbmRcbiAgbGV0IHNtaWNfaW5fb2ZfanNvbyAoc21pY19pbiA6IHNtaWNfaW4gSnMudCkgOiBTbWljSW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9IGRhdGVfb2ZfanNvbyBzbWljX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICByZXNpZGVuY2VfaW4gPSBjb2xsZWN0aXZpdGVfb2ZfanNvbyBzbWljX2luIyMucmVzaWRlbmNlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwcmVzdGF0aW9uQ291cmFudGVJbjpcbiAgICAgIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzaWRlbmNlSW46IGNvbGxlY3Rpdml0ZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgIDogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KVxuICAgIDogZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBwcmVzdGF0aW9uQ291cmFudGVJbiA9XG4gICAgICAgIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc190b19qc29vIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4ucHJlc3RhdGlvbl9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlc2lkZW5jZUluID1cbiAgICAgICAgY29sbGVjdGl2aXRlX3RvX2pzb28gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5yZXNpZGVuY2VfaW5cbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgIDogZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KSA6XG4gICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIHByZXN0YXRpb25fY291cmFudGVfaW4gPVxuICAgICAgICBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5wcmVzdGF0aW9uQ291cmFudGVJbjtcbiAgICAgIHJlc2lkZW5jZV9pbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnJlc2lkZW5jZUluXG4gICAgfVxuXG5cblxuXG5sZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiA6IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudClcbiAgOiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgPVxuICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gIHw+IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIHw+IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcbiAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiA6IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiBKcy50KVxuICA6IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSBKcy50ID1cbiAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luXG4gIHw+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVxuICB8PiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJcbiAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiBKcy50KVxuICA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciBKcy50ID1cbiAgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llclxuICB8PiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgKGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiA6IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50KVxuICA6IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50ID1cbiAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICB8PiBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfdG9fanNvb1xuXG5cbmxldCBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlXG4gIChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIDogb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiBKcy50KVxuICA6IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUgSnMudCA9XG4gIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5cbiAgfD4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbl9vZl9qc29vXG4gIHw+IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVcbiAgfD4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV90b19qc29vXG5cblxubGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50XG4gIChpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiA6IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIEpzLnQpXG4gIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgSnMudCA9XG4gIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luXG4gIHw+IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRcbiAgfD4gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KVxuICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gIHw+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc190b19qc29vXG5cblxubGV0IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYVxuICAodmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luIDogdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luIEpzLnQpXG4gIDogdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hIEpzLnQgPVxuICB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW5cbiAgfD4gdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luX29mX2pzb29cbiAgfD4gdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hXG4gIHw+IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV90b19qc29vXG5cblxubGV0IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FcbiAgKHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4gOiB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luIEpzLnQpXG4gIDogdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSBKcy50ID1cbiAgdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pblxuICB8PiB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luX29mX2pzb29cbiAgfD4gdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYVxuICB8PiB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX3RvX2pzb29cblxuXG5sZXQgc21pYyAoc21pY19pbiA6IHNtaWNfaW4gSnMudClcbiAgOiBzbWljIEpzLnQgPVxuICBzbWljX2luIHw+IHNtaWNfaW5fb2ZfanNvbyB8PiBzbWljIHw+IHNtaWNfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZcbiAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50KVxuICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZiBKcy50ID1cbiAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZlxuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50KVxuICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIgSnMudCA9XG4gIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJcbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl90b19qc29vXG5cblxubGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpXG4gIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQgPVxuICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV90b19qc29vXG5cblxubGV0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgKHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gOiByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQpXG4gIDogcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50ID1cbiAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICB8PiByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICB8PiByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb29cblxuXG5sZXQgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIDogZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudClcbiAgOiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50ID1cbiAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgfD4gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICB8PiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgKGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpXG4gIDogZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICB8PiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICB8PiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZlxuICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4gSnMudClcbiAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmIEpzLnQgPVxuICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiBKcy50KVxuICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIEpzLnQgPVxuICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pblxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gSnMudClcbiAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQgPVxuICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBKcy50KVxuICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgSnMudCA9XG4gIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudFxuICAoZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIDogZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIEpzLnQpXG4gIDogZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50IEpzLnQgPVxuICBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW5cbiAgfD4gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50XG4gIHw+IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF90b19qc29vXG5cblxubGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAoZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIDogZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQpXG4gIDogZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQgPVxuICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5cbiAgfD4gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gIHw+IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgKGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gOiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQpXG4gIDogZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50ID1cbiAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pblxuICB8PiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudFxuICB8PiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudClcbiAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50ID1cbiAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudFxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRcbiAgKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4gOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIEpzLnQpXG4gIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCBKcy50ID1cbiAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pblxuICB8PiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudFxuICB8PiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X3RvX2pzb29cblxuXG5sZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZVxuICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gSnMudClcbiAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlIEpzLnQgPVxuICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gIHw+IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlXG4gIHw+IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfdG9fanNvb1xuXG5cbmxldCBfID1cbiAgIEpzLmV4cG9ydCBcIkFpZGVzTG9nZW1lbnRMaWJcIlxuICAgIChvYmplY3QlanNcbiAgICAgIFxuICAgICAgbWV0aG9kIGNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudCA6IChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQgLT4gY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlIDogKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiBKcy50IC0+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llciA6IChjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4gSnMudCAtPiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llclxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUgOiAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgLT4gY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICAgIFxuICAgICAgbWV0aG9kIG91dmVydHVyZURyb2l0c1JldHJhaXRlIDogKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gSnMudCAtPiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlXG4gICAgICBcbiAgICAgIG1ldGhvZCBpbXBheWVEZXBlbnNlTG9nZW1lbnQgOiAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gSnMudCAtPiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgOiAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIFxuICAgICAgbWV0aG9kIHZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEEgOiAodmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luIEpzLnQgLT4gdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FcbiAgICAgIFxuICAgICAgbWV0aG9kIHZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckEgOiAodmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbiBKcy50IC0+IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FcbiAgICAgIFxuICAgICAgbWV0aG9kIHNtaWMgOiAoc21pY19pbiBKcy50IC0+IHNtaWMgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIHNtaWNcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmIDogKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50IC0+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZiBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIgOiAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50IC0+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUgOiAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgLT4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFja1xuICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICAgIFxuICAgICAgbWV0aG9kIHJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQgOiAocmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50IC0+IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50IDogKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQgLT4gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBlbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcyA6IChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgLT4gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZiA6IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQgLT4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZlxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIgOiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gSnMudCAtPiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZSA6IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgLT4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCA6IChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQgLT4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgZWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50IDogKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiBKcy50IC0+IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBlbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgOiAoZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQgLT4gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50IDogKGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCAtPiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQgOiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCAtPiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQgOiAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiBKcy50IC0+IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlIDogKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gSnMudCAtPiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlXG4gICAgICBcbiAgICBlbmQpIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZW5jaCBsYXcgbGlicmFyeSwgYSBjb2xsZWN0aW9uIG9mIGZ1bmN0aW9ucyBmb3JcbiAgIGNvbXB1dGluZyBGcmVuY2ggdGF4ZXMgYW5kIGJlbmVmaXRzIGRlcml2ZWQgZnJvbSBDYXRhbGEgcHJvZ3JhbXMuIENvcHlyaWdodFxuICAgKEMpIDIwMjEgSW5yaWEsIGNvbnRyaWJ1dG9yOiBEZW5pcyBNZXJpZ291eCA8ZGVuaXMubWVyaWdvdXhAaW5yaWEuZnI+LCBFbWlsZVxuICAgUm9sbGV5IDxlbWlsZS5yb2xsZXlAdHV0YS5pbz5cblxuICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3RcbiAgIHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mXG4gICB0aGUgTGljZW5zZSBhdFxuXG4gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUXG4gICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGVcbiAgIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyXG4gICB0aGUgTGljZW5zZS4gKilcblxub3BlbiBKc19vZl9vY2FtbFxub3BlbiBMYXdfc291cmNlXG5vcGVuIFJ1bnRpbWVfanNvby5SdW50aW1lXG5tb2R1bGUgQUYgPSBBbGxvY2F0aW9uc19mYW1pbGlhbGVzXG5tb2R1bGUgQUZfd2ViID0gQWxsb2NhdGlvbnNfZmFtaWxpYWxlc19hcGlfd2ViXG5tb2R1bGUgQUwgPSBBaWRlc19sb2dlbWVudFxubW9kdWxlIEFMX3dlYiA9IEFpZGVzX2xvZ2VtZW50X2FwaV93ZWJcblxubGV0IF8gPVxuICBKcy5leHBvcnRfYWxsXG4gICAgKG9iamVjdCVqc1xuICAgICAgIHZhbCBldmVudHNNYW5hZ2VyID0gZXZlbnRfbWFuYWdlclxuXG4gICAgICAgbWV0aG9kIGNvbXB1dGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcbiAgICAgICAgICAgOiAoQUZfd2ViLmludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIC0+IGZsb2F0KSBKcy5jYWxsYmFjayA9XG4gICAgICAgICBKcy53cmFwX2NhbGxiYWNrIChmdW4gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gLT5cbiAgICAgICAgICAgICBleGVjdXRlX29yX3Rocm93X2Vycm9yIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgICAgICAgICAgICAgICB8PiBBRl93ZWIuaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgcmVzdWx0IyMuaU1vbnRhbnRWZXJzZSkpXG5cbiAgICAgICBtZXRob2QgY29tcHV0ZUFpZGVzQXVMb2dlbWVudFxuICAgICAgICAgICA6IChBTF93ZWIuY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiAtPiBmbG9hdClcbiAgICAgICAgICAgICBKcy5jYWxsYmFjayA9XG4gICAgICAgICBKcy53cmFwX2NhbGxiYWNrIChmdW4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiAtPlxuICAgICAgICAgICAgIGV4ZWN1dGVfb3JfdGhyb3dfZXJyb3IgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgICAgICAgICAgICAgICAgfD4gQUxfd2ViLmNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgcmVzdWx0IyMuYWlkZUZpbmFsZSkpXG4gICAgZW5kKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFbnN1cmUgdGhhdCBbYXRfZXhpdF0gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSBwcm9ncmFtICopXG5cbmxldCBfID0gZG9fYXRfZXhpdCgpXG4iXX0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJhcGlfd2ViLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIk9iamVjdCIsImdsb2JhbFRoaXMiLCJ0aGlzIiwiZ2V0IiwiX1RfIiwiZ2xvYmFsIiwic2VsZiIsImNhbWxfaW50NjRfaXNfemVybyIsIngiLCJjYW1sX3N0cl9yZXBlYXQiLCJuIiwicyIsInIiLCJsIiwiY2FtbF9pbnQ2NF9vZmZzZXQiLCJNYXRoIiwiY2FtbF9yYWlzZV9jb25zdGFudCIsInRhZyIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsImgiLCJzaWduIiwib2Zmc2V0IiwibW9kdWx1cyIsImRpdmlzb3IiLCJxdW90aWVudCIsInkiLCJxIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludDY0X2lzX25lZ2F0aXZlIiwiY2FtbF9pbnQ2NF9uZWciLCJjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMiLCJhIiwiaSIsImxlbiIsImYiLCJTdHJpbmciLCJudWxsIiwiY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwianNvb19pc19hc2NpaSIsImNhbWxfdXRmMTZfb2ZfdXRmOCIsImIiLCJ0IiwiYyIsImMxIiwiYzIiLCJ2IiwiaiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImxlbmd0aCIsImNvbnRlbnQiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfcGFyc2VfZm9ybWF0IiwiZm10IiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0IiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJlcnJubyIsInZhcmlhbnQiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJVaW50OEFycmF5IiwiY2FtbF9ieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3N5c19lcnJvciIsImNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyIsImNhbWxfY3JlYXRlX2J5dGVzIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsIk1sRmlsZSIsIk1sRmFrZUZpbGUiLCJvbGQiLCJidWYiLCJwb3MiLCJjbGVuIiwibmV3X3N0ciIsIm9sZF9kYXRhIiwiZGF0YSIsIk1sRmFrZUZkIiwiZmlsZSIsImZsYWdzIiwidW5kZWZpbmVkIiwiTWxGYWtlRGV2aWNlIiwicmVzIiwiU3ltYm9sIiwibmFtZV9zbGFzaCIsIm1vZGUiLCJyYWlzZV91bml4IiwicGFyZW50IiwiUmVnRXhwIiwic2VlbiIsIm0iLCJlbnRyeSIsIm9rIiwiQXJyYXkiLCJieXRlcyIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfYnl0ZXNfdW5zYWZlX2dldCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQiLCJjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyIsImNhbWxfYnl0ZXNfYm91bmRfZXJyb3IiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2J5dGVzX3NldCIsIk1sTm9kZUZkIiwiZmQiLCJyZXF1aXJlIiwiZXJyIiwiYnVmX29mZnNldCIsInJlYWQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJpc0NoYXJhY3RlckRldmljZSIsIm8iLCJqc19zdGF0cyIsInRvX2RpciIsInRhcmdldCIsImxpbmsiLCJmaWxlX2tpbmQiLCJjYW1sX2dldF9yb290IiwiY2FtbF9mYWlsd2l0aCIsImNhbWxfcm9vdCIsImpzb29fbW91bnRfcG9pbnQiLCJyZXNvbHZlX2ZzX2RldmljZSIsImNhbWxfc3lzX2lzX2RpcmVjdG9yeSIsImNhbWxfcmFpc2Vfbm90X2ZvdW5kIiwiY2FtbF9zeXNfZ2V0ZW52IiwicHJvY2VzcyIsInNoaWZ0X3JpZ2h0X25hdCIsIm5hdDEiLCJvZnMxIiwibGVuMSIsIm5hdDIiLCJvZnMyIiwibmJpdHMiLCJ3cmFwIiwiY2FtbF9ncl9zdGF0ZSIsImNhbWxfZ3Jfc3RhdGVfZ2V0IiwiY2FtbF9ncl9wb2ludF9jb2xvciIsImltIiwiTWxPYmplY3RUYWJsZSIsIk5haXZlTG9va3VwIiwib2JqcyIsImNhbWxfc3lzX3JlbmFtZSIsIm9fcm9vdCIsIm5fcm9vdCIsImNhbWxfbG9nMTBfZmxvYXQiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwiY2FtbF9tbF9jaGFubmVscyIsImNhbWxfcmVmaWxsIiwiY2hhbiIsInN0ciIsInN0cl9hIiwibnJlYWQiLCJjYW1sX2FycmF5X2JvdW5kX2Vycm9yIiwiY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUiLCJjaGFuaWQiLCJwcmV2X21heCIsImNhbWxfZ2NfbWlub3IiLCJ1bml0IiwiYmlnSW50IiwiQkFTRSIsIkxPR19CQVNFIiwiTUFYX0lOVCIsIk1BWF9JTlRfQVJSIiwic21hbGxUb0FycmF5IiwiREVGQVVMVF9BTFBIQUJFVCIsIkJpZ0ludCIsImpvb19nbG9iYWxfb2JqZWN0Iiwic3VwcG9ydHNOYXRpdmVCaWdJbnQiLCJJbnRlZ2VyIiwicmFkaXgiLCJhbHBoYWJldCIsImNhc2VTZW5zaXRpdmUiLCJwYXJzZVZhbHVlIiwicGFyc2VCYXNlIiwiQmlnSW50ZWdlciIsInZhbHVlIiwiU21hbGxJbnRlZ2VyIiwiTmF0aXZlQmlnSW50IiwiaXNQcmVjaXNlIiwiYXJyYXlUb1NtYWxsIiwiYXJyIiwidHJpbSIsImNvbXBhcmVBYnMiLCJjcmVhdGVBcnJheSIsInRydW5jYXRlIiwiYWRkIiwibF9hIiwibF9iIiwiY2FycnkiLCJiYXNlIiwic3VtIiwiYWRkQW55IiwiYWRkU21hbGwiLCJzdWJ0cmFjdCIsImFfbCIsImJfbCIsImJvcnJvdyIsImRpZmZlcmVuY2UiLCJzdWJ0cmFjdEFueSIsInN1YnRyYWN0U21hbGwiLCJzbWFsbCIsIm11bHRpcGx5TG9uZyIsInByb2R1Y3QiLCJhX2kiLCJiX2oiLCJtdWx0aXBseVNtYWxsIiwic2hpZnRMZWZ0IiwibXVsdGlwbHlLYXJhdHN1YmEiLCJhYyIsImJkIiwiYWJjZCIsInVzZUthcmF0c3ViYSIsImwxIiwibDIiLCJhYnMiLCJtdWx0aXBseVNtYWxsQW5kQXJyYXkiLCJzcXVhcmUiLCJhX2oiLCJkaXZNb2QxIiwiZGl2aXNvck1vc3RTaWduaWZpY2FudERpZ2l0IiwibGFtYmRhIiwicmVtYWluZGVyIiwicXVvdGllbnREaWdpdCIsInNoaWZ0IiwiZGl2TW9kU21hbGwiLCJkaXZNb2QyIiwicGFydCIsImd1ZXNzIiwieGxlbiIsImhpZ2h4IiwiaGlnaHkiLCJjaGVjayIsImRpdk1vZEFueSIsIkVycm9yIiwiY29tcGFyaXNvbiIsInFTaWduIiwibW9kIiwibVNpZ24iLCJfMCIsIl8xIiwiXzIiLCJleHAiLCJJbmZpbml0eSIsImlzQmFzaWNQcmltZSIsIm1pbGxlclJhYmluVGVzdCIsIm5QcmV2Iiwic3RyaWN0IiwiaXNQcmltZSIsImJpdHMiLCJsb2dOIiwiaXRlcmF0aW9ucyIsIm5ld1QiLCJuZXdSIiwibGFzdFQiLCJsYXN0UiIsInBvd2Vyc09mVHdvIiwicG93ZXJzMkxlbmd0aCIsImhpZ2hlc3RQb3dlcjIiLCJzaGlmdF9pc1NtYWxsIiwicmVtUXVvIiwiYml0d2lzZSIsImZuIiwieFNpZ24iLCJ5U2lnbiIsInhSZW0iLCJ5UmVtIiwieERpZ2l0IiwieURpZ2l0IiwieERpdk1vZCIsInlEaXZNb2QiLCJMT0JNQVNLX0kiLCJMT0JNQVNLX0JJIiwicm91Z2hMT0IiLCJpbnRlZ2VyTG9nYXJpdGhtIiwidG1wIiwiZSIsIm1heCIsIm1pbiIsImdjZCIsImxjbSIsInJhbmRCZXR3ZWVuIiwibG93IiwiaGlnaCIsInJhbmdlIiwiZGlnaXRzIiwidG9CYXNlIiwicmVzdHJpY3RlZCIsInRvcCIsImRpZ2l0IiwidGV4dCIsImFic0Jhc2UiLCJhbHBoYWJldFZhbHVlcyIsImlzTmVnYXRpdmUiLCJzdGFydCIsInBhcnNlQmFzZUZyb21BcnJheSIsInZhbCIsInBvdyIsInN0cmluZ2lmeSIsIm5lZyIsIk51bWJlciIsIm91dCIsImxlZnQiLCJkaXZtb2QiLCJ0b0Jhc2VTdHJpbmciLCJ6ZXJvcyIsInBhcnNlSW50IiwicGFyc2VTdHJpbmdWYWx1ZSIsInNwbGl0IiwiZGVjaW1hbFBsYWNlIiwiaXNWYWxpZCIsInBhcnNlTnVtYmVyVmFsdWUiLCJtbF96X25vcm1hbGl6ZSIsIm1sX3pfcG93IiwiejEiLCJtbF96X3Jvb3QiLCJ6IiwiemVybyIsIm9uZSIsImVuZCIsImFucyIsInR3byIsIm1pZCIsInBvIiwibWxfel9yb290cmVtIiwiY2FtbF9tbF9jb25kaXRpb25fbmV3IiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfYmFfdWludDhfZ2V0NjQiLCJiYSIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3JldHVybl9leG5fY29uc3RhbnQiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jcmVhdGVfZmlsZSIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrIiwiY2FtbF9wYXJzZXJfdHJhY2UiLCJjYW1sX3NldF9wYXJzZXJfdHJhY2UiLCJvbGRmbGFnIiwiY2FtbF9saXN0X29mX2pzX2FycmF5IiwiY2FtbF9tdWwiLCJjYW1sX2hhc2hfbWl4X2ludCIsIm51bV9kaWdpdHNfbmF0IiwibmF0IiwiY2FtbF9oYXNoX25hdCIsImNhbWxfY2FsbF9nZW4iLCJhcmdzTGVuIiwiZXh0cmFfYXJncyIsImFyZ3VtZW50cyIsIm5hcmdzIiwiY2FtbF9jYWxsYmFjayIsImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX3N5c19jaGRpciIsImRpciIsImNhbWxfb2JqX3RhZyIsIkZ1bmN0aW9uIiwiY2FtbF9vYmpfdXBkYXRlX3RhZyIsImNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl8iLCJjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW4iLCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmciLCJmaWVsZDAiLCJjYW1sX2djX2NvdW50ZXJzIiwibWxfel9kaXYiLCJ6MiIsIm1sX3pfc2lnbiIsIm1sX3pfYWRkIiwibWxfel9jZGl2IiwiejFfcG9zIiwiejJfcG9zIiwiY2FtbF9ncl9zeW5jaHJvbml6ZSIsImNhbWxfdW5peF9jbG9zZWRpciIsImRpcl9oYW5kbGUiLCJjYW1sX3VuaXhfb3BlbmRpciIsImNhbWxfdW5peF9yZXdpbmRkaXIiLCJuZXdfZGlyX2hhbmRsZSIsImNhbWxfcmFpc2VfZW5kX29mX2ZpbGUiLCJjYW1sX3VuaXhfcmVhZGRpciIsImNhbWxfdW5peF9maW5kZmlyc3QiLCJwYXRoX2pzIiwiZmlyc3RfZW50cnkiLCJjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWciLCJsb2cyX29rIiwianNvb19mbG9vcl9sb2cyIiwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IiwiZmxvYXQzMmEiLCJGbG9hdDMyQXJyYXkiLCJpbnQzMmEiLCJJbnQzMkFycmF5IiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJrIiwicjMiLCJyMiIsInIxIiwiY2FtbF9iYV9zZXJpYWxpemUiLCJzeiIsImNvbXBsZXgiLCJjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50Iiwia2luZCIsImNhbWxfYmFfY3JlYXRlX2J1ZmZlciIsInNpemUiLCJ2aWV3IiwiRmxvYXQ2NEFycmF5IiwiSW50OEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIiwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIiwiTmFOIiwiY2FtbF9iYV9nZXRfc2l6ZSIsImRpbXMiLCJuX2RpbXMiLCJjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSIsImNhbWxfaW50NjRfaGkzMiIsImNhbWxfaW50NjRfbG8zMiIsImNhbWxfYmFfY3VzdG9tX25hbWUiLCJNbF9CaWdhcnJheSIsImxheW91dCIsInJlIiwidG90YWwiLCJrMSIsImsyIiwiTWxfQmlnYXJyYXlfY18xXzEiLCJjYW1sX2JhX2NyZWF0ZV91bnNhZmUiLCJzaXplX3Blcl9lbGVtZW50IiwiY2FtbF9iYV9kZXNlcmlhbGl6ZSIsInJlYWRlciIsIm51bV9kaW1zIiwic2l6ZV9kaW0iLCJzaXplX2RpbV9oaSIsInNpemVfZGltX2xvIiwic2l4dHkiLCJpbnQ2NCIsImNhbWxfYmFfY29tcGFyZSIsImNhbWxfaGFzaF9taXhfaW50NjQiLCJjYW1sX2hhc2hfbWl4X2Zsb2F0IiwidjAiLCJjYW1sX2JhX2hhc2giLCJudW1fZWx0cyIsInciLCJjYW1sX2ludDMyX3VubWFyc2hhbCIsImNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCIsImNhbWxfaW50NjRfdW5tYXJzaGFsIiwiY2FtbF9pbnQ2NF9jb21wYXJlIiwiY2FtbF9pbnQ2NF9oYXNoIiwiY2FtbF9jdXN0b21fb3BzIiwiY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tIiwiY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tIiwibnVtIiwiY3VzdG9tIiwic3dhcCIsImNhbWxfY29tcGFyZV92YWxfdGFnIiwiY2FtbF9pbnRfY29tcGFyZSIsImNhbWxfYnl0ZXNfY29tcGFyZSIsImNhbWxfc3RyaW5nX2NvbXBhcmUiLCJjYW1sX2NvbXBhcmVfdmFsIiwic3RhY2siLCJ0YWdfYSIsInRhZ19iIiwiY2FtbF9ncmVhdGVydGhhbiIsImRpdl9oZWxwZXIiLCJkaXZfZGlnaXRfbmF0IiwibmF0cSIsIm9mc3EiLCJuYXRyIiwib2ZzciIsInJlbSIsIm51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdCIsInNoaWZ0X2xlZnRfbmF0IiwiTWxOYXQiLCJjcmVhdGVfbmF0Iiwic2V0X3RvX3plcm9fbmF0IiwiaW5jcl9uYXQiLCJjYXJyeV9pbiIsImFkZF9uYXQiLCJsZW4yIiwibmF0X29mX2FycmF5IiwibXVsdF9kaWdpdF9uYXQiLCJuYXQzIiwib2ZzMyIsIngxIiwieDIiLCJ4MyIsImRlY3JfbmF0Iiwic3ViX25hdCIsImNvbXBhcmVfbmF0IiwiZGl2X25hdCIsInF1byIsImNhbWxfYmFfYmxpdCIsInNyYyIsImRzdCIsImlzX2RpZ2l0X2ludCIsImNhbWxfaW50NjRfZGl2IiwiY2FtbF9qc19odG1sX2VudGl0aWVzIiwiZW50aXR5IiwidGVtcCIsImRvY3VtZW50IiwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldCIsImNhbWxfaW50NjRfb2ZfZmxvYXQiLCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NCIsImNhbWxfYmFfc2V0XzIiLCJtbF96X29mX2ludDY0IiwiaTY0IiwibWxfel9rcm9uZWNrZXIiLCJjYW1sX2FyZ3YiLCJtYWluIiwiYXJndiIsImFyZ3MyIiwiY2FtbF9leGVjdXRhYmxlX25hbWUiLCJjYW1sX2pzX2V2YWxfc3RyaW5nIiwiZXZhbCIsInNlcmlhbGl6ZV9uYXQiLCJjYW1sX21lbXByb2Zfc2V0IiwiX2NvbnRyb2wiLCJtbF96X25lZyIsImNhbWxfc3lzX2V4aXQiLCJjYW1sX2NoYW5uZWxfZGVzY3JpcHRvciIsImNhbWxfanNfZnJvbV9hcnJheSIsImNhbWxfYmFfcmVzaGFwZSIsInZpbmQiLCJuZXdfZGltIiwiY2FtbF9vb19sYXN0X2lkIiwiY2FtbF9zZXRfb29faWQiLCJjYW1sX2dyX2ZpbGxfcmVjdCIsImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhIiwic3RyMSIsInBvczEiLCJiYTIiLCJwb3MyIiwic2xpY2UiLCJjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUiLCJqc25hbWUiLCJjYW1sX2dldF9nbG9iYWxfZGF0YSIsImNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQiLCJjYW1sX2JhX3VpbnQ4X2dldDE2IiwibWxfel9vZl9pbnQzMiIsImNhbWxfY29tcGFyZSIsImNhbWxfTUQ1VHJhbnNmb3JtIiwieHgiLCJmZiIsImdnIiwiaGgiLCJpaSIsImNhbWxfTUQ1VXBkYXRlIiwiY3R4IiwiaW5wdXQiLCJpbnB1dF9sZW4iLCJpbl9idWYiLCJpbnB1dF9wb3MiLCJtaXNzaW5nIiwiY2FtbF9mcmVzaF9vb19pZCIsImNhbWxfaW50NjRfdG9fZmxvYXQiLCJjYW1sX2JhX2dldF8xIiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9uZXdfc3RyaW5nIiwiY2FtbF9lcmZfZmxvYXQiLCJhMSIsImEyIiwiYTMiLCJhNCIsImE1IiwiY2FtbF9iYV91aW50OF9nZXQzMiIsImNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgiLCJtbF96X3NoaWZ0X3JpZ2h0IiwiYW10IiwiY2FtbF9zdHJfaW5pdGlhbGl6ZSIsImNhbWxfb2JqX2Jsb2NrIiwiY2FtbF9ncl9jbGVhcl9ncmFwaCIsImJpZ3N0cmluZ190b19hcnJheV9idWZmZXIiLCJicyIsImNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQiLCJfdW5pdCIsImx4b3JfZGlnaXRfbmF0IiwiY2FtbF9vYmpfYWRkX29mZnNldCIsImNhbWxfZmluYWxfcmVsZWFzZSIsImNhbWxfanNfdG9fYXJyYXkiLCJtbF96X2xvZ29yIiwiY2FtbF9ncl9wbG90IiwiY29sb3IiLCJjYW1sX2J5dGVzX3NldDE2IiwiaTE2IiwiY2FtbF9zdHJpbmdfc2V0MTYiLCJjYW1sX2J5dGVzX3NldDY0IiwiY2FtbF9pbnQ2NF9ic3dhcCIsIm1sX3pfZml0c19pbnQiLCJtbF96X2ZpdHNfaW50MzIiLCJjYW1sX2djX21ham9yIiwibWxfel9zaGlmdF9sZWZ0IiwiY2FtbF9sZXhfYXJyYXkiLCJjYW1sX2xleF9lbmdpbmUiLCJ0YmwiLCJzdGFydF9zdGF0ZSIsImxleGJ1ZiIsImxleF9idWZmZXIiLCJsZXhfYnVmZmVyX2xlbiIsImxleF9zdGFydF9wb3MiLCJsZXhfY3Vycl9wb3MiLCJsZXhfbGFzdF9wb3MiLCJsZXhfbGFzdF9hY3Rpb24iLCJsZXhfZW9mX3JlYWNoZWQiLCJsZXhfYmFzZSIsImxleF9iYWNrdHJrIiwibGV4X2RlZmF1bHQiLCJsZXhfdHJhbnMiLCJsZXhfY2hlY2siLCJzdGF0ZSIsImJhY2t0cmsiLCJjYW1sX3N5c19maWxlX2V4aXN0cyIsImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QiLCJjYW1sX2FycmF5X3N1YiIsImNhbWxfYnl0ZXNfZXF1YWwiLCJjYW1sX2dyX3NpemVfeCIsImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMiLCJjYW1sX2F0b21pY19mZXRjaF9hZGQiLCJyZWYiLCJvc190eXBlIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiIsImNhbWxfY29zaF9mbG9hdCIsIk1sTXV0ZXgiLCJjYW1sX21sX211dGV4X25ldyIsImNhbWxfZXBoZV9rZXlfb2Zmc2V0IiwiY2FtbF9lcGhlX2NoZWNrX2tleSIsIndlYWsiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9ncl90ZXh0X3NpemUiLCJ0eHQiLCJjYW1sX2xleF9ydW5fbWVtIiwibWVtIiwiY3Vycl9wb3MiLCJjYW1sX2xleF9ydW5fdGFnIiwiY2FtbF9uZXdfbGV4X2VuZ2luZSIsImxleF9tZW0iLCJsZXhfYmFzZV9jb2RlIiwibGV4X2JhY2t0cmtfY29kZSIsImxleF9kZWZhdWx0X2NvZGUiLCJsZXhfdHJhbnNfY29kZSIsImxleF9jaGVja19jb2RlIiwibGV4X2NvZGUiLCJwY19vZmYiLCJwc3RhdGUiLCJiYXNlX2NvZGUiLCJjYW1sX2JhX3VpbnQ4X3NldDY0IiwibWxfel9wb3Bjb3VudCIsImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9hY29zaF9mbG9hdCIsImNhbWxfTUQ1SW5pdCIsIkFycmF5QnVmZmVyIiwiYjMyIiwiVWludDMyQXJyYXkiLCJjYW1sX21sX2ZsdXNoIiwiY2FtbF9zZWVrX291dCIsImNhbWxfbWxfc2Vla19vdXRfNjQiLCJjb21wYXJlX25hdF9yZWFsIiwiY2FtbF9nY19zZXQiLCJjYW1sX2pzX2dldCIsImNhbWxfdW5peF9pc2F0dHkiLCJmaWxlRGVzY3JpcHRvciIsInR0eSIsImNhbWxfbWxfc2V0X2J1ZmZlcmVkIiwiY2FtbF9nY19jb21wYWN0aW9uIiwiY2FtbF9lcGhlX2dldF9rZXkiLCJjYW1sX3VuaXhfbG9jYWx0aW1lIiwiRGF0ZSIsImRfbnVtIiwiamFudWFyeWZpcnN0IiwiZG95IiwiamFuIiwianVsIiwic3RkVGltZXpvbmVPZmZzZXQiLCJjYW1sX3VuaXhfbWt0aW1lIiwidG0iLCJ0bTIiLCJqc29vX3pfb2ZfanNfc3RyaW5nX2Jhc2UiLCJiYyIsIm1sX3pfb2Zfc3Vic3RyaW5nX2Jhc2UiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhIiwiY2FtbF9zeXNfZmRzIiwiY2FtbF9zeXNfY2xvc2UiLCJjYW1sX21sX2Nsb3NlX2NoYW5uZWwiLCJjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZSIsImV4biIsImZvcmNlIiwiY2FtbF9hdG9taWNfZXhjaGFuZ2UiLCJjYW1sX3N5c19pc2F0dHkiLCJfY2hhbiIsImlzX2RpZ2l0X3plcm8iLCJjYW1sX3VuaXhfbHN0YXQiLCJjYW1sX3VuaXhfbHN0YXRfNjQiLCJjYW1sX2pzX3NldCIsIm1sX3pfZ2NkZXh0X2ludGVybiIsImxhc3R4IiwibGFzdHkiLCJtbF96X3Rlc3RiaXQiLCJjYW1sX2FycmF5X2dldCIsImFycmF5IiwiaW5kZXgiLCJjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMiLCJjb250IiwiY2FtbF91bml4X3JtZGlyIiwiY2FtbF9sb2cyX2Zsb2F0IiwiY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50IiwibWxfel9jb25ncnVlbnQiLCJjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSIsImNhbWxfaW50NjRfc3ViIiwiY2FtbF9zZWVrX2luIiwiY2FtbF9tbF9zZWVrX2luXzY0IiwiY2FtbF9kb21haW5faWQiLCJjYW1sX21sX211dGV4X3VubG9jayIsImNhbWxfZG9tYWluX2xhdGVzdF9pZHgiLCJjYW1sX2RvbWFpbl9zcGF3biIsIm11dGV4IiwiaWQiLCJjYW1sX3VuaXhfbWtkaXIiLCJwZXJtIiwiY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IiwiY2FtbF9ub3RlcXVhbCIsIm1sX3pfYWJzIiwiY2FtbF9zeXNfY29uc3RfaW50X3NpemUiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayIsImNhbWxfaXNfanMiLCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmQiLCJjYW1sX2JhX2RpbSIsImNhbWxfYmFfZGltXzEiLCJtbF96X3NxcnQiLCJjYW1sX2pzX21ldGhfY2FsbCIsIm1sX3pfbHVjbnVtIiwiY2FtbF9lcGhlX2RhdGFfb2Zmc2V0IiwiY2FtbF93ZWFrX2NyZWF0ZSIsImNhbWxfZXBoZV9jcmVhdGUiLCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIiwibWxfel9wcm9iYWJfcHJpbWUiLCJjYW1sX3RyYW1wb2xpbmUiLCJjYW1sX21heWJlX3ByaW50X3N0YXRzIiwiY2FtbF9ieXRlc19nZXQ2NCIsImNhbWxfdW5peF9oYXNfc3ltbGluayIsIm1sX3pfcmVtIiwiY2FtbF9lcGhlX3NldF9rZXkiLCJjYW1sX2VwaGVfdW5zZXRfa2V5IiwiY291bnQiLCJjYW1sX3dlYWtfc2V0IiwiY2FtbF9zeXNfcmVtb3ZlIiwiY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IiLCJjYW1sX3N0cmluZ19nZXQzMiIsImNhbWxfYnl0ZXNfZ2V0IiwiY2FtbF9oeXBvdF9mbG9hdCIsIm1sX3pfZmFjTSIsImN1cnJlbnQiLCJjYW1sX2pzX2NhbGwiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmciLCJtbF96X211bF9vdmVyZmxvd3MiLCJtbF96X3RvX2ludCIsImNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyIiwiY2FtbF9oYXNoX21peF9qc2J5dGVzIiwiY2FtbF9tbF9ieXRlc19jb250ZW50IiwiY2FtbF9oYXNoX21peF9ieXRlcyIsImNhbWxfYnl0ZXNfbGVzc3RoYW4iLCJjYW1sX2VyZmNfZmxvYXQiLCJjYW1sX2dyX2ZpbGxfcG9seSIsImFyIiwiY2FtbF9nY19xdWlja19zdGF0IiwibWxfel9mYWMiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwibWxfel9kaXZpc2libGUiLCJjYW1sX29ial9yZWFjaGFibGVfd29yZHMiLCJudGhfZGlnaXRfbmF0IiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiZXhwb25lbnQiLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX2ludDY0X2FkZCIsImNhbWxfaW50NjRfbXVsIiwiY2FtbF9pbnQ2NF91bHQiLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJjYW1sX2JhX3NldF8xIiwiY2FtbF9pbnQ2NF94b3IiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9seG1fbmV4dCIsInNoaWZ0X2wiLCJzaGlmdF9yIiwib3IiLCJ4b3IiLCJtdWwiLCJyb3RsIiwic2V0IiwiTSIsImRhYmEiLCJxMCIsInExIiwic3QiLCJ4MCIsImNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4iLCJjYW1sX2xpc3RfdG9fanNfYXJyYXkiLCJjYW1sX2xlZ2FjeV9jdXN0b21fY29kZSIsImNhbWxfb3V0cHV0X3ZhbCIsIldyaXRlciIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImNvbnNvbGUiLCJpbnRlcm5fb2JqX3RhYmxlIiwibWVtbyIsImV4aXN0aW5nX29mZnNldCIsImV4dGVybl9yZWMiLCJvcHMiLCJzel8zMl82NCIsImhlYWRlcl9wb3MiLCJvbGRfcG9zIiwidHlwZV9vZl92IiwiY2FtbF9zdHJpbmdfb2ZfYXJyYXkiLCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmciLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kIiwiY21kIiwiY2hpbGRfcHJvY2VzcyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF91bml4X2dldHVpZCIsImRlc2VyaWFsaXplX25hdCIsImluaXRpYWxpemVfbmF0IiwibWxfel9zdWNjIiwiY2FtbF9ncl9vcGVuX3N1YndpbmRvdyIsImNhbWxfbWFyc2hhbF9kYXRhX3NpemUiLCJnZXQzMiIsIk1sU3RyaW5nUmVhZGVyIiwiY2FtbF9mbG9hdF9vZl9ieXRlcyIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIiLCJfbWFnaWMiLCJfYmxvY2tfbGVuIiwibnVtX29iamVjdHMiLCJfc2l6ZV8zMiIsIl9zaXplXzY0Iiwib2JqX2NvdW50ZXIiLCJpbnRlcm5fcmVjIiwiaGVhZGVyIiwiZXhwZWN0ZWRfc2l6ZSIsImNhbWxfc3RyaW5nX29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZSIsImJsb2NrIiwiY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXAiLCJjYW1sX2F0b21pY19jYXMiLCJjYW1sX2NvcHlzaWduX2Zsb2F0IiwiY2FtbF9ncl9zZXRfdGV4dF9zaXplIiwiY2FtbF9hdG9taWNfbG9hZCIsImNhbWxfTUQ1RmluYWwiLCJjYW1sX21kNV9ieXRlcyIsImNhbWxfYmFfc2V0X2dlbmVyaWMiLCJjYW1sX21sX2NvbmRpdGlvbl93YWl0IiwibXV0ZXh0IiwiY2FtbF9ieXRlc19sZXNzZXF1YWwiLCJjYW1sX3N0cmluZ19sZXNzZXF1YWwiLCJjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwiLCJjYW1sX25leHRhZnRlcl9mbG9hdCIsImNhbWxfZ3Jfc2l6ZV95IiwibWxfel9mYWMyIiwiY2FtbF9wb3NfaW4iLCJjYW1sX21sX3Bvc19pbiIsImNhbWxfaW50NjRfYW5kIiwiY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIiwibWxfel9iaW4iLCJjb2VmZiIsImNhbWxfdW5peF91bmxpbmsiLCJjYW1sX3N5c19vcGVuX2Zvcl9ub2RlIiwiZnMiLCJmZDIiLCJNbEZha2VGZF9vdXQiLCJjYW1sX3N5c19vcGVuX2ludGVybmFsIiwiaWR4IiwiY2FtbF9zeXNfb3BlbiIsIl9wZXJtcyIsIm1sX3pfZ2NkIiwibWxfel9tdWwiLCJtbF96X2hhbWRpc3QiLCJjYW1sX3N0cmluZ19nZXQiLCJyZV9tYXRjaCIsInJlX3dvcmRfbGV0dGVycyIsIm9wY29kZXMiLCJpc193b3JkX2xldHRlciIsImluX2JpdHNldCIsInJlX21hdGNoX2ltcGwiLCJwYXJ0aWFsIiwicHJvZyIsImNwb29sIiwibm9ybXRhYmxlIiwibnVtZ3JvdXBzIiwibnVtcmVnaXN0ZXJzIiwic3RhcnRjaGFycyIsInBjIiwicXVpdCIsImdyb3VwcyIsInJlX3JlZ2lzdGVyIiwiYmFja3RyYWNrIiwiaXRlbSIsInB1c2giLCJhY2NlcHQiLCJnIiwicHJlZml4X21hdGNoIiwib3AiLCJzYXJnIiwidWFyZyIsImdyb3VwIiwicmVfc2VhcmNoX2JhY2t3YXJkIiwibWxfel9sb2dhbmQiLCJjYW1sX2pzX2Zyb21fc3RyaW5nIiwiY2FtbF9iYV9zdWIiLCJjaGFuZ2VkX2RpbSIsIm5ld19kaW1zIiwibmV3X2RhdGEiLCJjYW1sX2djX2Z1bGxfbWFqb3IiLCJjYW1sX21sX211dGV4X3RyeV9sb2NrIiwiY2FtbF9ieXRlc19zZXQzMiIsImkzMiIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9iYV91aW50OF9zZXQzMiIsIm1sX3pfZGl2X3JlbSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IiwiY2FtbF91bml4X2dtdGltZSIsImNhbWxfc2lnbmJpdF9mbG9hdCIsImNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgiLCJjYW1sX2dyX3NldF9mb250IiwiY2FtbF9ncl9zZXRfY29sb3IiLCJjb252ZXJ0IiwibnVtYmVyIiwiY19zdHIiLCJjYW1sX2dyX21vdmV0byIsImNhbWxfZ3JfcmVzaXplX3dpbmRvdyIsImNhbWxfZ3Jfc3RhdGVfaW5pdCIsImNhbWxfZ3JfY3VycmVudF94IiwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5IiwidGEiLCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkiLCJjYW1sX21sX3NlZWtfb3V0IiwiY2FtbF9qc190eXBlb2YiLCJjYW1sX2hhc2hfbWl4X3N0cmluZyIsImNhbWxfc3RyaW5nX2hhc2giLCJjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZSIsImJ0IiwiY2FtbF9ncl9saW5ldG8iLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9iYV9kaW1fMyIsImNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24iLCJjYW1sX2Zvcm1hdF9leGNlcHRpb24iLCJidWNrZXQiLCJjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImhhbmRsZXIiLCJhdF9leGl0IiwiY2FtbF9lcGhlX2NoZWNrX2RhdGEiLCJjYW1sX2J5dGVzX2dldDE2IiwiY2FtbF9vYmpfbWFrZV9mb3J3YXJkIiwiY2FtbF9qc19mcm9tX2Jvb2wiLCJjYW1sX21sX3NldF9jaGFubmVsX25hbWUiLCJjYW1sX2V4cDJfZmxvYXQiLCJjYW1sX2dyX2Nsb3NlX2dyYXBoIiwiY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4IiwiY2FtbF9jcmVhdGVfc3RyaW5nIiwiY2FtbF9tbF9pbnB1dF9ibG9jayIsImF2YWlsIiwiY2FtbF9tZDVfY2hhbiIsInRvcmVhZCIsImNhbWxfYXRhbmhfZmxvYXQiLCJjYW1sX21sX2NvbmRpdGlvbl9zaWduYWwiLCJjYW1sX3VuaXhfZmluZG5leHQiLCJjYW1sX21sX291dHB1dF9ieXRlcyIsImNhbWxfbWxfb3V0cHV0IiwiY2FtbF9tbF9kb21haW5faWQiLCJjYW1sX2VwaGVfZ2V0X2RhdGEiLCJjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZSIsImNhbWxfdHJhbXBvbGluZV9yZXR1cm4iLCJjYW1sX21sX2lzX2J1ZmZlcmVkIiwiY2FtbF9hcnJheV9hcHBlbmQiLCJjYW1sX3VuaXhfZ2V0dGltZW9mZGF5IiwiY2FtbF91bml4X3RpbWUiLCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbCIsIm1sX3pfbmV4dHByaW1lIiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9qc19leHByIiwiY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQiLCJtbF96X3N1YiIsIm1sX3pfZmRpdiIsIm1sX3pfdG9fYml0cyIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzIiwiY2FtbF9ldmVudGxvZ19yZXN1bWUiLCJjYW1sX21kNV9zdHJpbmciLCJjYW1sX3N0cmluZ19lcXVhbCIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmciLCJtbF96X2RpdmV4YWN0IiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyIiwicmVfcmVwbGFjZW1lbnRfdGV4dCIsInJlcGwiLCJvcmlnIiwiY3VyIiwiY2FtbF9wdXJlX2pzX2V4cHIiLCJjYW1sX2JsaXRfc3RyaW5nIiwiYmxpdF9uYXQiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzIiwiYmExIiwiYnl0ZXMyIiwiY2FtbF91bml4X3N0YXQiLCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlIiwianNvb19jcmVhdGVfZmlsZV9leHRlcm4iLCJjYW1sX3VuaXhfc3RhdF82NCIsImNhbWxfdG9fanNfc3RyaW5nIiwiY2FtbF9tbF9tdXRleF9sb2NrIiwicmVfc2VhcmNoX2ZvcndhcmQiLCJjYW1sX2JsaXRfc3RyaW5nX3RvX2JpZ3N0cmluZyIsImNhbWxfbWFrZV92ZWN0IiwiaW5pdCIsImNhbWxfbWxfc2Vla19pbiIsImNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5IiwiY2FtbF9tbF9vdXRwdXRfY2hhciIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiIsImNhbWxfb2JqX2lzX2Jsb2NrIiwiY2FtbF9vYmpfc2V0X3Jhd19maWVsZCIsImNhbWxfanNfdmFyIiwiY2FtbF90cnVuY19mbG9hdCIsImNhbWxfemFyaXRoX21hcnNoYWwiLCJjYW1sX2VwaGVfdW5zZXRfZGF0YSIsImNhbWxfZXBoZV9zZXRfZGF0YSIsImNhbWxfZXBoZV9ibGl0X2RhdGEiLCJjYW1sX2lzX3ByaW50YWJsZSIsImNhbWxfYXJyYXlfb2ZfYnl0ZXMiLCJjYW1sX2VxdWFsIiwicmVfcGFydGlhbF9tYXRjaCIsImNhbWxfc3lzX3JhbmRvbV9zZWVkIiwiYnVmZiIsIm5vdyIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNiIiwiY2FtbF9iYV9nZXRfMiIsImNhbWxfYmFfdWludDhfc2V0MTYiLCJjYW1sX2xhenlfcmVzZXRfdG9fbGF6eSIsImNhbWxfanNfZGVsZXRlIiwiY2FtbF9pbnRfb2Zfc3RyaW5nIiwiY2FtbF9saXN0X21vdW50X3BvaW50IiwicHJldiIsImNhbWxfbWFyc2hhbF9jb25zdGFudHMiLCJjYW1sX29ial9yYXdfZmllbGQiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkiLCJtbF96X2ZpdHNfbmF0aXZlaW50IiwiY2FtbF9ncl9hcmNfYXV4IiwiY3giLCJjeSIsInJ5IiwicngiLCJyb3QiLCJ4UG9zIiwieVBvcyIsInhQb3NfcHJldiIsInlQb3NfcHJldiIsInNwYWNlIiwiZGVsdGEiLCJjYW1sX2dyX2ZpbGxfYXJjIiwiY2FtbF9iYV9zbGljZSIsIm51bV9pbmRzIiwic3ViX2RpbXMiLCJtbF96X29mX25hdGl2ZWludCIsImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2JhX2tpbmQiLCJjYW1sX2pzX2Z1bl9jYWxsIiwiY2FtbF9nY19tYWpvcl9zbGljZSIsIndvcmsiLCJtbF96X2ludmVydCIsIm1sX3pfcG93bSIsInozIiwiaW52IiwibWxfel9wb3dtX3NlYyIsImNhbWxfanNfcHVyZV9leHByIiwiY29tcGFyZV9kaWdpdHNfbmF0IiwiY2FtbF9tbF9pbnB1dCIsImNhbWxfZ3Jfd2FpdF9ldmVudCIsIl9ldmwiLCJjYW1sX2dyX3NpZ2lvX2hhbmRsZXIiLCJjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZSIsImNhbWxfdW5peF9jbGVhbnVwIiwiY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlIiwiY2FtbF9zeXNfZ2V0X2NvbmZpZyIsImNhbWxfb2JqX2lzX3NoYXJlZCIsImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QiLCJjYW1sX2FzaW5oX2Zsb2F0IiwibWxfel9oYXNoIiwiYWNjIiwiY2FtbF9wb3Nfb3V0IiwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlciIsImFiIiwiY2FtbF9tb2QiLCJjYW1sX2JhX2luaXQiLCJjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIiwicmVfc3RyaW5nX21hdGNoIiwiQmlnU3RyaW5nUmVhZGVyIiwiY2FtbF9ncl9kdW1wX2ltYWdlIiwiY2FtbF9iYV9nZXRfZ2VuZXJpYyIsImNhbWxfdW5peF9zdGFydHVwIiwiY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSIsImNhbWxfZm9ybWF0X2Zsb2F0IiwidG9GaXhlZCIsImRwIiwicHJlYyIsImNhbWxfbW91bnRfYXV0b2xvYWQiLCJtbF96X2VxdWFsIiwibWxfel9maXRzX2ludDY0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSIsImNhbWxfYmxpdF9iaWdzdHJpbmdfdG9fYmlnc3RyaW5nIiwibWxfel9zcXJ0X3JlbSIsImRpZmYiLCJjYW1sX3N0cmluZ19sZXNzdGhhbiIsImNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuIiwiY2FtbF9kaXYiLCJjYW1sX29ial9kdXAiLCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSIsImNhbWxfbWVtcHJvZl9zdGFydCIsInJhdGUiLCJzdGFja19zaXplIiwidHJhY2tlciIsIm1sX3pfcGVyZmVjdF9zcXVhcmUiLCJjYW1sX3N5c19nZXRfYXJndiIsImNhbWxfbWxfZG9tYWluX3NldF9uYW1lIiwiX25hbWUiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2dyX2NyZWF0ZV9pbWFnZSIsImNhbWxfZXBoZV9nZXRfa2V5X2NvcHkiLCJjYW1sX2xlc3N0aGFuIiwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCIsIm1sX3pfdG9fbmF0aXZlaW50IiwiY2FtbF9yZWdpc3Rlcl9nbG9iYWwiLCJuYW1lX29wdCIsIm11bHRfbmF0IiwibGVuMyIsInNxdWFyZV9uYXQiLCJjYW1sX2pzX2Zyb21fZmxvYXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9nY19zdGF0IiwiY2FtbF9nZXRfbWFqb3JfY3JlZGl0IiwiY2FtbF9zeXNfbW9kaWZ5X2FyZ3YiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJvYmoiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfanNfZ2V0X2NvbnNvbGUiLCJjYW1sX3N5c191bnNhZmVfZ2V0ZW52IiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4iLCJyZWZpbGwiLCJjaGFubmVsIiwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5IiwiY2FtbF9yb3VuZF9mbG9hdCIsIm1sX3pfb2ZfYml0cyIsImJhc2UxIiwiY2FtbF9vanNfbmV3X2FyciIsIkYiLCJjb21wbGVtZW50X25hdCIsIm1sX3pfbG9neG9yIiwiY2FtbF9kb21haW5fZGxzIiwiY2FtbF9kb21haW5fZGxzX3NldCIsImNhbWxfbGF6eV9yZWFkX3Jlc3VsdCIsImNhbWxfanNfcmVnZXhwcyIsImNhbWxfanNfaHRtbF9lc2NhcGUiLCJjYW1sX2JhX2RpbV8yIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzIiwiY2FtbF9zaW5oX2Zsb2F0IiwiY2FtbF9sZGV4cF9mbG9hdCIsImNhbWxfZ3Jfc3RhdGVfc2V0IiwiY2FtbF96YXJpdGhfdW5tYXJzaGFsIiwibmVnYXRlIiwibWxfel90cmFpbGluZ196ZXJvcyIsImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QiLCJhcml0eSIsImNhbWxfZ2NfbWlub3Jfd29yZHMiLCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayIsImxhbmRfZGlnaXRfbmF0IiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfYmFfc2V0XzMiLCJtbF96X2phY29iaSIsIm4xIiwibWxfel9sZWdlbmRyZSIsImNhbWxfanNfaW5zdGFuY2VvZiIsImNhbWxfZ2V0X21ham9yX2J1Y2tldCIsImNhbWxfYmxpdF9iaWdzdHJpbmdfdG9fc3RyaW5nIiwic2V0X2RpZ2l0X25hdF9uYXRpdmUiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsImNhbWxfc3RyaW5nX3NldDY0IiwiY2FtbF9ncl9zdGF0ZV9jcmVhdGUiLCJjYW52YXMiLCJjb250ZXh0IiwiY2FtbF9ncl9kcmF3X2FyYyIsImNhbWxfYmFfbWFwX2ZpbGUiLCJ2ZmQiLCJzaGFyZWQiLCJjYW1sX2JhX21hcF9maWxlX2J5dGVjb2RlIiwiYXJnbiIsImNhbWxfYmFfY3JlYXRlX2Zyb20iLCJkYXRhMSIsImRhdGEyIiwianN0eXAiLCJjYW1sX3RhbmhfZmxvYXQiLCJjYW1sX2dyX2RyYXdfc3RyIiwiZHgiLCJjYW1sX2dyX2RyYXdfc3RyaW5nIiwibWxfel9wcmltb3JpYWwiLCJjYW1sX2dyX2RyYXdfY2hhciIsImNhbWxfdW5tb3VudCIsIm1sX3pfZmliIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyIsImNhbWxfbWxfcG9zX2luXzY0IiwiY2FtbF9ncl9kcmF3X2ltYWdlIiwiaW1hZ2UiLCJjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZSIsIl9jaGFubmVsIiwiY2FtbF9zdHJpbmdfc2V0IiwiY2FtbF9zeXNfcm1kaXIiLCJjYW1sX3VuaXhfc3ltbGluayIsInNyY19yb290IiwiZHN0X3Jvb3QiLCJjYW1sX21sX3Bvc19vdXQiLCJjYW1sX3NwYWNldGltZV9lbmFibGVkIiwiY2FtbF9ieXRlc19ub3RlcXVhbCIsImNhbWxfcnVudGltZV9wYXJhbWV0ZXJzIiwiY2FtbF9qc19vYmplY3QiLCJjYW1sX2JhX2NyZWF0ZSIsImRpbXNfbWwiLCJjYW1sX2dyX3JlbWVtYmVyX21vZGUiLCJjYW1sX2ZtYV9mbG9hdCIsIlNQTElUIiwiTUlOX1ZBTFVFIiwiRVBTSUxPTiIsIkMiLCJBIiwiQiIsIm11bHRpcGx5IiwiYXQiLCJhaGkiLCJhbG8iLCJiaGkiLCJibG8iLCJhZGp1c3QiLCJzY2FsZSIsInhzIiwieXMiLCJ6cyIsInh5IiwidSIsImNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50IiwiY2FtbF9ic3dhcDE2IiwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUiLCJjYW1sX2ZpbmFsX3JlZ2lzdGVyIiwiY2FtbF9ncl9kcmF3X3JlY3QiLCJjYW1sX3N0cmluZ19nZXQxNiIsImNhbWxfb3V0cHV0X3ZhbHVlIiwiY2FtbF9iYV9nZXRfMyIsImNhbWxfZXBoZV9ibGl0X2tleSIsIm1sX3pfdG9faW50MzIiLCJjYW1sX2luaXRpYWxfdGltZSIsImNhbWxfc3lzX3RpbWUiLCJjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4iLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF91bml4X2dldHB3dWlkIiwibWxfel9jb21wYXJlIiwiY2FtbF9oYXNoIiwibGltaXQiLCJzZWVkIiwicXVldWUiLCJyZCIsIndyIiwiY2FtbF9iYV90b190eXBlZF9hcnJheSIsImNhbWxfZG9tYWluX2Rsc19nZXQiLCJjYW1sX2J5dGVzX2dldDMyIiwiY2FtbF9mcmV4cF9mbG9hdCIsIm1sX3pfcHJlZCIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9tbF9wb3Nfb3V0XzY0IiwibWxfel9leHRyYWN0IiwibWxfel9yZW1vdmUiLCJtbF96X29mX2Zsb2F0IiwiZjEiLCJtbF96X2xvZ25vdCIsImNhbWxfdW5peF9maW5kY2xvc2UiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZmxvYXRhcnJheV9ibGl0IiwiY2FtbF9nZXRfbWlub3JfZnJlZSIsImNhbWxfc2V0X3N0YXRpY19lbnYiLCJjYW1sX2JhX2NoYW5nZV9sYXlvdXQiLCJjYW1sX2pzX25ldyIsImNhbWxfZ3JfY3VycmVudF95IiwiY2FtbF9mb3JtYXRfaW50IiwianNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCIsImNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGMiLCJodmFsIiwiaGV4biIsImhlZmYiLCJjYW1sX29ial90cnVuY2F0ZSIsImNhbWxfanNfdG9fc3RyaW5nIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJidWZmZXJlZCIsImNhbWxfYXJyYXlfY29uY2F0IiwiY2FtbF9ncl9vcGVuX2dyYXBoIiwiaW5mbyIsInNwZWNzIiwic3RhdHVzIiwid2luIiwiZG9jIiwidGl0bGUiLCJib2R5IiwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3QiLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfZXZlbnRsb2dfcGF1c2UiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsIm1sX3pfbnVtYml0cyIsInVwcGVyQm91bmQiLCJjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSIsImNhbWxfbG9nMXBfZmxvYXQiLCJjYW1sX2xhenlfbWFrZV9mb3J3YXJkIiwibG9yX2RpZ2l0X25hdCIsImNhbWxfZ3JfYmxpdF9pbWFnZSIsImltMiIsImNhbWxfZ3Jfd2luZG93X2lkIiwiY2FtbF9qc19vbl9pZSIsInVhIiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCIsImNhbWxfYmFfbGF5b3V0IiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJjYW1sX2FycmF5X3NldCIsIm5ld3ZhbCIsImNhbWxfYWxsb2Nfc3RhY2siLCJodiIsImh4IiwiaGYiLCJjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbCIsIm1sX3pfcGVyZmVjdF9wb3dlciIsImxvZzJ6IiwienAiLCJzZXRfZGlnaXRfbmF0IiwibWxfel9pbml0IiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfbWxfY2hhbm5lbF9zaXplIiwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QiLCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdCIsInN0eWxlIiwiZXhwX3NpZ24iLCJzaWduX3N0ciIsImNzdCIsInhfc3RyIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IiwibWxfel9mb3JtYXQiLCJjYXMiLCJ3aWR0aCIsImFsdCIsInBhZCIsInByZWZpeCIsInByZSIsIm1sX3pfdG9faW50NjQiLCJtYXNrIiwibWxfel9zaXplIiwiY2FtbF91bml4X3JlYWRsaW5rIiwiY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIiwiY2FtbF9zeXNfYXJndiIsImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciIsImNhbWxfYmFfZmlsbCIsImNhbWxfbW9kZl9mbG9hdCIsImNhbWxfZ2NfZ2V0IiwiY2FtbF9mbG9hdF9jb21wYXJlIiwibWxfel9zaGlmdF9yaWdodF90cnVuYyIsImNhbWxfc3RyaW5nX3NldDMyIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJ0YmxfbmFtZXNfY29uc3QiLCJ0YmxfbmFtZXNfYmxvY2siLCJsb2ciLCJ0b2tlbl9uYW1lIiwibmFtZXMiLCJwcmludF90b2tlbiIsInRvayIsInRva2VuIiwibjIiLCJzdGF0ZTEiLCJzcCIsImVycmZsYWciLCJhc3AiLCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2dyX21ha2VfaW1hZ2UiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImV2ZW50IiwiZXJyX25vX3ByZWQiLCJlcnJfbm9fc3VjYyIsInplcm8kMiIsIm9uZSQyIiwibWludXNfb25lJDIiLCJtaW5faW50JDIiLCJtYXhfaW50JDIiLCJkdW1teV9wb3MiLCJ6ZXJvX3BvcyIsInN1Yl9mb3JtYXQiLCJmb3JtYXR0aW5nX2xpdCIsImxvY2ZtdCIsIm51bGwkMCIsImN1cnJlbnRfZGlyX25hbWUiLCJwYXJlbnRfZGlyX25hbWUiLCJkaXJfc2VwIiwicXVvdGVxdW90ZSIsIm51bGwkMSIsImN1cnJlbnRfZGlyX25hbWUkMCIsInBhcmVudF9kaXJfbmFtZSQwIiwiZGlyX3NlcCQwIiwibnVsbCQyIiwiY3VycmVudF9kaXJfbmFtZSQxIiwicGFyZW50X2Rpcl9uYW1lJDEiLCJkaXJfc2VwJDEiLCJ6ZXJvJDQiLCJvbmUkNCIsImkiLCJlcmFzZV9yZWwiLCJyZXN0IiwicmVzdCQwIiwicmVzdCQxIiwicmVzdCQyIiwicmVzdCQzIiwicmVzdCQ0IiwicmVzdCQ1IiwicmVzdCQ2IiwicmVzdCQ3IiwidHkiLCJyZXN0JDgiLCJ0eTEiLCJyZXN0JDkiLCJyZXN0JDEwIiwicmVzdCQxMSIsInJlc3QkMTIiLCJyZXN0JDEzIiwiY29uY2F0X2ZtdHR5IiwiZm10dHkxIiwiZm10dHkyIiwidHkyIiwiY29uY2F0X2ZtdCIsImZtdDEiLCJmbXQyIiwicGFkIiwicGFkJDAiLCJwcmVjIiwicGFkJDEiLCJpY29udiIsInByZWMkMCIsInBhZCQyIiwiaWNvbnYkMCIsInByZWMkMSIsInBhZCQzIiwiaWNvbnYkMSIsInByZWMkMiIsInBhZCQ0IiwiaWNvbnYkMiIsInByZWMkMyIsInBhZCQ1IiwiZmNvbnYiLCJwYWQkNiIsInN0ciIsImNociIsImZtdHR5IiwicGFkJDciLCJmbXR0eSQwIiwicGFkJDgiLCJyZXN0JDE0IiwicmVzdCQxNSIsInJlc3QkMTYiLCJmbXRpbmdfbGl0IiwicmVzdCQxNyIsImZtdGluZ19nZW4iLCJyZXN0JDE4IiwicmVzdCQxOSIsImNoYXJfc2V0Iiwid2lkdGhfb3B0IiwicmVzdCQyMCIsImNvdW50ZXIiLCJyZXN0JDIxIiwicmVzdCQyMiIsImlnbiIsInJlc3QkMjMiLCJmIiwiYXJpdHkiLCJ2IiwiciIsImN1ciIsInNlZW4iLCJuIiwiZmFpbHdpdGgiLCJzIiwiaW52YWxpZF9hcmciLCJtaW4iLCJ4IiwieSIsIm1heCIsImFicyIsImxub3QiLCJpbmZpbml0eSIsIm5lZ19pbmZpbml0eSIsIm5hbiIsIm1heF9mbG9hdCIsIm1pbl9mbG9hdCIsImVwc2lsb24iLCJtYXhfaW50IiwibWluX2ludCIsInMxIiwiczIiLCJsMSIsImwyIiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImIiLCJib29sX29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInZhbGlkX2Zsb2F0X2xleGVtIiwibCIsImkkMCIsInRvX3N0cmluZyIsIm9mX3N0cmluZ19vcHQiLCJhcHBlbmQiLCJ0bCIsImhkIiwic3RkaW4iLCJzdGRvdXQiLCJzdGRlcnIiLCJvcGVuX2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX3RleHQiLCJvcGVuX2JpbiIsImZsdXNoX2FsbCIsIml0ZXIiLCJhIiwib3V0cHV0X2J5dGVzIiwib2MiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0Iiwib2ZzIiwibGVuIiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF92YWx1ZSIsImNoYW4iLCJjbG9zZSIsImNsb3NlX25vZXJyIiwib3Blbl9nZW4kMCIsIm9wZW5fdGV4dCQwIiwib3Blbl9iaW4kMCIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsImFjY3UiLCJiZWciLCJhY2N1JDAiLCJyZXMiLCJjbG9zZV9ub2VyciQwIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludCIsInJlYWRfaW50X29wdCIsInJlYWRfZmxvYXQiLCJyZWFkX2Zsb2F0X29wdCIsInN0cmluZ19vZl9mb3JtYXQiLCJzeW1ib2wiLCJzdHIyIiwic3RyMSIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJuZXdfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fYXRfZXhpdCIsImV4aXQiLCJyZXRjb2RlIiwic2V0X2JpbmFyeV9tb2RlIiwiY2xvc2UkMCIsImluX2NoYW5uZWxfbGVuZ3RoIiwicG9zX2luIiwic2Vla19pbiIsImlucHV0X3ZhbHVlIiwiaW5wdXRfYmluYXJ5X2ludCIsImlucHV0X2J5dGUiLCJpbnB1dF9jaGFyIiwic2V0X2JpbmFyeV9tb2RlJDAiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJwb3Nfb3V0Iiwic2Vla19vdXQiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2NoYXIiLCJmbHVzaCIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAiLCJ2JDAiLCJmb2xkIiwiZXF1YWwiLCJlMSIsImUyIiwidjIiLCJ2MiQwIiwiY29tcGFyZSIsIm1hdGNoJDEiLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3IiLCJsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl8iLCJsYXp5X3RhZyIsImNsb3N1cmVfdGFnIiwib2JqZWN0X3RhZyIsImluZml4X3RhZyIsImZvcndhcmRfdGFnIiwibm9fc2Nhbl90YWciLCJhYnN0cmFjdF90YWciLCJzdHJpbmdfdGFnIiwiZG91YmxlX3RhZyIsImRvdWJsZV9hcnJheV90YWciLCJjdXN0b21fdGFnIiwiaW50X3RhZyIsIm91dF9vZl9oZWFwX3RhZyIsInVuYWxpZ25lZF90YWciLCJpbmZvIiwib2JqIiwic3RhcnRfZW52Iiwib2ZfdmFsIiwic2xvdCIsImlkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZXh0ZW5zaW9uX25hbWUiLCJleHRlbnNpb25faWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsInJhaXNlX3VuZGVmaW5lZCIsImZvcmNlX2xhenlfYmxvY2siLCJibGsiLCJjbG9zdXJlIiwicmVzdWx0IiwiZm9yY2VfdmFsX2xhenlfYmxvY2siLCJmb3JjZSIsImx6diIsInQiLCJmb3JjZV92YWwiLCJ0b19sYXp5IiwiZnJvbV92YWwiLCJpc192YWwiLCJtYXAkMCIsIm1hcF92YWwiLCJlbXB0eSIsInJldHVybiQwIiwiY29ucyIsIm5leHQiLCJhcHBlbmQkMCIsInNlcTEiLCJzZXEyIiwibWFwJDEiLCJzZXEiLCJmaWx0ZXJfbWFwIiwic2VxJDAiLCJmaWx0ZXIiLCJjb25jYXQiLCJmbGF0X21hcCIsImZvbGRfbGVmdCIsImFjYyIsImFjYyQwIiwiYWNjJDEiLCJ1bmZvbGQiLCJ1IiwidSQwIiwiaXNfZW1wdHkiLCJ4cyIsInVuY29ucyIsInhzJDAiLCJsZW5ndGgkMCIsInhzJDEiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJhY2N1JDEiLCJmb3JfYWxsIiwicCIsImV4aXN0cyIsImZpbmQiLCJmaW5kX21hcCIsIml0ZXIyIiwieXMiLCJ5cyQwIiwieXMkMSIsImZvbGRfbGVmdDIiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJlcXVhbCQwIiwiZXEiLCJjb21wYXJlJDAiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwiZmFpbHVyZSIsIm1lbW9pemUiLCJvbmNlIiwiYWN0aW9uIiwiemlwIiwibWFwMiIsImludGVybGVhdmUiLCJzb3J0ZWRfbWVyZ2UxIiwic29ydGVkX21lcmdlIiwibWFwX2ZzdCIsInh5cyIsInh5cyQwIiwibWFwX3NuZCIsInVuemlwIiwiZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIiwiZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCIsInoiLCJwYXJ0aXRpb25fbWFwIiwicGFydGl0aW9uIiwicGVlbCIsInhzcyIsInRyYW5zcG9zZSIsInRhaWxzIiwiaGVhZHMiLCJyZW1haW5kZXJzIiwieHNzJDAiLCJ0YWlscyQwIiwiaGVhZHMkMCIsIm1hcF9wcm9kdWN0IiwicHJvZHVjdCIsIm9mX2Rpc3BlbnNlciIsIml0IiwidG9fZGlzcGVuc2VyIiwiaW50cyIsIm5vbmUiLCJzb21lIiwidmFsdWUiLCJkZWZhdWx0JDAiLCJnZXQkMCIsImJpbmQiLCJqb2luIiwibWFwJDIiLCJmb2xkJDAiLCJpdGVyJDAiLCJpc19ub25lIiwiaXNfc29tZSIsImVxdWFsJDEiLCJvMCIsInYxIiwidjAiLCJjb21wYXJlJDEiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsInZhbHVlJDAiLCJnZXRfb2siLCJnZXRfZXJyb3IiLCJiaW5kJDAiLCJqb2luJDAiLCJtYXAkMyIsIm1hcF9lcnJvciIsImZvbGQkMSIsIml0ZXIkMSIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwiZXF1YWwkMiIsInIwIiwicjEiLCJjb21wYXJlJDIiLCJ0b19vcHRpb24iLCJ0b19saXN0JDAiLCJ0b19zZXEkMCIsImVxdWFsJDMiLCJjb21wYXJlJDMiLCJ0b19mbG9hdCIsInRvX3N0cmluZyQwIiwiZXNjYXBlZCIsImxvd2VyY2FzZSIsInVwcGVyY2FzZSIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImNvbXBhcmUkNCIsImMxIiwiYzIiLCJlcXVhbCQ0IiwibWluJDAiLCJtYXgkMCIsImxvX2JvdW5kIiwiaGlfYm91bmQiLCJib20iLCJyZXAiLCJzdWNjIiwicHJlZCIsImlzX3ZhbGlkIiwib2ZfaW50IiwiaXNfY2hhciIsIm9mX2NoYXIiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJlcXVhbCQ1IiwiY29tcGFyZSQ1IiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsImRlY19pbnZhbGlkIiwidXRmXzhfYnl0ZV9sZW5ndGgiLCJ1dGZfMTZfYnl0ZV9sZW5ndGgiLCJsZW5ndGgkMSIsInBhcmFtJDAiLCJjb25zJDAiLCJudGgiLCJsJDAiLCJsJDEiLCJudGhfb3B0IiwicmV2X2FwcGVuZCIsImwxJDAiLCJsMiQwIiwibDEkMSIsImwyJDEiLCJyZXYiLCJpbml0X2F1eCQwIiwicGFyYW0iLCJhMiIsImExIiwicGFpciIsIngkMCIsInJ5IiwicngiLCJ0MiIsImgyIiwidDEiLCJoMSIsInNvcnQiLCJ4MiIsIngxIiwidGwkMSIsIngzIiwieDIkMCIsIngxJDAiLCJuMSIsIm4yIiwicmV2X3NvcnQiLCJ0bCQwIiwiYyQwIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiYWNjdSQyIiwiYXV4IiwidGFpbCIsImRpcmVjdCIsImRlcHRoIiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsImFicyQwIiwibWF4X2ludCQwIiwibWluX2ludCQwIiwibG9nbm90IiwiZXF1YWwkNyIsImNvbXBhcmUkNyIsIm1pbiQxIiwibWF4JDEiLCJ0b19zdHJpbmckMSIsInN5bWJvbCQwIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwib2ZzMSIsIm9mczIiLCJzZXAiLCJzZXBsZW4iLCJkc3QiLCJpc19zcGFjZSIsImFwcGx5MSIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaSQxIiwiaW5kZXhfcmVjX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXhfcmVjX29wdCIsIm5ld19sZW4iLCJuZXdfYnVmIiwiZ2V0JDEiLCJzZXQkMCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImkkNCIsImIxJDEiLCJpJDUiLCJiMiQxIiwiaSQ2IiwiaSQxMCIsImIxJDMiLCJpJDExIiwiYjIkMyIsImkkMTIiLCJiMyQxIiwiaSQ3IiwiYjEkMiIsImkkOCIsImIyJDIiLCJpJDkiLCJiMyQwIiwiaSQxMyIsImIxJDQiLCJpJDE0IiwiYjIkNCIsImkkMiIsImIxJDAiLCJpJDMiLCJiMiQwIiwiaSQxNSIsImIxJDUiLCJzZXQiLCJsYXN0JDEiLCJsYXN0JDAiLCJsYXN0IiwibGFzdCQzIiwibGFzdCQyIiwibGFzdCQ0IiwibGFzdCQ1IiwiaGkiLCJsbyIsImlzX3NwYWNlJDAiLCJpbmRleF9yZWMkMCIsImluZGV4X3JlY19vcHQkMCIsInJpbmRleF9yZWMkMCIsInJpbmRleF9yZWNfb3B0JDAiLCJnIiwiZXF1YWwkMTAiLCJjb21wYXJlJDEwIiwidG9fc3RyaW5nJDIiLCJ0b19idWZmZXIiLCJidWZmIiwiZmxhZ3MiLCJoZWFkZXJfc2l6ZSIsImRhdGFfc2l6ZSIsInRvdGFsX3NpemUiLCJmcm9tX2J5dGVzIiwiZnJvbV9zdHJpbmciLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJwYXJhbSQxIiwiaGQkMCIsImlucHV0X2FycmF5IiwiZWx0Iiwib3V0cHV0X2FycmF5IiwiZWx0JDAiLCJhY2MkMiIsImEwIiwiYmkiLCJhaSIsIm5hIiwibmIiLCJtYXhzb24iLCJpMzEiLCJ0cmlja2xlZG93biIsInRyaWNrbGUiLCJidWJibGVkb3duIiwiYnViYmxlIiwiZSQwIiwiZmF0aGVyIiwibWVyZ2UiLCJzcmMxb2ZzIiwic3JjMWxlbiIsInNyYzIiLCJzcmMyb2ZzIiwic3JjMmxlbiIsImRzdG9mcyIsInNyYzFyIiwic3JjMnIiLCJzMiQxIiwiczEkMSIsImkxIiwiaTIiLCJpMiQwIiwiZCQwIiwiczIkMCIsImkxJDAiLCJkJDEiLCJzMSQwIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsInplcm8kMCIsIm9uZSQwIiwibWludXNfb25lJDAiLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsInBpIiwiaXNfaW50ZWdlciIsInN1Y2MkMCIsInByZWQkMCIsImVxdWFsJDExIiwibWluJDIiLCJtYXgkMiIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwiaGFzaCQwIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsIm1ha2UkMiIsImluaXQkNCIsImFwcGVuZCQyIiwiY29uY2F0JDMiLCJobGVuIiwic3ViJDIiLCJjb3B5JDIiLCJmaWxsJDEiLCJibGl0JDIiLCJzcmMiLCJzb2ZzIiwiZG9mcyIsInRvX2xpc3QkMiIsIm9mX2xpc3QkMCIsImgiLCJpdGVyJDYiLCJpdGVyMiQyIiwibWFwJDgiLCJtYXAyJDIiLCJpdGVyaSQ0IiwibWFwaSQ0IiwiZm9sZF9sZWZ0JDQiLCJmb2xkX3JpZ2h0JDMiLCJleGlzdHMkNCIsImZvcl9hbGwkNCIsIm1lbSQxIiwibWVtX2llZWUiLCJzb3J0JDAiLCJzdGFibGVfc29ydCIsInRvX3NlcSQ1IiwidG9fc2VxaSQyIiwib2Zfc2VxJDMiLCJtYXBfdG9fYXJyYXkiLCJtYXBfZnJvbV9hcnJheSIsInplcm8kMSIsIm9uZSQxIiwibWludXNfb25lJDEiLCJzdWNjJDEiLCJwcmVkJDEiLCJhYnMkMSIsIm1pbl9pbnQkMSIsIm1heF9pbnQkMSIsImxvZ25vdCQwIiwidW5zaWduZWRfdG9faW50IiwidG9fc3RyaW5nJDMiLCJvZl9zdHJpbmdfb3B0JDAiLCJjb21wYXJlJDExIiwiZXF1YWwkMTIiLCJ1bnNpZ25lZF9jb21wYXJlIiwibSIsIm1pbiQzIiwibWF4JDMiLCJ1bnNpZ25lZF9kaXYiLCJxIiwidW5zaWduZWRfcmVtIiwic3VjYyQyIiwicHJlZCQyIiwiYWJzJDIiLCJsb2dub3QkMSIsIm1heF9pbnQkMyIsInVuc2lnbmVkX3RvX2ludCQwIiwidG9fc3RyaW5nJDQiLCJvZl9zdHJpbmdfb3B0JDEiLCJjb21wYXJlJDEyIiwiZXF1YWwkMTMiLCJ1bnNpZ25lZF9jb21wYXJlJDAiLCJtaW4kNCIsIm1heCQ0IiwidW5zaWduZWRfZGl2JDAiLCJ1bnNpZ25lZF9yZW0kMCIsInplcm8kMyIsIm9uZSQzIiwibWludXNfb25lJDMiLCJzdWNjJDMiLCJwcmVkJDMiLCJhYnMkMyIsIm1pbl9pbnQkMyIsIm1heF9pbnQkNCIsImxvZ25vdCQyIiwidW5zaWduZWRfdG9faW50JDEiLCJ0b19zdHJpbmckNSIsIm9mX3N0cmluZ19vcHQkMiIsImNvbXBhcmUkMTMiLCJlcXVhbCQxNCIsInVuc2lnbmVkX2NvbXBhcmUkMSIsIm1pbiQ1IiwibWF4JDUiLCJ1bnNpZ25lZF9kaXYkMSIsInVuc2lnbmVkX3JlbSQxIiwiZW5naW5lIiwidGJsIiwic3RhdGUiLCJuZXdfZW5naW5lIiwiZnJvbV9mdW5jdGlvbiIsIm9wdCIsInN0aCIsIndpdGhfcG9zaXRpb25zIiwiYXV4X2J1ZmZlciIsImxleGJ1ZiIsInJlYWQiLCJuZXdsZW4iLCJuZXdidWYiLCJmcm9tX2NoYW5uZWwiLCJmcm9tX3N0cmluZyQwIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJhcmckMSIsImNtZCQwIiwiZXhuIiwiY3Vycl9jaGFyIiwidG9rIiwicGVla192YWwiLCJzeW1ib2xfc3RhcnRfcG9zIiwic3QiLCJlbiIsInN5bWJvbF9lbmRfcG9zIiwicmhzX3N0YXJ0X3BvcyIsInJoc19lbmRfcG9zIiwic3ltYm9sX3N0YXJ0Iiwic3ltYm9sX2VuZCIsInJoc19zdGFydCIsInJoc19lbmQiLCJpc19jdXJyZW50X2xvb2thaGVhZCIsInBhcnNlX2Vycm9yIiwiaGVpZ2h0IiwiaGwiLCJoJDAiLCJociIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiIsImxybCIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiIsInJsbCIsImFkZCIsInNpbmdsZXRvbiIsImFkZF9taW5fZWxlbWVudCIsImFkZF9tYXhfZWxlbWVudCIsInJoIiwibGgiLCJtaW5fZWx0IiwibWluX2VsdF9vcHQiLCJtYXhfZWx0IiwibWF4X2VsdF9vcHQiLCJyZW1vdmVfbWluX2VsdCIsInIkMCIsInNwbGl0IiwicHJlcyIsInByZXMkMCIsIm1lbSIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJzJDEiLCJlJDEiLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJmaW5kX2ZpcnN0X29wdCIsImZpbmRfbGFzdCIsImZpbmRfbGFzdF9vcHQiLCJmaW5kX29wdCIsInRyeV9qb2luIiwidiQxIiwib2ZfbGlzdCIsInN1YiIsImwkMyIsIngwIiwibCQ0IiwieDAkMCIsImwkNSIsIngwJDEiLCJubCIsIm1pZCIsImwkMiIsIng0IiwiYWRkX3NlcSIsIm9mX3NlcSIsInNlcV9vZl9lbnVtIiwic25vY19lbnVtIiwicmV2X3NlcV9vZl9lbnVtIiwidG9fcmV2X3NlcSIsInRvX3NlcV9mcm9tIiwibG93IiwibGQiLCJscmQiLCJyZCIsInJsZCIsImRhdGEiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtJDEiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjcmVhdGUkMCIsImNsZWFyIiwiY29weSQzIiwicHVzaCIsInBvcCIsInBvcF9vcHQiLCJ0b3AiLCJ0b3Bfb3B0IiwiaXNfZW1wdHkkMCIsImxlbmd0aCQyIiwiaXRlciQ3IiwiZm9sZCQyIiwidG9fc2VxJDYiLCJvZl9zZXEkNCIsImNyZWF0ZSQxIiwiY2xlYXIkMCIsImNlbGwiLCJwZWVrIiwiY29udGVudCIsInBlZWtfb3B0IiwidGFrZSQwIiwidGFrZV9vcHQiLCJjb3B5JDQiLCJxX3JlcyIsInByZXYiLCJpc19lbXB0eSQxIiwibGVuZ3RoJDMiLCJpdGVyJDgiLCJmb2xkJDMiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJ0b19zZXEkNyIsImFkZF9zZXEkMCIsIm9mX3NlcSQ1IiwiY291bnQiLCJmaWxsX2J1ZmYiLCJnZXRfZGF0YSIsImQxMSIsImEkMCIsImEkMSIsInBlZWtfZGF0YSIsInBlZWskMCIsImp1bmtfZGF0YSIsImp1bmsiLCJuZ2V0X2RhdGEiLCJhbCIsIm5wZWVrIiwiZW1wdHkkMiIsIml0ZXIkOSIsInN0cm0iLCJmcm9tIiwib2ZfbGlzdCQxIiwib2Zfc3RyaW5nIiwib2ZfYnl0ZXMkMCIsIm9mX2NoYW5uZWwiLCJpYXBwIiwiaWNvbnMiLCJpc2luZyIsImxhcHAiLCJsY29ucyIsImxzaW5nIiwic2VtcHR5Iiwic2xhenkiLCJkdW1wIiwiZHVtcF9kYXRhIiwiY3JlYXRlJDIiLCJjb250ZW50cyIsInRvX2J5dGVzJDAiLCJzdWIkMyIsImJsaXQkMyIsIm50aCQwIiwibGVuZ3RoJDQiLCJjbGVhciQxIiwicmVzZXQiLCJyZXNpemUiLCJtb3JlIiwib2xkX3BvcyIsIm9sZF9sZW4iLCJuZXdfYnVmZmVyIiwiYWRkX2NoYXIiLCJwb3MiLCJ1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXgiLCJ1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4IiwiYWRkX3V0Zl84X3VjaGFyIiwiYWRkX3V0Zl8xNmJlX3VjaGFyIiwiYWRkX3V0Zl8xNmxlX3VjaGFyIiwiYWRkX3N1YnN0cmluZyIsIm9mZnNldCIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJjdXJyZW50Iiwib3BlbmluZyIsImxpbSQwIiwic3RvcCIsImskMiIsImskMCIsImskMSIsIm5leHRfaSIsImlkZW50IiwidHJ1bmNhdGUiLCJ0b19zZXEkOCIsInRvX3NlcWkkMyIsImFkZF9zZXEkMSIsIm9mX3NlcSQ2IiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJjcmVhdGVfY2hhcl9zZXQiLCJhZGRfaW5fY2hhcl9zZXQiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImNoYXJfc2V0JDAiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiZm10IiwicGFkX29wdCQwIiwicGFkX29wdCQxIiwicGFkX29wdCQyIiwicGFkX29wdCQzIiwicGFkX29wdCQ0IiwicHJlY19vcHQiLCJwYWRfb3B0JDUiLCJuZGVjIiwicGFkX29wdCQ2IiwicGFkX29wdCQ3IiwicGFkX29wdCQ4IiwiZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24iLCJidWZmZXJfY3JlYXRlIiwiaW5pdF9zaXplIiwiYnVmZmVyX2NoZWNrX3NpemUiLCJvdmVyaGVhZCIsIm1pbl9sZW4iLCJuZXdfc3RyIiwiYnVmZmVyX2FkZF9jaGFyIiwiYnVmZmVyX2FkZF9zdHJpbmciLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJjRiIsImJwcmludF9wYWR0eSIsInBhZHR5IiwiYnByaW50X2lnbm9yZWRfZmxhZyIsImlnbl9mbGFnIiwiYnByaW50X3BhZF9vcHQiLCJicHJpbnRfcGFkZGluZyIsInBhZHR5JDAiLCJicHJpbnRfcHJlY2lzaW9uIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0Iiwic3RyJDAiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiYnByaW50X2ZtdHR5Iiwic3ViX2ZtdHR5Iiwic3ViX2ZtdHR5JDAiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5Iiwic3RyaW5nX29mX2ZtdCIsImZtdGl0ZXIiLCJmbXQkMCIsImlnbl9mbGFnJDAiLCJjaHIkMCIsInN0ciQxIiwiaXNfYWxvbmUkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDAiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJmbXR0eV9yZWxfZGV0IiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJ0cmFucyIsImpkIiwiZGoiLCJnYSIsImFnIiwiZGUkOSIsImVkJDkiLCJhZiQ5IiwiZmEkOSIsImRlJDEwIiwiZWQkMTAiLCJhZiQxMCIsImZhJDEwIiwiZGUkMTEiLCJlZCQxMSIsImFmJDExIiwiZmEkMTEiLCJkZSQxMiIsImVkJDEyIiwiYWYkMTIiLCJmYSQxMiIsImRlJDEzIiwiZWQkMTMiLCJhZiQxMyIsImZhJDEzIiwicmVzdDIiLCJyZXN0MiQwIiwicmVzdDIkMSIsInJlc3QyJDIiLCJyZXN0MiQzIiwicmVzdDIkNCIsInJlc3QyJDUiLCJyZXN0MiQ2IiwicmVzdDIkNyIsInR5MiQwIiwicmVzdDIkOCIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsInJlc3QyJDkiLCJyZXN0MiQxMCIsInJlc3QyJDExIiwicmVzdDIkMTIiLCJyZXN0MiQxMyIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJmbXR0eV9vZl9jdXN0b20iLCJhcml0eSQwIiwiZm10dHlfb2ZfZm10IiwidHlfcmVzdCIsInByZWNfdHkiLCJmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkiLCJ0eV9yZXN0JDAiLCJwcmVjX3R5JDAiLCJ0eV9yZXN0JDEiLCJwcmVjX3R5JDEiLCJ0eV9yZXN0JDIiLCJwcmVjX3R5JDIiLCJ0eV9yZXN0JDMiLCJwcmVjX3R5JDMiLCJmbXR0eSQxIiwiZm10dHkkMiIsImZtdHR5JDMiLCJ0eSQwIiwiZm10dHkkNCIsImZtdHR5JDUiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJ0eXBlX2lnbm9yZWRfcGFyYW1fb25lIiwiZm10dHlfcmVzdCIsImZtdF9yZXN0IiwiZm10dHlfcmVzdCQwIiwiZm10X3Jlc3QkMCIsImZtdF9yZXN0JDEiLCJmbXR0eV9yZXN0JDEiLCJmbXQkMiIsImZtdF9yZXN0JDIiLCJmbXR0eV9yZXN0JDIiLCJmbXQkMyIsImZtdF9yZXN0JDMiLCJmbXR0eV9yZXN0JDMiLCJmbXQkNCIsImZtdF9yZXN0JDQiLCJmbXR0eV9yZXN0JDQiLCJmbXQkNSIsImZtdF9yZXN0JDUiLCJmbXR0eV9yZXN0JDUiLCJwcmVjJDQiLCJmbXR0eSQ2IiwiZm10JDYiLCJmbXRfcmVzdCQ2IiwicHJlYyQ1IiwiZm10dHlfcmVzdCQ2IiwicHJlYyQ2IiwiZm10dHkkNyIsImZtdCQ3IiwiZm10X3Jlc3QkNyIsInByZWMkNyIsImZtdHR5X3Jlc3QkNyIsInByZWMkOCIsImZtdHR5JDgiLCJmbXQkOCIsImZtdF9yZXN0JDgiLCJmbXR0eV9yZXN0JDgiLCJmbXR0eSQ5IiwiZm10JDkiLCJmbXRfcmVzdCQ5IiwiZm10dHkkMTAiLCJmbXQkMTAiLCJmbXRfcmVzdCQxMCIsImZtdHR5JDExIiwiZm10JDExIiwiZm10X3Jlc3QkMTEiLCJmbXR0eSQxMiIsImZtdCQxMiIsImZtdHR5X3Jlc3QkOSIsImZtdF9yZXN0JDEyIiwiZm10dHkkMTMiLCJmbXQkMTMiLCJmbXR0eV9yZXN0JDEwIiwic3ViX2ZtdHR5MSIsImZtdF9yZXN0JDEzIiwic3ViX2ZtdHR5JDEiLCJmbXR0eSQxNCIsImZtdCQxNCIsImZtdHR5X3Jlc3QkMTEiLCJmbXRfcmVzdCQxNCIsImZtdHR5JDE1IiwiZm10JDE1IiwiZm10dHlfcmVzdCQxMiIsImZtdF9yZXN0JDE1IiwiZm10dHkkMTYiLCJmbXQkMTYiLCJmbXRfcmVzdCQxNiIsImZtdHR5JDE3IiwiZm10JDE3IiwiZm10X3Jlc3QkMTciLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5MyIsImZtdDMiLCJmbXQxJDAiLCJmbXR0eTIkMCIsImZtdDIkMCIsImZtdHR5MyQwIiwiZm10MyQwIiwiZm10dHlfcmVzdCQxMyIsImZtdF9yZXN0JDE4IiwiZm10dHkkMTgiLCJmbXQkMTgiLCJmbXR0eV9yZXN0JDE0IiwiZm10X3Jlc3QkMTkiLCJmbXR0eSQxOSIsImZtdCQxOSIsImZtdHR5X3Jlc3QkMTUiLCJmbXRfcmVzdCQyMCIsImZtdHR5JDIwIiwiZm10JDIwIiwic3ViX2ZtdHR5JDIiLCJzdWJfZm10dHkkMyIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsImZtdHR5JDIyIiwiZm10JDIyIiwic3ViX2ZtdHR5JDQiLCJmbXR0eV9yZXN0JDE2IiwiZm10dHkkMjEiLCJmbXQkMjEiLCJzdWJfZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0JDAiLCJzdWJfZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkNSIsInN1Yl9mbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkOCIsInN1Yl9mbXR0eV9yZXN0JDkiLCJzdWJfZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDExIiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJzdWJfZm10dHlfcmVzdCQxMyIsInN1Yl9mbXR0eV9yZXN0JDE0Iiwic3ViMl9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE1Iiwic3ViMl9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTYiLCJzdWIyX2ZtdHR5JDEiLCJzdWIxX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTciLCJzdWIyX2ZtdHR5JDIiLCJzdWIxX2ZtdHR5JDAiLCJzdWJfZm10dHlfcmVzdCQxOCIsInN1Yl9mbXR0eV9yZXN0JDE5Iiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJzdWJfZm10dHlfcmVzdCQyMSIsInN1Yl9mbXR0eV9yZXN0JDIyIiwic3ViX2ZtdHR5X3Jlc3QkMjMiLCJzdWJfZm10dHlfcmVzdCQyNCIsInN1Yl9mbXR0eV9yZXN0JDI1Iiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24iLCJtYWtlX3ByaW50ZiIsInAkMCIsInAkMSIsIm1ha2VfcGFkZGluZyIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiQwIiwiYWNjJDMiLCJhY2MkNCIsImskMyIsImthY2MiLCJrJDQiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaWdub3JlZF9wYXJhbSIsImZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIiwibWFrZV9pcHJpbnRmIiwibWFrZV9pcHJpbnRmJDAiLCJrb2MiLCJyZXN0JDI0IiwicmVzdCQyNSIsImZuX29mX2N1c3RvbV9hcml0eSQwIiwiZm5fb2ZfY3VzdG9tX2FyaXR5Iiwib3V0cHV0X2FjYyIsInAkMiIsInAkMyIsInAkNCIsImJ1ZnB1dF9hY2MiLCJzdHJwdXRfYWNjIiwiZmFpbHdpdGhfbWVzc2FnZSIsIm9wZW5fYm94X29mX3N0cmluZyIsImludmFsaWRfYm94IiwicGFyc2Vfc3BhY2VzIiwicGFyc2VfbHdvcmQiLCJwYXJzZV9pbnQiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsInVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCIsImVuZF9pbmQiLCJpbnZhbGlkX2Zvcm1hdF93aXRob3V0IiwiZXhwZWN0ZWRfY2hhcmFjdGVyIiwiZXhwZWN0ZWQiLCJhZGRfbGl0ZXJhbCIsImxpdF9zdGFydCIsInNpemUiLCJwYXJzZSIsInN0cl9pbmQkMiIsInBhcnNlX2ZsYWdzIiwic3RyX2luZCQxIiwic3RyX2luZCQwIiwicGFyc2VfdGFnIiwicGFyc2VfZ29vZF9icmVhayIsInBhcnNlX21hZ2ljX3NpemUiLCJwYXJzZV9jb252ZXJzaW9uIiwicGN0X2luZCIsInBsdXMiLCJzcGFjZSIsInBhZHByZWMiLCJwbHVzX3VzZWQiLCJoYXNoX3VzZWQiLCJzcGFjZV91c2VkIiwiaWduX3VzZWQiLCJwYWRfdXNlZCIsInByZWNfdXNlZCIsImdldF9wbHVzIiwiZ2V0X2hhc2giLCJnZXRfc3BhY2UiLCJnZXRfaWduIiwiZ2V0X3BhZCIsImdldF9wcmVjIiwiZ2V0X3BhZHByZWMiLCJnZXRfaW50X3BhZCIsImluY29tcGF0aWJsZV9mbGFnIiwiY2hlY2tfbm9fMCIsIm9wdF9vZl9wYWQiLCJ3aWR0aCQxIiwiZ2V0X3BhZF9vcHQiLCJnZXRfcGFkcHJlY19vcHQiLCJmbXRfcmVzdWx0Iiwic3ViX2VuZCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2ZtdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJuZXh0X2luZCIsImNoYXJfc2V0JDEiLCJpZ25vcmVkJDkiLCJjaGFyX2Zvcm1hdCIsImZtdF9yZXN0JDIxIiwiZm10X3Jlc3QkMjIiLCJwYWQkOSIsImZtdF9yZXN0JDIzIiwiaWdub3JlZCQxMCIsImZtdF9yZXN0JDI0IiwicGFkJDEwIiwiZm10X3Jlc3QkMjUiLCJzdWJfZW5kJDAiLCJzdWJfZm10JDAiLCJmbXRfcmVzdCQyNiIsImlnbm9yZWQkMTEiLCJpZ25vcmVkJDMiLCJzeW1iJDAiLCJpZ25vcmVkJDUiLCJjb21wdXRlX2ludF9jb252IiwiaWdub3JlZCQ4Iiwic3BhY2UkMSIsImhhc2gkMSIsInBsdXMkMiIsImtpbmQiLCJpZ25vcmVkJDQiLCJpZ25vcmVkIiwiaWdub3JlZCQwIiwiaWdub3JlZCQxIiwicGx1cyQwIiwic3BhY2UkMCIsInBsdXMkMSIsImlnbiQwIiwicGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIiwibWludXMiLCJwYXJzZV9jb252IiwicGFyc2VfYWZ0ZXJfcGFkZGluZyIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9wb3NpdGl2ZSIsIm5ld19pbmQiLCJtaW51cyQwIiwic2V0X2ZsYWciLCJzdHJfaW5kJDMiLCJzdHJfaW5kJDQiLCJzdHJfaW5kJDUiLCJpc19vcGVuX3RhZyIsImluZCIsInN1Yl9zdHIiLCJzdWJfZm9ybWF0JDAiLCJmb3JtYXR0aW5nJDAiLCJmb3JtYXR0aW5nIiwic3RyX2luZF8xIiwicGFyc2VfaW50ZWdlciIsInN0cl9pbmRfMiIsInN0cl9pbmRfMyIsImZvcm1hdHRpbmdfbGl0JDAiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJzdHJfaW5kJDciLCJzdWJfZW5kJDEiLCJzdWJfZW5kJDIiLCJzdHJfaW5kJDYiLCJvcHRpb24iLCJzdWJmbXQiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImFzc29jMyIsInkyIiwieTEiLCJzcGxpdCQxIiwibWFrZV9zeW1saXN0IiwiaGVscF9hY3Rpb24iLCJhZGRfaGVscCIsInNwZWNsaXN0IiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJib29sX29mX3N0cmluZ19vcHQkMCIsImludF9vZl9zdHJpbmdfb3B0JDAiLCJmbG9hdF9vZl9zdHJpbmdfb3B0IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwiZm9sbG93JDAiLCJrZXl3b3JkIiwibm9fYXJnJDAiLCJmb2xsb3ciLCJub19hcmciLCJnZXRfYXJnJDAiLCJnZXRfYXJnIiwiY29uc3VtZV9hcmckMCIsImNvbnN1bWVfYXJnIiwidHJlYXRfYWN0aW9uJDAiLCJ0cmVhdF9hY3Rpb24iLCJmJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJyJDIiLCJhcmckMiIsImYkMyIsImFyZyQzIiwieCQxIiwiciQzIiwiYXJnJDQiLCJ4JDIiLCJzcGVjcyIsImYkNCIsImFyZyQ1IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiYXJnJDYiLCJuZXdhcmciLCJwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyIsInBhcnNlX2FyZ3ZfZHluYW1pYyIsImN1cnJlbnQkMCIsInBhcnNlX2FyZ3YiLCJtc2ckMCIsIm1zZyQxIiwicGFyc2VfZHluYW1pYyIsInBhcnNlX2V4cGFuZCIsInNlY29uZF93b3JkIiwibG9vcCIsIm1heF9hcmdfbGVuIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsImFsaWduIiwibGltaXQiLCJjb21wbGV0ZWQiLCJrc2QiLCJjdXRjb2wkMCIsInNwYWNlcyQwIiwiY3V0Y29sIiwia3dkX2xlbiIsInNwYWNlcyIsInJlYWRfYXV4IiwidHJpbSIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwiY29udiIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsImNvbnN0cnVjdG9yIiwidG9fc3RyaW5nJDYiLCJwcmludCIsImZjdCIsImNhdGNoJDAiLCJyYXdfYmFja3RyYWNlX2VudHJpZXMiLCJidCIsImNvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImZvcm1hdF9iYWNrdHJhY2Vfc2xvdCIsImlzX3JhaXNlIiwicHJpbnRfcmF3X2JhY2t0cmFjZSIsIm91dGNoYW4iLCJyYXdfYmFja3RyYWNlIiwiYmFja3RyYWNlIiwicHJpbnRfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZV90b19zdHJpbmciLCJiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsImV4bl9zbG90IiwiZXhuX3Nsb3RfaWQiLCJleG5fc2xvdF9uYW1lIiwiZXJyb3JzIiwiZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuIiwic3RhdHVzIiwidW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJlbXB0eV9iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZGVidWdnZXJfaW5fdXNlIiwiZXhuJDAiLCJyYXdfYmFja3RyYWNlJDAiLCJjb25zdCQwIiwiZmxpcCIsIm5lZ2F0ZSIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJ3b3JrIiwiZmluYWxseV9ub19leG4iLCJ3b3JrX2V4biIsIndvcmtfYnQiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJvdXRwdXQkMCIsImRpZ2VzdCIsImlucHV0JDAiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJuZXdfc3RhdGUiLCJhc3NpZ24iLCJzdDEiLCJzdDIiLCJmdWxsX2luaXQiLCJzZWVkIiwic2VlZCQwIiwibWFrZSQzIiwibWFrZV9zZWxmX2luaXQiLCJjb3B5JDUiLCJiaXRzIiwiY3VydmFsIiwibmV3dmFsIiwibmV3dmFsMzAiLCJpbnRhdXgiLCJpbnQkMCIsImJvdW5kIiwiZnVsbF9pbnQiLCJicG9zIiwiaW50MzIiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJib29sIiwiYml0czMyIiwiYml0czY0IiwibmF0aXZlYml0cyIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludDMyJDAiLCJuYXRpdmVpbnQkMCIsImludDY0JDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJiaXRzMzIkMCIsImJpdHM2NCQwIiwibmF0aXZlYml0cyQwIiwiZnVsbF9pbml0JDAiLCJpbml0JDUiLCJzZWxmX2luaXQiLCJnZXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJvbmdvaW5nX3RyYXZlcnNhbCIsImZsaXBfb25nb2luZ190cmF2ZXJzYWwiLCJwYXJhbXMiLCJyYW5kb21pemVkX2RlZmF1bHQiLCJyYW5kb21pemVkIiwicmFuZG9taXplIiwiaXNfcmFuZG9taXplZCIsInBybmciLCJwb3dlcl8yX2Fib3ZlIiwiY3JlYXRlJDMiLCJpbml0aWFsX3NpemUiLCJyYW5kb20iLCJjbGVhciQyIiwicmVzZXQkMCIsImNvcHlfYnVja2V0bGlzdCIsImtleSQwIiwibmV4dCQwIiwiY29weSQ2IiwibGVuZ3RoJDUiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwiY2VsbCQwIiwibmlkeCIsIm1hdGNoIiwibWF0Y2gkMCIsInJlc2l6ZSQwIiwib3NpemUiLCJpdGVyJDEwIiwiZG9fYnVja2V0Iiwib2xkX3RyYXYiLCJmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiZm9sZCQ0IiwiYiQwIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0b19zZXEkOSIsInRibF9kYXRhIiwiYnVjayIsImJ1Y2skMCIsImJ1Y2skMSIsInRvX3NlcV9rZXlzIiwidG9fc2VxX3ZhbHVlcyIsImtleV9pbmRleCIsImJ1Y2tldCIsImsxIiwibmV4dDEiLCJrMiIsIm5leHQyIiwiazMiLCJkMyIsIm5leHQzIiwiZmluZF9hbGwiLCJmaW5kX2luX2J1Y2tldCIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsImNvcHkiLCJzeiIsImhhc2hfcGFyYW0iLCJzZWVkZWRfaGFzaCIsImFkZCQwIiwiZmluZCQxIiwiZmluZF9vcHQkMSIsImZpbmRfYWxsJDAiLCJtZW0kMiIsImFkZF9zZXEkMiIsIm9mX3NlcSQ3IiwicmVidWlsZCIsIndlYWtfY3JlYXRlIiwibGVuZ3RoJDYiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCQwIiwic2V0JDEiLCJnZXQkMiIsImdldF9jb3B5IiwiY2hlY2skMCIsImJsaXQkNCIsImZpbGwkMiIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJzeiQwIiwic3okMSIsImNvdW50X2J1Y2tldCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJpbmRleCIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJuZXd0Iiwib2IiLCJvaCIsInNldHRlciQwIiwibmkiLCJmaW5kX29yIiwiaWZub3Rmb3VuZCIsImZpbmRfc2hhZG93IiwiaWZmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJpZCQwIiwidW5rbm93biIsInBwX2VucXVldWUiLCJ0b2tlbiIsInBwX2luZmluaXR5IiwicHBfb3V0cHV0X3N0cmluZyIsInBwX291dHB1dF9uZXdsaW5lIiwiZm9ybWF0X3BwX3RleHQiLCJ0ZXh0IiwiZm9ybWF0X3N0cmluZyIsImJyZWFrX25ld19saW5lIiwicmVhbF9pbmRlbnQiLCJicmVha19saW5lIiwiYnJlYWtfc2FtZV9saW5lIiwiZm9ybWF0X3BwX3Rva2VuIiwic2l6ZSQwIiwidGFicyIsImFkZF90YWIiLCJscyIsInRhZ19uYW1lIiwibWFya2VyIiwiYnJlYWtzIiwiZml0cyIsIm9mZiIsImJveF90eXBlJDAiLCJvZmYkMCIsImluc2VydGlvbl9wb2ludCIsInRhYnMkMCIsImZpcnN0IiwiaGVhZCIsInRhYiIsIm9mZiQxIiwiaW5zZXJ0aW9uX3BvaW50JDAiLCJ3aWR0aCQyIiwiYm94X3R5cGUkMSIsInRib3giLCJ0YWdfbmFtZSQwIiwibWFya2VyJDAiLCJhZHZhbmNlX2xlZnQiLCJwZW5kaW5nX2NvdW50IiwiZW5xdWV1ZV9hZHZhbmNlIiwiZW5xdWV1ZV9zdHJpbmdfYXMiLCJpbml0aWFsaXplX3NjYW5fc3RhY2siLCJzdGFjayIsInF1ZXVlX2VsZW0iLCJzZXRfc2l6ZSIsImxlZnRfdG90YWwiLCJzY2FuX3B1c2giLCJlbGVtIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfb3Blbl90YWciLCJwcF9jbG9zZV90YWciLCJwcF9zZXRfcHJpbnRfdGFncyIsInBwX3NldF9tYXJrX3RhZ3MiLCJwcF9nZXRfcHJpbnRfdGFncyIsInBwX2dldF9tYXJrX3RhZ3MiLCJwcF9zZXRfdGFncyIsInBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBjdCIsInBvdCIsIm1jdCIsIm1vdCIsInBwX3Jpbml0IiwicHBfZmx1c2hfcXVldWUiLCJwcF9wcmludF9hc19zaXplIiwicHBfcHJpbnRfYXMiLCJpc2l6ZSIsInBwX3ByaW50X3N0cmluZyIsInBwX3ByaW50X2J5dGVzIiwicHBfcHJpbnRfaW50IiwicHBfcHJpbnRfZmxvYXQiLCJwcF9wcmludF9ib29sIiwicHBfcHJpbnRfY2hhciIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2luZGVudCIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJmbHVzaF9idWZmZXJfZm9ybWF0dGVyIiwiZmx1c2hfc3RyX2Zvcm1hdHRlciIsIm1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJzb2IiLCJnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJpdGVtcyIsImFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSIsIml0ZW0iLCJmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2IiLCJvcGVuX2hib3giLCJvcGVuX3Zib3giLCJvcGVuX2h2Ym94Iiwib3Blbl9ob3Zib3giLCJvcGVuX2JveCIsImNsb3NlX2JveCIsIm9wZW5fdGFnIiwiY2xvc2VfdGFnIiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfc3RyaW5nJDAiLCJwcmludF9ieXRlcyQwIiwicHJpbnRfaW50JDAiLCJwcmludF9mbG9hdCQwIiwicHJpbnRfY2hhciQwIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9uZXdsaW5lJDAiLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwidnMiLCJvcHQkMSIsInBwX3ByaW50X3NlcSIsInNlcSQxIiwic2VxJDIiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0Iiwib3V0cHV0X2FjYyQwIiwiYnR5IiwicCQ1IiwicCQ2Iiwic3RycHV0X2FjYyQwIiwic2l6ZSQxIiwia2ZwcmludGYkMCIsImlrZnByaW50ZiQwIiwiaWZwcmludGYkMCIsImZwcmludGYkMCIsInByaW50ZiQwIiwiZXByaW50ZiQwIiwia2RwcmludGYiLCJkcHJpbnRmIiwia3ByaW50ZiIsInNwcmludGYkMCIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsInBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImJwcmludGYkMCIsInBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsInN0cmluZ2lmeSIsInBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImZ1bnMiLCJtYXJrX29wZW5fdGFnIiwibWFya19jbG9zZV90YWciLCJwcmludF9vcGVuX3RhZyIsInByaW50X2Nsb3NlX3RhZyIsInNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsInJlc2V0X3Rva2VuIiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJza2lwX2NoYXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiY3JlYXRlJDQiLCJpbmFtZSIsImZyb21fc3RyaW5nJDEiLCJmcm9tX2Z1bmN0aW9uJDAiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJzdGRpYiIsIm9wZW5faW5fZmlsZSIsIm9wZW5faW4iLCJmcm9tX2ZpbGUiLCJmcm9tX2ZpbGVfYmluIiwiZnJvbV9jaGFubmVsJDAiLCJjbG9zZV9pbiIsImljJDAiLCJtZW1vIiwibWVtb19mcm9tX2ljIiwibWVtb19mcm9tX2NoYW5uZWwiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfZmxvYXQiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja190aGlzX2NoYXIiLCJjaGVja19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwidG9rZW5fZmxvYXQiLCJzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciIsInNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJzY2FuX2NoYXIiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwic2Nhbl9jYW1sX2NoYXIiLCJmaW5kX3N0b3AiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsImdldF9jb3VudGVyIiwid2lkdGhfb2ZfcGFkX29wdCIsInN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQiLCJmbXRpbmciLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzJDAiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzJDAiLCJyZWFkZXIiLCJuZXdfayIsInJlYWRlcnNfcmVzdCIsInRha2VfZm9ybWF0X3JlYWRlcnMiLCJmbXQkMjMiLCJmbXQkMjQiLCJmbXQkMjUiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIiwicGFkX3ByZWNfc2NhbmYiLCJyZWFkZXJzIiwibWFrZV9zY2FuZiIsInNjYW4kMCIsInN0cl9yZXN0Iiwic2NhbiQxIiwic2NhbiQyIiwic2NhbiQzIiwic2NhbiQ0IiwiY29udiQwIiwic2NhbiQ1IiwiY29udiQxIiwic2NhbiQ2IiwiY29udiQyIiwic2NhbiQ3Iiwic2NhbiQ4IiwiZm10aW5nX2xpdCQwIiwic3RwJDAiLCJzJDIiLCJzdHJfcmVzdCQwIiwicmVzdCQyNiIsImFyZ19yZXN0Iiwia3NjYW5mIiwiZWYiLCJhcHBseSIsImFyZ3MkMCIsImV4YyIsImJzY2FuZiIsImtzc2NhbmYiLCJzc2NhbmYiLCJzY2FuZiIsImJzY2FuZl9mb3JtYXQiLCJmb3JtYXQiLCJzc2NhbmZfZm9ybWF0IiwiZm9ybWF0X2Zyb21fc3RyaW5nIiwidW5lc2NhcGVkIiwia2ZzY2FuZiIsImZzY2FuZiIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwicGFyYW1zJDAiLCJpbml0aWFsX29iamVjdF9zaXplIiwiZHVtbXlfaXRlbSIsInRhZyIsImNvbXBhcmUkMTQiLCJjb21wYXJlJDE1IiwiY29tcGFyZSQxNiIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwicmVzaXplJDEiLCJhcnJheSIsIm5ld19zaXplIiwib2xkX3NpemUiLCJuZXdfYnVjayIsIm1ldGhvZF9jb3VudCIsImluc3RfdmFyX2NvdW50IiwibmV3X21ldGhvZCIsInRhYmxlIiwiZ2V0X21ldGhvZF9sYWJlbCIsImxhYmVsIiwiZ2V0X21ldGhvZF9sYWJlbHMiLCJuYW1lcyIsInNldF9tZXRob2QiLCJlbGVtZW50IiwiZ2V0X21ldGhvZCIsInRvX2xpc3QkMyIsImFyciIsIm5hcnJvdyIsInZhcnMiLCJ2aXJ0X21ldGhzIiwiY29uY3JfbWV0aHMiLCJ2YXJzJDAiLCJ2aXJ0X21ldGhzJDAiLCJjb25jcl9tZXRocyQwIiwidmlydF9tZXRoX2xhYnMiLCJjb25jcl9tZXRoX2xhYnMiLCJsYWIiLCJ0dmFycyIsImJ5X25hbWUiLCJieV9sYWJlbCIsIm1ldCIsImhtIiwid2lkZW4iLCJzYXZlZF92YXJzIiwic2F2ZWRfaGlkZGVuX21ldGhzIiwibmV3X3Nsb3QiLCJuZXdfdmFyaWFibGUiLCJ0b19hcnJheSIsIm5ld19tZXRob2RzX3ZhcmlhYmxlcyIsIm1ldGhzIiwidmFscyIsIm1ldGhzJDAiLCJubWV0aHMiLCJudmFscyIsImdldF92YXJpYWJsZSIsImdldF92YXJpYWJsZXMiLCJhZGRfaW5pdGlhbGl6ZXIiLCJjcmVhdGVfdGFibGUiLCJwdWJsaWNfbWV0aG9kcyIsInRhZ3MiLCJpbml0X2NsYXNzIiwiaW5oZXJpdHMiLCJjbGEiLCJzdXBlciQwIiwibm0iLCJtYWtlX2NsYXNzIiwicHViX21ldGhzIiwiY2xhc3NfaW5pdCIsImVudl9pbml0IiwibWFrZV9jbGFzc19zdG9yZSIsImluaXRfdGFibGUiLCJkdW1teV9jbGFzcyIsImxvYyIsInVuZGVmIiwiY3JlYXRlX29iamVjdCIsImNyZWF0ZV9vYmplY3Rfb3B0Iiwib2JqXzAiLCJpdGVyX2YiLCJydW5faW5pdGlhbGl6ZXJzIiwiaW5pdHMiLCJydW5faW5pdGlhbGl6ZXJzX29wdCIsImNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaSIsImdldF9kYXRhJDAiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290IiwidGFibGVzJDIiLCJ0YWJsZXMkMCIsInRhYmxlcyQxIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJjbG8kMCIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIngkMyIsIm4kNyIsIngkNCIsIm4kOCIsIm4kOSIsIngkNSIsImYkOCIsImUkMiIsIm4kMTAiLCJ4JDYiLCJmJDkiLCJuJDExIiwieCQ3IiwibiQxMiIsIngkOCIsIm4kMTMiLCJuJDE0IiwiZSQzIiwibiQxNSIsIm0kMiIsIngkOSIsIm0kMyIsIm4kMTYiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ1IiwibiQxOCIsInN0YXRzJDAiLCJpbml0X21vZF9ibG9jayIsImNvbXBzJDAiLCJtb2R1Iiwic2hhcGUiLCJmbiQwIiwiY29tcHMiLCJpbml0X21vZCIsInVwZGF0ZV9tb2RfYmxvY2siLCJjbCIsInVwZGF0ZV9tb2QiLCJpbml0aWFsX2J1ZmZlciIsImJ1ZmZlciIsImJ1ZnBvcyIsInJlc2V0X2J1ZmZlciIsInN0b3JlIiwibmV3YnVmZmVyIiwiZ2V0X3N0cmluZyIsIm1ha2VfbGV4ZXIiLCJrZXl3b3JkcyIsImt3ZF90YWJsZSIsImlkZW50X29yX2tleXdvcmQiLCJrZXl3b3JkX29yX2Vycm9yIiwiZW5kX2V4cG9uZW50X3BhcnQiLCJleHBvbmVudF9wYXJ0IiwibnVtYmVyIiwiaWRlbnQyIiwibmVnX251bWJlciIsIm5leHRfdG9rZW4kMCIsImVzY2FwZSIsIm1heWJlX2NvbW1lbnQiLCJjb21tZW50IiwibmV4dF90b2tlbiIsImhrZXkiLCJjbGVhbiIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJyZXBsYWNlX2J1Y2tldCIsIm5ld19kIiwiYnVja2V0X2xlbmd0aF9hbGl2ZSIsInN0YXRzX2FsaXZlIiwiY3JlYXRlJDUiLCJnZXRfa2V5JDAiLCJnZXRfa2V5X2NvcHkkMCIsInNldF9rZXkkMCIsInVuc2V0X2tleSQwIiwiY2hlY2tfa2V5JDAiLCJibGl0X2tleSQwIiwiZ2V0X2RhdGEkMSIsImdldF9kYXRhX2NvcHkiLCJzZXRfZGF0YSIsInVuc2V0X2RhdGEiLCJjaGVja19kYXRhIiwiYmxpdF9kYXRhIiwibWFrZSQ0IiwiZXBoIiwicXVlcnkiLCJzZXRfa2V5X2RhdGEiLCJtYWtlJDUiLCJhZGQkMSIsInRlc3Rfa2V5IiwicmVtb3ZlJDAiLCJmaW5kJDIiLCJsZW5ndGgkNyIsImNsZWFyJDMiLCJjcmVhdGUkNiIsImdldF9rZXkxIiwiZ2V0X2tleTFfY29weSIsInNldF9rZXkxIiwidW5zZXRfa2V5MSIsImNoZWNrX2tleTEiLCJnZXRfa2V5MiIsImdldF9rZXkyX2NvcHkiLCJzZXRfa2V5MiIsInVuc2V0X2tleTIiLCJjaGVja19rZXkyIiwiYmxpdF9rZXkxIiwiYmxpdF9rZXkyIiwiYmxpdF9rZXkxMiIsImdldF9kYXRhJDIiLCJnZXRfZGF0YV9jb3B5JDAiLCJzZXRfZGF0YSQwIiwidW5zZXRfZGF0YSQwIiwiY2hlY2tfZGF0YSQwIiwiYmxpdF9kYXRhJDAiLCJtYWtlJDYiLCJrZXkxIiwia2V5MiIsInF1ZXJ5JDAiLCJrMiQwIiwiazEkMCIsIm1ha2UkNyIsImFkZCQyIiwidGVzdF9rZXlzIiwicmVtb3ZlJDEiLCJmaW5kJDMiLCJsZW5ndGgkOCIsImNsZWFyJDQiLCJjcmVhdGUkNyIsImxlbmd0aCQ5IiwiZ2V0X2tleSQxIiwiZ2V0X2tleV9jb3B5JDEiLCJzZXRfa2V5JDEiLCJ1bnNldF9rZXkkMSIsImNoZWNrX2tleSQxIiwiYmxpdF9rZXkkMSIsImdldF9kYXRhJDMiLCJnZXRfZGF0YV9jb3B5JDEiLCJzZXRfZGF0YSQxIiwidW5zZXRfZGF0YSQxIiwiY2hlY2tfZGF0YSQxIiwiYmxpdF9kYXRhJDEiLCJtYWtlJDgiLCJxdWVyeSQxIiwia2kiLCJrMCIsIm1ha2UkOSIsImFkZCQzIiwidGVzdF9rZXlzJDAiLCJyZW1vdmUkMiIsImZpbmQkNCIsImxlbmd0aCQxMCIsImNsZWFyJDUiLCJnZW5lcmljX2Jhc2VuYW1lIiwiaXNfZGlyX3NlcCIsImdlbmVyaWNfZGlybmFtZSIsImlzX3JlbGF0aXZlIiwiaXNfaW1wbGljaXQiLCJjaGVja19zdWZmaXgiLCJzdWZmIiwiY2hvcF9zdWZmaXhfb3B0IiwibGVuX2YiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lIiwicXVvdGUkMCIsImFkZF9icyIsImxvb3AkMCIsImxvb3BfYnMiLCJxdW90ZV9jbWRfZmlsZW5hbWUiLCJxdW90ZV9jb21tYW5kJDAiLCJkcml2ZV9hbmRfcGF0aCIsImRpcm5hbWUkMCIsInBhdGgiLCJkcml2ZSIsImRpciIsImJhc2VuYW1lJDAiLCJiYXNlbmFtZSQxIiwiZGlybmFtZSQxIiwibnVsbCQzIiwiY3VycmVudF9kaXJfbmFtZSQyIiwicGFyZW50X2Rpcl9uYW1lJDIiLCJkaXJfc2VwJDIiLCJpc19kaXJfc2VwJDEiLCJpc19yZWxhdGl2ZSQxIiwiaXNfaW1wbGljaXQkMSIsImNoZWNrX3N1ZmZpeCQxIiwiY2hvcF9zdWZmaXhfb3B0JDEiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQxIiwicXVvdGVfY29tbWFuZCQxIiwiYmFzZW5hbWUkMiIsImRpcm5hbWUkMiIsImNvbmNhdCQ0IiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiZXh0ZW5zaW9uIiwiY2hvcF9leHRlbnNpb24iLCJyZW1vdmVfZXh0ZW5zaW9uIiwicHJuZyQwIiwidGVtcF9maWxlX25hbWUiLCJ0ZW1wX2RpciIsInJuZCIsImN1cnJlbnRfdGVtcF9kaXJfbmFtZSIsInNldF90ZW1wX2Rpcl9uYW1lIiwiZ2V0X3RlbXBfZGlyX25hbWUiLCJ0ZW1wX2ZpbGUiLCJ0cnlfbmFtZSIsImNvdW50ZXIkMSIsIm9wZW5fdGVtcF9maWxlIiwic3RoJDAiLCJwZXJtcyIsInN0aCQxIiwiYWRkJDQiLCJzdWIkNCIsIm5lZyIsImNvbmoiLCJtdWwiLCJkaXYiLCJpbnYiLCJub3JtMiIsIm5vcm0iLCJxJDAiLCJwb2xhciIsInNxcnQiLCJ3JDAiLCJleHAiLCJsb2ciLCJwb3ciLCJmbG9hdDMyIiwiZmxvYXQ2NCIsImludDhfc2lnbmVkIiwiaW50OF91bnNpZ25lZCIsImludDE2X3NpZ25lZCIsImludDE2X3Vuc2lnbmVkIiwiaW50MzIkMSIsImludDY0JDEiLCJpbnQkMiIsIm5hdGl2ZWludCQxIiwiY29tcGxleDMyIiwiY29tcGxleDY0Iiwia2luZF9zaXplX2luX2J5dGVzIiwiY19sYXlvdXQiLCJmb3J0cmFuX2xheW91dCIsImNsb29wIiwiaWR4IiwiY29sIiwiZmxvb3AiLCJpbml0JDYiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJjcmVhdGUkOCIsImdldCQzIiwic2V0JDIiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQ5IiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDciLCJvZl9hcnJheSIsImJhIiwiY3JlYXRlJDEwIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDgiLCJvZl9hcnJheSQwIiwicm93IiwiY3JlYXRlJDExIiwiZGltMyIsInNpemVfaW5fYnl0ZXMkMyIsInNsaWNlX2xlZnRfMSIsInNsaWNlX3JpZ2h0XzEiLCJzbGljZV9sZWZ0XzIiLCJzbGljZV9yaWdodF8yIiwiaW5pdCQ5Iiwib2ZfYXJyYXkkMSIsImFycmF5MF9vZl9nZW5hcnJheSIsImFycmF5MV9vZl9nZW5hcnJheSIsImFycmF5Ml9vZl9nZW5hcnJheSIsImFycmF5M19vZl9nZW5hcnJheSIsInJlc2hhcGVfMCIsInJlc2hhcGVfMSIsInJlc2hhcGVfMiIsInJlc2hhcGVfMyIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImxlbmd0aCQxMSIsImlucHV0X2NoYXIkMCIsImlucHV0X2J5dGUkMCIsImlucHV0X2xpbmUkMCIsInJlYWxseV9pbnB1dCQwIiwicmVhbGx5X2lucHV0X3N0cmluZyQwIiwicmVhZF91cHRvIiwiZW5zdXJlIiwibmV3X2xlbiQwIiwibmV3X2xlbiQxIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSQwIiwiaW5pdGlhbF9zaXplJDEiLCJucmVhZCIsImJ1ZiQwIiwiYnVmJDEiLCJyZW0iLCJ3aXRoX29wZW4kMCIsIndpdGhfb3Blbl9iaW4kMCIsIndpdGhfb3Blbl90ZXh0JDAiLCJ3aXRoX29wZW5fZ2VuJDAiLCJzZWVrJDAiLCJwb3MkMCIsImxlbmd0aCQxMiIsImZvcm1hdF9wZXJpb2QiLCJmbXQiLCJwIiwibWFrZV9wZXJpb2QiLCJ5ZWFycyIsIm1vbnRocyIsImRheXMiLCJhZGRfcGVyaW9kcyIsImQxIiwiZDIiLCJzdWJfcGVyaW9kcyIsIm11bF9wZXJpb2QiLCJtIiwicGVyaW9kX3RvX2RheXMiLCJpc19sZWFwX3llYXIiLCJ5ZWFyIiwiZGF5c19pbl9tb250aCIsIm1vbnRoIiwiaXNfdmFsaWRfZGF0ZSIsImQiLCJtYWtlX2RhdGUiLCJkYXkiLCJhZGRfbW9udGhzX3RvX2ZpcnN0X29mX21vbnRoX2QiLCJ5ZWFyJDAiLCJtb250aHMkMCIsIm5ld19tb250aCIsIm1vbnRocyQxIiwieWVhciQxIiwibW9udGhzJDIiLCJ5ZWFyJDIiLCJhZGRfZGF0ZXMiLCJvcHQiLCJzdGgiLCJyb3VuZCIsIm5ld19tb250aCQwIiwibmV3X3llYXIkMCIsIm5ld19kYXRlIiwibmV3X3llYXIiLCJkJDAiLCJkYXlzX2luX2RfbW9udGgiLCJuZXdfZGF5IiwibmV3X21vbnRoJDEiLCJuZXdfeWVhciQxIiwiZGF5cyQwIiwiZCQxIiwibmV3X21vbnRoJDIiLCJuZXdfeWVhciQyIiwiZGF5cyQxIiwiZCQyIiwiY29tcGFyZV9kYXRlcyIsImZvcm1hdF9kYXRlIiwiZmlyc3RfZGF5X29mX21vbnRoIiwibGFzdF9kYXlfb2ZfbW9udGgiLCJkYXlzX21vbnRoIiwibmVnX3BlcmlvZCIsInN1Yl9kYXRlcyIsImNtcCIsIm5ld19kMl9tb250aCIsIm5ld19kMl95ZWFyIiwibmV3X2QyIiwiZGF0ZV90b195bWQiLCJwZXJpb2RfdG9feW1kcyIsInN0cmVhbSQxIiwic3RyZWFtJDAiLCJzdHJlYW0iLCJ2ZXJzaW9uIiwib2NhbWxfbGV4X3RhYmxlcyIsIm9jYW1sX2xleF90YWJsZXMkMCIsIm9jYW1sX2xleF90YWJsZXMkMSIsImpzb25fZXJyb3IiLCJzIiwidXRmOF9vZl9jb2RlIiwiYnVmIiwieCIsImFkZCIsIm1heGJpdHMiLCJuIiwidXRmOF9vZl9zdXJyb2dhdGVfcGFpciIsImkiLCJqIiwiaGlnaDEwIiwibG93MTAiLCJpbml0X2xleGVyIiwiZm5hbWUiLCJvcHQiLCJzdGgiLCJsbnVtIiwiYnVmJDAiLCJidWYkMSIsImhleCIsIndyaXRlX3NwZWNpYWwiLCJzcmMiLCJzdGFydCIsInN0b3AiLCJvYiIsInN0ciIsImZpbmlzaF9zdHJpbmciLCJleGMiLCJ3cml0ZV9zdHJpbmciLCJjIiwianNvbl9zdHJpbmdfb2Zfc3RyaW5nIiwid3JpdGVfbnVsbCIsIndyaXRlX2Jvb2wiLCJ3cml0ZV9kaWdpdHMiLCJkIiwid3JpdGVfaW50IiwiZmxvYXRfbmVlZHNfcGVyaW9kIiwid3JpdGVfZmxvYXQiLCJzMSIsIndyaXRlX25vcm1hbF9mbG9hdF9wcmVjIiwic2lnbmlmaWNhbnRfZmlndXJlcyIsIndyaXRlX2Zsb2F0X3ByZWMiLCJ3cml0ZV9zdGRfZmxvYXQiLCJ3cml0ZV9zdGRfZmxvYXRfcHJlYyIsIndyaXRlX2ludGxpdCIsIndyaXRlX2Zsb2F0bGl0Iiwid3JpdGVfc3RyaW5nbGl0IiwiaXRlcjIiLCJmX2VsdCIsImZfc2VwIiwibCQwIiwieSQwIiwibCIsInkiLCJ3cml0ZV92YXJpYW50IiwibyIsIndyaXRlX3QiLCJ3cml0ZV90dXBsZSIsIndyaXRlX2xpc3QiLCJ3cml0ZV9hc3NvYyIsImwkMSIsInMkMCIsImIiLCJzJDEiLCJmIiwicyQyIiwicyQzIiwid3JpdGVfc3RkX3ZhcmlhbnQiLCJ3cml0ZV9zdGRfanNvbiIsIndyaXRlX3N0ZF90dXBsZSIsInRvX2J1ZmZlciIsInN1ZiIsInN0aCQwIiwic3RkIiwidG9fc3RyaW5nIiwibGVuIiwib2IkMCIsInRvX2NoYW5uZWwiLCJvYyIsInRvX291dHB1dCIsIm91dCIsInRvX2ZpbGUiLCJmaWxlIiwiZSIsInNlcV90b19idWZmZXIiLCJzdCIsInNlcV90b19zdHJpbmciLCJzZXFfdG9fY2hhbm5lbCIsInNlcSIsImpzb24iLCJzZXFfdG9fZmlsZSIsInNvcnQiLCJ2IiwiayIsImEiLCJ2JDAiLCJsJDIiLCJwcCIsImZtdCIsInR1cCIsInNlcCIsInZhbHVlIiwibmFtZSIsIngkMSIsInhzIiwia2V5IiwieHMkMCIsIngkMCIsIngkMiIsIngkMyIsIngkNCIsIngkNSIsIngkNiIsInNob3ciLCJlcXVhbCIsImEkMCIsImIkMCIsImIkMSIsImEkMSIsInlzIiwiY29tcGFyZV9rZXlzIiwia2V5JDAiLCJ5cyQwIiwidmFsdWUkMCIsInJlc3VsdCIsInlzJDEiLCJ4cyQxIiwiYiQyIiwiYSQyIiwibmFtZSQwIiwiYiQzIiwiYSQzIiwicmVzdWx0JDAiLCJiJDQiLCJhJDQiLCJiJDUiLCJhJDUiLCJiJDYiLCJhJDYiLCJiJDciLCJhJDciLCJiJDgiLCJhJDgiLCJwcF9saXN0IiwicHB4IiwicHBfc2VwIiwiaXNfYXRvbSIsImZvcm1hdCIsImluc2lkZV9ib3giLCJ4JDciLCJyZXByZXNlbnRhdGlvbiIsIm9wIiwicHAkMCIsInByZXR0eV9wcmludCIsInByZXR0eV90b19zdHJpbmciLCJwcmV0dHlfdG9fY2hhbm5lbCIsImhleCQwIiwid3JpdGVfc3BlY2lhbCQwIiwiZmluaXNoX3N0cmluZyQwIiwid3JpdGVfc3RyaW5nJDAiLCJqc29uX3N0cmluZ19vZl9zdHJpbmckMCIsIndyaXRlX251bGwkMCIsIndyaXRlX2Jvb2wkMCIsIndyaXRlX2RpZ2l0cyQwIiwid3JpdGVfaW50JDAiLCJmbG9hdF9uZWVkc19wZXJpb2QkMCIsIndyaXRlX2Zsb2F0JDAiLCJ3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyQwIiwid3JpdGVfZmxvYXRfcHJlYyQwIiwid3JpdGVfc3RkX2Zsb2F0JDAiLCJ3cml0ZV9zdGRfZmxvYXRfcHJlYyQwIiwiaXRlcjIkMCIsImZfc2VwJDAiLCJ3cml0ZV9saXN0JDAiLCJ3cml0ZV90JDAiLCJ3cml0ZV9hc3NvYyQwIiwid3JpdGVfc3RkX2pzb24kMCIsInRvX2J1ZmZlciQwIiwidG9fc3RyaW5nJDAiLCJ0b19jaGFubmVsJDAiLCJ0b19vdXRwdXQkMCIsInRvX2ZpbGUkMCIsInNlcV90b19idWZmZXIkMCIsInNlcV90b19zdHJpbmckMCIsInNlcV90b19jaGFubmVsJDAiLCJzZXFfdG9fZmlsZSQwIiwic29ydCQwIiwicHBfbGlzdCQwIiwiaXNfYXRvbSQwIiwiZm9ybWF0JDAiLCJwcCQxIiwicHAkMiIsInNob3ckMCIsImVxdWFsJDAiLCJwcmV0dHlfcHJpbnQkMCIsInByZXR0eV90b19zdHJpbmckMCIsInByZXR0eV90b19jaGFubmVsJDAiLCJoZXgkMSIsImN1c3RvbV9lcnJvciIsImRlc2NyIiwibGV4YnVmIiwib2ZmcyIsImJvbCIsInBvczEiLCJwb3MyIiwiZmlsZV9saW5lIiwiYnl0ZXMiLCJtc2ciLCJsZXhlcl9lcnJvciIsInJlYWRfanVuayIsImxvbmdfZXJyb3IiLCJqdW5rIiwiZXh0cmFfanVuayIsIm1pbjEwIiwibWF4MTAiLCJleHRyYWN0X3Bvc2l0aXZlX2ludCIsImV4dHJhY3RfbmVnYXRpdmVfaW50IiwibmV3bGluZSIsImFkZF9sZXhlbWUiLCJyZWFkX2pzb24kMiIsIm9jYW1sX2xleF9yZWFkX2pzb25fcmVjIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJvY2FtbF9sZXhfc3RhdGUkMSIsImZpbmlzaF9zdHJpbmckMSIsImFjYyIsInJlYWRfc3BhY2UiLCJyZWFkX29iamVjdF9lbmQiLCJmaWVsZF9uYW1lIiwicmVhZF9pZGVudCIsInJlYWRfY29sb24iLCJyZWFkX2pzb24iLCJyZWFkX29iamVjdF9zZXAiLCJmaWVsZF9uYW1lJDAiLCJhY2MkMCIsInJlYWRfYXJyYXlfZW5kIiwicmVhZF9hcnJheV9zZXAiLCJmaW5pc2hfY29tbWVudCIsImZpbmlzaF9lc2NhcGVkX2NoYXIiLCJtYXBfc3RyaW5nIiwiYyQwIiwib2NhbWxfbGV4X3N0YXRlJDIiLCJjJDEiLCJkJDAiLCJmaW5pc2hfc3RyaW5nbGl0IiwiZmluaXNoX3ZhcmlhbnQiLCJyZWFkX2d0IiwicmVhZF9sdCIsInJlYWRfY29tbWEiLCJzdGFydF9hbnlfdmFyaWFudCIsInJlYWRfZW9mIiwicmVhZF9udWxsIiwicmVhZF9udWxsX2lmX3Bvc3NpYmxlIiwicmVhZF9ib29sIiwib2NhbWxfbGV4X3JlYWRfaW50X3JlYyIsInJlYWRfaW50Iiwib2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIiwicmVhZF9pbnQzMiIsIm9jYW1sX2xleF9yZWFkX2ludDY0X3JlYyIsInJlYWRfaW50NjQiLCJvY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIiwicmVhZF9udW1iZXIiLCJyZWFkX3N0cmluZyIsIm1hcF9pZGVudCIsIm9jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyIsInJlYWRfY2VsbCIsImluaXRfYWNjIiwicmVhZF9zZXF1ZW5jZSIsIm9jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyIsInJlYWRfbGlzdF9yZXYiLCJyZWFkX3R1cGxlIiwicmVhZF90dXBsZV9lbmQiLCJyZWFkX3R1cGxlX2VuZDIiLCJyZWFkX3R1cGxlX3NlcCIsInJlYWRfdHVwbGVfc2VwMiIsIm9jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkcyIsInJlYWRfa2V5IiwicmVhZF9maWVsZCIsInJlYWRfYWJzdHJhY3RfZmllbGRzIiwicmVhZF9sY3VybCIsInN0YXJ0X2FueV90dXBsZSIsInJlYWRfbHBhciIsInJlYWRfcnBhciIsInJlYWRfbGJyIiwicmVhZF9yYnIiLCJmaW5pc2hfc2tpcF9zdHJpbmdsaXQiLCJza2lwX2pzb24kMiIsIm9jYW1sX2xleF9za2lwX2pzb25fcmVjIiwic2tpcF9pZGVudCIsInNraXBfanNvbiIsImZpbmlzaF9za2lwX3ZhcmlhbnQiLCJmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCIsImJ1ZmZlcl9qc29uJDIiLCJvY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIiwiYnVmZmVyX3NwYWNlIiwiYnVmZmVyX29iamVjdF9lbmQiLCJidWZmZXJfaWRlbnQiLCJidWZmZXJfY29sb24iLCJidWZmZXJfanNvbiIsImJ1ZmZlcl9vYmplY3Rfc2VwIiwiYnVmZmVyX2FycmF5X2VuZCIsImJ1ZmZlcl9hcnJheV9zZXAiLCJmaW5pc2hfYnVmZmVyX2NvbW1lbnQiLCJyZWFkX2ludDgiLCJyZWFkX2xpc3QiLCJyZWFkX2FycmF5IiwidGwiLCJyIiwicmVhZF9maWVsZHMiLCJmcm9tX2xleGJ1ZiIsImZyb21fc3RyaW5nJDAiLCJmcm9tX2NoYW5uZWwkMCIsImljIiwiZnJvbV9maWxlIiwic2VxX2Zyb21fbGV4YnVmIiwiZmluIiwiZmluX2UiLCJzZXFfZnJvbV9zdHJpbmciLCJzZXFfZnJvbV9jaGFubmVsIiwic2VxX2Zyb21fZmlsZSIsImZuYW1lJDAiLCJsaW5lc2VxX2Zyb21fY2hhbm5lbCIsImxudW0wIiwibGluZSIsImxpbmVzZXFfZnJvbV9maWxlIiwicHJldHRpZnkiLCJjb21wYWN0IiwidHlwZXJyIiwianMiLCJhc3NvYyIsIm9iaiIsIm1lbWJlciIsImluZGV4Iiwid3JhcHBlZF9pbmRleCIsIm1hcCIsInRvX2Fzc29jIiwidG9fb3B0aW9uIiwidG9fYm9vbCIsInRvX2Jvb2xfb3B0aW9uIiwidG9fbnVtYmVyIiwidG9fbnVtYmVyX29wdGlvbiIsInRvX2Zsb2F0IiwidG9fZmxvYXRfb3B0aW9uIiwidG9faW50IiwidG9faW50X29wdGlvbiIsInRvX2xpc3QiLCJ0b19zdHJpbmckMSIsInRvX3N0cmluZ19vcHRpb24iLCJjb252ZXJ0X2VhY2giLCJmaWx0ZXJfbWFwIiwiZmxhdHRlbiIsImwyIiwiZmlsdGVyX2luZGV4IiwiZmlsdGVyX2xpc3QiLCJmaWx0ZXJfbWVtYmVyIiwiZmlsdGVyX2Fzc29jIiwiZmlsdGVyX2Jvb2wiLCJmaWx0ZXJfaW50IiwiZmlsdGVyX2Zsb2F0IiwiZmlsdGVyX251bWJlciIsImZpbHRlcl9zdHJpbmciLCJrZXlzIiwidmFsdWVzIiwiY29tYmluZSIsImZpcnN0Iiwic2Vjb25kIiwidG9fYmFzaWMiLCJoZXgkMiIsIndyaXRlX3NwZWNpYWwkMSIsImZpbmlzaF9zdHJpbmckMiIsIndyaXRlX3N0cmluZyQxIiwianNvbl9zdHJpbmdfb2Zfc3RyaW5nJDEiLCJ3cml0ZV9udWxsJDEiLCJ3cml0ZV9ib29sJDEiLCJ3cml0ZV9kaWdpdHMkMSIsIndyaXRlX2ludCQxIiwiZmxvYXRfbmVlZHNfcGVyaW9kJDEiLCJ3cml0ZV9mbG9hdCQxIiwid3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMkMSIsIndyaXRlX2Zsb2F0X3ByZWMkMSIsIndyaXRlX3N0ZF9mbG9hdCQxIiwid3JpdGVfc3RkX2Zsb2F0X3ByZWMkMSIsIndyaXRlX2ludGxpdCQwIiwiaXRlcjIkMSIsImZfc2VwJDEiLCJ3cml0ZV92YXJpYW50JDAiLCJ3cml0ZV90JDEiLCJ3cml0ZV90dXBsZSQwIiwid3JpdGVfbGlzdCQxIiwid3JpdGVfYXNzb2MkMSIsIndyaXRlX3N0ZF92YXJpYW50JDAiLCJ3cml0ZV9zdGRfanNvbiQxIiwid3JpdGVfc3RkX3R1cGxlJDAiLCJ0b19idWZmZXIkMSIsInRvX3N0cmluZyQyIiwidG9fY2hhbm5lbCQxIiwidG9fb3V0cHV0JDEiLCJ0b19maWxlJDEiLCJzZXFfdG9fYnVmZmVyJDEiLCJzZXFfdG9fc3RyaW5nJDEiLCJzZXFfdG9fY2hhbm5lbCQxIiwic2VxX3RvX2ZpbGUkMSIsInNvcnQkMSIsInBwX2xpc3QkMSIsImlzX2F0b20kMSIsImZvcm1hdCQxIiwicHAkMyIsInBwJDQiLCJzaG93JDEiLCJlcXVhbCQxIiwicHJldHR5X3ByaW50JDEiLCJwcmV0dHlfdG9fc3RyaW5nJDEiLCJwcmV0dHlfdG9fY2hhbm5lbCQxIiwiaGV4JDMiLCJjdXN0b21fZXJyb3IkMCIsImxleGVyX2Vycm9yJDAiLCJyZWFkX2p1bmskMCIsImxvbmdfZXJyb3IkMCIsIm1pbjEwJDAiLCJtYXgxMCQwIiwiZXh0cmFjdF9wb3NpdGl2ZV9pbnQkMCIsImV4dHJhY3RfbmVnYXRpdmVfaW50JDAiLCJuZXdsaW5lJDAiLCJhZGRfbGV4ZW1lJDAiLCJyZWFkX2pzb24kMyIsIm9jYW1sX2xleF9yZWFkX2pzb25fcmVjJDAiLCJmaW5pc2hfc3RyaW5nJDMiLCJyZWFkX3NwYWNlJDAiLCJyZWFkX29iamVjdF9lbmQkMCIsInJlYWRfaWRlbnQkMCIsInJlYWRfY29sb24kMCIsInJlYWRfanNvbiQwIiwicmVhZF9vYmplY3Rfc2VwJDAiLCJyZWFkX2FycmF5X2VuZCQwIiwicmVhZF9hcnJheV9zZXAkMCIsImFjYyQxIiwicmVhZF90dXBsZV9lbmQkMCIsInJlYWRfdHVwbGVfc2VwJDAiLCJjb25zIiwiZmluaXNoX3ZhcmlhbnQkMCIsImZpbmlzaF9jb21tZW50JDAiLCJmaW5pc2hfZXNjYXBlZF9jaGFyJDAiLCJtYXBfc3RyaW5nJDAiLCJmaW5pc2hfc3RyaW5nbGl0JDAiLCJyZWFkX2d0JDAiLCJyZWFkX2x0JDAiLCJyZWFkX2NvbW1hJDAiLCJzdGFydF9hbnlfdmFyaWFudCQwIiwicmVhZF9lb2YkMCIsInJlYWRfbnVsbCQwIiwicmVhZF9udWxsX2lmX3Bvc3NpYmxlJDAiLCJyZWFkX2Jvb2wkMCIsIm9jYW1sX2xleF9yZWFkX2ludF9yZWMkMCIsInJlYWRfaW50JDAiLCJvY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMkMCIsInJlYWRfaW50MzIkMCIsIm9jYW1sX2xleF9yZWFkX2ludDY0X3JlYyQwIiwicmVhZF9pbnQ2NCQwIiwib2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyQwIiwicmVhZF9udW1iZXIkMCIsInJlYWRfc3RyaW5nJDAiLCJtYXBfaWRlbnQkMCIsIm9jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyQwIiwicmVhZF9zZXF1ZW5jZSQwIiwib2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjJDAiLCJyZWFkX2xpc3RfcmV2JDAiLCJvY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMiLCJwb3MiLCJyZWFkX3R1cGxlJDAiLCJyZWFkX3R1cGxlX2VuZDIkMCIsInJlYWRfdHVwbGVfc2VwMiQwIiwib2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzJDAiLCJyZWFkX2Fic3RyYWN0X2ZpZWxkcyQwIiwicmVhZF9sY3VybCQwIiwic3RhcnRfYW55X3R1cGxlJDAiLCJyZWFkX2xwYXIkMCIsInJlYWRfcnBhciQwIiwicmVhZF9sYnIkMCIsInJlYWRfcmJyJDAiLCJmaW5pc2hfc2tpcF92YXJpYW50JDAiLCJza2lwX2pzb24kMCIsImZpbmlzaF9za2lwX3N0cmluZ2xpdCQwIiwic2tpcF9qc29uJDMiLCJvY2FtbF9sZXhfc2tpcF9qc29uX3JlYyQwIiwic2tpcF9pZGVudCQwIiwiZmluaXNoX2J1ZmZlcl92YXJpYW50IiwiYnVmZmVyX2pzb24kMCIsImJ1ZmZlcl9zcGFjZSQwIiwiZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQkMCIsImJ1ZmZlcl9qc29uJDMiLCJvY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjJDAiLCJidWZmZXJfb2JqZWN0X2VuZCQwIiwiYnVmZmVyX2lkZW50JDAiLCJidWZmZXJfY29sb24kMCIsImJ1ZmZlcl9vYmplY3Rfc2VwJDAiLCJidWZmZXJfYXJyYXlfZW5kJDAiLCJidWZmZXJfYXJyYXlfc2VwJDAiLCJidWZmZXJfdHVwbGVfZW5kIiwiYnVmZmVyX3R1cGxlX3NlcCIsImZpbmlzaF9idWZmZXJfY29tbWVudCQwIiwianVuayQwIiwicmVhZF9pbnQ4JDAiLCJyZWFkX2xpc3QkMCIsInJlYWRfYXJyYXkkMCIsInJlYWRfZmllbGRzJDAiLCJmcm9tX2xleGJ1ZiQwIiwiZnJvbV9zdHJpbmckMiIsImZyb21fY2hhbm5lbCQyIiwiZnJvbV9maWxlJDAiLCJzZXFfZnJvbV9sZXhidWYkMCIsInNlcV9mcm9tX3N0cmluZyQwIiwic2VxX2Zyb21fY2hhbm5lbCQwIiwic2VxX2Zyb21fZmlsZSQwIiwibGluZXNlcV9mcm9tX2NoYW5uZWwkMCIsImxpbmVzZXFfZnJvbV9maWxlJDAiLCJwcmV0dGlmeSQwIiwiY29tcGFjdCQwIiwidHlwZXJyJDAiLCJhc3NvYyQwIiwibWVtYmVyJDAiLCJpbmRleCQwIiwibWFwJDAiLCJ0b19hc3NvYyQwIiwidG9fb3B0aW9uJDAiLCJ0b19ib29sJDAiLCJ0b19ib29sX29wdGlvbiQwIiwidG9fbnVtYmVyJDAiLCJ0b19udW1iZXJfb3B0aW9uJDAiLCJ0b19mbG9hdCQwIiwidG9fZmxvYXRfb3B0aW9uJDAiLCJ0b19pbnQkMCIsInRvX2ludF9vcHRpb24kMCIsInRvX2xpc3QkMCIsInRvX3N0cmluZyQzIiwidG9fc3RyaW5nX29wdGlvbiQwIiwiY29udmVydF9lYWNoJDAiLCJmaWx0ZXJfbWFwJDAiLCJmbGF0dGVuJDAiLCJmaWx0ZXJfaW5kZXgkMCIsImZpbHRlcl9saXN0JDAiLCJmaWx0ZXJfbWVtYmVyJDAiLCJmaWx0ZXJfYXNzb2MkMCIsImZpbHRlcl9ib29sJDAiLCJmaWx0ZXJfaW50JDAiLCJmaWx0ZXJfZmxvYXQkMCIsImZpbHRlcl9udW1iZXIkMCIsImZpbHRlcl9zdHJpbmckMCIsImtleXMkMCIsInZhbHVlcyQwIiwiY29tYmluZSQwIiwiaGV4JDQiLCJ3cml0ZV9zcGVjaWFsJDIiLCJmaW5pc2hfc3RyaW5nJDQiLCJ3cml0ZV9zdHJpbmckMiIsImpzb25fc3RyaW5nX29mX3N0cmluZyQyIiwid3JpdGVfbnVsbCQyIiwid3JpdGVfYm9vbCQyIiwid3JpdGVfaW50bGl0JDEiLCJ3cml0ZV9mbG9hdGxpdCQwIiwid3JpdGVfc3RyaW5nbGl0JDAiLCJpdGVyMiQyIiwiZl9zZXAkMiIsIndyaXRlX3ZhcmlhbnQkMSIsIndyaXRlX3QkMiIsIndyaXRlX3R1cGxlJDEiLCJ3cml0ZV9saXN0JDIiLCJ3cml0ZV9hc3NvYyQyIiwid3JpdGVfc3RkX3ZhcmlhbnQkMSIsIndyaXRlX3N0ZF9qc29uJDIiLCJ3cml0ZV9zdGRfdHVwbGUkMSIsInRvX2J1ZmZlciQyIiwidG9fc3RyaW5nJDQiLCJ0b19jaGFubmVsJDIiLCJ0b19vdXRwdXQkMiIsInRvX2ZpbGUkMiIsInNlcV90b19idWZmZXIkMiIsInNlcV90b19zdHJpbmckMiIsInNlcV90b19jaGFubmVsJDIiLCJzZXFfdG9fZmlsZSQyIiwic29ydCQyIiwicHBfbGlzdCQyIiwiaXNfYXRvbSQyIiwiZm9ybWF0JDIiLCJwcCQ1IiwicHAkNiIsInNob3ckMiIsImVxdWFsJDIiLCJwcmV0dHlfcHJpbnQkMiIsInByZXR0eV90b19zdHJpbmckMiIsInByZXR0eV90b19jaGFubmVsJDIiLCJoZXgkNSIsImN1c3RvbV9lcnJvciQxIiwibGV4ZXJfZXJyb3IkMSIsInJlYWRfanVuayQxIiwibG9uZ19lcnJvciQxIiwibWluMTAkMSIsIm1heDEwJDEiLCJleHRyYWN0X3Bvc2l0aXZlX2ludCQxIiwibWFrZV9wb3NpdGl2ZV9pbnQiLCJleHRyYWN0X25lZ2F0aXZlX2ludCQxIiwibWFrZV9uZWdhdGl2ZV9pbnQiLCJuZXdsaW5lJDEiLCJhZGRfbGV4ZW1lJDEiLCJyZWFkX2pzb24kNCIsIm9jYW1sX2xleF9yZWFkX2pzb25fcmVjJDEiLCJmaW5pc2hfc3RyaW5nbGl0JDEiLCJyZWFkX3NwYWNlJDEiLCJyZWFkX29iamVjdF9lbmQkMSIsInJlYWRfaWRlbnQkMSIsInJlYWRfY29sb24kMSIsInJlYWRfanNvbiQxIiwicmVhZF9vYmplY3Rfc2VwJDEiLCJyZWFkX2FycmF5X2VuZCQxIiwicmVhZF9hcnJheV9zZXAkMSIsInJlYWRfdHVwbGVfZW5kJDEiLCJyZWFkX3R1cGxlX3NlcCQxIiwiZmluaXNoX3ZhcmlhbnQkMSIsImZpbmlzaF9jb21tZW50JDEiLCJmaW5pc2hfc3RyaW5nJDUiLCJmaW5pc2hfZXNjYXBlZF9jaGFyJDEiLCJtYXBfc3RyaW5nJDEiLCJyZWFkX2d0JDEiLCJyZWFkX2x0JDEiLCJyZWFkX2NvbW1hJDEiLCJzdGFydF9hbnlfdmFyaWFudCQxIiwicmVhZF9lb2YkMSIsInJlYWRfbnVsbCQxIiwicmVhZF9udWxsX2lmX3Bvc3NpYmxlJDEiLCJyZWFkX2Jvb2wkMSIsIm9jYW1sX2xleF9yZWFkX2ludF9yZWMkMSIsInJlYWRfaW50JDEiLCJvY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMkMSIsInJlYWRfaW50MzIkMSIsIm9jYW1sX2xleF9yZWFkX2ludDY0X3JlYyQxIiwicmVhZF9pbnQ2NCQxIiwib2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyQxIiwicmVhZF9udW1iZXIkMSIsInJlYWRfc3RyaW5nJDEiLCJtYXBfaWRlbnQkMSIsIm9jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyQxIiwicmVhZF9zZXF1ZW5jZSQxIiwib2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjJDEiLCJyZWFkX2xpc3RfcmV2JDEiLCJvY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMkMCIsInJlYWRfdHVwbGUkMSIsInJlYWRfdHVwbGVfZW5kMiQxIiwicmVhZF90dXBsZV9zZXAyJDEiLCJvY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHMkMSIsInJlYWRfYWJzdHJhY3RfZmllbGRzJDEiLCJyZWFkX2xjdXJsJDEiLCJzdGFydF9hbnlfdHVwbGUkMSIsInJlYWRfbHBhciQxIiwicmVhZF9ycGFyJDEiLCJyZWFkX2xiciQxIiwicmVhZF9yYnIkMSIsImZpbmlzaF9za2lwX3ZhcmlhbnQkMSIsInNraXBfanNvbiQxIiwiZmluaXNoX3NraXBfc3RyaW5nbGl0JDEiLCJza2lwX2pzb24kNCIsIm9jYW1sX2xleF9za2lwX2pzb25fcmVjJDEiLCJza2lwX2lkZW50JDEiLCJmaW5pc2hfYnVmZmVyX3ZhcmlhbnQkMCIsImJ1ZmZlcl9qc29uJDEiLCJidWZmZXJfc3BhY2UkMSIsImZpbmlzaF9idWZmZXJfc3RyaW5nbGl0JDEiLCJidWZmZXJfanNvbiQ0Iiwib2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyQxIiwiYnVmZmVyX29iamVjdF9lbmQkMSIsImJ1ZmZlcl9pZGVudCQxIiwiYnVmZmVyX2NvbG9uJDEiLCJidWZmZXJfb2JqZWN0X3NlcCQxIiwiYnVmZmVyX2FycmF5X2VuZCQxIiwiYnVmZmVyX2FycmF5X3NlcCQxIiwiYnVmZmVyX3R1cGxlX2VuZCQwIiwiYnVmZmVyX3R1cGxlX3NlcCQwIiwiZmluaXNoX2J1ZmZlcl9jb21tZW50JDEiLCJqdW5rJDEiLCJyZWFkX2ludDgkMSIsInJlYWRfbGlzdCQxIiwicmVhZF9hcnJheSQxIiwicmVhZF9maWVsZHMkMSIsImZyb21fbGV4YnVmJDEiLCJmcm9tX3N0cmluZyQ0IiwiZnJvbV9jaGFubmVsJDQiLCJmcm9tX2ZpbGUkMSIsInNlcV9mcm9tX2xleGJ1ZiQxIiwic2VxX2Zyb21fc3RyaW5nJDEiLCJzZXFfZnJvbV9jaGFubmVsJDEiLCJzZXFfZnJvbV9maWxlJDEiLCJsaW5lc2VxX2Zyb21fY2hhbm5lbCQxIiwibGluZXNlcV9mcm9tX2ZpbGUkMSIsInByZXR0aWZ5JDEiLCJjb21wYWN0JDEiLCJ5b2pzb25fb2ZfdW5pdCIsInlvanNvbl9vZl9ib29sIiwiYiIsInlvanNvbl9vZl9zdHJpbmciLCJzdHIiLCJ5b2pzb25fb2ZfYnl0ZXMiLCJieXRlcyIsInlvanNvbl9vZl9jaGFyIiwiYyIsInlvanNvbl9vZl9pbnQiLCJuIiwieW9qc29uX29mX2Zsb2F0IiwieW9qc29uX29mX2ludDMyIiwieW9qc29uX29mX2ludDY0IiwieW9qc29uX29mX25hdGl2ZWludCIsInlvanNvbl9vZl9yZWYiLCJ5b2pzb25fb2ZfYSIsInJmIiwieW9qc29uX29mX2xhenlfdCIsImx2IiwieW9qc29uX29mX29wdGlvbiIsIngiLCJ5b2pzb25fb2ZfcGFpciIsInlvanNvbl9vZl9iIiwiYSIsInlvanNvbl9vZl90cmlwbGUiLCJ5b2pzb25fb2ZfYyIsInlvanNvbl9vZl9saXN0IiwibHN0IiwieW9qc29uX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwiaSIsInlvanNvbl9vZl9oYXNodGJsIiwieW9qc29uX29mX2tleSIsInlvanNvbl9vZl92YWwiLCJodGJsIiwiY29sbCIsImsiLCJ2IiwiYWNjIiwieW9qc29uX29mX29wYXF1ZSIsInlvanNvbl9vZl9mdW4iLCJyZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzIiwib2ZfeW9qc29uX2Vycm9yX2V4biIsImV4YyIsInlvanNvbiIsIm9mX3lvanNvbl9lcnJvciIsIndoYXQiLCJ1bml0X29mX3lvanNvbiIsImJvb2xfb2ZfeW9qc29uIiwic3RyaW5nX29mX3lvanNvbiIsImJ5dGVzX29mX3lvanNvbiIsImNoYXJfb2ZfeW9qc29uIiwiaW50X29mX3lvanNvbiIsImZsb2F0X29mX3lvanNvbiIsImludDMyX29mX3lvanNvbiIsImludDY0X29mX3lvanNvbiIsIm5hdGl2ZWludF9vZl95b2pzb24iLCJyZWZfb2ZfeW9qc29uIiwiYV9vZl95b2pzb24iLCJsYXp5X3Rfb2ZfeW9qc29uIiwib3B0aW9uX29mX3lvanNvbiIsInBhaXJfb2ZfeW9qc29uIiwiYl9vZl95b2pzb24iLCJiX3lvanNvbiIsImFfeW9qc29uIiwidHJpcGxlX29mX3lvanNvbiIsImNfb2ZfeW9qc29uIiwiY195b2pzb24iLCJsaXN0X29mX3lvanNvbiIsInJldl9sc3QiLCJhcnJheV9vZl95b2pzb24iLCJ0IiwiaCIsImxlbiIsInJlcyIsInQkMCIsImgkMCIsImhhc2h0Ymxfb2ZfeW9qc29uIiwia2V5X29mX3lvanNvbiIsInZhbF9vZl95b2pzb24iLCJhY3QiLCJ2X3lvanNvbiIsImtfeW9qc29uIiwib3BhcXVlX29mX3lvanNvbiIsImZ1bl9vZl95b2pzb24iLCJzcHJpbnRmIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwidGFnIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyIsInJldl9mbGRfbmFtZXMiLCJmbGRfbmFtZXNfc3RyIiwicmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMiLCJyZWNvcmRfZXh0cmFfZmllbGRzIiwicmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCIsInBhcmFtJDEiLCJmaWVsZCIsInBhcmFtJDIiLCJyZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzIiwidW5kZWZpbmVkJDAiLCJyZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b20iLCJyZWNvcmRfcG9seV9maWVsZF92YWx1ZSIsIm5vX3ZhcmlhbnRfbWF0Y2giLCJub19tYXRjaGluZ192YXJpYW50X2ZvdW5kIiwicHRhZ19ub19hcmdzIiwicHRhZ19pbmNvcnJlY3Rfbl9hcmdzIiwiY25zdHIiLCJwdGFnX3Rha2VzX2FyZ3MiLCJuZXN0ZWRfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIiwiZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIiwiZW1wdHlfdHlwZSIsInN5bWJvbCIsInlvanNvbl9vZl9zb3VyY2VfcG9zaXRpb24iLCJ2X2xhd19oZWFkaW5ncyIsInZfZW5kX2NvbHVtbiIsInZfZW5kX2xpbmUiLCJ2X3N0YXJ0X2NvbHVtbiIsInZfc3RhcnRfbGluZSIsInZfZmlsZW5hbWUiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJhcmckMSIsImJuZHMkMSIsImFyZyQyIiwiYm5kcyQyIiwiYXJnJDMiLCJibmRzJDMiLCJhcmckNCIsImJuZHMkNCIsIm1vbmV5X29mX2NlbnRzX3N0cmluZyIsImNlbnRzIiwibW9uZXlfb2ZfdW5pdHNfaW50IiwidW5pdHMiLCJtb25leV9vZl9jZW50c19pbnRlZ2VyIiwibW9uZXlfdG9fZmxvYXQiLCJtIiwibW9uZXlfb2ZfZGVjaW1hbCIsImQiLCJtb25leV90b19zdHJpbmciLCJtb25leV90b19jZW50cyIsIm1vbmV5X3JvdW5kIiwiZGVjaW1hbF9vZl9zdHJpbmciLCJkZWNpbWFsX3RvX2Zsb2F0IiwiZGVjaW1hbF9vZl9mbG9hdCIsImRlY2ltYWxfb2ZfaW50ZWdlciIsImRlY2ltYWxfdG9fc3RyaW5nIiwibWF4X3ByZWNfZGlnaXRzIiwiaSIsInNpZ24iLCJuIiwiaW50X3BhcnQiLCJuJDAiLCJkaWdpdHMiLCJsZWFkaW5nX3plcm9lcyIsImRpZ2l0IiwibnVtX2xlYWRpbmdfemVyb2VzIiwiaSQwIiwiZm10IiwiZGVjaW1hbF9yb3VuZCIsInEiLCJkZWNpbWFsX29mX21vbmV5IiwiaW50ZWdlcl9vZl9zdHJpbmciLCJzIiwiaW50ZWdlcl90b19zdHJpbmciLCJpbnRlZ2VyX3RvX2ludCIsImludGVnZXJfb2ZfaW50IiwiaW50ZWdlcl9leHBvbmVudGlhdGlvbiIsImUiLCJpbnRlZ2VyX2xvZzIiLCJ5ZWFyX29mX2RhdGUiLCJ5IiwibW9udGhfbnVtYmVyX29mX2RhdGUiLCJpc19sZWFwX3llYXIiLCJ5JDAiLCJkYXlfb2ZfbW9udGhfb2ZfZGF0ZSIsImQkMCIsImRhdGVfb2ZfbnVtYmVycyIsInllYXIiLCJtb250aCIsImRheSIsImRhdGVfdG9fc3RyaW5nIiwiZmlyc3RfZGF5X29mX21vbnRoIiwibGFzdF9kYXlfb2ZfbW9udGgiLCJkdXJhdGlvbl9vZl9udW1iZXJzIiwiZHVyYXRpb25fdG9fc3RyaW5nIiwiZHVyYXRpb25fdG9feWVhcnNfbW9udGhzX2RheXMiLCJ5b2pzb25fb2ZfcnVudGltZV92YWx1ZSIsInYwJDQiLCJ2MCQ1IiwidjAkNiIsInYwIiwidjAkNyIsInYwJDAiLCJ2MCQ4IiwidjAkMSIsInYwJDkiLCJ2MCQyIiwidjAkMTAiLCJ2MCQzIiwidjEiLCJ2MCQxMSIsInYwJDEyIiwidjEkMCIsInYwJDEzIiwidjAkMTQiLCJ2MSQxIiwidjEkMiIsInYxJDMiLCJ2MCQxNSIsInYwJDE2IiwidjEkNCIsInYwJDE3IiwidjAkMTgiLCJ1bmVtYmVkZGFibGUiLCJlbWJlZF91bml0IiwiZW1iZWRfYm9vbCIsIngiLCJlbWJlZF9tb25leSIsImVtYmVkX2ludGVnZXIiLCJlbWJlZF9kZWNpbWFsIiwiZW1iZWRfZGF0ZSIsImVtYmVkX2R1cmF0aW9uIiwiZW1iZWRfYXJyYXkiLCJmIiwieW9qc29uX29mX2luZm9ybWF0aW9uIiwidiIsInlvanNvbl9vZl9ldmVudCIsInlvanNvbl9vZl92YXJfZGVmIiwieW9qc29uX29mX2Z1bl9jYWxsIiwidl9ib2R5Iiwidl9pbnB1dHMiLCJ2X25hbWUiLCJ2X2Z1bl9jYWxscyIsInZfdmFsdWUiLCJ2X3BvcyIsInZfb3V0cHV0Iiwidl9mdW5faW5wdXRzIiwidl9mdW5fbmFtZSIsImxvZ19yZWYiLCJyZXNldF9sb2ciLCJyZXRyaWV2ZV9sb2ciLCJsb2dfYmVnaW5fY2FsbCIsImluZm8iLCJsb2dfZW5kX2NhbGwiLCJsb2dfdmFyaWFibGVfZGVmaW5pdGlvbiIsImVtYmVkIiwibG9nX2RlY2lzaW9uX3Rha2VuIiwicG9zIiwicHBfZXZlbnRzIiwib3B0IiwicHBmIiwiZXZlbnRzIiwic3RoIiwiaXNfZmlyc3RfY2FsbCIsImZvcm1hdF92YXJfZGVmIiwidmFyJDAiLCJmb3JtYXRfcG9zX29wdCIsImZvcm1hdF92YWx1ZSIsImZvcm1hdF92YXJfZGVmcyIsImZvcm1hdF92YXJfZGVmX3dpdGhfZnVuX2NhbGxzIiwidmFyX3dpdGhfZnVuIiwiZnVuX2NhbGwiLCJmb3JtYXRfZXZlbnQiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJ4JDMiLCJ4JDQiLCJuYW1lIiwiYXR0cnMiLCJuYW1lJDAiLCJ2YWx1ZSIsImVsdHMiLCJ2YXJfZGVmX3dpdGhfZnVuIiwib3V0cHV0IiwiYm9keSIsImZ1bl9pbnB1dHMiLCJmdW5fbmFtZSIsImJvZHkkMCIsImlucHV0cyIsImVtcHR5IiwiZW1wdHlfY3R4IiwicmF3X2V2ZW50X3RvX3N0cmluZyIsIm5hbWUkMSIsInRha2Vfd2hpbGUiLCJwIiwibCIsInQiLCJoIiwicmVzdCIsInQkMCIsInBhcnNlX3Jhd19ldmVudHMiLCJyYXdfZXZlbnRzIiwibmJfcmF3X2V2ZW50cyIsImlzX2Z1bmN0aW9uX2NhbGwiLCJpbmZvcyIsImlzX3Zhcl9kZWYiLCJwYXJzZV9ldmVudHMiLCJjdHgiLCJjdHgkMCIsInZhcl9uYW1lIiwiYm9keV9jdHgiLCJscyQwIiwiY3R4JDEiLCJyZXN0JDAiLCJyZXN0JDEiLCJjdHgkMiIsImluZm9zJDAiLCJwYXJzZV9mdW5fY2FsbCIsInJlc3QkMiIsImN0eCQzIiwicmVzdCQzIiwidmFyX2RvdF9zdWJzY29wZV92YXJfbmFtZSIsImxzIiwiY3R4JDQiLCJpbmZvcyQxIiwicmF3X2V2ZW50cyQwIiwiZnVuX2NhbGxzIiwicmVzdCQ0IiwiaW5mb3MkMiIsImZ1bl9jYWxsJDAiLCJmdW5fY2FsbHMkMCIsImZ1bl9jYWxscyQxIiwicmVzdCQ2IiwidmFsdWUkMCIsIm5hbWUkMiIsInZhcl9jb21wIiwicmVzdCQ1IiwidmFyX2NvbXAkMCIsInJlc3QkNyIsImN0eCQ2IiwiY3R4JDUiLCJib2R5X3JldiIsInZhcl9kZWYiLCJvdXRwdXQkMCIsIm1zZyIsImhhbmRsZV9kZWZhdWx0IiwiZXhjZXB0aW9ucyIsImp1c3QiLCJjb25zIiwiYWNjIiwiZXhjZXB0IiwibmV3X3ZhbCIsImhhbmRsZV9kZWZhdWx0X29wdCIsImIiLCJub19pbnB1dCIsImNvbXBhcmVfcGVyaW9kcyIsInAxIiwicDIiLCJwMV9kYXlzIiwicDJfZGF5cyIsImVxdWFsX3BlcmlvZHMiLCJvX25vdCIsIm9fbGVuZ3RoIiwiYSIsIm9fbWludXNfaW50IiwiaTEiLCJvX21pbnVzX3JhdCIsIm9fbWludXNfbW9uIiwibTEiLCJvX21pbnVzX2R1ciIsIm9fYW5kIiwib19vciIsIm9feG9yIiwib19lcSIsIm9fbWFwIiwib19yZWR1Y2UiLCJkZnQiLCJsZW4iLCJyIiwib19jb25jYXQiLCJvX2ZpbHRlciIsIm9fYWRkX2ludF9pbnQiLCJpMiIsIm9fYWRkX3JhdF9yYXQiLCJvX2FkZF9tb25fbW9uIiwibTIiLCJvX2FkZF9kYXRfZHVyIiwiZGEiLCJkdSIsIm9fYWRkX2R1cl9kdXIiLCJvX3N1Yl9pbnRfaW50Iiwib19zdWJfcmF0X3JhdCIsIm9fc3ViX21vbl9tb24iLCJvX3N1Yl9kYXRfZGF0Iiwib19zdWJfZGF0X2R1ciIsImRhdCIsImR1ciIsIm9fc3ViX2R1cl9kdXIiLCJvX211bHRfaW50X2ludCIsIm9fbXVsdF9yYXRfcmF0Iiwib19tdWx0X21vbl9yYXQiLCJpMV9hYnMiLCJpMl9hYnMiLCJzaWduX2ludCIsInJhdF9yZXN1bHQiLCJyZW1haW5kZXIiLCJyZXMiLCJvX211bHRfZHVyX2ludCIsIm9fZGl2X2ludF9pbnQiLCJvX2Rpdl9yYXRfcmF0Iiwib19kaXZfbW9uX21vbiIsIm9fZGl2X21vbl9yYXQiLCJyMSIsIm9fZGl2X2R1cl9kdXIiLCJkMSIsImQyIiwib19sdF9pbnRfaW50Iiwib19sdF9yYXRfcmF0Iiwib19sdF9tb25fbW9uIiwib19sdF9kdXJfZHVyIiwib19sdF9kYXRfZGF0Iiwib19sdGVfaW50X2ludCIsIm9fbHRlX3JhdF9yYXQiLCJvX2x0ZV9tb25fbW9uIiwib19sdGVfZHVyX2R1ciIsIm9fbHRlX2RhdF9kYXQiLCJvX2d0X2ludF9pbnQiLCJvX2d0X3JhdF9yYXQiLCJvX2d0X21vbl9tb24iLCJvX2d0X2R1cl9kdXIiLCJvX2d0X2RhdF9kYXQiLCJvX2d0ZV9pbnRfaW50Iiwib19ndGVfcmF0X3JhdCIsIm9fZ3RlX21vbl9tb24iLCJvX2d0ZV9kdXJfZHVyIiwib19ndGVfZGF0X2RhdCIsIm9fZXFfaW50X2ludCIsIm9fZXFfcmF0X3JhdCIsIm9fZXFfbW9uX21vbiIsIm9fZXFfZHVyX2R1ciIsIm9fZXFfZGF0X2RhdCIsIm9fZm9sZCIsIm9fbm90JDAiLCJvX2xlbmd0aCQwIiwib190b3JhdF9pbnQiLCJvX3RvcmF0X21vbiIsIm9fdG9tb25leV9yYXQiLCJvX2dldERheSIsIm9fZ2V0TW9udGgiLCJvX2dldFllYXIiLCJvX2ZpcnN0RGF5T2ZNb250aCIsIm9fbGFzdERheU9mTW9udGgiLCJvX3JvdW5kX21vbiIsIm9fcm91bmRfcmF0Iiwib19taW51c19pbnQkMCIsIm9fbWludXNfcmF0JDAiLCJvX21pbnVzX21vbiQwIiwib19taW51c19kdXIkMCIsIm9fYW5kJDAiLCJvX29yJDAiLCJvX3hvciQwIiwib19lcSQwIiwib19tYXAkMCIsIm9fcmVkdWNlJDAiLCJvX2NvbmNhdCQwIiwib19maWx0ZXIkMCIsIm9fYWRkX2ludF9pbnQkMCIsIm9fYWRkX3JhdF9yYXQkMCIsIm9fYWRkX21vbl9tb24kMCIsIm9fYWRkX2RhdF9kdXIkMCIsIm9fYWRkX2R1cl9kdXIkMCIsIm9fc3ViX2ludF9pbnQkMCIsIm9fc3ViX3JhdF9yYXQkMCIsIm9fc3ViX21vbl9tb24kMCIsIm9fc3ViX2RhdF9kYXQkMCIsIm9fc3ViX2RhdF9kdXIkMCIsIm9fc3ViX2R1cl9kdXIkMCIsIm9fbXVsdF9pbnRfaW50JDAiLCJvX211bHRfcmF0X3JhdCQwIiwib19tdWx0X21vbl9yYXQkMCIsIm9fbXVsdF9kdXJfaW50JDAiLCJvX2Rpdl9pbnRfaW50JDAiLCJvX2Rpdl9yYXRfcmF0JDAiLCJvX2Rpdl9tb25fbW9uJDAiLCJvX2Rpdl9tb25fcmF0JDAiLCJvX2Rpdl9kdXJfZHVyJDAiLCJvX2x0X2ludF9pbnQkMCIsIm9fbHRfcmF0X3JhdCQwIiwib19sdF9tb25fbW9uJDAiLCJvX2x0X2R1cl9kdXIkMCIsIm9fbHRfZGF0X2RhdCQwIiwib19sdGVfaW50X2ludCQwIiwib19sdGVfcmF0X3JhdCQwIiwib19sdGVfbW9uX21vbiQwIiwib19sdGVfZHVyX2R1ciQwIiwib19sdGVfZGF0X2RhdCQwIiwib19ndF9pbnRfaW50JDAiLCJvX2d0X3JhdF9yYXQkMCIsIm9fZ3RfbW9uX21vbiQwIiwib19ndF9kdXJfZHVyJDAiLCJvX2d0X2RhdF9kYXQkMCIsIm9fZ3RlX2ludF9pbnQkMCIsIm9fZ3RlX3JhdF9yYXQkMCIsIm9fZ3RlX21vbl9tb24kMCIsIm9fZ3RlX2R1cl9kdXIkMCIsIm9fZ3RlX2RhdF9kYXQkMCIsIm9fZXFfaW50X2ludCQwIiwib19lcV9yYXRfcmF0JDAiLCJvX2VxX21vbl9tb24kMCIsIm9fZXFfZHVyX2R1ciQwIiwib19lcV9kYXRfZGF0JDAiLCJvX2ZvbGQkMCIsInZlcnNpb24iLCJnaXRfdmVyc2lvbiIsInJhaXNlIiwiZXhuIiwibW9kdWxlIiwiZ2xvYmFsVGhpcyIsInN5bWJvbCIsIngiLCJ5Iiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInN5bWJvbCQyIiwic3ltYm9sJDMiLCJzeW1ib2wkNCIsImNvbXBhcmUiLCJlcXVhbCIsIm1heCIsIm1pbiIsImVxdWFsJDAiLCJlcXVhbCQxIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsImNvbXBhcmUkMiIsImVxdWFsJDIiLCJtYXgkMCIsIm1pbiQwIiwiZ2xvYmFsIiwibm9faGFuZGxlciIsIm51bGwiLCJ1bmRlZmluZWQiLCJyZXR1cm4kMCIsIm1hcCQwIiwiZiIsImJpbmQiLCJ0ZXN0IiwiaXRlciQwIiwiY2FzZSQwIiwiZyIsImdldCIsIm9wdGlvbiIsIngkMCIsInRvX29wdGlvbiIsInJldHVybiQxIiwibWFwJDEiLCJiaW5kJDAiLCJ0ZXN0JDAiLCJpdGVyJDEiLCJjYXNlJDEiLCJnZXQkMCIsIm9wdGlvbiQwIiwidG9fb3B0aW9uJDAiLCJjb2VyY2UiLCJjb2VyY2Vfb3B0IiwibmZjIiwibmZkIiwibmZrYyIsIm5ma2QiLCJzdHJpbmdfY29uc3RyIiwib2JqZWN0X2tleXMiLCJhcnJheV9sZW5ndGgiLCJhcnJheV9nZXQiLCJhcnJheV9zZXQiLCJhcnJheV9tYXAiLCJhIiwiaWR4IiwiYXJyYXlfbWFwaSIsInN0cl9hcnJheSIsIm1hdGNoX3Jlc3VsdCIsIm1hdGgiLCJlcnJvcl9jb25zdHIiLCJuYW1lIiwiZSIsIm1lc3NhZ2UiLCJzdGFjayIsInRvX3N0cmluZyIsInJhaXNlX2pzX2Vycm9yIiwic3RyaW5nX29mX2Vycm9yIiwiSlNPTiIsImRlY29kZVVSSSIsInMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlbmNvZGVVUkkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJ1bmVzY2FwZSIsImlzTmFOIiwiaSIsInBhcnNlSW50IiwicyQwIiwicGFyc2VGbG9hdCIsImV4cG9ydF9qcyIsImZpZWxkIiwianNvb19leHBvcnRzIiwiZXhwb3J0JDAiLCJleHBvcnRfYWxsIiwib2JqIiwia2V5IiwibGlzdF9vZl9ub2RlTGlzdCIsIm5vZGVMaXN0IiwibGVuZ3RoIiwiYWNjIiwiaSQwIiwiYWNjJDAiLCJpJDEiLCJkaXNjb25uZWN0ZWQiLCJwcmVjZWRpbmciLCJmb2xsb3dpbmciLCJjb250YWlucyQwIiwiY29udGFpbmVkX2J5IiwiaW1wbGVtZW50YXRpb25fc3BlY2lmaWMiLCJoYXMiLCJ0IiwibWFzayIsImFkZCIsImFwcGVuZENoaWxkIiwicCIsIm4iLCJyZW1vdmVDaGlsZCIsInJlcGxhY2VDaGlsZCIsIm8iLCJpbnNlcnRCZWZvcmUiLCJub2RlVHlwZSIsImNhc3QiLCJlbGVtZW50IiwidGV4dCIsImF0dHIiLCJoYW5kbGVyIiwicmVzIiwiZXZlbnQiLCJmdWxsX2hhbmRsZXIiLCJ0aGlzJDAiLCJpbnZva2VfaGFuZGxlciIsImV2ZW50VGFyZ2V0IiwibWFrZSQwIiwiYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwiaXRlciIsImIiLCJhZGRFdmVudExpc3RlbmVyIiwidHlwIiwiaCIsImNhcHQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaWQiLCJwcmV2ZW50RGVmYXVsdCIsImNyZWF0ZUN1c3RvbUV2ZW50IiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJkZXRhaWwiLCJvcHRfaXRlciIsImFycmF5QnVmZmVyIiwiaW50OEFycmF5X2luQnVmZmVyIiwiaW50MTZBcnJheV9pbkJ1ZmZlciIsInVpbnQxNkFycmF5X2luQnVmZmVyIiwiaW50MzJBcnJheV9pbkJ1ZmZlciIsInVpbnQzMkFycmF5X2luQnVmZmVyIiwiZmxvYXQzMkFycmF5X2luQnVmZmVyIiwiZmxvYXQ2NEFycmF5X2luQnVmZmVyIiwic2V0IiwiZ2V0JDEiLCJ1bnNhZmVfZ2V0IiwiZGF0YVZpZXciLCJvZl9hcnJheUJ1ZmZlciIsImFiIiwidWludDgiLCJmaWx0ZXJfbWFwIiwicSIsInYiLCJ2JDAiLCJibG9iX3JhdyIsImNvbnRlbnRUeXBlIiwiZW5kaW5ncyIsIm9wdGlvbnMiLCJvcHRpb25zJDAiLCJibG9iX2Zyb21fc3RyaW5nIiwiYmxvYl9mcm9tX2FueSIsImwiLCJhJDAiLCJsJDAiLCJmaWxlbmFtZSIsImZpbGUiLCJuYW1lJDAiLCJkb2NfY29uc3RyIiwiZG9jdW1lbnQiLCJibG9iIiwic3RyaW5nIiwiYXJyYXlCdWZmZXIkMCIsImxvYWRzdGFydCIsInByb2dyZXNzIiwiYWJvcnQiLCJlcnJvciIsImxvYWQiLCJsb2FkZW5kIiwiZmlsZVJlYWRlciIsIm9uSUUiLCJjbGljayIsImNvcHkkMCIsImN1dCIsInBhc3RlIiwiZGJsY2xpY2siLCJtb3VzZWRvd24iLCJtb3VzZXVwIiwibW91c2VvdmVyIiwibW91c2Vtb3ZlIiwibW91c2VvdXQiLCJrZXlwcmVzcyIsImtleWRvd24iLCJrZXl1cCIsIm1vdXNld2hlZWwiLCJ3aGVlbCIsIkRPTU1vdXNlU2Nyb2xsIiwidG91Y2hzdGFydCIsInRvdWNobW92ZSIsInRvdWNoZW5kIiwidG91Y2hjYW5jZWwiLCJkcmFnc3RhcnQiLCJkcmFnZW5kIiwiZHJhZ2VudGVyIiwiZHJhZ292ZXIiLCJkcmFnbGVhdmUiLCJkcmFnIiwiZHJvcCIsImhhc2hjaGFuZ2UiLCJjaGFuZ2UiLCJpbnB1dCIsInRpbWV1cGRhdGUiLCJzdWJtaXQiLCJzY3JvbGwiLCJmb2N1cyIsImJsdXIiLCJsb2FkJDAiLCJ1bmxvYWQiLCJiZWZvcmV1bmxvYWQiLCJyZXNpemUiLCJvcmllbnRhdGlvbmNoYW5nZSIsInBvcHN0YXRlIiwiZXJyb3IkMCIsImFib3J0JDAiLCJzZWxlY3QiLCJvbmxpbmUiLCJvZmZsaW5lIiwiY2hlY2tpbmciLCJub3VwZGF0ZSIsImRvd25sb2FkaW5nIiwicHJvZ3Jlc3MkMCIsInVwZGF0ZXJlYWR5IiwiY2FjaGVkIiwib2Jzb2xldGUiLCJkb21Db250ZW50TG9hZGVkIiwiYW5pbWF0aW9uc3RhcnQiLCJhbmltYXRpb25lbmQiLCJhbmltYXRpb25pdGVyYXRpb24iLCJhbmltYXRpb25jYW5jZWwiLCJ0cmFuc2l0aW9ucnVuIiwidHJhbnNpdGlvbnN0YXJ0IiwidHJhbnNpdGlvbmVuZCIsInRyYW5zaXRpb25jYW5jZWwiLCJjYW5wbGF5IiwiY2FucGxheXRocm91Z2giLCJkdXJhdGlvbmNoYW5nZSIsImVtcHRpZWQiLCJlbmRlZCIsImdvdHBvaW50ZXJjYXB0dXJlIiwibG9hZGVkZGF0YSIsImxvYWRlZG1ldGFkYXRhIiwibG9hZHN0YXJ0JDAiLCJsb3N0cG9pbnRlcmNhcHR1cmUiLCJtZXNzYWdlJDAiLCJwYXVzZSIsInBsYXkiLCJwbGF5aW5nIiwicG9pbnRlcmVudGVyIiwicG9pbnRlcmNhbmNlbCIsInBvaW50ZXJkb3duIiwicG9pbnRlcmxlYXZlIiwicG9pbnRlcm1vdmUiLCJwb2ludGVyb3V0IiwicG9pbnRlcm92ZXIiLCJwb2ludGVydXAiLCJyYXRlY2hhbmdlIiwic2Vla2VkIiwic2Vla2luZyIsInN0YWxsZWQiLCJzdXNwZW5kIiwidm9sdW1lY2hhbmdlIiwid2FpdGluZyIsIm1ha2UkMSIsImQiLCJsb2NhdGlvbl9vcmlnaW4iLCJsb2MiLCJnZXRFbGVtZW50QnlJZCIsInBub2RlIiwiZ2V0RWxlbWVudEJ5SWRfZXhuIiwiZ2V0RWxlbWVudEJ5SWRfb3B0IiwiZ2V0RWxlbWVudEJ5SWRfY29lcmNlIiwiY3JlYXRlRWxlbWVudCIsInVuc2FmZUNyZWF0ZUVsZW1lbnQiLCJkb2MiLCJjcmVhdGVFbGVtZW50U3ludGF4IiwidW5zYWZlQ3JlYXRlRWxlbWVudEV4IiwidHlwZSIsImVsdCIsImVsIiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwiZWxlbWVudCQwIiwidW5zYWZlQ29lcmNlIiwidGFnIiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWFwJDIiLCJtZXRhIiwib2JqZWN0Iiwib2wiLCJvcHRncm91cCIsIm9wdGlvbiQxIiwicGFyYW0iLCJwcmUiLCJzY3JpcHQiLCJzZWxlY3QkMCIsInN0eWxlIiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGV4dGFyZWEiLCJ0Zm9vdCIsInRoIiwidGhlYWQiLCJ0aXRsZSIsInRyIiwidWwiLCJhdWRpbyIsInZpZGVvIiwidW5zYWZlQ29lcmNlRXZlbnQiLCJjb25zdHIiLCJldiIsIm1vdXNlRXZlbnQiLCJrZXlib2FyZEV2ZW50Iiwid2hlZWxFdmVudCIsIm1vdXNlU2Nyb2xsRXZlbnQiLCJwb3BTdGF0ZUV2ZW50IiwibWVzc2FnZUV2ZW50IiwiZXZlbnRSZWxhdGVkVGFyZ2V0IiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uIiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJDAiLCJlbGVtZW50Q2xpZW50UG9zaXRpb24iLCJnZXREb2N1bWVudFNjcm9sbCIsImJ1dHRvblByZXNzZWQiLCJhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGgiLCJkeCIsImR5IiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXIiLCJ0cnlfa2V5X2NvZGVfbGVmdCIsInRyeV9rZXlfY29kZV9yaWdodCIsInRyeV9rZXlfY29kZV9udW1wYWQiLCJ0cnlfa2V5X2NvZGVfbm9ybWFsIiwibWFrZV91bmlkZW50aWZpZWQiLCJydW5fbmV4dCIsInZhbHVlIiwic3ltYm9sJDExIiwib2ZfZXZlbnQiLCJldnQiLCJjaGFyX29mX2ludCIsImVtcHR5X3N0cmluZyIsIm5vbmUiLCJvZl9ldmVudCQwIiwiZWxlbWVudCQxIiwidGFnZ2VkIiwib3B0X3RhZ2dlZCIsInRhZ2dlZEV2ZW50Iiwib3B0X3RhZ2dlZEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiYyIsInJlcSIsImNhbGxiYWNrIiwibm93IiwibGFzdCIsImR0IiwiZHQkMCIsImhhc1B1c2hTdGF0ZSIsImhhc1BsYWNlaG9sZGVyIiwiaGFzUmVxdWlyZWQiLCJvdmVyZmxvd19saW1pdCIsInNldFRpbWVvdXQiLCJsb29wIiwicmVtYWluIiwic3RlcCIsImNiIiwiY2xlYXJUaW1lb3V0IiwianNfYXJyYXlfb2ZfY29sbGVjdGlvbiIsImZvcm1EYXRhIiwiZm9ybURhdGFfZm9ybSIsImZpbHRlcl9tYXAkMCIsImhhdmVfY29udGVudCIsImZvcm1fZWxlbWVudHMiLCJpJDIiLCJ2JDIiLCJzdGgiLCJuYW1lJDEiLCJsaXN0IiwidiQxIiwiYXBwZW5kIiwiZm9ybV9jb250ZW50cyIsImZvcm1fZWx0IiwiZW1wdHlfZm9ybV9jb250ZW50cyIsInBvc3RfZm9ybV9jb250ZW50cyIsImNvbnRlbnRzIiwiZ2V0X2Zvcm1fY29udGVudHMiLCJyZWFkeXN0YXRlY2hhbmdlIiwibG9hZHN0YXJ0JDEiLCJwcm9ncmVzcyQxIiwiYWJvcnQkMSIsImVycm9yJDEiLCJsb2FkJDEiLCJ0aW1lb3V0IiwibG9hZGVuZCQwIiwiY3JlYXRlIiwiaW1wb3J0X3NjcmlwdHMiLCJzY3JpcHRzIiwic2V0X29ubWVzc2FnZSIsImpzX2hhbmRsZXIiLCJwb3N0X21lc3NhZ2UiLCJ3ZWJTb2NrZXQiLCJpc19zdXBwb3J0ZWQiLCJkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMiLCJ3ZWJnbGNvbnRleHRsb3N0Iiwid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIiwiZ2V0Q29udGV4dCIsImN0eCIsImdldENvbnRleHRXaXRoQXR0cmlidXRlcyIsInJlZ2V4cCIsInJlZ2V4cF9jYXNlX2ZvbGQiLCJyZWdleHBfd2l0aF9mbGFnIiwiYmx1bnRfc3RyX2FycmF5X2dldCIsInN0cmluZ19tYXRjaCIsInIiLCJzZWFyY2hfZm9yd2FyZCIsIm1hdGNoZWRfc3RyaW5nIiwibWF0Y2hlZF9ncm91cCIsInF1b3RlX3JlcGwiLCJnbG9iYWxfcmVwbGFjZSIsInNfYnkiLCJyZXBsYWNlX2ZpcnN0IiwiZmxhZ3MiLCJsaXN0X29mX2pzX2FycmF5IiwiaWR4JDEiLCJhY2N1IiwiaWR4JDAiLCJhY2N1JDAiLCJzcGxpdCIsImJvdW5kZWRfc3BsaXQiLCJxdW90ZSIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImludGVycnVwdCIsInBsdXNfcmUiLCJ1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyIsInVybGRlY29kZSIsInVybGVuY29kZSIsIm9wdCIsIndpdGhfcGx1cyIsImRlZmF1bHRfaHR0cF9wb3J0IiwiZGVmYXVsdF9odHRwc19wb3J0IiwicGF0aF9vZl9wYXRoX3N0cmluZyIsImF1eCIsImoiLCJ3b3JkIiwiZW5jb2RlX2FyZ3VtZW50cyIsImRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIiwibGVuIiwiZGVjb2RlX2FyZ3VtZW50cyIsInVybF9vZl9qc19zdHJpbmciLCJwcm90X3N0cmluZyIsInNzbCIsInBhdGhfc3RyIiwidXJsIiwidXJsX29mX3N0cmluZyIsInN0cmluZ19vZl91cmwiLCJmcmFnIiwiYXJncyIsInBhdGgiLCJwb3J0IiwiaG9zdCIsImZyYWckMCIsImFyZ3MkMCIsInBhdGgkMCIsInBvcnQkMCIsImhvc3QkMCIsImZyYWckMSIsImFyZ3MkMSIsInBhdGgkMSIsInByb3RvY29sIiwicGF0aF9zdHJpbmciLCJhcmd1bWVudHMkMCIsImdldF9mcmFnbWVudCIsInNldF9mcmFnbWVudCIsImdldCQyIiwic2V0JDAiLCJ1IiwiYXNfc3RyaW5nIiwidXBkYXRlX2ZpbGUiLCJjb250ZW50Iiwib2MiLCJzZXRfY2hhbm5lbF9mbHVzaGVyIiwib3V0X2NoYW5uZWwiLCJmJDAiLCJzZXRfY2hhbm5lbF9maWxsZXIiLCJpbl9jaGFubmVsIiwibW91bnQiLCJwcmVmaXgiLCJ1bm1vdW50IiwianNfb2Zfb2NhbWxfdmVyc2lvbiIsImVtcHR5X3Jlc2l6ZV9vYnNlcnZlcl9vcHRpb25zIiwiaXNfc3VwcG9ydGVkJDAiLCJvYnNlcnZlIiwibm9kZSIsImJveCIsImJveCQwIiwiaXNfc3VwcG9ydGVkJDEiLCJvYnNlcnZlJDAiLCJlbnRyeV90eXBlcyIsImVtcHR5X211dGF0aW9uX29ic2VydmVyX2luaXQiLCJpc19zdXBwb3J0ZWQkMiIsIm9ic2VydmUkMSIsImNoaWxkX2xpc3QiLCJhdHRyaWJ1dGVzIiwiY2hhcmFjdGVyX2RhdGEiLCJzdWJ0cmVlIiwiYXR0cmlidXRlX29sZF92YWx1ZSIsImNoYXJhY3Rlcl9kYXRhX29sZF92YWx1ZSIsImF0dHJpYnV0ZV9maWx0ZXIiLCJjcmVhdGUkMCIsImFkZCQwIiwiayIsInJlbW92ZSIsImZpbmQiLCJrZXlzIiwicmV2aXZlciIsInVuc2FmZV9pbnB1dCIsIm1sSW50NjRfY29uc3RyIiwib3V0cHV0X3Jldml2ZXIiLCJvdXRwdXQiLCJzdHJpbmdfb2ZfbmFtZSIsIm5hbWVfb2Zfc3RyaW5nIiwicmdiX29mX25hbWUiLCJyZ2IiLCJoc2wiLCJzdHJpbmdfb2ZfdCIsImIkMCIsImckMCIsInIkMCIsImIkMSIsImckMSIsInIkMSIsImIkMiIsImckMiIsInIkMiIsImEkMSIsImgkMCIsImhleF9vZl9yZ2IiLCJibHVlIiwiZ3JlZW4iLCJyZWQiLCJpbl9yYW5nZSIsImpzX3Rfb2ZfanNfc3RyaW5nIiwianMiLCJtbCIsImZhaWwiLCJyZV9yZ2IiLCJyZV9yZ2JfcGN0IiwicmVfaHNsIiwiaV9vZl9zX28iLCJmX29mX3MiLCJhbHBoYSIsInJlZCQwIiwiZ3JlZW4kMCIsImJsdWUkMCIsImFscGhhJDAiLCJyZWQkMSIsImdyZWVuJDEiLCJibHVlJDEiLCJhbHBoYSQxIiwic3RyaW5nX29mX3QkMCIsImYkMSIsImYkMiIsImYkMyIsImYkNCIsImYkNSIsImYkNiIsImYkNyIsImYkOCIsImYkOSIsImYkMTAiLCJmJDExIiwiZiQxMiIsImpzJDAiLCJtbCQwIiwicmUiLCJzdHJpbmdfb2ZfdCQxIiwianMkMSIsIm1sJDEiLCJsaXN0ZW4iLCJ0YXJnZXQiLCJjcmVhdGVFbGVtZW50JDAiLCJ1bnNhZmVDcmVhdGVFbGVtZW50JDAiLCJjcmVhdGVBJDAiLCJjcmVhdGVBbHRHbHlwaCIsImNyZWF0ZUFsdEdseXBoRGVmIiwiY3JlYXRlQWx0R2x5cGhJdGVtIiwiY3JlYXRlQW5pbWF0ZSIsImNyZWF0ZUFuaW1hdGVDb2xvciIsImNyZWF0ZUFuaW1hdGVNb3Rpb24iLCJjcmVhdGVBbmltYXRlVHJhbnNmb3JtIiwiY3JlYXRlQ2lyY2xlIiwiY3JlYXRlQ2xpcFBhdGgiLCJjcmVhdGVDdXJzb3IiLCJjcmVhdGVEZWZzIiwiY3JlYXRlRGVzYyIsImNyZWF0ZUVsbGlwc2UiLCJjcmVhdGVGaWx0ZXIiLCJjcmVhdGVGb250IiwiY3JlYXRlRm9udEZhY2UiLCJjcmVhdGVGb250RmFjZUZvcm1hdCIsImNyZWF0ZUZvbnRGYWNlTmFtZSIsImNyZWF0ZUZvbnRGYWNlU3JjIiwiY3JlYXRlRm9udEZhY2VVcmkiLCJjcmVhdGVGb3JlaWduT2JqZWN0IiwiY3JlYXRlRyIsImNyZWF0ZUdseXBoIiwiY3JlYXRlR2x5cGhSZWYiLCJjcmVhdGVoa2VybiIsImNyZWF0ZUltYWdlIiwiY3JlYXRlTGluZUVsZW1lbnQiLCJjcmVhdGVMaW5lYXJFbGVtZW50IiwiY3JlYXRlTWFzayIsImNyZWF0ZU1ldGFEYXRhIiwiY3JlYXRlTWlzc2luZ0dseXBoIiwiY3JlYXRlTVBhdGgiLCJjcmVhdGVQYXRoIiwiY3JlYXRlUGF0dGVybiIsImNyZWF0ZVBvbHlnb24iLCJjcmVhdGVQb2x5bGluZSIsImNyZWF0ZVJhZGlhbGdyYWRpZW50IiwiY3JlYXRlUmVjdCIsImNyZWF0ZVNjcmlwdCQwIiwiY3JlYXRlU2V0IiwiY3JlYXRlU3RvcCIsImNyZWF0ZVN0eWxlJDAiLCJjcmVhdGVTdmciLCJjcmVhdGVTd2l0Y2giLCJjcmVhdGVTeW1ib2wiLCJjcmVhdGVUZXh0RWxlbWVudCIsImNyZWF0ZVRleHRwYXRoIiwiY3JlYXRlVGl0bGUkMCIsImNyZWF0ZVRyZWYiLCJjcmVhdGVUc3BhbiIsImNyZWF0ZVVzZSIsImNyZWF0ZVZpZXciLCJjcmVhdGV2a2VybiIsInN2Z19lbGVtZW50IiwiZG9jdW1lbnQkMCIsImdldEVsZW1lbnRCeUlkJDAiLCJlbGVtZW50JDIiLCJ1bnNhZmVDb2VyY2UkMCIsImFsdEdseXBoIiwiYWx0R2x5cGhEZWYiLCJhbHRHbHlwaEl0ZW0iLCJhbmltYXRlIiwiYW5pbWF0ZUNvbG9yIiwiYW5pbWF0ZU1vdGlvbiIsImFuaW1hdGVUcmFuc2Zvcm0iLCJjaXJjbGUiLCJjbGlwUGF0aCIsImN1cnNvciIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImZpbHRlciIsImZvbnQiLCJmb250RmFjZSIsImZvbnRGYWNlRm9ybWF0IiwiZm9udEZhY2VOYW1lIiwiZm9udEZhY2VTcmMiLCJmb250RmFjZVVyaSIsImZvcmVpZ25PYmplY3QiLCJnbHlwaCIsImdseXBoUmVmIiwiaGtlcm4iLCJpbWFnZSIsImxpbmVFbGVtZW50IiwibGluZWFyRWxlbWVudCIsIm1ldGFEYXRhIiwibWlzc2luZ0dseXBoIiwibVBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsZ3JhZGllbnQiLCJyZWN0Iiwic2NyaXB0JDAiLCJzZXQkMSIsInN0b3AiLCJzdHlsZSQwIiwic3ZnIiwic3dpdGNoJDAiLCJzeW1ib2wkMTIiLCJ0ZXh0RWxlbWVudCIsInRleHRwYXRoIiwidGl0bGUkMCIsInRyZWYiLCJ0c3BhbiIsInVzZSIsInZpZXciLCJ2a2VybiIsIndpdGhDcmVkZW50aWFscyIsImV2ZW50U291cmNlIiwiZXZlbnRTb3VyY2Vfb3B0aW9ucyIsImNvbnNvbGUiLCJlbXB0eV9wb3NpdGlvbl9vcHRpb25zIiwiZ2VvbG9jYXRpb24iLCJpc19zdXBwb3J0ZWQkMyIsImVtcHR5X2ludGVyc2VjdGlvbl9vYnNlcnZlcl9vcCIsImludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZSIsImlzX3N1cHBvcnRlZCQ0Iiwib2JqZWN0X29wdGlvbnMiLCJvcHRpb25zJDEiLCJvcHRpb25zJDIiLCJpbnRsIiwiY29sbGF0b3JfY29uc3RyIiwiZGF0ZVRpbWVGb3JtYXRfY29uc3RyIiwibnVtYmVyRm9ybWF0X2NvbnN0ciIsInBsdXJhbFJ1bGVzX2NvbnN0ciIsImlzX3N1cHBvcnRlZCQ1IiwiZHVyYXRpb25fb2ZfanNvbyIsImQiLCJkdXJhdGlvbl90b19qc29vIiwiZGF5cyIsIm1vbnRocyIsInllYXJzIiwiZGF0ZV9vZl9qc29vIiwiZCQwIiwiZCQxIiwiZGF5IiwibW9udGgiLCJ5ZWFyIiwiZGF0ZV90b19qc29vIiwiZXZ0IiwicG9zIiwidiIsImluZm8iLCJldmVudCIsImV2ZW50X21hbmFnZXIiLCJleGVjdXRlX29yX3Rocm93X2Vycm9yIiwiZiIsInRocm93X2Vycm9yIiwiZGVzY3IiLCJwb3MkMCIsInBvcyQxIiwiZW1iZWRfcHJpc2VfZW5fY2hhcmdlIiwieCIsIngkMCIsIngkMSIsIngkMiIsIngkMyIsIngkNCIsImVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3NjbyIsImVtYmVkX3ByaXNlX2VuX2NvbXB0ZSIsImVtYmVkX3ZlcnNlbWVudF9hbGxvY2F0aW9ucyIsImVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaSIsIngkNSIsIngkNiIsIngkNyIsImVtYmVkX2NvbGxlY3Rpdml0ZSIsIngkOCIsImVtYmVkX2FsbG9jYXRpb25fZmFtaWxpYWxlc19hdiIsImVtYmVkX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMiLCJlbWJlZF92ZXJpZmljYXRpb25fYWdlX2luZmVyaWUiLCJlbWJlZF92ZXJpZmljYXRpb25fYWdlX3N1cGVyaWUiLCJlbWJlZF9zbWljIiwiZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvIiwiZW1iZWRfaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhIiwiZW1iZWRfZW5mYW50X2VudHJlZSIsImVtYmVkX2VuZmFudCIsImVtYmVkX2VuZmFudF9sZV9wbHVzX2FnZSIsImVtYmVkX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMiLCJlbWJlZF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2kiLCJlbWJlZF9hbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXYkMCIsImVtYmVkX2VuZmFudF9sZV9wbHVzX2FnZV9pbiIsImVtYmVkX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaSIsImVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZSQwIiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmllJDAiLCJlbWJlZF9zbWljX2luIiwiZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvJDAiLCJlbWJlZF9pbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmEkMCIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCIsImFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfMyIsImVuZmFudF9sZV9wbHVzX2FnZSIsImVuZmFudF9sZV9wbHVzX2FnZV9pbiIsImVuZmFudHMiLCJwb3RlbnRpZWxfcGx1c19hZ2VfMSIsInBvdGVudGllbF9wbHVzX2FnZV8yIiwibGVfcGx1c19hZ2UiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8iLCJkYXRlX25haXNzYW5jZSIsImRhdGVfY291cmFudGUiLCJhbm5lZXMiLCJyIiwidmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaSIsInNtaWMiLCJzbWljX2luIiwicmVzaWRlbmNlIiwiYnJ1dF9ob3JhaXJlIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtIiwibW9udGFudCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXMiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIiwiYWdlX2w1MTJfM18yIiwic21pY19kb3RfZGF0ZV9jb3VyYW50ZSIsInNtaWNfZG90X3Jlc2lkZW5jZSIsInJlc3VsdCIsInNtaWNfZG90X2JydXRfaG9yYWlyZSIsInJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xIiwicGxhZm9uZF9sNTEyXzNfMiIsImVuZmFudCIsImNvbmRpdGlvbnNfaG9yc19hZ2UiLCJkcm9pdF9vdXZlcnQiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiIsInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybSIsInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybSQwIiwicmVzc291cmNlc19tZW5hZ2UiLCJlbmZhbnRzX2FfY2hhcmdlIiwiYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlIiwicHJpc2VfZW5fY29tcHRlIiwibm9tYnJlX2VuZmFudHNfYWxpbmVhXzJfbDUyMV8zIiwidmVyc2lvbl9hdnJpbF8yMDA4X2RvdF9hZ2VfbWluIiwiYm1hZl9kb3RfZGF0ZV9jb3VyYW50ZSIsInJlc3VsdCQwIiwiYm1hZl9kb3RfbW9udGFudCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3ByZSIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlcyIsInJlc3VsdCQxIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfY29uIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfYWdlIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnIiwiZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9lbmZhbnRzIiwicmVzdWx0JDIiLCJlbmZhbnRfbGVfcGx1c19hZ2VfZG90X2xlX3BsdXMiLCJlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF8iLCJlc3RfZW5mYW50X2xlX3BsdXNfYWdlIiwicGxhZm9uZF9pX2lfZDUyMV8zIiwicGxhZm9uZF9pX2Q1MjFfMyIsImRyb2l0X291dmVydF9jb21wbGVtZW50IiwiZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlIiwibW9udGFudF9pbml0aWFsX2Jhc2VfcXVhdHJpZW1lIiwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lIiwibm9tYnJlX3RvdGFsX2VuZmFudHMiLCJzdW0xIiwic3VtMiIsIm5vbWJyZV9tb3llbl9lbmZhbnRzIiwibW9udGFudF9pbml0aWFsX2Jhc2VfcHJlbWllcl9lIiwiZHJvaXRfb3V2ZXJ0X2Jhc2UiLCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbiIsImFsbG9jYXRpb24iLCJjb21wbGVtZW50X2RlZ3Jlc3NpZiIsIm1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfcGFyXyIsIm1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzaWVtZSQwIiwibW9udGFudF9pbml0aWFsX2Jhc2VfZGV1eGllbWVfIiwicmFwcG9ydF9lbmZhbnRzX3RvdGFsX21veWVuIiwibW9udGFudF9pbml0aWFsX21ldHJvcG9sZV9tYWpvIiwibW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZSIsIm1vbnRhbnRfaW5pdGlhbF9iYXNlIiwibW9udGFudF9pbml0aWFsX21ham9yYXRpb24iLCJtb250YW50X3ZlcnNlX2NvbXBsZW1lbnRfcG91cl8iLCJtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuZWVfYmEiLCJtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuZWVfbWEiLCJtb250YW50X3ZlcnNlX2Jhc2UiLCJtb250YW50X3ZlcnNlX21ham9yYXRpb24iLCJtb250YW50X2Jhc2VfY29tcGxlbWVudF9wb3VyX2IiLCJtb250YW50X3ZlcnNlX2NvbXBsZW1lbnRfcG91cl8kMCIsIm1vbnRhbnRfdmVyc2UiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwiLCJpX2RhdGVfY291cmFudGUiLCJpX2VuZmFudHMiLCJpX3Jlc3NvdXJjZXNfbWVuYWdlIiwiaV9yZXNpZGVuY2UiLCJpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGUiLCJpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGUkMCIsImlfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XyIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3BlciIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3BlciQwIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzJDAiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXQiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9lbmYiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9hdmEiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9tb24iLCJpX21vbnRhbnRfdmVyc2UiLCJwcmlzZV9lbl9jaGFyZ2VfdG9fanNvbyIsImFyZyIsImFyZyQwIiwiYXJnJDEiLCJhcmckMiIsImFyZyQzIiwicHJpc2VfZW5fY2hhcmdlX29mX2pzb28iLCJwcmlzZV9lbl9jaGFyZ2UiLCJjb25zIiwic2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfIiwic2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfJDAiLCJzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSIsInByaXNlX2VuX2NvbXB0ZV90b19qc29vIiwicHJpc2VfZW5fY29tcHRlX29mX2pzb28iLCJ2ZXJzZW1lbnRfYWxsb2NhdGlvbnNfdG9fanNvbyIsInZlcnNlbWVudF9hbGxvY2F0aW9uc19vZl9qc29vIiwidmVyc2VtZW50X2FsbG9jYXRpb25zIiwiZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwiYXJnJDQiLCJhcmckNSIsImFyZyQ2IiwiZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzJDAiLCJjb2xsZWN0aXZpdGVfdG9fanNvbyIsImFyZyQ3IiwiY29sbGVjdGl2aXRlX29mX2pzb28iLCJjb2xsZWN0aXZpdGUiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAkMCIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQxIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc190b19qc29vIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vIiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDAiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kMSIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfdCIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfbyIsInNtaWNfdG9fanNvbyIsInNtaWNfb2ZfanNvbyIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQwIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDEiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkMCIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCQxIiwiZW5mYW50X2VudHJlZV90b19qc29vIiwiZW5mYW50X2VudHJlZSIsImVuZmFudF9lbnRyZWVfb2ZfanNvbyIsImVuZmFudF90b19qc29vIiwiZW5mYW50X29mX2pzb28iLCJlbmZhbnRfbGVfcGx1c19hZ2VfdG9fanNvbyIsImVuZmFudF9sZV9wbHVzX2FnZV9vZl9qc29vIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc190b19qc29vIiwiZnVuY3Rpb25faW5wdXQwIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDIiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAkMyIsImVuZmFudF9sZV9wbHVzX2FnZV9pbl90b19qc29vIiwiZW5mYW50X2xlX3BsdXNfYWdlX2luX29mX2pzb28iLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX3RvX2oiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2oiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kMiIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyQzIiwidmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pJDAiLCJzbWljX2luX3RvX2pzb28iLCJzbWljX2luX29mX2pzb28iLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMiIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQzIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDIiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkMyIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQ0IiwiZW5mYW50X2xlX3BsdXNfYWdlJDAiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kNCIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EkMCIsInNtaWMkMCIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ0IiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcyQwIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyQwIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDQiLCJlbWJlZF90eXBlX3ByZXQiLCJlbWJlZF90aXR1bGFpcmVfcHJldCIsImVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9kOCIsImVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9yOCIsImVtYmVkX2FtZWxpb3JlX3Bhcl9vY2N1cGFudCIsImVtYmVkX2xpbWl0ZV90cmFuY2hlIiwiZW1iZWRfbGltaXRlX3RyYW5jaGVfZGVjaW1hbCIsImVtYmVkX3ByZXN0YXRpb25fcmVjdWUiLCJlbWJlZF9wYXJlbnRfb3VfYXV0cmUiLCJlbWJlZF9zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUiLCJlbWJlZF9wYXJlbnRlIiwiZW1iZWRfZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pIiwiZW1iZWRfem9uZV9kX2hhYml0YXRpb24iLCJlbWJlZF9wYWllbWVudF9sb2dlbWVudF9kaXN0aW4iLCJlbWJlZF92ZXJzZW1lbnRfYSIsImVtYmVkX2RlcGVuc2VfbG9nZW1lbnQiLCJlbWJlZF9tb2RlX29jY3VwYXRpb25faW1wYXllIiwiZW1iZWRfdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0IiwiZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sIiwiZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZSIsImVtYmVkX3ByaXNlX2VuX2NoYXJnZSQwIiwiZW1iZWRfdHlwZV9sb2dlbWVudF9mb3llciIsImVtYmVkX2NhdGVnb3JpZV9lcXVpdmFsZW5jZV9sbyIsImVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsYyIsImVtYmVkX2NvbGxlY3Rpdml0ZSQwIiwiZW1iZWRfcHJpc2VfZW5fY2hhcmdlX2VuZmFudCIsImVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3NjbyQwIiwiZW1iZWRfZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pJDAiLCJlbWJlZF9jb252ZW50aW9uX2JhaWxsZXVyX3NvY2kiLCJlbWJlZF9jb252ZW50aW9uX2Ffbl9oX2EiLCJlbWJlZF9wZXJzb25uZV9zb3VzX2xvY2F0aW9uIiwiZW1iZWRfcGF0cmltb2luZSIsImVtYmVkX2NvbmRpdGlvbnNfZXRyYW5nZXJzIiwiZW1iZWRfcGVyc29ubmVfdml2YW50X2hhYml0dWVsIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uIiwiZW1iZWRfZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtIiwiZW1iZWRfcmVzc291cmNlc19haWRlc19wZXJzb25uIiwiZW1iZWRfY29udHJpYnV0aW9uc19zb2NpYWxlc19hIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlIiwiZW1iZWRfY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyIiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDAiLCJlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2UiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkMSIsImVtYmVkX3RyYWl0ZW1lbnRfZm9ybXVsZV9haWRlXyIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQyIiwiZW1iZWRfaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVuIiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lIiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDAiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkMSIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQyIiwiZW1iZWRfb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0IiwiZW1iZWRfaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQiLCJlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2UiLCJlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2UkMCIsImVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpbyQxIiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmllJDEiLCJlbWJlZF92ZXJpZmljYXRpb25fYWdlX3N1cGVyaWUkMSIsImVtYmVkX3NtaWMkMCIsImVtYmVkX3ByZXQiLCJlbWJlZF9uZXVmX291X2FuY2llbiIsImVtYmVkX3RyYW5jaGVfcmV2ZW51IiwiZW1iZWRfdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCIsImVtYmVkX2F1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIiwiZW1iZWRfZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sIiwiZW1iZWRfbG9nZW1lbnRfZm95ZXIiLCJlbWJlZF9lbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWwiLCJlbWJlZF9lbmZhbnRfYV9jaGFyZ2UiLCJlbWJlZF90eXBlX2JhaWxsZXVyIiwiZW1iZWRfbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfIiwiZW1iZWRfbmF0aW9uYWxpdGUiLCJlbWJlZF9jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDIiLCJlbWJlZF9wcm9wcmlldGFpcmUiLCJlbWJlZF9pbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGUiLCJlbWJlZF9lbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc18iLCJlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSIsImVtYmVkX2RlbWFuZGV1ciIsImVtYmVkX2xvY2F0aW9uIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29uIiwiZW1iZWRfY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCIsImVtYmVkX21vZGVfb2NjdXBhdGlvbiIsImVtYmVkX2xvZ2VtZW50IiwiZW1iZWRfbWVuYWdlIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29uJDAiLCJlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm4kMCIsImVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbCQwIiwiZW1iZWRfZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtJDAiLCJlbWJlZF9yZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm4kMCIsImVtYmVkX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYSQwIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDMiLCJlbWJlZF9jYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXIkMCIsImVtYmVkX2NhbGN1bF9ub21icmVfcGFydF9sb2dlbSQwIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDQiLCJlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2UkMCIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQ1IiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDYiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkMyIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQ0IiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDUiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkNiIsImVtYmVkX291dmVydHVyZV9kcm9pdHNfcmV0cmFpdCQwIiwiZW1iZWRfaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfIiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlJDEiLCJlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2UkMiIsImVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpbyQyIiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmllJDIiLCJlbWJlZF92ZXJpZmljYXRpb25fYWdlX3N1cGVyaWUkMiIsImVtYmVkX3NtaWNfaW4kMCIsImVtYmVkX2VsaWdpYmlsaXRlX3ByZXN0YXRpb25zXyQwIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wIiwiZXhvbmVyZV9jc2ciLCJ0YXV4X2NyZHMiLCJhaWRlX2ZpbmFsZSIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSIsInJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllcyIsImNvbmRpdGlvbl8yX2R1XzgzMl8yNSIsIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjYiLCJ0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjYiLCJ0cmFuY2hlIiwidHJhbmNoZV9oYXV0IiwidHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpIiwicmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzJDAiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8iLCJub21icmVfcGVyc29ubmVzX2FfY2hhcmdlIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fIiwibl9ub21icmVfcGFydHNfZDgzMl8xMSIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIiwiZGF0ZV9uYWlzc2FuY2VfYXNzdXJlIiwiYWdlX291dmVydHVyZV9kcm9pdCIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50IiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4iLCJtb2RlX29jY3VwYXRpb24iLCJhaWRlX3ZlcnNlZSIsIm1vbnRhbnRfYXBsIiwibW9udGFudF9jaGFyZ2VzIiwiZGVwZW5zZV9sb2dlbWVudCIsIm1vbnRhbnRfZGV0dGUiLCJtb2RlX29jY3VwYXRpb25faW1wYXllIiwiZGVwZW5zZV9sb2dlbWVudF9icnV0ZSIsInRvdGFsX2VjaGVhbmNlcyIsIm1lbnN1YWxpdGUiLCJsb3llciIsInRvdGFsIiwibW9udGFudF9sb3llciIsImRlcGVuc2VfbG9nZW1lbnRfbmV0dGUiLCJlY2hlYW5jZV9wcmV0X25ldHRlIiwibWVuc3VhbGl0ZV9uZXR0ZSIsImVjaGVhbmNlX3ByZXRfYnJ1dGUiLCJtZW5zdWFsaXRlX2JydXRlIiwibG95ZXJfbmV0IiwibG95ZXJfYnJ1dCIsInNldWlsX2ltcGF5ZV9kZXBlbnNlX2RlX2xvZ2VtZSIsIm1vbnRhbnRfaW1wYXllIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDUiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kNSIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EkMSIsInNtaWMkMSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSIsImxveWVyX3ByaW5jaXBhbF9iYXNlIiwiYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuIiwiem9uZSIsImxvZ2VtZW50X2VzdF9jaGFtYnJlIiwiYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlIiwidHlwZV9haWRlIiwiY29sb2NhdGlvbiIsInJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlIiwibG9nZW1lbnRfbWV1YmxlX2Q4NDJfMiIsImZyYWN0aW9uX2w4MzJfMyIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgyM18xNiIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdCIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbiIsInRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlIiwiYWJhdHRlbWVudF9mb3JmYWl0YWlyZV9kODIzXzE3IiwibG95ZXJfcmVmZXJlbmNlIiwibW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18xNiIsInBsYWZvbmRfbG95ZXJfZDgyM18xNl8yIiwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4IiwibG95ZXJfcHJpbmNpcGFsX2F2ZWNfcmVkdWN0aW9uIiwicGxhZm9uZF9zdXBwcmVzc2lvbl9kODIzXzE2IiwicGxhZm9uZF9kZWdyZXNzaXZpdGVfZDgyM18xNiIsImxveWVyX2VsaWdpYmxlIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnVlIiwicGFydGljaXBhdGlvbl9taW5pbWFsZSIsInJhcHBvcnRfbG95ZXJzIiwiYWlkZV9maW5hbGUkMCIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdCIsInRhdXhfbG95ZXJfZWxpZ2libGVfZm9ybXVsZSIsImNyZHMiLCJhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGkiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWIiLCJ0YXV4X2xveWVyX2VsaWdpYmxlX3RhdXhfYXJyb24iLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZHVjdGkiLCJ0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50IiwicGFydGljaXBhdGlvbl9yZXNzb3VyY2VzIiwicGFydGljaXBhdGlvbl9yZXNzb3VyY2VzJDAiLCJwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlIiwiYWlkZV9maW5hbGVfZm9ybXVsZSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQwIiwidHlwZV9sb2dlbWVudF9mb3llciIsImRhdGVfY29udmVudGlvbm5lbWVudCIsInJlZGV2YW5jZSIsImNvZWZmaWNpZW50X3JfZDgzMl8yNSIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNCIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMjQiLCJjb25kaXRpb25fMl9kdV84MzJfMjUkMCIsInBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZyIsImNhbGN1bF9ub21icmVfcGFydHNfZG90X2NvbmRpdCIsImNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZSIsImNhbGN1bF9ub21icmVfcGFydHNfZG90X3NpdHVhdCIsImNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYiIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNyIsImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MyIsImVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlIiwibl9ub21icmVfcGFydHNfZDgzMl8yNSQwIiwiYWxsb2NhdGlvbl9tZW5zdWVsbGUiLCJkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjciLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kMCIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSQxIiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDIiLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kMyIsImRlbm9taW5hdGV1ciIsImRlbm9taW5hdGV1ciQwIiwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4IiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZSIsImFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbSIsImVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIiwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4JDAiLCJhaWRlX2ZpbmFsZSQxIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtIiwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4JDEiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMSIsIm1lbnN1YWxpdGVfcHJpbmNpcGFsZSIsInR5cGVfdHJhdmF1eF9sb2dlbWVudCIsImRhdGVfc2lnbmF0dXJlX3ByZXQiLCJsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW4iLCJkYXRlX2VudHJlZV9sb2dlbWVudCIsImNvcHJvcHJpZXRlIiwic2l0dWF0aW9uX3I4MjJfMTFfMTNfMTciLCJ0eXBlX3ByZXQiLCJhbmNpZW5uZXRlX2xvZ2VtZW50IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzEwIiwibW9udGFudF9taW5pbWFsX2FpZGVfZDgzMl8xMCIsImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MyQwIiwibW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xIiwidGF1eF90cmFuY2hlX2luZmVyaWV1cmVfZDgzMl8xIiwidGF1eF90cmFuY2hlX3N1cGVyaWV1cmVfZDgzMl8xIiwidGF1eF9mcmFuY3NfdmVyc19ldXJvcyIsImFtZWxpb3JlX3Bhcl9vY2N1cGFudCIsImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MyQxIiwicmVzc291cmNlc19tZW5hZ2VfYXZlY19kODMyXzE4IiwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODMyIiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwIiwicGxhZm9uZF9zaWduYXR1cmUiLCJwbGFmb25kX2VudHJlZSIsInBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYiIsInBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYyIsIm1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMSQwIiwibWVuc3VhbGl0ZV9taW5pbWFsZSIsIm1lbnN1YWxpdGVfZWxpZ2libGUiLCJyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2wiLCJyZXNzb3VyY2VzX2RlbWFuZGV1ciIsInJlc3NvdXJjZXNfY29uam9pbnQiLCJwZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW4iLCJkZW1hbmRldXJfZXhlcmNlX2FjdGl2aXRlX3JlbXUiLCJjb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW4iLCJwZXJzb25uZXNfYV9jaGFyZ2UiLCJzaXR1YXRpb25fZmFtaWxpYWxlIiwiY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtIiwiZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXMiLCJkYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXQiLCJwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm8iLCJtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzgiLCJtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzciLCJyZXNzb3VyY2VzX2ZvcmZhaXRhaXJlc19yODIyXzIiLCJwZXJzb25uZSIsInJlc3NvdXJjZXNfcGVyc29ubmVzX3ZpdmFudF9oYSIsImFiYXR0ZW1lbnQiLCJyZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGUiLCJhY2MiLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8iLCJtZW5hZ2UiLCJkZW1hbmRldXIiLCJjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3AiLCJjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZSIsInByZXQiLCJzZXVpbF9sODIyXzNfcGFydHNfcHJvcHJpZXRlIiwic2V1aWxfbDgyMl8zX3BhcnRzX3VzdWZydWl0Iiwic2V1aWxfbDgyMl81X3BhdHJpbW9pbmUiLCJ1c3VmcnVpdF9vdV9wcm9wcmlldGVfZmFtaWxsZSIsImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOSIsImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOCIsIm5vbWJyZV9wZXJzb25uZXNfbG9nZW1lbnQiLCJjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9taW4iLCJjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZSQwIiwiY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wJDAiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2RvdF8iLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2RvdF8kMCIsInBhdHJpbW9pbmVfdG90YWxfZGVtYW5kZXVyIiwiY29uZGl0aW9ucyIsImNvbmRpdGlvbl9uYXRpb25hbGl0ZSIsInBsYWZvbmRfaW5kaXZpZHVlbF9sODE1Xzlfc2VjdSIsImNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aSIsInVzdWZydWl0X291X3Byb3ByaWV0ZV9mYW1pbGxlJDAiLCJwYXJ0cyIsInBhcnRzJDAiLCJwYXJ0cyQxIiwicGFydHMkMiIsImNvbmRpdGlvbl9sb2dlbWVudF9tb2RlX29jY3VwYSIsImNvbmRpdGlvbl9vdXZlcnR1cmVfbDgyMl8xMF9wZSIsImFnZV9sMTYxXzE3XzJfc2VjdSIsInByZXN0YXRpb24iLCJlbGlnaWJpbGl0ZV9sb2dlbWVudCIsImFnZV9sMzUxXzhfMV9zZWN1IiwiZWxpZ2liaWxpdGUiLCJwZXJzb25uZV9hX2NoYXJnZSIsInBhcmVudCIsImNvbmRpdGlvbl8yX3I4MjNfNCIsInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV9hX2NoYSIsInBlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fYyIsImNvZWZmIiwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlIiwibm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jIiwibG95ZXJfcHJpbmNpcGFsIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xveWVyX3AiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3Jlc3NvdXIiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2JlbmVmaWMiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2RhdGVfY28iLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X25vbWJyZV8iLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3NpdHVhdGkiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3pvbmUiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xvZ2VtZW4iLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2FnZWVzX28iLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3R5cGVfYWkiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2NvbG9jYXQiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3JlZHVjdGkiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xvZ2VtZW4kMCIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYWlkZV9maSIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHJhaXRlbSIsImluZm9zIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSIsImNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kOCIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfMTUiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTUiLCJtb250YW50X21pbmltYWxfZGVwZW5zZV9uZXR0ZV8iLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8iLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kMCIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQxIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDIiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kMyIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ0IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDUiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kNiIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ3IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDgiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kOSIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlcyIsImVxdWl2YWxlbmNlX2xveWVyIiwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlIiwibG95ZXJfbWluaW1hbCIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZSIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjYyIsInJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYSIsImNoYXJnZXNfbWVuc3VlbGxlc19wcmV0IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzYiLCJtb250YW50X21pbmltYWxfYWlkZV9kODQyXzYiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTEiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTIiLCJjb2VmZmljaWVudF9kODQyXzExIiwiY29lZmZpY2llbnRfZDg0Ml8xMiIsImRhdGVfY2FsY3VsIiwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyIiwic2V1aWxfbWluaW1hbF9yZXNzb3VyY2VzX21lbmFnIiwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyJDAiLCJyZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfc2UiLCJwbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82Iiwic2V1aWxfbWluaW1hbF9kZXBlbnNlX25ldHRlX21pIiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZSQwIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDIiLCJyZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGkiLCJsb2NhdGlvbiIsImxvZ2VtZW50Zm95ZXIiLCJwcm9wcmlldGFpcmUiLCJsb2NhdGlvbiQwIiwicHJvcHJpZXRhaXJlJDAiLCJjYXRlZ29yaWVfY2FsY3VsX2FwbCIsInJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaSIsImJhaWxsZXVyIiwicGFyYW0wIiwidHJhaXRlbWVudF9mb3JtdWxlIiwidHJhaXRlbWVudF9mb3JtdWxlJDAiLCJsb2dlbWVudF9mb3llciIsInJlc3VsdCQzIiwicmVzdWx0JDQiLCJ0cmFpdGVtZW50X2Zvcm11bGUkMSIsInNvdXNfY2FsY3VsX3RyYWl0ZW1lbnQiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0iLCJpbmZvcm1hdGlvbnMiLCJkYXRlX2VtbWVuYWdlbWVudCIsImRlcGVuc2VzX2p1c3RpZmllZXNfcmVlbGxlbWVudCIsImRlbGFpX2FwcmVzX2VtbWVuYWdlbWVudF9sODIzXyIsImNvbmRpdGlvbl9yYW5nX2VuZmFudCIsImVsaWdpYmlsaXRlX2FwbF9kb3RfbWVuYWdlIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9kZW1hbmRldXIiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2RhdGVfY291cmEiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl8iLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl8kMCIsImVsaWdpYmlsaXRlX2FwbF9kb3RfZGF0ZV9jb3VyYSQwIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9lbGlnaWJpbGl0IiwiZGF0ZV9uYWlzc2FuY2Vfb3VfZ3Jvc3Nlc3NlIiwiY29uZGl0aW9uX3BlcmlvZGVfZGVtZW5hZ2VtZW50IiwicGxhZm9uZF9kODIzXzIyIiwibW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnQiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUiLCJjYXJhY3RlcmlzdGlxdWVzX3ByZXRfbDgzMV8xXzEiLCJjYXJhY3RlcmlzdGlxdWVzX3ByZXRfbDgzMV8xXzYiLCJwcm9wcmlldGUiLCJwcm9wcmlldGUkMCIsImNvbmRpdGlvbl9sb2dlbWVudF9wcmV0IiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfbWVuYWdlIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGVtYW5kIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9jIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0IiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0JDAiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9lbGlnaWIiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9ub21icmUiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb2VmZmkiLCJjb252ZW50aW9uIiwiY29udmVudGlvbiQwIiwiY29uZGl0aW9uX2xvZ2VtZW50X2JhaWxsZXVyIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuIiwiYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sIiwiZHVyZWVfbDg0MV8xXzMiLCJjb25kaXRpb25fYWNjZXNzaW9uX3Byb3ByaWV0ZSIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdCQxIiwiZWxpZ2liaWxpdGVfZGlzcG9zaXRpb25zX2NvbW11IiwiZGF0ZV9tYXJpYWdlIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDAiLCJlbGlnaWJpbGl0ZV9sODQxXzIiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIiwiYmFpbGxldXIkMCIsInJlc3VsdCQ1IiwicmVzdWx0JDYiLCJ0cmFpdGVtZW50X2Zvcm11bGUkMiIsInJlc3VsdCQ3IiwicmVzdWx0JDgiLCJ0cmFpdGVtZW50X2Zvcm11bGUkMyIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2kiLCJyZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY28iLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kMSIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQyIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDMiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kNCIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQ1IiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDAiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkMSIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQyIiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDMiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkNCIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQ1IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkMSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQyIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDMiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQ1IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDYiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkNyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDQiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkNSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ2IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDciLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkOCIsImFpZGVfZmluYWxlX2FwbCIsImFpZGVfZmluYWxlX2FsIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nIiwibWVuYWdlX3NhbnNfZW5mYW50c19nYXJkZV9hbHRlIiwiY2FsY3VsZXR0ZV9kb3RfbWVuYWdlIiwiY2FsY3VsZXR0ZV9kb3RfZGVtYW5kZXVyIiwiY2FsY3VsZXR0ZV9kb3RfZGF0ZV9jb3VyYW50ZSIsImNhbGN1bGV0dGVfZG90X3Jlc3NvdXJjZXNfbWVuYSIsImNhbGN1bGV0dGVfZG90X2VsaWdpYmlsaXRlIiwiY2FsY3VsZXR0ZV9kb3RfYWlkZV9maW5hbGVfZm9yIiwiY2FsY3VsZXR0ZV9kb3RfdHJhaXRlbWVudF9haWRlIiwiY2FsY3VsZXR0ZV9kb3RfY29lZmZpY2VudHNfZW5mIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlJDAiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUkMSIsImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZSQyIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlJDMiLCJ0eXBlX3ByZXRfdG9fanNvbyIsInR5cGVfcHJldF9vZl9qc29vIiwidGl0dWxhaXJlX3ByZXRfdG9fanNvbyIsInRpdHVsYWlyZV9wcmV0X29mX2pzb28iLCJ0aXR1bGFpcmVfcHJldCIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XyIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XyQwIiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X3QiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X28iLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IiwiYW1lbGlvcmVfcGFyX29jY3VwYW50X3RvX2pzb28iLCJhbWVsaW9yZV9wYXJfb2NjdXBhbnRfb2ZfanNvbyIsImxpbWl0ZV90cmFuY2hlX3RvX2pzb28iLCJsaW1pdGVfdHJhbmNoZV9vZl9qc29vIiwibGltaXRlX3RyYW5jaGUiLCJsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX3RvX2pzb28iLCJsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX29mX2pzb28iLCJsaW1pdGVfdHJhbmNoZV9kZWNpbWFsIiwicHJlc3RhdGlvbl9yZWN1ZV90b19qc29vIiwicHJlc3RhdGlvbl9yZWN1ZV9vZl9qc29vIiwicHJlc3RhdGlvbl9yZWN1ZSIsInBhcmVudF9vdV9hdXRyZV90b19qc29vIiwicGFyZW50X291X2F1dHJlX29mX2pzb28iLCJwYXJlbnRfb3VfYXV0cmUiLCJzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVfdG9fanMiLCJzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVfb2ZfanMiLCJzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUiLCJwYXJlbnRlX3RvX2pzb28iLCJwYXJlbnRlX29mX2pzb28iLCJwYXJlbnRlIiwiZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9nIiwiZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9nJDAiLCJ6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIiwiem9uZV9kX2hhYml0YXRpb25fb2ZfanNvbyIsInpvbmVfZF9oYWJpdGF0aW9uIiwicGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvJDAiLCJ2ZXJzZW1lbnRfYV90b19qc29vIiwidmVyc2VtZW50X2Ffb2ZfanNvbyIsInZlcnNlbWVudF9hIiwiZGVwZW5zZV9sb2dlbWVudF90b19qc29vIiwiZGVwZW5zZV9sb2dlbWVudF9vZl9qc29vIiwibW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV90b19qc29vIiwibW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9vZl9qc29vIiwidHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvIiwidHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvJDAiLCJ0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW4iLCJ0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW4kMCIsInNpdHVhdGlvbl9mYW1pbGlhbGVfdG9fanNvbyIsInNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvbyIsInByaXNlX2VuX2NoYXJnZV90b19qc29vJDAiLCJwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyQwIiwidHlwZV9sb2dlbWVudF9mb3llcl90b19qc29vIiwidHlwZV9sb2dlbWVudF9mb3llcl9vZl9qc29vIiwiY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsIiwiY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsJDAiLCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3AiLCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3AkMCIsImNvbGxlY3Rpdml0ZV90b19qc29vJDAiLCJjb2xsZWN0aXZpdGVfb2ZfanNvbyQwIiwicHJpc2VfZW5fY2hhcmdlX2VuZmFudF90b19qc29vIiwicHJpc2VfZW5fY2hhcmdlX2VuZmFudF9vZl9qc29vIiwicHJpc2VfZW5fY2hhcmdlX2VuZmFudCIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXyQxIiwic2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfJDIiLCJlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMkMSIsImVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyQyIiwiY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWxfdG9fIiwiY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwiLCJjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbF9vZl8iLCJjb252ZW50aW9uX2Ffbl9oX2FfdG9fanNvbyIsImNvbnZlbnRpb25fYV9uX2hfYSIsImNvbnZlbnRpb25fYV9uX2hfYV9vZl9qc29vIiwicGVyc29ubmVfc291c19sb2NhdGlvbl90b19qc29vIiwicGVyc29ubmVfc291c19sb2NhdGlvbiIsInBlcnNvbm5lX3NvdXNfbG9jYXRpb25fb2ZfanNvbyIsInBhdHJpbW9pbmVfdG9fanNvbyIsInBhdHJpbW9pbmUiLCJwYXRyaW1vaW5lX29mX2pzb28iLCJjb25kaXRpb25zX2V0cmFuZ2Vyc190b19qc29vIiwiY29uZGl0aW9uc19ldHJhbmdlcnMiLCJjb25kaXRpb25zX2V0cmFuZ2Vyc19vZl9qc29vIiwicGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50IiwicGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50JDAiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMCIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSQxIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDAiLCJyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2wkMSIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQwIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wJDEiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMCIsImNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mbyQxIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDAiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl8kMSIsInRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSIsInRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSQwIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDkiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTAiLCJpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDIiLCJpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDIkMCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQwIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jJDEiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjYyQxIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kkMSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X3RvXyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X29mXyIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfdG9faiIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfb2ZfaiIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X3RvX2pzbyIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X29mX2pzbyIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfdCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfbyIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyQwIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDEiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kNiIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ3IiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDYiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kNyIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfdCQwIiwidmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9vJDAiLCJzbWljX3RvX2pzb28kMCIsInNtaWNfb2ZfanNvbyQwIiwicHJldF90b19qc29vIiwicHJldF9vZl9qc29vIiwibmV1Zl9vdV9hbmNpZW5fdG9fanNvbyIsIm5ldWZfb3VfYW5jaWVuX29mX2pzb28iLCJuZXVmX291X2FuY2llbiIsInRyYW5jaGVfcmV2ZW51X3RvX2pzb28iLCJ0cmFuY2hlX3JldmVudSIsInRyYW5jaGVfcmV2ZW51X29mX2pzb28iLCJ0cmFuY2hlX3JldmVudV9kZWNpbWFsX3RvX2pzb28iLCJ0cmFuY2hlX3JldmVudV9kZWNpbWFsIiwidHJhbmNoZV9yZXZlbnVfZGVjaW1hbF9vZl9qc29vIiwiYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2VfdG9fanNvIiwiYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UiLCJhdXRyZV9wZXJzb25uZV9hX2NoYXJnZV9vZl9qc28iLCJkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGUiLCJkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGUkMCIsImxvZ2VtZW50X2ZveWVyX3RvX2pzb28iLCJsb2dlbWVudF9mb3llcl9vZl9qc29vIiwiZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfIiwiZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMiLCJlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc18kMCIsImVuZmFudF9hX2NoYXJnZV90b19qc29vIiwiZW5mYW50X2FfY2hhcmdlIiwiZW5mYW50X2FfY2hhcmdlX29mX2pzb28iLCJ0eXBlX2JhaWxsZXVyX3RvX2pzb28iLCJ0eXBlX2JhaWxsZXVyX29mX2pzb28iLCJ0eXBlX2JhaWxsZXVyIiwibG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnNfIiwibG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnNfJDAiLCJsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyIsIm5hdGlvbmFsaXRlX3RvX2pzb28iLCJuYXRpb25hbGl0ZV9vZl9qc29vIiwibmF0aW9uYWxpdGUiLCJjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF90b18iLCJjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9vZl8iLCJwcm9wcmlldGFpcmVfdG9fanNvbyIsInByb3ByaWV0YWlyZV9vZl9qc29vIiwiaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlIiwiaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlJDAiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMCIsImVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaSQxIiwicGVyc29ubmVfYV9jaGFyZ2VfdG9fanNvbyIsInBlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28iLCJkZW1hbmRldXJfdG9fanNvbyIsImRlbWFuZGV1cl9vZl9qc29vIiwibG9jYXRpb25fdG9fanNvbyIsImxvY2F0aW9uX29mX2pzb28iLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMCIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQxIiwiY2F0ZWdvcmllX2NhbGN1bF9hX3BfbF90b19qc29vIiwiY2F0ZWdvcmllX2NhbGN1bF9hX3BfbF9vZl9qc29vIiwiY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCIsIm1vZGVfb2NjdXBhdGlvbl90b19qc29vIiwibW9kZV9vY2N1cGF0aW9uX29mX2pzb28iLCJsb2dlbWVudF90b19qc29vIiwibG9nZW1lbnQiLCJsb2dlbWVudF9vZl9qc29vIiwibWVuYWdlX3RvX2pzb28iLCJtZW5hZ2Vfb2ZfanNvbyIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQyIiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfJDMiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMiIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSQzIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDIiLCJyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2wkMyIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQyIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wJDMiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTEiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTIiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMiIsImNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mbyQzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDE0IiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDIiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl8kMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxNSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxNiIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxNyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxOCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQyIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jJDMiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjYyQzIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDIiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kkMyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXyQwIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbl90Iiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbl9vIiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5fdG9fIiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5fb2ZfIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pJDAiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckMiIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyQzIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDgiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kOSIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyQ4IiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDkiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2kkMSIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaSQyIiwic21pY19pbl90b19qc29vJDAiLCJzbWljX2luX29mX2pzb28kMCIsImVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaSQyIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpJDMiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AkNCIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSQ0IiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvJDQiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl8kNCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUkMCIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50JDAiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMTAiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kMTAiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hJDIiLCJzbWljJDIiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTkiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMjAiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMjEiLCJyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2wkNCIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQ0IiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpJDQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MkNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjJDQiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMjIiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50JDAiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50JDAiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckNCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCJdLCJzb3VyY2VzIjpbIiIsIi9idWlsdGluLytpbnQ2NC5qcyIsIi9idWlsdGluLyttbEJ5dGVzLmpzIiwiL2J1aWx0aW4vK2ZhaWwuanMiLCIvYnVpbHRpbi8rc3RkbGliLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytpZWVlXzc1NC5qcyIsIi9idWlsdGluLytlZmZlY3QuanMiLCIvYnVpbHRpbi8rZnNfbm9kZS5qcyIsIi9idWlsdGluLytmcy5qcyIsIi9idWlsdGluLyt1bml4LmpzIiwiL2J1aWx0aW4vK3N5cy5qcyIsIi9idWlsdGluLytmc19mYWtlLmpzIiwiL2J1aWx0aW4vK25hdC5qcyIsIi9idWlsdGluLytncmFwaGljcy5qcyIsIi9idWlsdGluLyttYXJzaGFsLmpzIiwiL2J1aWx0aW4vK2lvLmpzIiwiL2J1aWx0aW4vK2djLmpzIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi96YXJpdGhfc3R1YnNfanMvYmlnaW50ZWdlci5qcyIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvemFyaXRoX3N0dWJzX2pzL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rYmlnYXJyYXkuanMiLCIvYnVpbHRpbi8ranNsaWIuanMiLCIvYnVpbHRpbi8rcGFyc2luZy5qcyIsIi9idWlsdGluLytpbnRzLmpzIiwiL2J1aWx0aW4vK2hhc2guanMiLCIvYnVpbHRpbi8rb2JqLmpzIiwiL2J1aWx0aW4vK2RvbWFpbi5qcyIsIi9idWlsdGluLytjb21wYXJlLmpzIiwiL2J1aWx0aW4vK2pzbGliX2pzX29mX29jYW1sLmpzIiwiL2J1aWx0aW4vK2JpZ3N0cmluZy5qcyIsIi9idWlsdGluLyttZDUuanMiLCIvYnVpbHRpbi8rYmFja3RyYWNlLmpzIiwiL2J1aWx0aW4vK3N0ci5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvYnVpbHRpbi8rYXJyYXkuanMiLCIvYnVpbHRpbi8rc3luYy5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2J1aWx0aW4vK3BybmcuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLWNzdHJ1Y3QuanMiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2ludDY0Lm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9sZXhpbmcubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvcHJpbnRleGMubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2ZpbGVuYW1lLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxBdG9taWMubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL3N0ZGxpYi5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvcGVydmFzaXZlcy5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvZmxvYXQubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL3JhbmRvbS5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvbGlzdC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvaW5fY2hhbm5lbC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvb3V0X2NoYW5uZWwubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2VpdGhlci5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvbmF0aXZlaW50Lm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9vYmoubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2NhbWxpbnRlcm5hbExhenkubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2xhenkubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL3NlcS5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvb3B0aW9uLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9yZXN1bHQubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2Jvb2wubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2J5dGVzLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9pbnQubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL3N0cmluZy5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvdW5pdC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvbWFyc2hhbC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvYXJyYXkubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2ludDMyLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9wYXJzaW5nLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9zZXQubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL21hcC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvc3RhY2subWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL3F1ZXVlLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9zdHJlYW0ubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2J1ZmZlci5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvcHJpbnRmLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9hcmcubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2Z1bi5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvZ2MubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2RpZ2VzdC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvaGFzaHRibC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvd2Vhay5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvZm9ybWF0Lm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9zY2FuZi5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvY2FsbGJhY2subWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2NhbWxpbnRlcm5hbE9PLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxNb2QubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2dlbmxleC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvZXBoZW1lcm9uLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9iaWdhcnJheS5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvZGF0ZXNfY2FsYy9kYXRlcy5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIveW9qc29uL3lvanNvbi5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvcHB4X3lvanNvbl9jb252X2xpYi95b2pzb25fY29udi5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvcHB4X3lvanNvbl9jb252X2xpYi95b2pzb25fY29udl9lcnJvci5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvcHB4X3lvanNvbl9jb252X2xpYi9wcHhfeW9qc29uX2NvbnZfbGliLm1sIiwiL3dvcmtzcGFjZV9yb290L3J1bnRpbWVzL29jYW1sL3J1bnRpbWUubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lLm1sIiwiIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9pbXBvcnQubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL2pzLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9kb21faHRtbC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvZG9tLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC90eXBlZF9hcnJheS5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvZmlsZS5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvZm9ybS5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwveG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL3dvcmtlci5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvd2ViU29ja2V0cy5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvd2ViR0wubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL3JlZ2V4cC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvdXJsLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9zeXNfanMubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL3Jlc2l6ZU9ic2VydmVyLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9wZXJmb3JtYW5jZU9ic2VydmVyLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9tdXRhdGlvbk9ic2VydmVyLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9qc3RhYmxlLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9qc29uLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9jU1MubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL2RvbV9ldmVudHMubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL2RvbV9zdmcubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL2V2ZW50U291cmNlLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9maXJlYnVnLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9nZW9sb2NhdGlvbi5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvaW50ZXJzZWN0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL2ludGwubWwiLCIvd29ya3NwYWNlX3Jvb3QvcnVudGltZXMvanNvby9ydW50aW1lLm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvbGF3X3NvdXJjZS9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvbGF3X3NvdXJjZS9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2FwaV93ZWIubWwiLCIvd29ya3NwYWNlX3Jvb3QvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FpZGVzX2xvZ2VtZW50Lm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvbGF3X3NvdXJjZS9haWRlc19sb2dlbWVudF9hcGlfd2ViLm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvYXBpX3dlYi5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvc3RkX2V4aXQubWwiXSwibWFwcGluZ3MiOiI7OztBQUNBLENBQUM7SUFBVUE7SUFDVCxPQUFPQzs7OztLQUNMQztPQUNFO1FBQ0M7VUFBc0JGLDhDQUVoQkc7UUFDSEM7SUFFUixTQUFTRDtNQUNQLElBQUlFLE9BQVNILFFBQVFJO01BQ3JCLG9CQUFvQkQ7TUFDcEIsT0FBT0wsb0JBQ1QsQ0FiRDtHQWNDQTs7OztJQzJORixTQUFTTyxtQkFBbUJDLEdBQUssU0FBUSxVQUFZO0lDekxyRCxTQUFTQyxnQkFBZ0JDLEVBQUdDO01BQzFCLEdBQUdELE9BQVE7TUFDWCxHQUFJQyxTQUFVLE9BQVEsU0FBU0Q7TUFDL0IsSUFBTSxLQUFRO01BQ2Q7T0FBUSxDQUNOLEdBQUlBLE1BQU8sS0FBS0M7UUFDaEI7UUFDQSxHQUFJRCxPQUFRLE9BQU9FO1FBQ25CLEtBQUtEO1FBQ0w7UUFDQSxHQUFJRSxPQUFRLGFBTWhCO0lEN0NBLElBQUlDLGtCQUFvQjtJRUF4QixTQUFTRSxvQkFBcUJDLEtBQU8sTUFBTUEsR0FBSztJQ2dGaEQsSUFBSUM7SUR4Q0osU0FBU0M7TUFDUCxvQkFBb0JELGtDQUN0QjtJRnRDQSxTQUFTRSxRQUFTQyxHQUFHQyxHQUFHQztNQUN0QixVQUFVRixjQUNWLFVBQVVDLGNBQ1YsVUFBVUMsV0FDWjtJQUNBO0lBQ0E7O2VBQ0UsV0FBV0gsUUFBUWxCLFFBQVFBLFFBQVFBLFFBRFo7SUFJekI7O2FBQXVDTTtNQUNyQyxHQUFJTixVQUFVTSxLQUFNO01BQ3BCLEdBQUlOLFVBQVVNLEtBQU07TUFDcEIsR0FBSU4sVUFBVU0sS0FBTTtNQUNwQixHQUFJTixVQUFVTSxLQUFNO01BQ3BCLEdBQUlOLFVBQVVNLEtBQU07TUFDcEIsR0FBSU4sVUFBVU0sS0FBTTtNQUNwQixRQVAyQjtJQVM3Qjs7YUFBc0NBO01BQ3BDLElBQU8sR0FBRU4sY0FDRCxJQUFFTTtNQUNWLEdBQUllLEtBQUtDLElBQUs7TUFDZCxHQUFJRCxLQUFLQyxJQUFLO01BQ2QsR0FBSXRCLFVBQVVNLEtBQU07TUFDcEIsR0FBSU4sVUFBVU0sS0FBTTtNQUNwQixHQUFJTixVQUFVTSxLQUFNO01BQ3BCLEdBQUlOLFVBQVVNLEtBQU07TUFDcEIsUUFUMEI7SUFXNUI7OztNQUNFLElBQU8sS0FBSU4sUUFDSixLQUFJQSxXQUFXbUIsVUFDZixLQUFJbkIsV0FBV29CO01BQ3RCLFdBQVdGLFFBQVFDLEdBQUlDLEdBQUlDLEdBSkw7SUFNeEI7O2FBQWtDZjtNQUNoQztPQUFPLEdBQUVOLFVBQVVNO09BQ1osR0FBRU4sVUFBVU0sUUFBUWE7T0FDcEIsR0FBRW5CLFVBQVVNLFFBQVFjO01BQzNCLFdBQVdGLFFBQVFDLEdBQUlDLEdBQUlDLEdBSkw7SUFNeEI7O2FBQWtDZjtNQUNoQztPQUFPLEdBQUVOLFVBQVVNO09BQ1osR0FBRU4sVUFBVU0sUUFBUWE7T0FDcEIsR0FBRW5CLFVBQVVNLFFBQVFjO01BQzNCLFdBQVdGLFFBQVFDLEdBQUlDLEdBQUlDLEdBSkw7SUFNeEI7O2FBQWtDZjtNQUNoQztPQUFPLEdBQUVOLFVBQVVNO09BQ1osSUFBSWEsS0FBS1AseUJBQTBCWixVQUFVTSxPQUFPTixVQUFVTTtPQUM5RDtTQUFJYyxLQUFLUjs7UUFBMEJaOztRQUFVTTs7UUFBT047O1FBQVVNOztRQUFPTjs7UUFBVU07TUFDdEYsV0FBV1ksUUFBUUMsR0FBSUMsR0FBSUMsR0FKTDtJQU14Qjs7ZUFDRSxRQUFRckIsVUFBUUEsVUFBUUEsYUFEQztJQUczQixxQ0FDRSxPQUFRQSxpQkFEZ0I7SUFHMUI7O2FBQWtDTTtNQUNoQyxXQUFXWSxRQUFRbEIsVUFBVU0sS0FBTU4sVUFBVU0sS0FBTU4sVUFBVU0sS0FEdkM7SUFHeEI7O2FBQWlDQTtNQUMvQixXQUFXWSxRQUFRbEIsVUFBUU0sS0FBTU4sVUFBUU0sS0FBTU4sVUFBUU0sS0FEbEM7SUFHdkI7O2FBQWtDQTtNQUNoQyxXQUFXWSxRQUFRbEIsVUFBUU0sS0FBTU4sVUFBUU0sS0FBTU4sVUFBUU0sS0FEakM7SUFHeEI7O2FBQXlDRztNQUN2QyxJQUFJQTtNQUNKLEdBQUlBLE9BQVEsT0FBT1Q7TUFDbkIsR0FBSVM7T0FBUTtlQUNDUztnQkFBU2xCLFdBQVdTO2dCQUNWVCxXQUFXUyxJQUFNVCxnQkFBaUJTO2dCQUNsQ1QsV0FBV1MsSUFBTVQsZ0JBQWlCUztNQUV6RCxHQUFJQTtPQUNGO2VBQVdTO2tCQUNTbEIsV0FBWVMsT0FDWFQsV0FBWVMsU0FBWVQsZ0JBQWlCUztNQUNoRSxXQUFXUyxZQUFjbEIsV0FBWVMsT0FaUjtJQWMvQjs7YUFBbURBO01BQ2pELElBQUlBO01BQ0osR0FBSUEsT0FBUSxPQUFPVDtNQUNuQixHQUFJUztPQUNGO2VBQVdTO2dCQUNSbEIsV0FBV1MsSUFBTVQsZ0JBQWlCUztnQkFDbENULFdBQVdTLElBQU1ULGdCQUFpQlM7Z0JBQ2xDVCxXQUFXUztNQUNoQixHQUFJQTtPQUNGO2VBQVdTO2dCQUNSbEIsV0FBWVMsU0FBWVQsZ0JBQWlCUyxFQUN6Q1QsV0FBWVM7TUFFakIsV0FBV1MsUUFBU2xCLFdBQVlTLFdBYk87SUFlekM7O2FBQTBDQTtNQUN4QyxJQUFJQTtNQUNKLEdBQUlBLE9BQVEsT0FBT1Q7TUFDbkIsSUFBSXVCLEVBQUt2QjtNQUNULEdBQUlTO09BQ0Y7ZUFBV1M7Z0JBQ1JsQixXQUFXUyxJQUFNVCxnQkFBaUJTO2dCQUNsQ1QsV0FBV1MsSUFBTWMsVUFBV2Q7Z0JBQzNCVCxpQkFBa0JTO01BTHhCLElBTUllLEtBQVF4QjtNQUNaLEdBQUlTO09BQ0Y7ZUFBV1M7Z0JBQ1JsQixXQUFZUyxTQUFZVCxnQkFBaUJTO2dCQUN6Q1QsaUJBQW1CUztnQkFDcEJlO01BQ0osV0FBV04sUUFBVWxCLGlCQUFtQlMsT0FBU2UsS0FBTUEsS0FmekI7SUFpQmhDOzs7TUFDRSxVQUFXeEIsZUFBaUJBO01BQzVCLFdBQVlBLGVBQWlCQTtNQUM3QixVQUFXQSx1QkFIWTtJQUt6Qjs7O01BQ0UsV0FBWUEsZ0JBQWtCQTtNQUM5QixXQUFZQSxnQkFBa0JBO01BQzlCLFVBQVVBLGFBSGE7SUFLekI7O2FBQXNDTTtNQUNwQztPQUFXO09BQ0MsUUFBRTtPQUNGLFFBQUU7T0FDRCxhQUFNWTtNQUNuQixNQUFPLGlCQUFpQlMsYUFBYyxDQUNwQyxTQUNBO01BRUYsTUFBT0Y7T0FBYSxDQUNsQjtRQUNBO1FBQ0EsR0FBSSxpQkFBaUJFO1NBQWUsQ0FDbEMsY0FDQSxVQUFVLFlBQVlBO1FBRXhCO01BRUYsaUJBQW9CQyxpQkFBb0JGLFFBbEJkO0lBb0I1Qjs7YUFBa0NHO01BRWhDLElBQUl2QixFQUFJTjtNQUNSLEdBQUksV0FBWTtNQURoQixJQUVJd0IsS0FBT2xCLE9BQU91QjtNQUNsQixHQUFJdkIsY0FBZSxJQUFJO01BQ3ZCLEdBQUl1QixjQUFlLElBQUk7TUFKdkIsSUFLSUMsRUFBSSxVQUFVRDtNQUNsQixHQUFJTCxjQUFlLElBQUk7TUFDdkIsT0FBT00sQ0FUZTtJQVd4Qjs7YUFBa0NEO01BRWhDLElBQUl2QixFQUFJTjtNQUNSLEdBQUksV0FBWTtNQURoQixJQUVJd0IsS0FBT2xCO01BQ1gsR0FBSUEsY0FBZSxJQUFJO01BQ3ZCLEdBQUl1QixjQUFlLElBQUk7TUFKdkIsSUFLSW5CLEVBQUksVUFBVW1CO01BQ2xCLEdBQUlMLGNBQWUsSUFBSTtNQUN2QixPQUFPZCxDQVRlO0lBV3hCLHFDQUNFLE9BQU9WLFVBQVdBLGFBRE07SUFHMUI7OztNQUNFLFFBQVNBOzthQUFpQjs7YUFBa0JBOzthQUFVOzthQUFtQkEsT0FEL0M7SUFHNUI7OztNQUNFLFFBQVFBO2NBQ0FBO2NBQ0FBO2NBQ0NBO2NBQ0RBO2NBQ0FBO2NBQ0NBO2NBQ0RBLGVBUmtCO0lBVTVCOztlQUNFLE9BQU9BLFdBQVlBLHFCQURJO0lBR3pCOztlQUNFLE9BQVNBLHlCQUE0QkEsYUFEZDtJQXVEekIsU0FBUytCLG9CQUFxQnpCO01BQzVCLFdBQVdZLFFBQVFaLGFBQWVBLG1CQUFzQkEsaUJBQzFEO0lBR0EsU0FBUzBCLG9CQUFxQjFCLEdBQUssT0FBTyxTQUFVO0lBakNwRCxTQUFTMkIsdUJBQXVCM0IsR0FBSyxTQUFRLFNBQVc7SUFoQnhELFNBQVM0QixlQUFnQjVCLEdBQUssT0FBTyxPQUFRO0lDcko3QyxTQUFTNkIseUJBQTBCQyxFQUFHQyxFQUFHQztNQUN2QyxJQUFJQyxFQUFJQztNQUNSLEdBQUlILFVBQVVDLGVBQWVBLE9BQU9GLFNBQVUsT0FBTyxRQUFTSyxLQUFNTDtNQURwRSxJQUVJM0I7TUFDSixTQUFXNkIsSUFBS0QsVUFBVUM7T0FDeEIsS0FBSyxRQUFTRyxLQUFNLFFBQVFKLEVBQUVBLElBQUksU0FBU0M7TUFDN0MsT0FBTzdCLENBQ1Q7SUEyV0EsU0FBU2lDLDZCQUE4QmpDO01BRXJDLEdBQUlBO09BQ0YsT0FBTyxnQkFBZ0JBLE1BQU1BOztPQUU3QixNQUFNLHlCQUEwQkEsTUFBUUE7TUFDMUMsT0FDRjtJQWtXQSxTQUFTa0MsdUJBQXVCbEM7TUFDOUIsV0FBYSw2QkFBNkJBLEdBQzFDLE9BQU9BLEdBQUk7SUMzd0JiLFNBQVNtQyxvQkFBcUI3QixJQUFLOEIsS0FBTyxTQUFVOUIsSUFBSzhCLElBQU07SUQwSS9ELFNBQVNDLGNBQWVyQztNQUV0QixHQUFJQTtPQUFlLENBRWpCLElBQVcsSUFBRjRCLElBQU9BLElBQUk1QixTQUFVNEIsSUFBSyxHQUFJLGFBQWFBLFNBQVU7UUFDOUQ7O09BRUEsU0FBUSxvQkFBb0I1QixFQUNoQztJQXZEQSxTQUFTc0MsbUJBQW1CdEM7TUFDMUIsUUFBVyxLQUFRLEtBQU15QyxFQUFHQyxHQUFJQyxHQUFJQyxFQUFLLElBQU8sRUFBRTVDLFNBQVU0QixJQUFJMUIsRUFBRzBCO09BQUssQ0FDdEUsS0FBSyxhQUFhQTtRQUNsQixHQUFJYztTQUFXLENBQ2IsSUFBVyxJQUFGRyxFQUFJakIsTUFBUWlCLElBQUkzQyxNQUFPd0MsS0FBSyxhQUFhRyxXQUFZQSxJQUFJO1VBQ2xFLEdBQUlBLElBQUlqQjtXQUFTLENBQUUsY0FBZ0IsS0FBS1ksRUFBRyxPQUFRLEtBQUssUUFBUVosRUFBR2lCOztXQUM5RCxLQUFLLFFBQVFqQixFQUFHaUI7VUFDckIsR0FBSUEsS0FBSzNDLEVBQUc7VUFDWixJQUFJMkM7UUFFTjtRQUNBLEtBQU9qQixJQUFJMUIsT0FBU3lDLEtBQUssYUFBYWY7U0FBb0IsQ0FDeEQsSUFBSWUsTUFBTUQ7VUFDVixHQUFJQTtXQUFXLENBQ2IsSUFBSUQsV0FDSixHQUFJRyxTQUFVOztXQUNULENBQ0w7WUFDQSxLQUFPaEIsSUFBSTFCLE9BQVN5QyxLQUFLLGFBQWFmO2FBQW9CLENBQ3hELElBQUllLE1BQU1GO2NBQ1YsR0FBSUM7ZUFBVyxDQUNiLElBQUlEO2dCQUNKLEdBQUtHLGFBQWdCQSxlQUFpQkEsV0FBYzs7ZUFDL0MsQ0FDTDtnQkFDQTtvQkFBT2hCOztrQkFBSTFCOztvQkFBU3lDLEtBQUssYUFBYWY7Ozs7a0JBQ2pDYzs7O2lCQUFZLENBQ2YsSUFBSUMsa0JBQWtCRjtrQkFDdEIsR0FBSUcsZUFBZUEsYUFBYztRQU0zQyxHQUFJQTtTQUFPLENBQ1QsS0FBS0EsRUFDTDs7U0FDSyxHQUFJQTtVQUNULEtBQUssOEJBQThCQSxtQkFBb0JBOztVQUV2RCxLQUFLLG9CQUFvQkE7UUFDM0IsR0FBSUosZ0JBQWlCLENBQUMsY0FBZ0IsS0FBS0EsRUFBRztNQUVoRCxPQUFPRCxJQUFFQyxDQUNYO0lBMFBBLFNBQVNNLFFBQVN4QyxJQUFLeUMsU0FBVUM7TUFDL0IsU0FBTzFDLElBQUssU0FBT3lDLFNBQVUsU0FBT0MsTUFDdEM7SUFDQTs7O01BQ0UsT0FBUXpEO2VBRU4sT0FBT0E7Z0JBRVAsNkJBQTZCQTtTQUU3QixHQUFJLGNBQWNBLFFBQVMsQ0FDekIsV0FDQSxPQUFPQSxPQUVUO2VBRUEsT0FBT0E7U0Fia0I7SUFnQjdCOzs7TUFDRSxJQUFJVSxFQUFJO01BQ1IsR0FBR1YsWUFBYSxPQUFPVTtNQUN2QixPQUFPLG1CQUFtQkEsRUFIQTtJQUs1Qjs7O01BQ0UsSUFBSWdELFFBQVUxRCxZQUFjLGVBQWlCQTtNQUM3QyxXQUFXdUQsUUFBUXZELE9BQU8wRCxRQUFRMUQsT0FGVjtJQTBTMUIsU0FBUzJELHNCQUFzQmxELEdBQUssV0FBVzhDLFVBQVU5QyxFQUFFQSxTQUFXO0lBaUV0RSxTQUFTbUQsdUJBQXVCbkQsR0FBSyxPQUFPLHNCQUFzQkEsRUFBSTtJQzd2QnRFLFNBQVNvRCx1QkFBd0I5QyxJQUFLK0M7TUFDcEMsb0JBQXFCL0MsSUFBSyx1QkFBdUIrQyxLQUNuRDtJQWFBLFNBQVNDLHNCQUF1QkQ7TUFDOUIsdUJBQXVCOUMsa0NBQW1DOEMsSUFDNUQ7SUU3QkEsU0FBU0Usa0JBQW1CQztNQUMxQixNQUFNLHVCQUF1QkE7TUFDN0IsSUFBSTNCLElBQU0yQjtNQUNWLEdBQUkzQixTQUFVO01BRGQ7T0FFSUM7Ozs7Ozs7Ozs7OztNQUlKLElBQVcsSUFBRkYsSUFBT0EsSUFBSUMsSUFBS0Q7T0FBSyxDQUM1QixJQUFJYSxFQUFJLFdBQVdiO1FBQ25CLE9BQVFhO21CQUVOLGdCQUFpQjs7bUJBRWpCLGNBQWNBLEVBQUc7bUJBRWpCLGVBQWdCO21CQUVoQixtQkFBb0I7Ozs7Ozs7Ozs7V0FHcEI7V0FDQSxNQUFPQSxJQUFFLGVBQWViLFFBQVNhLFVBQVVBO1lBQVEsQ0FDakQsVUFBVVgsZUFBZVcsRUFBRztXQUU5QjtXQUNBOztXQUVBO1dBQ0E7V0FDQSxNQUFPQSxJQUFFLGVBQWViLFFBQVNhLFVBQVVBO1lBQVEsQ0FDakQsU0FBU1gsY0FBY1csRUFBRztXQUU1Qjs7bUJBRUE7bUJBRUEsWUFBYTttQkFFYixZQUFhO21CQUViLFlBQWEsbUJBQW9CO21CQUVqQyxXQUFZOzs7bUJBRVosb0JBQXFCLFNBQVNBLEVBQUc7Ozs7V0FFakM7V0FBcUI7V0FDckIsU0FBUztXQUFrQjs7TUFHL0IsT0FBT1gsQ0FDVDtJQUlBLFNBQVMyQix1QkFBdUIzQixFQUFHNEI7TUFDakMsR0FBSTVCLFlBQWEsWUFBWTtNQUM3QixJQUFJRCxJQUFNNkI7TUFFVixHQUFJNUIsaUJBQWlCQSxjQUFjQSxvQkFBcUI7TUFDeEQsR0FBSUEsWUFBYSxDQUNmLEdBQUlBLFlBQWEsU0FDakIsR0FBSUEsYUFBYztNQUxwQixJQVFJNkI7TUFDSixHQUFJN0Isb0JBQW9CQTtPQUN0QixJQUFXLElBQUZGLEVBQUlDLElBQUtELElBQUlFLFFBQVNGLElBQUs7TUFDdEMsR0FBSUU7T0FBYyxHQUNaQTtRQUFZOztRQUNYLEdBQUlBLG1CQUFvQixVQUFVQTtNQUV6QyxHQUFJQSxlQUFlQSxZQUFhO01BQ2hDLEdBQUlBLGVBQWVBLGFBQWMsVUFBVUE7TUFDM0MsR0FBSUEsb0JBQW9CQTtPQUN0QixJQUFXLElBQUZGLEVBQUlDLElBQUtELElBQUlFLFFBQVNGLElBQUs7TUFDdEMsVUFBVThCO01BQ1YsR0FBSTVCLGlCQUNGLElBQVcsSUFBRkYsRUFBSUMsSUFBS0QsSUFBSUUsUUFBU0YsSUFBSztNQUN0QyxPQUFPLHVCQUF1QitCLE9BQ2hDO0lKNExBLFNBQVNDLGtCQUFtQkosSUFBSzNEO01BQy9CLElBQUlpQyxFQUFJLGtCQUFrQjBCO01BQzFCLEdBQUkxQixnQkFBZ0IsdUJBQXVCakM7T0FBSSxDQUM3QyxhQUFhLElBQUksZUFBZUE7TUFGbEM7T0FJVztPQUNELE1BQUUsb0JBQW9CaUM7T0FDdEI7TUFDVjtPQUFHLENBQ0QsSUFBSWlDLEVBQUksVUFBVUY7UUFDbEIsSUFBSUU7UUFDSixTQUFTLGFBQWEsb0JBQW9CQSxjQUFjSjs7VUFDL0MsbUJBQW1COUQ7TUFDOUIsR0FBSWlDO09BQWEsQ0FDZjtRQUNBLElBQUkvQixFQUFJK0IsU0FBUzZCO1FBQ2pCLEdBQUk1RCxNQUFPLFNBQVMsZ0JBQWlCQSxTQUFVNEQ7TUFFakQsT0FBTyx1QkFBdUI3QixFQUFHNkIsT0FDbkM7SUszQ0EsU0FBU0ssaUJBQWtCbkUsR0FBSyxPQUFPLFdBQVdBLEVBQUk7SUMzRnRELFNBQVNvRSw0QkFBNEJ6QixHQUNqQyxRQUNKO0lMd25CQSxTQUFTMEIsd0JBQXdCbEUsR0FDL0IsT0FBTyxXQUNUO0lNdnhCQSxTQUFTbUU7TUFDUCxjQUNTN0U7Ozs7b0JBQ0tBOzs7O29CQUNBQTs7d0JBQ2hCO0lDMEJBLFNBQVM4RTtNQUNQLFNBQVNDLE1BQU1DO1FBQ2IsR0FBSSx1QkFBd0IsV0FBWSxtQkFDeEMsTUFDRjtNQUVBLFNBQVNDLE1BQU1EO1FBRWI7U0FBa0I7O1NBQ1AsT0FBRSxtQkFBbUJBO1NBQ3JCLE9BQUVHO1NBQ0gsTUFBRSxRQUFRQyxVQUFVO1FBRzlCLEdBQUksUUFBUUQsYUFBYUU7U0FBUSxDQUMvQixJQUFTLEtBQUdGLGdCQUNKLElBQUdBO1VBQ1gsUUFBUUksS0FBTSxlQUFlQSxjQUFjQztRQUU3QyxNQUNGO01BQ0EsT0FBRzs7Y0FBd0J4Rjs7Y0FBc0JBO2VBQ3hDQSx3Q0FBMENpRixNQUFRRjtlQUUvQ0EsS0FDZDtJQUNBLElBQUlVLGlCQUFtQjtJQXZEdkIsU0FBU0Msb0JBQW9CQztNQUMzQixPQUFRLHdCQUEyQkEsV0FBY0EsSUFDbkQ7SUFJQSxHQUFHLHVCQUF3QjNGLHNCQUFzQkE7S0FDL0MsSUFBSTRGLGlCQUFtQjs7S0FFdkIsSUFBSUE7SUFDTixtQkFBbUIsb0JBQW9CQTtJQWtEdkMsU0FBU0MsZUFBZ0JGO01BQ3ZCLE9BQUssd0JBQXdCQTtNQUM3QixLQUFLLGlCQUFpQkEsTUFDcEIsT0FBT0MsbUJBQW1CRDtNQUM1QixJQUFVLE1BQUUsaUJBQWlCQSxNQUNwQixLQUFFLG9CQUNEO01BQ1YsSUFBVSxJQUFGckQsSUFBT0EsSUFBRXlELFlBQWF6RDtPQUFJLE9BQ3pCeUQsS0FBS3pEO21CQUNELEdBQUcwRCxpQkFBZ0IsWUFBYTtrQkFDakM7aUJBQ0Q7aUJBQ0EsV0FBV0QsS0FBS3pELElBQUk7TUFHL0IsY0FBY3dEO01BQ2QsYUFBYUg7TUFDYixPQUFPSyxLQUNUO0lQbEJBLFNBQVNDLG1CQUFtQnZGO01BQzFCLFFBQVcsS0FBUSxFQUFFdUMsRUFBR0UsRUFBRytDLEVBQUssSUFBTyxFQUFFeEYsU0FBVTRCLElBQUkxQixFQUFHMEI7T0FBSyxDQUM3RCxJQUFJLGFBQWFBO1FBQ2pCLEdBQUlhO1NBQVUsQ0FDWixJQUFXLElBQUZJLEVBQUlqQixNQUFRaUIsSUFBSTNDLE1BQU91QyxJQUFJLGFBQWFJLFdBQVlBLElBQUk7VUFDakUsR0FBSUEsSUFBSWpCO1dBQVMsQ0FBRSxjQUFnQixLQUFLWSxFQUFHLE9BQVEsS0FBSyxRQUFRWixFQUFHaUI7O1dBQzlELEtBQUssUUFBUWpCLEVBQUdpQjtVQUNyQixHQUFJQSxLQUFLM0MsRUFBRztVQUNaLElBQUkyQztRQUVOLEdBQUlKO1NBQVcsQ0FDYixLQUFLLDJCQUE0QkE7VUFDakMsS0FBSywyQkFBNEJBOztTQUM1QixHQUFJQSxjQUFjQTtVQUFhOztVQUMvQjttQkFBNEJBLGVBQ0NBLHFCQUNEQTs7VUFDNUI7WUFBSUE7Ozs7WUFBZWI7Ozs7WUFBUzFCOzthQUN2QnNGLElBQUksYUFBYTVEOzs7O1lBQW9CNEQ7OztXQUFZOztXQUd0RCxDQUNMO1lBQ0EsS0FBSy9DLFdBQVcrQztZQUNoQjs7WUFBSztxQkFBNEIvQztxQkFDQ0E7cUJBQ0FBO3FCQUNEQTtRQUVuQyxHQUFJRCxnQkFBaUIsQ0FBQyxjQUFnQixLQUFLQSxFQUFHO01BRWhELE9BQU9ELElBQUVDLENBQ1g7SUErUkEsU0FBU2lELDZCQUE4QnpGO01BQ3JDLElBQUlNO01BQ0osS0FBSyxjQUFjTixHQUNqQixRQUFpQ0EsSUFBSSxtQkFBbUJBO01BQzFELFdBQVc4QyxRQUFReEMsSUFBS04sRUFBR0EsU0FDN0I7SUEwWkEsU0FBUzBGLHdCQUF5QjFGO01BQ2hDLE9BQU8sNkJBQTZCQSxFQUN0QztJUTd0QkE7S0FBSTJGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFpQkosU0FBU0MsbUJBQW1CQyxLQUFNQyxRQUFTeEIsS0FBTXlCO01BQy9DLElBQUlDLFFBQVUsbUJBQW1CSDtNQUNqQyxHQUFJRyxZQUFhLENBRWYsR0FBSUQsU0FBUy9ELEtBQU0sZUFJbkIsYUFBbUIrRDtNQVByQjtPQVNJRTtTQUNGRDtTQUNBLHdCQUF3QkY7U0FDeEIsd0JBQXdCeEI7TUFFMUIsT0FBTzJCLElBQ1Q7SU5sQ0EsSUFBSUM7SUFXSixTQUFTQyxpQkFBaUJDLElBQ3hCLE9BQU9GLGtCQUFrQkUsR0FDM0I7SURwRUEsU0FBU0MscUJBQXNCL0YsSUFBSzJGLE1BQVEsTUFBTSxHQUFJM0YsWUFBWTJGLEtBQU87SUR5eEJ6RSxTQUFTSyxpQkFBaUJ0RyxHQUN4QixPQUFRQSxhQUFhOEMsT0FDdkI7SUF5QkEsU0FBU3lELGtCQUFrQnZHLEdBQ3pCLE9BQU8saUJBQWlCQSxFQUMxQjtJQXBWQSxTQUFTd0csb0JBQXFCN0U7TUFDNUIsTUFBTUEsYUFBYThFLFlBQWEsUUFDdEJBLFdBQVc5RTtNQUVyQixXQUFXbUIsVUFBVW5CLEVBQUVBLFNBQ3pCO0lBcVJBLFNBQVMrRSxxQkFBcUIxRyxHQUFLLE9BQU9BLENBQUU7SVNwd0I1QyxTQUFTMkcscUJBQXNCdEQ7TUFDN0IsdUJBQXVCOUMsMkJBQTRCOEMsSUFDckQ7SUZ3S0EsU0FBU3VELHdCQUF3QjNCO01BQy9CLHFCQUFzQkEscUNBQ3hCO0lQbVFBLFNBQVM0Qiw0QkFBNkI3RztNQUVwQyxJQUFNLE1BQU15RyxXQUFXekcsS0FDakIsRUFBRUEsSUFBTyxFQUFFdUMsU0FBWTtNQUM3QixLQUFPWCxJQUFJMUIsRUFBRzBCLElBQUssRUFBRUEsS0FBSyxhQUFhQTtNQUN2QyxJQUFLMUIsSUFBSUYsSUFBSzRCLElBQUkxQixFQUFHMEIsSUFBSyxFQUFFQTtNQUM1QixNQUFNRDtNQUNOO01BQ0EsT0FBT0EsQ0FDVDtJQUlBLFNBQVNtRiwwQkFBMkI5RztNQUNsQyxHQUFJQSxTQUFzQiw0QkFBNEJBLEdBQ3RELE9BQU9BLEdBQ1Q7SUE4QkEsU0FBUytHLGtCQUFrQmxGO01BQ3pCLEdBQUlBLFFBQVM7TUFDYixXQUFXaUIsUUFBUWpCLFdBQVdBLElBQ2hDO0lBZ0pBLFNBQVNtRixxQkFBcUJoSCxHQUFLLE9BQU9BLEdBQUk7SUF2QzlDLFNBQVNpSCxnQkFBZ0JDLEdBQUlDLEdBQUlDLEdBQUlDLEdBQUl4RjtNQUN2QyxHQUFJQSxTQUFVO01BQ2QsR0FBS3dGLFlBQ0F4RixPQUFPdUYsUUFBU0EsYUFBMkJ2RixPQUFPdUY7T0FBZSxDQUNwRTs7UUFBUUY7VUFDTix5QkFBeUJBLEtBQU1DLEdBQUl0RjtVQUNsQ3NGLFdBQVdELGVBQWVyRixJQUFLcUYsS0FBSyxZQUFZQyxHQUFJdEY7UUFDdkQsT0FBUXVGLGVBQWVBOztPQUNsQixHQUFJQSxhQUEyQkMsTUFBTUQ7UUFBYSxDQUN2RDs7U0FBU0Y7V0FDUCx5QkFBeUJBLEtBQU1DLEdBQUl0RjtXQUNsQ3NGLFdBQVdELGVBQWVyRixJQUFLcUYsS0FBSyxZQUFZQyxHQUFJdEY7U0FDdkQsT0FBUXVGLGVBQWVBOztRQUNsQixDQUNMLEdBQUlBLFVBQXVCLDRCQUE0QkE7U0FDdkQsSUFBTyxHQUFFRixLQUFTLEdBQUVFO1NBQ3BCLEdBQUlGO1VBQXVCLEdBQ3JCRyxNQUFNRjtXQUFJLElBQ0QsSUFBRnZGLElBQU9BLElBQUlDLElBQUtELElBQUssR0FBSXlGLEtBQUt6RixLQUFLYyxHQUFJeUUsS0FBS3ZGOztXQUNoRCxJQUNNLElBQUZBLEVBQUlDLFFBQVNELE9BQVFBLElBQUssR0FBSXlGLEtBQUt6RixLQUFLYyxHQUFJeUUsS0FBS3ZGOztVQUV2RCxDQUNMLElBQUkxQixFQUFJLFNBQVUyQixJQUFLYSxZQUFZeUU7V0FDbkMsSUFBVyxJQUFGdkYsSUFBT0EsSUFBSTFCLEVBQUcwQixJQUFLLEdBQUl5RixLQUFLekYsS0FBSyxjQUFjdUYsS0FBS3ZGO1dBQzdELEtBQU9BLElBQUlDLElBQUtELElBQUssR0FBSXlGLEtBQUt6RjtNQUdsQyxRQUNGO0lPNWtCQSxTQUFTMEYsU0FBVztJR3FOcEIsU0FBU0MsV0FBV3RFLFNBQ2xCLFlBQVlBLE9BQ2Q7SUFDQSwyQkFBMkJxRTtJQUMzQixtQ0FBbUNDO0lBQ25DOzthQUF5QzFGO01BQ3ZDLElBQUkyRixJQUFNakk7TUFDVixZQUFZLGtCQUFrQnNDO01BQzlCLGdCQUFnQjJGLE1BQVFqSSxZQUFjc0MsSUFIUjtJQUtoQzs7ZUFDRSxPQUFPLHFCQUFxQnRDLFVBREE7SUFHOUI7O2FBQXNDeUIsT0FBT3lHLElBQUlDLElBQUk3RjtNQUNuRCxJQUFJOEYsS0FBTztNQUNYLEdBQUczRyxTQUFTYSxPQUFPOEY7T0FBTSxDQUN2QixJQUFZLFFBQUUsa0JBQWtCM0csU0FBU2EsS0FDNUIsU0FBRXRDO1FBQ2YsWUFBWXFJO1FBQ1osZ0JBQWdCQyxXQUFhdEksWUFBY29JO01BRTdDLGdCQUFnQixvQkFBb0JGLEtBQU1DLElBQUtuSSxVQUFXeUIsT0FBUWE7TUFDbEUsUUFUMkI7SUFXN0I7O2FBQXFDYixPQUFPeUcsSUFBSUMsSUFBSTdGO01BQ2xELElBQUk4RixLQUFPO01BQ1gsR0FBRzNHLFNBQVNhLE9BQU84RixLQUFNLE1BQ2pCQSxPQUFPM0c7TUFFZixHQUFHYTtPQUFLLENBQ04sSUFBSWlHLEtBQU8sa0JBQWtCakc7UUFDN0IsZ0JBQWdCdEMsVUFBV3lCLE9BQVE4RyxPQUFTakc7UUFDNUMsUUFBUSwwQkFBMEJpRyxNQUFPSjtNQUUzQyxPQUFPN0YsR0FWbUI7SUF3RDVCLFNBQVNrRyxTQUFTOUMsS0FBTStDLEtBQUtDO01BQzNCLFlBQVlELEtBQ1osWUFBWS9DLEtBQ1osYUFBYWdELEtBQ2Y7SUFFQTs7O01BQ0UscUJBQXFCMUksK0NBRFM7SUFHaEM7O2VBQ0UsR0FBR0EsVUFBVyxPQUFPLG1CQUNyQixpQkFGMEI7SUFJNUI7O2FBQXFDeUIsT0FBT3lHLElBQUlDLElBQUk3RjtNQUNsRCxHQUFHdEMsVUFBVyxPQUFPLGdCQUFnQnlCLE9BQU95RyxJQUFJQyxJQUFJN0Y7TUFDcEQsaUJBRnlCO0lBSTNCOzthQUFvQ2IsT0FBUXlHLElBQUtDLElBQUs3RjtNQUNwRCxHQUFHdEMsVUFBVyxPQUFPLGVBQWV5QixPQUFReUcsSUFBS0MsSUFBSzdGO01BQ3RELGlCQUZ3QjtJQUkxQixzQ0FDRSxZQUFZcUcsU0FEYTtJQTlVM0IsU0FBU0MsYUFBY3RELEtBQU0vQztNQUMzQixrQkFDQSxZQUFZK0MsS0FDWixpQkFBaUIvQyxDQUNuQjtJQUNBLHFDQUFxQ21ELE1BQ25DLE9BQVExRixZQUFZMEYsSUFETTtJQUc1Qjs7YUFBdURBO01BQ3JELElBQVMsS0FBRSxnQkFDSDtNQUNSLElBQVUsSUFBRnJELElBQU9BLElBQUl5RCxnQkFBaUJ6RDtPQUFJLENBQ3RDLE9BQU95RCxLQUFLekQ7UUFDWixHQUFHckMsYUFBYTZJLEtBQU07UUFDdEIsYUFBYUEsT0FBTyxvQkFOc0I7SUFTOUM7O2FBQXdDbkQsTUFDdEMsT0FBTyxXQUFXQSxNQUFNQSxLQUFNQSxVQUREO0lBRy9COzthQUF5Q0E7TUFDdkMsS0FBSTFGLGFBQWEwRixTQUFTMUY7T0FBZ0IsQ0FDeEM7U0FBSTZJO1VBQU07WUFBZSx1QkFBdUI3SSxXQUFZLHVCQUF1QjBGO1FBQ25GLEdBQUdtRDtTQUFXLENBQ1osMEJBQTBCbkQ7VUFDMUIsYUFBYUEsWUFBVXNDLFdBQVcscUJBQXFCYSxVQUw3QjtJQVNoQzs7YUFBeUNuRDtNQUV2QyxHQUFHQSxXQUFZO01BRWYsSUFBSXFELFdBQWEsV0FBV3JEO01BQzVCLEdBQUcxRixhQUFhK0ksWUFBYTtNQUU3QixZQUFZckQ7TUFDWixPQUFPMUYsYUFBYTBGLFNBUlU7SUFVaEM7O2FBQXdDQSxLQUFLc0QsS0FBTUM7TUFDakQsSUFBSTdDLFdBQWE2QyxjQUFjO01BQy9CLEdBQUcsWUFBWXZEO09BQU8sR0FDaEJVO1FBQVk7VUFDT0EsV0FBWSxvQ0FBc0MsUUFBUVY7O1FBRTVFLHFCQUNrQkE7TUFOekIsSUFTSXdELE9BQVMsb0JBQW9CeEQ7TUFDakMsU0FBVXdELFVBQVVBO01BQ3BCLEtBQUksWUFBWUE7T0FBUSxHQUNsQjlDO1FBQVk7VUFDT0EsV0FBWSxvQ0FBc0MsUUFBUThDOztRQUU1RSxxQkFDa0JBO01BR3pCLEtBQUksWUFBWUE7T0FBUSxHQUNsQjlDO1FBQVk7VUFDT0EsV0FBWSxxQ0FBdUMsUUFBUThDOztRQUU3RSxxQkFDa0JBO01BR3pCLDBCQUEwQixXQUFXeEQsTUE1QlI7SUE4Qi9COzthQUF3Q0EsS0FBTXVEO01BQzVDO09BQWUsV0FBRUEsY0FBYztPQUNoQixXQUFHdkQsY0FBZ0IsV0FBV0E7T0FDdkMsTUFBTXlELGFBQWFKO01BQ3pCLEtBQUksWUFBWXJEO09BQU8sR0FDakJVO1FBQVk7VUFDT0EsV0FBWSxvQ0FBc0MsUUFBUVY7O1FBRTVFLHFCQUNrQkE7TUFHekIsS0FBSSxZQUFZQTtPQUFPLEdBQ2pCVTtRQUFZO1VBQ09BLFdBQVkscUNBQXVDLFFBQVFWOztRQUU3RSxxQkFDa0JBO01BR3pCLFFBQVFsRixLQUFLUjtPQUFjLEdBQ3RCLFFBQVFVO1FBQUksR0FDVDBGO1NBQVk7V0FDT0EsV0FBWSx1Q0FBeUMsUUFBUVY7O1NBQzdFLHFCQUNnQixRQUFRQTtNQUluQyxPQUFPMUYsYUFBYStJLFdBN0JTO0lBK0IvQjs7YUFBMENyRDtNQUN4QyxJQUFJcUQsV0FBY3JELGNBQWdCLFdBQVdBO01BQzdDLEtBQUksWUFBWUE7T0FBTyxxQkFDQUE7TUFFdkIsS0FBSSxZQUFZQSxNQUFPLHFCQUNBQTtNQUx2QixJQU9NLE1BQU15RCxhQUFhSix3QkFDaEIsUUFDSDtNQUNOLFFBQVF2SSxLQUFLUjtPQUFjLENBQ3pCLElBQUlxSixFQUFJLFFBQVEzSTtRQUNoQixHQUFHMkksT0FBTUQsS0FBS0MsTUFBTyxDQUFDLEtBQUtBLGFBQWMsT0FBT0E7TUFFbEQsT0FBT2pILENBZndCO0lBaUJqQzs7YUFBMENzRCxLQUFNdUQ7TUFDOUM7T0FBZSxXQUFFQSxjQUFjO09BRXpCLEVBQUUsYUFBYXZEO09BQ2Y7T0FDQTtNQUNOOztnQkFDRSxHQUFJeEM7aUJBQUcsR0FDRGtEO2tCQUFZO29CQUNPQTtvQkFBWSxzQ0FBd0MsUUFBUVY7O2tCQUU5RSxxQkFDa0JBO2dCQUd6QixHQUFHckQsS0FBS0QsU0FBVSxPQUFPSztnQkFDekIsSUFBSTZHLE1BQVFsSCxFQUFFQztnQkFDZDtnQkFDQSxhQUFlaUgsTUFaSTs7O2dCQWVqQixHQUFJcEc7aUJBQUcsR0FDRGtEO2tCQUFZO29CQUNPQTtvQkFBWSxzQ0FBd0MsUUFBUVY7O2tCQUU5RSxxQkFDa0JBO2dCQUd6QjtnQkFDQSxNQVZZLEVBcEJlO0lBa0NqQzs7YUFBeUNBO01BQ3ZDLEdBQUdBLFdBQWE7TUFDaEIsSUFBSXFELFdBQWEsV0FBV3JEO01BQzVCLE9BQU8xRixhQUFhK0ksZUFIVTtJQUtoQzs7YUFBeUNyRDtNQUN2QyxJQUFJNkQsR0FBS3ZKLGFBQWEwRjtNQUN0QixPQUFPMUYsYUFBYTBGO01BQ3BCLE9BQU82RCxFQUh1QjtJQUtoQzs7YUFBdUM3RCxLQUFNbkQ7TUFDM0MsSUFBSWtHO01BQ0osR0FBR2xHLFlBQVlBO09BQ2I7U0FBcUIsUUFBUW1EOzs7TUFDL0IsR0FBR25ELFVBQVVBO09BQ1g7U0FBcUIsUUFBUW1EOzs7TUFDL0IsWUFBWUE7TUFDWixHQUFJMUYsYUFBYTBGO09BQU8sQ0FDdEIsR0FBSSxZQUFZQTtTQUFPLHFCQUFxQixRQUFRQTtRQUNwRCxHQUFJbkQsWUFBWUE7U0FBUSxxQkFBcUIsUUFBUW1EO1FBQ3JELE9BQU8xRixhQUFhMEY7UUFDcEIsR0FBR25ELFdBQVk7O09BQ1YsR0FBSUE7UUFBVSxDQUNuQiwwQkFBMEJtRDtTQUMxQixhQUFhQSxZQUFZc0MsV0FBVztTQUNwQyxPQUFPaEksYUFBYTBGOztRQUNmLHdCQUNvQixRQUFRQTtNQUVuQyxXQUFXOEMsU0FBUyxRQUFROUMsTUFBTytDLEtBQU1sRyxFQW5CYjtJQXNCOUI7O2FBQXVDbUQsS0FBTW5EO01BQzNDLElBQUlrRztNQUNKLEdBQUdsRyxZQUFZQTtPQUNiO1NBQXFCLFFBQVFtRDs7O01BQy9CLEdBQUduRCxVQUFVQTtPQUNYO1NBQXFCLFFBQVFtRDs7O01BQy9CLFlBQVlBO01BQ1osR0FBSTFGLGFBQWEwRjtPQUFPLENBQ3RCLEdBQUksWUFBWUE7U0FBTyxxQkFBcUIsUUFBUUE7UUFDcEQsR0FBSW5ELFlBQVlBO1NBQVEscUJBQXFCLFFBQVFtRDtRQUNyRCxPQUFPMUYsYUFBYTBGO1FBQ3BCLEdBQUduRCxXQUFZOztPQUNWLEdBQUlBO1FBQVUsQ0FDbkIsMEJBQTBCbUQ7U0FDMUIsYUFBYUEsWUFBWXNDLFdBQVc7U0FDcEMsT0FBT2hJLGFBQWEwRjs7UUFDZix3QkFDb0IsUUFBUUE7TUFFbkMsV0FBVzhDLFNBQVMsUUFBUTlDLE1BQU8rQyxLQUFNbEcsRUFuQmI7SUFzQjlCOzthQUEyQ21ELEtBQUtoQztNQUM5QyxJQUFJK0U7TUFDSixHQUFHekksYUFBYTBGO09BQU8scUJBQXFCLFFBQVFBO01BQ3BELEdBQUcsaUJBQWlCaEMsU0FDbEIsV0FBV3NFLFdBQVd0RTtNQUN4QixHQUFHLGtCQUFrQkE7T0FDbkIsV0FBV3NFLFdBQVcscUJBQXFCdEU7O09BQ3hDLEdBQUdBLG1CQUFtQjhGO1FBQ3pCLFdBQVd4QixXQUFXLG9CQUFvQnRFOztRQUN2QyxVQUFVQTtTQUNiLFdBQVdzRSxXQUFXLHNCQUFzQnRFOztTQUN6QyxHQUFHQTtVQUFrQixDQUN4QjtZQUFJK0Y7YUFBUSxxQkFBcUIsd0JBQXdCO1dBQ3pELFdBQVd6QixXQUFXeUI7TUFFeEIsR0FBR2hCO09BQUssQ0FDTiwwQkFBMEIvQyxNQUMxQixhQUFhQSxRQUFRK0M7O09BRWxCO1NBQXFCLFFBQVEvQyx3REFuQkg7SUFzQmpDLHFDQUFxQ2tEO0lWcWZyQyxTQUFTYyxzQkFBc0JqSixHQUM3QixPQUFPLHFCQUFxQkEsRUFDOUI7SUF0a0JBLFNBQVNrSixzQkFBdUJsSixFQUFHNEI7TUFDakMsT0FBUTVCO2dCQUVOLEdBQUk0QixLQUFLNUIsV0FBWSxnQkFFckIsT0FBTyxlQUFlNEI7ZUFFdEIsT0FBTzVCLElBQUk0QjtTQUVmO0lBNmlCQSxTQUFTdUgsdUJBQXdCbkosRUFBRzRCLEdBQ2xDLE9BQU8sc0JBQXNCNUIsRUFBRTRCLEVBQ2pDO0lBOVFBLFNBQVN3SCwyQkFBNEJwSjtNQUNuQyxJQUFNLEVBQUUsc0JBQXNCQSxHQUN4QixNQUFNK0ksTUFBTTdJLEdBQ1o7TUFDTixLQUFPMEIsSUFBSTFCLEVBQUcwQixJQUFLLEVBQUVBLEtBQUssdUJBQXVCNUIsRUFBRTRCO01BQ25ELE9BQU9ELENBQ1Q7SUE1UUEsU0FBUzBIO01BQ1AsNENBQ0Y7SUF6QkEsU0FBU0Msc0JBQXVCdEosRUFBRzRCLEVBQUdhO01BRXBDO01BQ0EsR0FBSXpDO09BQXNCLENBQ3hCLEdBQUk0QixLQUFLNUI7U0FBWSxDQUNuQixPQUFPLG9CQUFxQnlDLEdBQzVCLEdBQUliLFNBQVM1QixJQUFLLFFBQ2xCO1FBRUYsNEJBQTZCQTtNQUUvQixJQUFJNEIsS0FBS2E7TUFDVCxRQUNGO0lBaU1BLFNBQVM4RyxlQUFnQnZKLEVBQUc0QixFQUFHYTtNQUM3QixHQUFJYixXQUFXNUIsSUFBSztNQUNwQixPQUFPLHNCQUF1QkEsRUFBRzRCLEVBQUdhLEVBQ3RDO0lNNUpBLFNBQVMrRyxTQUFTQyxHQUFJeEI7TUFDcEIsVUFBVSxjQUNWLFVBQVV3QixHQUNWLGFBQWF4QixLQUNmO0lBQ0EseUJBQXlCWDtJQUN6QixpQ0FBaUNrQztJQUVqQzs7YUFBdUMzSDtNQUNyQztRQUNFLHNCQUFzQnRDLFFBQVFzQztZQUN2QjhILEtBQ1AscUJBQXFCLGdCQUpLO0lBTzlCOzs7TUFDRTtRQUNFLE9BQU8sa0JBQWtCcEs7WUFDbEJvSyxLQUNQLHFCQUFxQixnQkFKRztJQU81Qjs7YUFBb0MzSSxPQUFPeUcsSUFBSW1DLFdBQVcvSDtNQUN4RDtRQUNFLEdBQUd0QztTQUNELGtCQUFrQkEsUUFBU2tJLElBQUttQyxXQUFZL0g7O1NBRTVDLGtCQUFrQnRDLFFBQVNrSSxJQUFLbUMsV0FBWS9ILElBQUtiO1lBQzVDMkksS0FDUCxxQkFBcUI7TUFFdkIsUUFUeUI7SUFXM0I7O2FBQW1DM0ksT0FBT1csRUFBRWlJLFdBQVcvSDtNQUNyRDtRQUNFLEdBQUd0QztTQUNELElBQUlzSyxLQUFPLGlCQUFpQnRLLFFBQVNvQyxFQUFHaUksV0FBWS9IOztTQUVwRCxJQUFJZ0ksS0FBTyxpQkFBaUJ0SyxRQUFTb0MsRUFBR2lJLFdBQVkvSCxJQUFLYjtRQUMzRCxPQUFPNkk7WUFDQUYsS0FDUCxxQkFBcUIsZ0JBUkM7SUFXMUI7OztNQUNFO1FBQ0Usa0JBQWtCcEssU0FDbEI7WUFDT29LLEtBQ1AscUJBQXFCLGdCQUxFO0lBelAzQixTQUFTRyxhQUFhakYsTUFDcEIsVUFBVSxjQUNWLFlBQVlBLElBQ2Q7SUFDQSxxQ0FBcUNJLE1BQ25DLE9BQVExRixZQUFZMEYsSUFETTtJQUc1Qjs7YUFBeUNBO01BQ3ZDLEtBQ0UsT0FBTyxtQkFBbUIsUUFBUUEsaUJBQzNCMEUsS0FDUCxTQUo0QjtJQU9oQzs7YUFBd0MxRSxLQUFNc0QsS0FBTUM7TUFDbEQ7UUFDRSxrQkFBa0IsUUFBUXZELFlBQVlzRCxPQUN0QztZQUNPb0IsS0FDUCx3QkFBd0JBLElBQUtuQixZQUxGO0lBUS9COzthQUF3Q3ZELEtBQU11RDtNQUM1QztRQUNFLGtCQUFrQixRQUFRdkQsT0FDMUI7WUFDTzBFLEtBQ1Asd0JBQXdCQSxJQUFLbkIsWUFMRjtJQVEvQjs7YUFBMEN2RCxLQUFNdUQ7TUFDOUM7UUFDRSxPQUFPLG9CQUFvQixRQUFRdkQ7WUFDNUIwRSxLQUNQLHdCQUF3QkEsSUFBS25CLFlBSkE7SUFPakM7O2FBQXlDdkQ7TUFDdkM7UUFDRSxPQUFPLGlCQUFpQixRQUFRQTtZQUN6QjBFLEtBQ1AscUJBQXFCLGdCQUpPO0lBT2hDOzthQUF5QzFFLEtBQU11RDtNQUM3QztRQUNFLElBQUlqRyxFQUFJLG1CQUFtQixRQUFRMEM7UUFDbkMsbUJBQW1CLFFBQVFBO1FBQzNCLE9BQU8xQztZQUNBb0gsS0FDUCx3QkFBd0JBLElBQUtuQixZQU5EO0lBU2hDOzthQUF1Q3ZELEtBQU1uRCxFQUFHMEc7TUFDOUMsSUFBVyxPQUFFLHFCQUNMO01BQ1IsUUFBUXdCLE9BQU9sSTtPQUFFLE9BQ1JrSTt1QkFDVSxPQUFPRCxnQkFBaUI7dUJBQ3hCLE9BQU9BLGdCQUFpQjt1QkFFdkMsT0FBT0Esa0JBQWtCQSxnQkFDekI7dUJBQ2dCLE9BQU9BLGVBQW1CO3lCQUMxQixPQUFPQSxlQUFtQjtxQkFDMUIsT0FBT0EsY0FBbUI7dUJBQzFCLE9BQU9BLGdCQUFtQjtxQkFDMUIsT0FBT0EsY0FBbUI7eUJBQzFCLE9BQU9BLGtCQUFtQjs7TUFHOUM7UUFDRTtTQUFPLEdBQUUsaUJBQWlCLFFBQVE5RSxNQUFPbUQ7U0FDbkI7VUFBRSxrQkFBa0IsUUFBUW5EO1FBQ2xELHNCQUFzQmdGO1FBQ3RCLFdBQVdULFNBQVNDLEdBQUkzSDtZQUNqQjZILEtBQ1Asd0JBQXdCQSxJQUFLbkIsWUF4Qkg7SUE0QjlCOzthQUF5QzBCLEVBQUduSyxFQUFHeUk7TUFDN0M7UUFDRSxtQkFBbUIsUUFBUTBCLEdBQUksUUFBUW5LO1lBQ2hDNEosS0FDUCx3QkFBd0JBLElBQUtuQixZQUpEO0lBT2hDOzthQUF1Q3ZELEtBQU11RDtNQUMzQztRQUNFLElBQUkyQixTQUFXLGlCQUFpQixRQUFRbEY7UUFDeEMsT0FBTyxtQkFBbUJrRjtZQUNuQlIsS0FDUCx3QkFBd0JBLElBQUtuQixZQUxIO0lBUTlCOzthQUF3Q3ZELEtBQU11RDtNQUM1QztRQUNFLElBQUkyQixTQUFXLGtCQUFrQixRQUFRbEY7UUFDekMsT0FBTyxtQkFBbUJrRjtZQUNuQlIsS0FDUCx3QkFBd0JBLElBQUtuQixZQUxGO0lBUS9COzthQUEwQzRCLE9BQVFDLE9BQVEvRixLQUFNa0U7TUFDOUQ7UUFDRSxvQkFBb0IsUUFBUTZCLFFBQVMsUUFBUS9GLE1BQU84RjtRQUNwRDtZQUNPVCxLQUNQLHdCQUF3QkEsSUFBS25CLFlBTEE7SUFRakM7O2FBQTJDdkQsS0FBTXVEO01BQy9DO1FBQ0UsSUFBSThCLEtBQU8scUJBQXFCLFFBQVFyRjtRQUN4QyxPQUFPLHdCQUF3QnFGO1lBQ3hCWCxLQUNQLHdCQUF3QkEsSUFBS25CLFlBTEM7SUFRbEM7O2FBQTBDdkQsS0FBTXVEO01BQzlDO1FBQ0UsT0FBTyxvQkFBb0IsUUFBUXZEO1lBQzVCMEUsS0FDUCx3QkFBd0JBLElBQUtuQixZQUpBO0lBT2pDOzthQUFxRG1CLElBQUtuQjtNQUN4RCxJQUFJN0MsV0FBYTtNQUNqQixHQUFJNkMsY0FBYzdDO09BQVksQ0FDNUIsSUFBSU0sS0FBTyxtQkFBbUIwRCxTQUFVQSxZQUFhQSxTQUFVQTtRQUMvRCxxQkFBcUJoRSxXQUFZTTs7T0FDNUIscUJBQ2dCLGVBTm1CO0lBUzVDOzthQUFnRGtFO01BVzlDLElBQUlJO01BQ0osR0FBSTtPQUFtQjs7T0FFaEIsR0FBSTtRQUF3Qjs7UUFFNUIsR0FBSTtTQUE4Qjs7U0FFbEMsR0FBSTtVQUEwQjs7VUFFOUIsR0FBSTtXQUEyQjs7V0FFL0IsR0FBSTtZQUFtQjs7WUFFdkIsR0FBSSxvQkFBcUI7TUFtQmhDO2NBRUVKO2NBQ0FBO2NBQ0FJO2NBQ0FKO2NBQ0FBO2NBQ0FBO2NBQ0FBO2NBQ0FBO2NBQ0FBO2NBQ0FBO2NBQ0FBO2NBQ0FBLGlCQXhEbUM7SUE0RHZDLHFDQUFxQ0w7SUNwTXJDLFNBQVNVLGNBQWNsRztNQUNyQixJQUFJekUsRUFBSSxpQkFBaUJ5RSxNQUN6QixLQUFLekUsRUFBRyxPQUNSLE9BQU9BLFVBQVU7SU5BbkIsU0FBUzRLLGNBQWVwSDtNQUN0QixLQUFJOUM7T0FDRixnQ0FBOEI7TUFDaEMsdUJBQXVCQSx5QkFBMEI4QyxJQUNuRDtJTUFBO0tBQWM7TUFBRSxjQUFjNkI7O01BQXFCO0tBNkQ5QjtJQUNyQixHQUFJO0tBQXFCO2FBQ0t3RixxQkFBcUJaLGFBQWFZOztLQUN6RDthQUN1QkEscUJBQXFCdkMsYUFBYXVDO0lBRWhFO2tDQUFtRHZDO0lBZW5ELFNBQVN5QyxrQkFBa0IzRjtNQUN6QjtPQUFTLEtBQUUsZUFBZUE7T0FDakIsS0FBRTtPQUNJLFdBQUUsb0JBQW9CQTtPQUNqQ21EO01BQ0osSUFBVSxJQUFGeEcsSUFBT0EsSUFBSStJLHdCQUF5Qi9JO09BQUssQ0FDL0MsSUFBSWdILEVBQUkrQixpQkFBaUIvSTtRQUN6QjtVQUFHLGtCQUFrQmdIOzs7O2FBQ2JSLE9BQU9BLGtCQUFrQlE7U0FDL0I7O2VBQVlBO2lCQUFjQTtlQUFjLGVBQWVBLGNBQWMzRDtNQUV6RSxLQUFLbUQsT0FBTztPQUFxQixDQUMvQixJQUFJdkQsS0FBTyxjQUFjSTtRQUN6QixHQUFJSixRQUFRO1NBQTRCLENBQ3RDLElBQUkrRCxRQUFVL0QsZ0JBQWdCaUYsYUFBYWpGO1VBQzNDLHNCQUFzQitEO1VBQ3RCOztnQkFBWUE7a0JBQWNBO2dCQUFjLGVBQWVBLGNBQWMzRDtNQUd6RSxHQUFJbUQsSUFBTSxPQUFPQTtNQUNqQiw4Q0FBOENFLFdBQ2hEO0lBc0ZBLFNBQVN1QyxzQkFBc0I1RjtNQUM3QixJQUFTLEtBQUUsa0JBQWtCQSxNQUN2QixFQUFFLG1CQUFtQko7TUFDM0IsT0FBT2xELEtBQ1Q7SU4xS0EsU0FBU21KO01BQ1Asb0JBQW9CdkssMkJBQTZCO0lRNENuRCxTQUFTd0ssZ0JBQWlCOUY7TUFDeEIsSUFBWSxRQUFFM0YsbUJBQ1IsRUFBRSx3QkFBd0IyRjtNQUVoQyxHQUFHK0YsV0FDR0EsZUFDQUEsWUFBWWpMLE1BQU1tSTtPQUN0QixPQUFPLHdCQUF3QjhDLFlBQVlqTDtNQUM3QyxHQUFHVCw4QkFDR0EsMkJBQTJCUztPQUMvQixPQUFPLHdCQUF3QlQsMkJBQTJCUztNQUM1RCxzQkFDRjtJRWdOQSxTQUFTa0wsZ0JBQWdCQyxLQUFNQyxLQUFNQyxLQUFNQyxLQUFNQyxLQUFNQztNQUNyRCxHQUFHQSxXQUFZLENBQ2IsVUFBVUQsVUFDVjtNQUVGLElBQUlFO01BQ0osSUFBVSxJQUFGNUosRUFBSXdKLFNBQVF4SixPQUFRQTtPQUFLLENBQy9CLElBQUlELEVBQUl1SixVQUFVQyxPQUFLdko7UUFDdkIsVUFBVXVKLE9BQUt2SixLQUFNRCxNQUFNNEosUUFBU0M7UUFDcEMsT0FBTzdKLFVBQVc0SjtNQUVwQixVQUFVRCxRQUFRRTtNQUNsQixRQUNGO0lDclVBLElBQUlDO0lBS0osU0FBU0M7TUFDUCxHQUFHRCxjQUFlLE9BQ1RBO01BRVQ7YUFBUzthQUE4QywwQ0FDekQ7SUEyTEEsU0FBU0Usb0JBQW9COUwsRUFBRXVCO01BQzdCO09BQU0sRUFBRTtPQUNGLEdBQUMsdUJBQXVCdkIsRUFBRUcsV0FBV29CO09BQ3JDLEVBQUV3SztNQUNSLFFBQVFwRyxlQUFlQSxhQUFhQSxJQUN0QztJQytMQSxJQUFJcUc7SUFDSixVQUFXdk07S0FBb0M7O0tBQzdCO1FBRWQsU0FBU3dNLFlBQVlDLE1BQVEsWUFBWUEsSUFBTTtRQUMvQzs7aUJBQXFDbko7VUFDbkMsSUFBVyxJQUFGaEIsSUFBT0EsSUFBSXJDLGlCQUFrQnFDLElBQUssR0FDckNyQyxVQUFVcUMsT0FBT2dCLEVBQUcsT0FBT2hCLENBRlA7UUFLNUIsdUNBQTRCO1FBSTVCO1VBQ0UsZUFBZ0Isa0JBQWtCa0ssWUFBWXZNLFVBRHpDLENBWk87OztLQWlCYjs7Z0JBRUQsZUFBZ0IsbUJBQWtCRCxxQkFEcEI7SUFLbEI7O2FBQXlDc0QsR0FDdkMsZ0JBQWdCQSxFQUFHckQsa0JBQ25CLGVBQWVxRCxFQUZlO0lBS2hDOzthQUEwQ0E7TUFDeEMsSUFBSWhCLEVBQUksZ0JBQWdCZ0I7TUFDeEIsT0FBUWhCLE1BQU1zRyxVQUNWQSxVQUFZM0ksbUJBQW1CcUMsQ0FISjtJTjFNakMsU0FBU29LLGdCQUFnQjlCLEVBQUVuSztNQUN6QixJQUFXLE9BQUUsa0JBQWtCbUssR0FDcEIsT0FBRSxrQkFBa0JuSztNQUMvQixHQUFHa00saUJBQWlCQztPQUNsQjs7TUFDRixLQUFJRDtPQUNGO01BQ0YscUJBQXFCQSxZQUFhQyxZQUNwQztJSDRCQSxTQUFTQyxpQkFBa0J0TSxHQUFLLE9BQU8sV0FBV0EsRUFBSTtJSzJCdEQsSUFBSXVNO0lBSUosU0FBU0MsZ0NBQWlDQztNQUN4Qyx3QkFBd0JBLEtBQ3hCLFFBQ0Y7SUwvSEEsU0FBU0Msb0JBQXFCMU07TUFDNUIsR0FBSSxTQUFVQTtPQUFJLENBQ2hCLEdBQUksU0FBU0EsOEJBQStCO1FBQzVDLEdBQUlBLE9BQVE7UUFDWjtNQUVGLE9BQU8sTUFBTUEsTUFDZjtJVTVGQSxJQUFJNk0scUJBQXVCM0Q7SUF3SDNCLFNBQVM0RCxZQUFhQztNQUNwQixHQUFHQSxlQUFlNUs7T0FBSyxDQUNyQixJQUFRLElBQUUsY0FDQSxNQUFFLDJCQUEyQjZLO1FBQ3ZDLEdBQUlDO1NBQW1CLGNBQ1A5Szs7U0FFWCxDQUNILEdBQUc0SyxxQkFBcUJBLGtCQUFrQkU7V0FBYSxDQUNyRCxJQUFJdkssTUFBUWtFLFdBQVdtRyxrQkFBa0JFO1lBQ3pDLE1BQU1GO1lBQ04sY0FBY3JLO1VBRWhCLGdCQUFnQnVLLE1BQU1GO1VBQ3RCLGVBQWVFO1VBQ2YsbUJBQW1CQTs7T0FFaEIsQ0FDTDtTQUFJQztVQUFRO1lBQWVIO1lBQWFBO1lBQWFBO1lBQWlCQSxxQkFBcUJBO1FBQzNGLGVBQWVHO1FBQ2YsbUJBQW1CQSxNQUV2QjtJYnhLQSxTQUFTQztNQUNQLDRDQUNGO0lhd1VBLFNBQVNDLHdCQUF3QkM7TUFDL0IsSUFBUyxLQUFFUixpQkFBaUJRLFFBQ3RCLEVBQUVOO01BQ1I7T0FBRyxHQUNFN0ksS0FBSzZJO1FBQWlCLENBQ3ZCLEdBQUdBO1VBQXNCLENBQ3ZCLGdCQUFnQixxQkFBcUJBO1dBQ3JDLEtBQUtBO1dBQ0wsbUJBQW1CQTtXQUNuQjtTQUVGLEdBQUdBLG1CQUFtQkEsbUJBQW9CLFNBQy9CQTtTQUVYLElBQUlPLFNBQVdQO1NBQ2YsWUFBYUE7U0FDYixHQUFHTyxZQUFZUCxnQkFBaUIsU0FDckJBOztPQUdOQSxZQUFZN0k7TUFDckIsT0FBT0EsSUFBSTZJLGdCQUNiO0lDcmFBLFNBQVNRLGNBQWNDO01BRXJCLFVBQVUvTiw0QkFBNkIsb0JBQ3ZDLFFBQ0Y7SUNKQTtLQUFJZ087TUFBUyxTQUFXcEY7U0FDcEI7U0FFQTtVQUFTO1VBQ0k7VUFDRDtVQUNJLFlBQUUsYUFBYXVGO1VBQ1Y7VUFFVixPQUFFSztVQUVZLDRCQUFTRDtTQUVsQyxTQUFTRyxRQUFRcEwsRUFBR3FMLE1BQU9DLFNBQVVDO1dBQ2pDLFVBQVd2TCxrQkFBbUIsT0FBT29MO1dBQ3JDLFVBQVdDO1lBQXVCLFNBQVFBLGtCQUFpQkM7cUJBQVcsV0FBV3RMO3FCQUFLLFVBQVVBLEVBQUdxTCxNQUFPQyxTQUFVQztXQUNwSCxPQUFPLFdBQVd2TCxFQUN0QjtTQUVBLFNBQVMwTCxXQUFXQyxNQUFPeE47V0FDdkIsYUFBYXdOO1dBQ2IsWUFBWXhOO1dBQ1o7V0FDQSx1QkFDSjtTQUNBLHVCQUF1QixjQUFjaU47U0FFckMsU0FBU1EsYUFBYUQ7V0FDbEIsYUFBYUE7V0FDYixZQUFZQTtXQUNaO1dBQ0EsdUJBQ0o7U0FDQSx5QkFBeUIsY0FBY1A7U0FFdkMsU0FBU1MsYUFBYUY7V0FDbEIsYUFBYUEsTUFDYix1QkFDSjtTQUNBLHlCQUF5QixjQUFjUDtTQUV2QyxTQUFTVSxVQUFVM08sR0FDZixTQUFRME4sVUFBVTFOLEtBQUtBLElBQUkwTixPQUMvQjtTQUVBLFNBQVNFLGFBQWE1TjtXQUNsQixHQUFJQSxRQUNBLFFBQVFBO1dBQ1osR0FBSUEsU0FDQSxRQUFRQSxRQUFTLFdBQVdBO1dBQ2hDLFFBQVFBLFFBQVMsV0FBV0EsZUFBZ0IsV0FBV0EsVUFDM0Q7U0FFQSxTQUFTNE8sYUFBYUM7V0FDbEIsS0FBS0E7V0FDTCxJQUFJNUwsT0FBUzRMO1dBQ2IsR0FBSTVMLGNBQWMsV0FBVzRMLElBQUtsQjtZQUFrQixPQUN4QzFLO3FCQUNJO3FCQUNBLE9BQU80TDtxQkFDUCxPQUFPQSxTQUFTQSxTQUFTckI7c0JBQ3hCLE9BQU9xQixVQUFVQSxTQUFTQSxTQUFTckIsUUFBUUE7V0FHNUQsT0FBT3FCLEdBQ1g7U0FFQSxTQUFTQyxLQUFLak0sR0FDVixJQUFJaEIsRUFBSWdCLFNBQ1IsTUFBT0EsSUFBSWhCLFNBQVMsQ0FDcEIsV0FBV0EsS0FDZjtTQUVBLFNBQVNtTixZQUFZL0w7V0FDakIsSUFBTSxNQUFNK0YsTUFBTS9GLFFBQ1osTUFDTixRQUFTcEIsSUFBSW9CLE9BQVEsRUFDZnBCLE9BRU4sT0FBTy9CLENBQ1g7U0FFQSxTQUFTbVAsU0FBU2pQO1dBQ2QsR0FBSUEsTUFBTyxPQUFPLFdBQVdBLEdBQzdCLE9BQU8sVUFBVUEsRUFDckI7U0FFQSxTQUFTa1AsSUFBSXROLEVBQUdZO1dBQ1o7WUFBUSxJQUFFWjtZQUNGLElBQUVZO1lBQ0osTUFBTXdHLE1BQU1tRztZQUNSO1lBQ0QsS0FBRTNCO1lBQ1ArQjtZQUFLMU47V0FDVCxJQUFLQSxNQUFPQSxJQUFJdU4sSUFBS3ZOO1lBQUssQ0FDdEIsTUFBTUQsRUFBRUMsS0FBS1csRUFBRVgsS0FBS3dOO2FBQ3BCLFFBQVFFLE9BQU9EO2FBQ2YsRUFBRXpOLEtBQUswTixNQUFNRixRQUFRQztXQUV6QixNQUFPek4sSUFBSXNOO1lBQUssQ0FDWixNQUFNdk4sRUFBRUMsS0FBS3dOO2FBQ2IsUUFBUUUsUUFBUUQ7YUFDaEIsRUFBRXpOLE9BQU8wTixNQUFNRixRQUFRQztXQUUzQixHQUFJRCxVQUFXLE9BQU9BO1dBQ3RCLE9BQU9uUCxDQUNYO1NBRUEsU0FBU3NQLE9BQU81TixFQUFHWTtXQUNmLEdBQUlaLFlBQVlZLFNBQVUsT0FBTyxJQUFJWixFQUFHWSxHQUN4QyxPQUFPLElBQUlBLEVBQUdaLEVBQ2xCO1NBRUEsU0FBUzZOLFNBQVM3TixFQUFHeU47V0FDakIsSUFBTSxFQUFFek4sU0FDRixNQUFNb0gsTUFBTTdJLEdBQ1QsS0FBRXFOLEtBQ1ArQixJQUFLMU47V0FDVCxJQUFLQSxNQUFPQSxJQUFJMUIsRUFBRzBCO1lBQUssQ0FDcEIsTUFBTUQsRUFBRUMsS0FBS3lOLE9BQU9EO2FBQ3BCLFFBQVEsV0FBV0UsTUFBTUQ7YUFDekIsRUFBRXpOLEtBQUswTixNQUFNRixRQUFRQzthQUNyQjtXQUVKLE1BQU9EO1lBQVcsQ0FDZCxFQUFFeE4sT0FBT3dOLFFBQVFDLEtBQ2pCLFFBQVEsV0FBV0QsUUFBUUM7V0FFL0IsT0FBT3BQLENBQ1g7U0FFQTs7a0JBQXFDMkM7V0FDakMsSUFBSTdDLEVBQUksV0FBVzZDO1dBQ25CLEdBQUlyRCxjQUFjUSxPQUFRLE9BQ2YsY0FBYztXQUZ6QixJQUlNLEVBQUVSLFdBQWMsRUFBRVE7V0FDeEIsR0FBSUE7WUFBVyxXQUNBdU8sV0FBVyxTQUFTM00sRUFBRyxTQUFTWSxJQUFLaEQ7V0FFcEQsV0FBVytPLFdBQVcsT0FBTzNNLEVBQUdZLEdBQUloRCxVQVRiO1NBVzNCLDRCQUE0QitPO1NBRTVCOztrQkFBdUMxTDtXQUNuQyxJQUFNLEVBQUUsV0FBV0EsR0FDYixFQUFFckQ7V0FDUixHQUFJb0MsVUFBVTVCLE9BQVEsT0FDWCxjQUFjO1dBSHpCLElBS0l3QyxFQUFJeEM7V0FDUixHQUFJQTtZQUFXLENBQ1gsR0FBSSxVQUFVNEIsSUFBSVksR0FBSSxXQUFXaU0sYUFBYTdNLElBQUlZO2FBQ2xELElBQUksYUFBYSxTQUFTQTtXQUU5QixXQUFXK0wsV0FBVyxTQUFTL0wsRUFBRyxTQUFTWixJQUFLQSxNQVh2QjtTQWE3Qiw4QkFBOEI2TTtTQUU5Qjs7a0JBQXVDNUw7V0FDbkMsV0FBVzZMLGFBQWFsUCxhQUFhLFdBQVdxRCxTQUR2QjtTQUc3Qiw4QkFBOEI2TDtTQUU5QixTQUFTZ0IsU0FBUzlOLEVBQUdZO1dBQ2pCO1lBQVEsSUFBRVo7WUFDRixJQUFFWTtZQUNKLE1BQU13RyxNQUFNMkc7WUFDUDtZQUNGLEtBQUVuQztZQUNQM0w7WUFBR2lPO1dBQ1AsSUFBS2pPLE1BQU9BLElBQUkrTixJQUFLL047WUFBSyxDQUN0QixhQUFhRCxFQUFFQyxLQUFLZ08sU0FBU3JOLEVBQUVYO2FBQy9CLEdBQUlpTyxlQUFnQixDQUNoQixjQUFjUixLQUNkLGdCQUNHO2FBQ1AsRUFBRXpOLEtBQUtpTztXQUVYLElBQUtqTyxJQUFJK04sSUFBSy9OLElBQUk4TixJQUFLOU47WUFBSyxDQUN4QixhQUFhRCxFQUFFQyxLQUFLZ087YUFDcEIsR0FBSUM7Y0FBZ0IsY0FBY1I7O2NBQzdCLENBQ0QsRUFBRXpOLE9BQU9pTyxXQUNUO2FBRUosRUFBRWpPLEtBQUtpTztXQUVYLEtBQU9qTyxJQUFJOE4sSUFBSzlOLElBQUssRUFDZkEsS0FBS0QsRUFBRUM7V0FFYixLQUFLM0I7V0FDTCxPQUFPQSxDQUNYO1NBRUEsU0FBUzZQLFlBQVluTyxFQUFHWSxFQUFHeEI7V0FDdkIsSUFBSXdOO1dBQ0osR0FBSSxXQUFXNU0sRUFBR1k7WUFBUyxRQUNmLFNBQVNaLEVBQUdZOztZQUNqQixDQUNILFFBQVEsU0FBU0EsRUFBR1osR0FDcEIsU0FBUVo7V0FFWixRQUFRLGFBQWF3TjtXQUNyQixVQUFXQTtZQUFvQixDQUMzQixHQUFJeE4sS0FBTSxVQUFTd04sTUFDbkIsV0FBV0MsYUFBYUQ7V0FFNUIsV0FBV0QsV0FBV0MsTUFBT3hOLEtBQ2pDO1NBRUEsU0FBU2dQLGNBQWNwTyxFQUFHWSxFQUFHeEI7V0FDekIsSUFBTSxFQUFFWSxTQUNGLE1BQU1vSCxNQUFNN0ksR0FDUixRQUFHcUMsRUFDSixLQUFFZ0wsS0FDUDNMLEVBQUdpTztXQUNQLElBQUtqTyxNQUFPQSxJQUFJMUIsRUFBRzBCO1lBQUssQ0FDcEIsYUFBYUQsRUFBRUMsS0FBS3dOO2FBQ3BCLFFBQVEsV0FBV1MsYUFBYVI7YUFDaEMsY0FBY0E7YUFDZCxFQUFFek4sS0FBS2lPLGVBQWlCQSxhQUFhUixLQUFPUTtXQUVoRCxJQUFJLGFBQWE1UDtXQUNqQixVQUFXQTtZQUFnQixDQUN2QixHQUFJYyxLQUFNLE1BQUtkLEVBQ2YsV0FBV3VPLGFBQWF2TztXQUMxQixXQUFXcU8sV0FBV3JPLEVBQUdjLEtBQy9CO1NBRUE7O2tCQUEwQzZCO1dBQ3RDLElBQUk3QyxFQUFJLFdBQVc2QztXQUNuQixHQUFJckQsY0FBY1EsT0FBUSxPQUNmLFNBQVM7V0FGcEIsSUFJTSxFQUFFUixXQUFjLEVBQUVRO1dBQ3hCLEdBQUlBLFVBQ0EsT0FBTyxjQUFjNEIsRUFBRyxTQUFTWSxHQUFJaEQ7V0FDekMsT0FBTyxZQUFZb0MsRUFBR1ksRUFBR2hELFVBUkc7U0FVaEMsNkJBQTZCK087U0FFN0I7O2tCQUE0QzFMO1dBQ3hDLElBQU0sRUFBRSxXQUFXQSxHQUNiLEVBQUVyRDtXQUNSLEdBQUlvQyxVQUFVNUIsT0FBUSxPQUNYLFNBQVM7V0FIcEIsSUFLSXdDLEVBQUl4QztXQUNSLEdBQUlBLFVBQVcsV0FDQXlPLGFBQWE3TSxJQUFJWTtXQUVoQyxPQUFPLGNBQWNBLEVBQUcsU0FBU1osR0FBSUEsT0FWUDtTQVlsQywrQkFBK0I2TTtTQUUvQjs7a0JBQTRDNUw7V0FDeEMsV0FBVzZMLGFBQWFsUCxhQUFhLFdBQVdxRCxTQURsQjtTQUdsQywrQkFBK0I2TDtTQUUvQjs7b0JBQ0ksV0FBV0gsV0FBVy9PLGFBQWFBLFVBRFQ7U0FHOUI7OztXQUNJLElBQVMsS0FBRUEsVUFDRCxVQUFNaVAsZUFBY2pQO1dBQzlCLGVBQWN3QjtXQUNkLE9BQU9pUCxLQUpxQjtTQU1oQzs7b0JBQ0ksV0FBV3ZCLGVBQWNsUCxXQURHO1NBSWhDOztvQkFDSSxXQUFXK08sV0FBVy9PLGlCQURDO1NBRzNCOztvQkFDSSxXQUFXaVAsYUFBYSxTQUFTalAsWUFEUjtTQUc3Qjs7O1dBQ0ksV0FBV2tQLGFBQWFsUCxnQkFBa0JBLGFBQWNBLFdBRC9CO1NBSzdCLFNBQVMwUSxhQUFhdE8sRUFBR1k7V0FDckI7WUFBUSxJQUFFWjtZQUNGLElBQUVZO1lBQ0osRUFBRW1OLE1BQU1DO1lBQ1IsRUFBRSxZQUFZelA7WUFDWCxLQUFFcU47WUFDUDJDO1lBQVNkO1lBQU94TjtZQUFHdU87WUFBS0M7V0FDNUIsSUFBS3hPLE1BQU9BLElBQUk4TixNQUFPOU47WUFBRyxDQUN0QixNQUFNRCxFQUFFQzthQUNSLElBQVcsSUFBRmlCLElBQU9BLElBQUk4TSxNQUFPOU07Y0FBRyxDQUMxQixNQUFNTixFQUFFTTtlQUNSLFVBQVVzTixNQUFNQyxNQUFNblEsRUFBRTJCLElBQUlpQjtlQUM1QixRQUFRLFdBQVdxTixVQUFVYjtlQUM3QixFQUFFek4sSUFBSWlCLEtBQUtxTixVQUFVZCxRQUFRQztlQUM3QixFQUFFek4sSUFBSWlCLFVBQVV1TTtXQUd4QixLQUFLblA7V0FDTCxPQUFPQSxDQUNYO1NBRUEsU0FBU29RLGNBQWMxTyxFQUFHWTtXQUN0QixJQUFNLEVBQUVaLFNBQ0YsTUFBTW9ILE1BQU03SSxHQUNULEtBQUVxTixLQUNELFFBQ04yQyxRQUFTdE87V0FDYixJQUFLQSxNQUFPQSxJQUFJMUIsRUFBRzBCO1lBQUssQ0FDcEIsVUFBVUQsRUFBRUMsS0FBS1csSUFBSTZNO2FBQ3JCLFFBQVEsV0FBV2MsVUFBVWI7YUFDN0IsRUFBRXpOLEtBQUtzTyxVQUFVZCxRQUFRQztXQUU3QixNQUFPRDtZQUFXLENBQ2QsRUFBRXhOLE9BQU93TixRQUFRQyxLQUNqQixRQUFRLFdBQVdELFFBQVFDO1dBRS9CLE9BQU9wUCxDQUNYO1NBRUEsU0FBU3FRLFVBQVV6USxFQUFHRTtXQUNsQixJQUFJRSxLQUNKLE1BQU9GLFFBQVMsVUFDaEIsT0FBTyxTQUFTRixFQUNwQjtTQUVBLFNBQVMwUSxrQkFBa0IxUSxFQUFHdUI7V0FDMUIsSUFBSXJCLEVBQUksU0FBU0YsU0FBVXVCO1dBRTNCLEdBQUlyQixRQUFTLE9BQU8sYUFBYUYsRUFBR3VCO1dBQ3BDLElBQUksVUFBVXJCO1dBSGQ7WUFLTSxFQUFFLFFBQVFBO1lBQ1YsRUFBRSxVQUFXQTtZQUNiLEVBQUUsUUFBUUE7WUFDVixFQUFFLFVBQVdBO1lBRVosR0FBRSxrQkFBa0I0QixFQUFHYztZQUN2QixHQUFFLGtCQUFrQkYsRUFBR2lEO1lBQ3JCLEtBQUUsa0JBQWtCLE9BQU83RCxFQUFHWSxHQUFJLE9BQU9FLEVBQUcrQztZQUV6QzthQUFFO2VBQU8sT0FBT2dMLEdBQUksVUFBVSxTQUFTLFNBQVNFLEtBQU1GLElBQUtDLElBQUsxUTtlQUFLLFVBQVUwUSxPQUFRMVE7V0FDbkcsS0FBS21RO1dBQ0wsT0FBT0EsT0FDWDtTQUlBLFNBQVNTLGFBQWFDLEdBQUlDO1dBQ3RCLGtCQUFnQkQsY0FBYUMsZ0JBQWdCRCxLQUFLQyxNQUN0RDtTQUVBOztrQkFBMENqTztXQUN0QztZQUFNLEVBQUUsV0FBV0E7WUFDYixFQUFFckQ7WUFBYyxFQUFFUTtZQUNmLEtBQUVSLGNBQWNRO1lBQ3JCK1E7V0FDSixHQUFJL1E7WUFBVyxDQUNYLEdBQUl3QyxRQUFTLE9BQU95TDthQUNwQixHQUFJekwsUUFBUyxPQUFPaEQ7YUFDcEIsR0FBSWdELFVBQVUsT0FBTzthQUNyQixNQUFNLFNBQVNBO2FBQ2YsR0FBSXVPLE1BQU12RCxLQUFNLFdBQ0RlLFdBQVcsY0FBYzNNLEVBQUdtUCxLQUFNL1A7YUFFakQsSUFBSSxhQUFhK1A7V0FFckIsR0FBSSxhQUFhblAsU0FBVVk7WUFDdkIsV0FBVytMLFdBQVcsa0JBQWtCM00sRUFBR1ksR0FBSXhCO1dBQ25ELFdBQVd1TixXQUFXLGFBQWEzTSxFQUFHWSxHQUFJeEIsS0FqQmQ7U0FvQmhDLDZCQUE2QnVOO1NBRTdCLFNBQVN5QyxzQkFBc0JwUCxFQUFHWSxFQUFHeEI7V0FDakMsR0FBSVksSUFBSTRMLEtBQU0sV0FDQ2UsV0FBVyxjQUFjL0wsRUFBR1osR0FBSVo7V0FFL0MsV0FBV3VOLFdBQVcsYUFBYS9MLEVBQUcsYUFBYVosSUFBS1osS0FDNUQ7U0FDQTs7a0JBQW9EWTtXQUNoRCxHQUFJLFVBQVVBLFVBQVVwQztZQUFhLFdBQ3RCaVAsYUFBYTdNLFVBQVVwQztXQUV0QyxPQUFPO29CQUFzQixTQUFTb0M7b0JBQVUsYUFBYSxTQUFTcEM7b0JBQWNBLGNBQWNvQyxPQUo1RDtTQU0xQzs7a0JBQWtEQTtXQUM5QyxHQUFJQSxjQUFlLE9BQU9xTTtXQUMxQixHQUFJck0sY0FBZSxPQUFPcEM7V0FDMUIsR0FBSW9DLGdCQUFnQixPQUFPO1dBQzNCLE9BQU87b0JBQXNCLFNBQVNBLFNBQVVwQyxXQUFZQSxjQUFjb0MsT0FKdEM7U0FNeEM7O2tCQUE0Q2lCLEdBQ3hDLE9BQU8sV0FBV0Esb0JBQW9CckQsS0FEUjtTQUdsQywrQkFBK0JpUDtTQUUvQjs7a0JBQTRDNUw7V0FDeEMsV0FBVzZMLGFBQWFsUCxhQUFhLFdBQVdxRCxTQURsQjtTQUdsQywrQkFBK0I2TDtTQUUvQixTQUFTdUMsT0FBT3JQO1dBRVo7WUFBTSxFQUFFQTtZQUNGLEVBQUUsWUFBWXpCLElBQUlBO1lBQ2YsS0FBRXFOO1lBQ1AyQztZQUFTZDtZQUFPeE47WUFBR3VPO1lBQUtjO1dBQzVCLElBQUtyUCxNQUFPQSxJQUFJMUIsRUFBRzBCO1lBQUssQ0FDcEIsTUFBTUQsRUFBRUM7YUFDUixZQUFZdU8sTUFBTUE7YUFDbEIsSUFBVyxJQUFGdE4sRUFBSWpCLEVBQUdpQixJQUFJM0MsRUFBRzJDO2NBQUssQ0FDeEIsTUFBTWxCLEVBQUVrQjtlQUNSLGVBQWVzTixNQUFNYyxPQUFPaFIsRUFBRTJCLElBQUlpQixLQUFLdU07ZUFDdkMsUUFBUSxXQUFXYyxVQUFVYjtlQUM3QixFQUFFek4sSUFBSWlCLEtBQUtxTixVQUFVZCxRQUFRQzthQUVqQyxFQUFFek4sSUFBSTFCLEtBQUtrUDtXQUVmLEtBQUtuUDtXQUNMLE9BQU9BLENBQ1g7U0FFQTs7b0JBQ0ksV0FBV3FPLFdBQVcsT0FBTy9PLGtCQURIO1NBSTlCOzs7V0FDSSxJQUFJZ1AsTUFBUWhQLGFBQWFBO1dBQ3pCLEdBQUksVUFBVWdQLE9BQVEsV0FBV0MsYUFBYUQ7V0FDOUM7bUJBQVdEO29CQUFXLE9BQU8sYUFBYSxTQUFTL08sb0JBSHZCO1NBTWhDOztrQkFBMENxRCxHQUN0QyxXQUFXNkwsYUFBYWxQLGFBQWFBLFdBRFQ7U0FJaEMsU0FBUzJSLFFBQVF2UCxFQUFHWTtXQUNoQjtZQUFRLElBQUVaO1lBQ0YsSUFBRVk7WUFDRCxLQUFFZ0w7WUFDQSxPQUFFLFlBQVloTDtZQUNPLDRCQUFFQSxFQUFFb047WUFFekIsT0FBRSxVQUFVTixZQUFZOEI7WUFDckIsVUFBRSxjQUFjeFAsRUFBR3lQO1lBQ3JCLFFBQUUsY0FBYzdPLEVBQUc2TztZQUMzQkU7WUFBZUM7WUFBT25DO1lBQU9RO1lBQVFoTztZQUFHMUI7WUFBR21CO1dBQy9DLEdBQUlnUSxvQkFBb0IzQixJQUFLO1dBQzdCO1dBQ0EsOEJBQThCeE8sUUFBUXlPO1dBQ3RDLElBQUs0QixRQUFRN0IsTUFBTUMsSUFBSzRCLFdBQVlBO1lBQVMsQ0FDekMsZ0JBQWdCbEM7YUFDaEIsR0FBSWdDLFVBQVVFLFFBQVE1QixTQUFTd0I7Y0FBNkI7O2NBQ3hDO2lCQUFZRSxVQUFVRSxRQUFRNUIsT0FBT04sT0FBT2dDLFVBQVVFLFFBQVE1Qjs7Z0JBQVl3QjthQUc5RjthQUNBO2FBQ0EsSUFBSWpRO2FBQ0osSUFBS1UsTUFBT0EsSUFBSTFCLEVBQUcwQjtjQUFLLENBQ3BCLFNBQVMwUCxnQkFBZ0JwUSxRQUFRVTtlQUNqQyxJQUFJLFdBQVd3TixRQUFRQztlQUN2QixVQUFVZ0MsVUFBVUUsUUFBUTNQLE1BQU13TixRQUFRL04sSUFBSWdPO2VBQzlDLFFBQVFoTztlQUNSLEdBQUl1TztnQkFBWSxDQUNaLFVBQVUyQixRQUFRM1AsS0FBS2dPLFNBQVNQLEtBQ2hDOztnQkFDRyxDQUNILFVBQVVrQyxRQUFRM1AsS0FBS2dPLE9BQ3ZCO2FBR1IsTUFBT0E7Y0FBYyxDQUNqQjtlQUNBO2VBQ0EsSUFBS2hPLE1BQU9BLElBQUkxQixFQUFHMEI7Z0JBQUssQ0FDcEIsU0FBU3lQLFVBQVVFLFFBQVEzUCxLQUFLeU4sT0FBT25PLFFBQVFVO2lCQUMvQyxHQUFJd047a0JBQVcsQ0FDWCxVQUFVbUMsUUFBUTNQLEtBQUt3TixRQUFRQyxLQUMvQjs7a0JBQ0csQ0FDSCxVQUFVa0MsUUFBUTNQLEtBQUt3TixNQUN2QjtlQUdSLFVBQVVBO2FBRWQsT0FBT21DLFNBQVNEO1dBR3BCLFlBQVksWUFBWUQsVUFBV0Q7V0FDbkMsUUFBUSxhQUFhM00sUUFBUyxhQUFhNE0sV0FDL0M7U0FFQSxTQUFTSSxRQUFROVAsRUFBR1k7V0FFaEI7WUFBUSxJQUFFWjtZQUNGLElBQUVZO1lBQ0M7WUFDRjtZQUNBLEtBQUVnTDtZQUNQb0U7WUFBT0M7WUFBTUM7WUFBT0M7WUFBT0M7V0FDL0IsTUFBT3JDO1lBQUssQ0FDUixhQUFhL04sSUFBSStOO2FBQ2pCLEtBQUtnQzthQUNMLEdBQUksV0FBV0EsS0FBTW5QLE9BQVEsQ0FDekIsZUFDQTthQUVKLE9BQU9tUDthQUNQLFFBQVFBLEtBQUtFLFlBQVl2QyxPQUFPcUMsS0FBS0U7YUFDckMsUUFBUXJQLEVBQUVvTixXQUFXTixPQUFPOU0sRUFBRW9OO2FBQzlCLEdBQUlpQyxPQUFPakMsSUFBSyxTQUNIa0MsYUFBYXhDO2FBRTFCLFFBQVEsVUFBVXdDLFFBQVFDO2FBQzFCO2NBQUcsQ0FDQyxRQUFRLGNBQWN2UCxFQUFHb1A7ZUFDekIsR0FBSSxXQUFXSSxNQUFPTCxXQUFZO2VBQ2xDOztlQUNLQzthQUNULFlBQVlBO2FBQ1osT0FBTyxTQUFTRCxLQUFNSztXQUUxQjtXQUNBLFFBQVEsYUFBYXROLFFBQVMsYUFBYWlOLE1BQy9DO1NBRUEsU0FBU0YsWUFBWWpELE1BQU82QztXQUN4QjtZQUFXLE9BQUU3QztZQUNBLFNBQUUsWUFBWXZMO1lBQ2xCLEtBQUV1SztZQUNQM0w7WUFBR1A7WUFBR2dRO1lBQVduUTtXQUNyQjtXQUNBLElBQUtVLElBQUlvQixXQUFZcEIsU0FBVUE7WUFBRyxDQUM5QixVQUFVeVAsWUFBWWhDLE9BQU9kLE1BQU0zTTthQUNuQyxJQUFJLFNBQVNWLFVBQVVrUTthQUN2QixZQUFZbFEsVUFBVUcsSUFBSStQO2FBQzFCLFNBQVN4UCxLQUFLUDtXQUVsQixRQUFRRixTQUFVa1EsY0FDdEI7U0FFQSxTQUFTVyxVQUFVclMsS0FBTWlEO1dBQ3JCLElBQUkyTCxNQUFTLEVBQUUsV0FBVzNMO1dBQzFCLEdBQUltTDtZQUFzQixZQUNWVSxhQUFhOU8sYUFBYUk7d0JBQWMwTyxhQUFhOU8sYUFBYUk7V0FGbEYsSUFJTSxFQUFFSixXQUFjLEVBQUVJLFFBQ3BCb0I7V0FDSixHQUFJb0IsUUFBUyxVQUFVMFA7V0FDdkIsR0FBSXRTO1lBQWMsQ0FDZCxHQUFJSTtjQUFXLFlBQ0N5TyxhQUFhLFNBQVM3TSxJQUFJWTswQkFBU2lNLGFBQWE3TSxJQUFJWTthQUVwRSxRQUFReUwsV0FBWXJPO1dBRXhCLEdBQUlJO1lBQVcsQ0FDWCxHQUFJd0MsUUFBUyxRQUFRNUMsS0FBTXFPO2FBQzNCLEdBQUl6TCxTQUFTLFFBQVEsY0FBZXlMO2FBQ3BDLElBQUk4QyxJQUFNLFNBQVN2TzthQUNuQixHQUFJdU8sTUFBTXZEO2NBQU0sQ0FDWixRQUFRLFlBQVk1TCxFQUFHbVA7ZUFDdkIsV0FBVyxhQUFhdkM7ZUFDeEIsSUFBSThDLFVBQVk5QztlQUNoQixHQUFJNU8sVUFBVyxjQUFhMFI7ZUFDNUIsVUFBV2xRO2dCQUF1QixDQUM5QixHQUFJeEIsY0FBY0ksT0FBUSxhQUFZb0I7aUJBQ3RDLFlBQVlxTixhQUFhck47NkJBQWVxTixhQUFhNkM7ZUFFekQsWUFBWS9DLFdBQVduTixTQUFVeEIsY0FBY0k7MkJBQWF5TyxhQUFhNkM7YUFFN0UsSUFBSSxhQUFhUDtXQTVCckIsSUE4QklvQixXQUFhLFdBQVd2USxFQUFHWTtXQUMvQixHQUFJMlAsbUJBQW1CLFFBQVFsRSxXQUFZck87V0FDM0MsR0FBSXVTO1lBQWtCLFFBQVFsRSxRQUFRck8sY0FBY0ksY0FBa0JpTztXQUd0RSxHQUFJck0sV0FBV1k7WUFDWCxRQUFRLFFBQVFaLEVBQUdZOztZQUNsQixRQUFRLFFBQVFaLEVBQUdZO1dBRXhCLFdBQVdnTTtXQXZDWCxJQXdDVSxNQUFFNU8sY0FBY0ksT0FDbEIsSUFBRXdPLFNBQ0EsTUFBRTVPO1dBQ1osVUFBV3dCO1lBQXVCLENBQzlCLEdBQUlnUixNQUFPLGFBQVloUjthQUN2QixlQUFlcU4sYUFBYXJOOztZQUN6QixlQUFlbU4sV0FBV25OLFNBQVVnUjtXQUMzQyxVQUFXQztZQUFrQixDQUN6QixHQUFJQyxNQUFPLFFBQU9ELElBQ2xCLFVBQVU1RCxhQUFhNEQ7O1lBQ3BCLFVBQVU5RCxXQUFXOEQsSUFBS0M7V0FDakMsUUFBUWxSLFNBQVVpUixJQUN0QjtTQUVBOztrQkFBd0N4UDtXQUNwQyxJQUFJNkIsT0FBUyxVQUFVbEYsS0FBTXFEO1dBQzdCLGlCQUNjNkIsb0JBQ0NBLFVBSlc7U0FPOUI7O1NBQWdDK0o7O1NBQWdDRjtTQUdoRTs7a0JBQXdDMUwsR0FDcEMsT0FBTyxVQUFVckQsS0FBTXFELEtBREc7U0FHOUI7O1NBQThCNkw7O2tCQUEwQzdMO1dBQ3BFLFdBQVc2TCxhQUFhbFAsYUFBYSxXQUFXcUQsU0FEVTtTQUc5RDs7U0FBOEI0TDs7U0FBZ0NGOztTQUE0QkE7U0FFMUYsb0NBQXFDMUwsR0FDakMsT0FBTyxVQUFVckQsS0FBTXFELEtBREE7U0FHM0I7O1NBQTZCNkw7O2tCQUE2QzdMO1dBQ3RFLFdBQVc2TCxhQUFhbFAsYUFBYSxXQUFXcUQsU0FEWTtTQUdoRTs7U0FBbUM0TDs7U0FBNkJGOztTQUFpQ0E7U0FFakc7O2tCQUFxQzFMO1dBQ2pDLElBQU0sRUFBRSxXQUFXQSxHQUNiLEVBQUVyRCxXQUNGLEVBQUVRLFFBQ0p3TyxNQUFPMU8sRUFBR3VCO1dBQ2QsR0FBSW1CLFFBQVMsT0FBT3lMO1dBQ3BCLEdBQUlyTSxRQUFTLE9BQU9xTTtXQUNwQixHQUFJck0sUUFBUyxPQUFPcU07V0FDcEIsR0FBSXJNLFVBQVUsT0FBTyxXQUFhcU0sV0FBYUE7V0FDL0MsR0FBSWpPLE9BQVEsT0FDRGlPO1dBRVgsS0FBS2pPO1lBQVcsVUFBVWtTLHdCQUF3QjtXQUNsRCxHQUFJMVM7WUFBYyxHQUNWLFVBQVVnUCxRQUFRLFNBQVM1TSxFQUFHWTthQUM5QixXQUFXaU0sYUFBYSxTQUFTRDtXQUV6QyxJQUFJaFA7V0FDSixJQUFJeU87V0FDSjtZQUFhLENBQ1QsR0FBSXpMLFlBQWEsQ0FDYixJQUFJLFFBQVExQyxHQUNaLEVBQUUwQzthQUVOLEdBQUlBLFFBQVM7YUFDYjthQUNBLElBQUk7V0FFUixPQUFPbkIsQ0E1QmdCO1NBOEIzQiw2QkFBNkJrTjtTQUU3Qjs7a0JBQXVDMUw7V0FDbkM7WUFBTSxFQUFFLFdBQVdBO1lBQ2IsRUFBRXJEO1lBQWMsRUFBRVE7WUFDakIsR0FBRTtZQUFjLEdBQUU7WUFBYyxHQUFFO1dBQ3pDLEdBQUl3QyxNQUFNK1AsR0FBSSxPQUFPdEU7V0FDckIsR0FBSXJNLE1BQU0yUSxHQUFJLE9BQU90RTtXQUNyQixHQUFJck0sTUFBTTRRLEdBQUksT0FBT3ZFO1dBQ3JCLEdBQUlyTSxNQUFNLFlBQVksT0FBTyxXQUFhcU0sV0FBYUE7V0FDdkQsR0FBSSxlQUFnQixXQUFXUyxhQUFhNkQ7V0FQNUMsSUFRTSxFQUFFL1MsS0FDRixFQUFFeU87V0FDUjtZQUFhLENBQ1QsSUFBS3pMLElBQUlnUSxRQUFRQSxHQUFJLENBQ2pCLElBQUksUUFBUTFTLEdBQ1osRUFBRTBDO2FBRU4sR0FBSUEsTUFBTStQLEdBQUk7YUFDZCxLQUFLRTthQUNMLElBQUk7V0FFUixPQUFPcFIsQ0FwQmtCO1NBdUI3Qjs7a0JBQXdDcVIsSUFBS0w7V0FDekMsTUFBTSxXQUFXSztXQUNqQixNQUFNLFdBQVdMO1dBQ2pCLEdBQUk7WUFBYyxVQUFVSDtXQUM1QixJQUFNLEVBQUVqRSxXQUNDLEtBQUUsU0FBU29FO1dBQ3BCLEdBQUk7WUFBa0IsQ0FDbEIsTUFBTSxhQUFhcEUsY0FDbkIsT0FBTyxZQUFZb0U7V0FFdkIsTUFBTztZQUFrQixDQUNyQixHQUFJLGNBQWUsT0FBT3BFO2FBQzFCLEdBQUksWUFBYSxJQUFJLFdBQVdxQixVQUFVK0M7YUFDMUMsTUFBTTthQUNOLE9BQU8sa0JBQWtCQTtXQUU3QixPQUFPblMsQ0FoQm1CO1NBa0I5Qjs7U0FBZ0N1Tzs7U0FBZ0NGO1NBRWhFLFNBQVNRLFdBQVduTixFQUFHWTtXQUNuQixHQUFJWixhQUFhWSxTQUFVLE9BQ2hCWixXQUFXWTtXQUV0QixJQUFXLElBQUZYLEVBQUlELGFBQWNDLE9BQVFBO1lBQUssR0FDaENELEVBQUVDLE9BQU9XLEVBQUVYLEdBQUksT0FBT0QsRUFBRUMsS0FBS1csRUFBRVg7V0FFdkMsUUFDSjtTQUVBOztrQkFBNENnQjtXQUN4QyxJQUFNLEVBQUUsV0FBV0EsR0FDYixFQUFFckQsV0FDRixFQUFFUTtXQUNSLEdBQUlBLFVBQVc7V0FDZixPQUFPLFdBQVc0QixFQUFHWSxFQUxTO1NBT2xDOztrQkFBOENLO1dBQzFDLElBQU0sRUFBRSxXQUFXQSxHQUNiLEVBQUUsU0FBU3JELFlBQ1gsRUFBRVE7V0FDUixHQUFJQSxVQUFXLENBQ1gsSUFBSSxTQUFTd0MsR0FDYixPQUFPWixNQUFNWSxJQUFRWixJQUFJWTtXQUU3QixVQVJnQztTQVVwQzs7a0JBQThDSztXQUMxQyxJQUFNLEVBQUVyRCxXQUNGLEVBQUUsV0FBV3FEO1dBQ25CLElBQUlqQixPQUFTQSxJQUFLQTtXQUNsQixJQUFJWSxPQUFTQSxJQUFLQTtXQUNsQixPQUFPWixNQUFNWSxJQUFRWixJQUFJWSxPQUxPO1NBUXBDOztrQkFBeUNLO1dBR3JDLEdBQUlBLE1BQU04UCxTQUFVO1dBR3BCLEdBQUk5UCxRQUFPOFAsU0FBVTtXQUlyQixJQUFNLEVBQUUsV0FBVzlQLEdBQ2IsRUFBRXJELFdBQ0YsRUFBRVE7V0FDUixHQUFJUixjQUFjUSxPQUFRLE9BQ2ZBO1dBRVgsR0FBSUEsVUFBVyxPQUNKUjtXQUVYLE9BQU8sV0FBV29DLEVBQUdZLE1BQU1oRCxnQkFuQkE7U0FxQi9CLGlDQUFpQytPO1NBRWpDOztrQkFBMkMxTDtXQUN2QyxHQUFJQSxNQUFNOFAsU0FBVTtXQUdwQixHQUFJOVAsUUFBTzhQLFNBQVU7V0FJckIsSUFBTSxFQUFFLFdBQVc5UCxHQUNiLEVBQUVyRCxXQUNGLEVBQUVRO1dBQ1IsR0FBSUEsVUFBVyxPQUNKNEIsS0FBS1ksSUFBUVosSUFBSVk7V0FFNUIsR0FBSVosVUFBVTVCLE9BQVEsT0FDWDRCO1dBRVgsT0FBT0EsV0FqQnNCO1NBbUJqQyxtQ0FBbUM2TTtTQUVuQzs7a0JBQTJDNUw7V0FDdkMsR0FBSUEsTUFBTThQLFNBQVU7V0FHcEIsR0FBSTlQLFFBQU84UCxTQUFVO1dBR3JCLElBQU0sRUFBRW5ULFdBQ0YsRUFBRSxXQUFXcUQ7V0FDbkIsT0FBT2pCLE1BQU1ZLElBQVFaLElBQUlZLE9BVEk7U0FXakMsbUNBQW1Da007U0FFbkM7O2tCQUF3QzdMLEdBQ3BDLE9BQU8sYUFBYUEsUUFETTtTQUc5Qjs7U0FBNEI2TDs7U0FBZ0NEOztTQUE0QkE7O1NBQWdDRjs7U0FBMEJBO1NBRWxKOztrQkFBMkMxTCxHQUN2QyxPQUFPLGFBQWFBLFFBRFM7U0FHakM7O1NBQTZCNkw7O1NBQW1DRDs7U0FBNkJBOztTQUFtQ0Y7O1NBQTJCQTtTQUUzSjs7a0JBQXlDMUwsR0FDckMsT0FBTyxhQUFhQSxNQURPO1NBRy9COztTQUE0QjZMOztTQUFpQ0Q7O1NBQTRCQTs7U0FBaUNGOztTQUEwQkE7U0FFcEo7O2tCQUF3QzFMLEdBQ3BDLE9BQU8sYUFBYUEsTUFETTtTQUc5Qjs7U0FBNEI2TDs7U0FBZ0NEOztTQUE0QkE7O1NBQWdDRjs7U0FBMEJBO1NBRWxKOztrQkFBaUQxTCxHQUM3QyxPQUFPLGFBQWFBLE9BRGU7U0FHdkM7O1NBQTZCNkw7O1NBQXlDRDs7U0FBNkJBOztTQUF5Q0Y7O1NBQTJCQTtTQUV2Szs7a0JBQWdEMUwsR0FDNUMsT0FBTyxhQUFhQSxPQURjO1NBR3RDOztTQUE2QjZMOztTQUF3Q0Q7O1NBQTZCQTs7U0FBd0NGOztTQUEyQkE7U0FFcks7O29CQUNJLFFBQVEvTyx3QkFEa0I7U0FHOUI7O29CQUNJLFFBQVFBLHFCQURvQjtTQUdoQzs7b0JBQ0ksUUFBUUEsYUFBYSxlQUFlLFNBRFI7U0FJaEM7O29CQUNJLFFBQVFBLHdCQURpQjtTQUc3Qjs7b0JBQ0ksUUFBUUEscUJBRG1CO1NBRy9COztvQkFDSSxRQUFRQSxhQUFhLGVBQWUsU0FEVDtTQUkvQiw2Q0FDSSxTQUFRQSxTQURzQjtTQUdsQzs7b0JBQ0ksT0FBT0EsY0FEeUI7U0FHcEM7O1NBQW9DaVA7U0FFcEMsNkNBQ0ksT0FBT2pQLFNBRHVCO1NBR2xDOztvQkFDSSxPQUFPQSxjQUR5QjtTQUdwQzs7U0FBb0NpUDtTQUVwQyx5Q0FDSSxZQUQwQjtTQUc5Qjs7b0JBQ0ksT0FBTyxTQUFTalAsaUJBRFk7U0FHaEM7O29CQUNJLE9BQU8scUJBQXFCLFNBREE7U0FJaEMseUNBQ0ksWUFEMEI7U0FHOUIsMkNBQ0ksT0FBT0EsZ0JBRHFCO1NBR2hDOztvQkFDSSxPQUFPQSxlQUFlLFNBRE07U0FJaEM7O2tCQUErQ3FEO1dBQzNDLElBQUk3QyxFQUFJLFdBQVc2QztXQUNuQixHQUFJLFdBQVk7V0FDaEIsR0FBSSxXQUFZO1dBQ2hCLEdBQUksc0JBQXVCLE9BQU87V0FDbEMsT0FBTyxTQUFTN0MsV0FMaUI7U0FPckM7O1NBQXVDeU87O1NBQXVDRjtTQUU5RSxTQUFTcUUsYUFBYS9QO1dBQ2xCLElBQUk3QyxFQUFJO1dBQ1IsR0FBSSxXQUFZO1dBQ2hCLEdBQUksZUFBZSxlQUFlLFlBQWE7V0FDL0MsR0FBSSxjQUFjLHNCQUFzQjtZQUFvQjtXQUM1RCxHQUFJLGFBQWMsV0FFdEI7U0FFQSxTQUFTNlMsZ0JBQWdCN1MsRUFBRzRCO1dBQ3hCLElBQVUsTUFBRSxTQUNOLEVBQUVrUixNQUNGLElBQ0ZyTixFQUFHaEQsRUFBR1osRUFBRy9CO1dBQ2IsTUFBTyxXQUFZLElBQUksWUFBYUk7V0FDcEM7V0FBTSxJQUFLMkIsTUFBT0EsSUFBSUQsU0FBVUM7WUFBSyxDQUNqQyxHQUFJLFNBQVNELEVBQUVDLElBQUs7YUFDcEIsSUFBSSxPQUFPRCxFQUFFQyxXQUFXVyxFQUFHeEM7YUFDM0IsR0FBSSxjQUFjLFNBQVM4UyxPQUFRO2FBQ25DLElBQUtyTixJQUFJdkYsTUFBT3VGLE9BQVFBO2NBQUssQ0FDekIsSUFBSSxlQUFlekY7ZUFDbkIsR0FBSSxXQUFZO2VBQ2hCLEdBQUksU0FBUzhTLE9BQVE7YUFFekI7V0FFSixXQUNKO1NBR0E7O2tCQUF5Q0M7V0FDckMsSUFBSUMsUUFBVSxhQUFheFQ7V0FDM0IsR0FBSXdULFlBQVk3SyxVQUFXLE9BQU82SztXQURsQyxJQUVNLEVBQUUsV0FDQyxLQUFFO1dBQ1gsR0FBSUM7WUFDQSxPQUFPLGdCQUFnQmpUO1dBTDNCO1lBTVMsS0FBRSxjQUFjO1lBQ25CLEVBQUUsVUFBVytTLG9CQUF3QixTQUFTRyxRQUFZQTtXQUNoRSxRQUFXLEtBQVEsSUFBS3JSLElBQUlZLEVBQUdaLElBQUssT0FDekIsT0FBT0E7V0FFbEIsT0FBTyxnQkFBZ0I3QixFQUFHNEIsRUFaQztTQWMvQjs7U0FBaUM2TTs7U0FBaUNGO1NBRWxFOztrQkFBaUQ0RTtXQUM3QyxJQUFJSCxRQUFVLGFBQWF4VDtXQUMzQixHQUFJd1QsWUFBWTdLLFVBQVcsT0FBTzZLO1dBRGxDLElBRU0sRUFBRSxXQUNGLEVBQUVHLGVBQWVoTCxZQUFnQmdMO1dBQ3ZDLFFBQVcsS0FBUSxJQUFLdFIsSUFBSVksRUFBR1o7WUFBSyxPQUN6QixxQkFBc0I7V0FFakMsT0FBTyxnQkFBZ0I3QixFQUFHNEIsRUFSUztTQVV2Qzs7U0FBeUM2TTs7U0FBeUNGO1NBRWxGOztrQkFBd0N2TztXQUNwQztZQUFNLEVBQUV1TjtZQUFrQixLQUFFQTtZQUFjLEVBQUUsV0FBV3ZOO1lBQVMsS0FBRTtZQUFZc0I7WUFBR2dTO1lBQU9DO1dBQ3hGLFFBQVE7WUFBZSxDQUNuQixJQUFJLFNBQVNGO2FBQ2IsUUFBUTVRO2FBQ1IsUUFBUXZDO2FBQ1IsSUFBSWtUO2FBQ0osSUFBSUM7YUFDSixPQUFPLGVBQWUsV0FBV0Q7YUFDakMsT0FBTyxlQUFlLFdBQVdDO1dBRXJDLEtBQUs7WUFBWTttQkFBVW5CO29CQUFNOzs7O29CQUE0Qjs7O1dBQzdELEdBQUkscUJBQXFCLElBQ2pCLE1BQU1sUztXQUVkLEdBQUksa0JBQW1CLE9BQ1o7V0FFWCxPQUFPeUMsQ0FsQm1CO1NBcUI5Qjs7U0FBZ0NnTTs7U0FBZ0NGO1NBRWhFOzs7V0FDSSxJQUFJQyxNQUFRaFA7V0FDWixHQUFJQSxVQUFXLE9BQ0osY0FBY2dQLFFBQVVoUDtXQUVuQyxXQUFXK08sV0FBVyxTQUFTQyxTQUFXaFAsVUFMbEI7U0FPNUI7OztXQUNJLElBQUlnUCxNQUFRaFA7V0FDWixHQUFJZ1AsWUFBWWQsUUFBUyxXQUFXZSxhQUFhRDtXQUNqRCxXQUFXRCxXQUFXWixrQkFISTtTQUs5Qjs7b0JBQ0ksV0FBV2UsYUFBYWxQLGFBQWEsVUFEWDtTQUk5Qjs7O1dBQ0ksSUFBSWdQLE1BQVFoUDtXQUNaLEdBQUlBLFVBQVcsV0FDQStPLFdBQVcsU0FBU0M7V0FFbkMsT0FBTyxjQUFjQSxRQUFVaFAsVUFMUDtTQU81Qjs7O1dBQ0ksSUFBSWdQLE1BQVFoUDtXQUNaLEdBQUlnUCxjQUFhZCxRQUFTLFdBQVdlLGFBQWFEO1dBQ2xELFdBQVdELFdBQVdaLGlCQUhJO1NBSzlCOztvQkFDSSxXQUFXZSxhQUFhbFAsYUFBYSxVQURYO1NBSTlCLElBQUlnVTtTQUNKLFVBQVdBLFlBQVlBLDJCQUEyQmhHO1VBQU0scUJBQXFCZ0csWUFBWUE7U0FEekY7VUFFa0IsY0FBRUE7VUFBa0MsY0FBRUEsWUFBWUM7U0FFcEUsU0FBU0UsY0FBYzNULEdBQ25CLE9BQU8sU0FBU0EsTUFBTXdOLElBQzFCO1NBRUE7O2tCQUEyQzNLO1dBQ3ZDLElBQUk3QyxFQUFJLFdBQVc2QztXQUNuQixLQUFLLGNBQWM3QztZQUFJLFVBQ1RrUyxNQUFNLE9BQU9sUztXQUUzQixHQUFJQSxNQUFPLE9BQU8sa0JBQWlCQTtXQUpuQyxJQUtJMEUsT0FBU2xGO1dBQ2IsR0FBSSxnQkFBaUIsT0FBT2tGO1dBQzVCLE1BQU8xRSxLQUFLeVQ7WUFBZSxDQUN2QixTQUFTLGdCQUFnQkMsZUFDekIsS0FBS0Q7V0FFVCxPQUFPLGdCQUFnQkQsWUFBWXhULEdBWk47U0FjakM7O1NBQW1DeU87O1NBQW1DRjtTQUV0RTs7a0JBQTRDMUw7V0FDeEMsSUFBSStRLE9BQ0UsRUFBRSxXQUFXL1E7V0FDbkIsS0FBSyxjQUFjN0M7WUFBSSxVQUNUa1MsTUFBTSxPQUFPbFM7V0FFM0IsR0FBSUEsTUFBTyxPQUFPLGlCQUFnQkE7V0FMbEMsSUFNSTBFLE9BQVNsRjtXQUNiLE1BQU9RLEtBQUt5VDtZQUFlLENBQ3ZCLEdBQUksbUJBQW9CLHVCQUF1QjtjQUFrQixPQUFPL087YUFDeEUsU0FBUyxVQUFVQSxPQUFRZ1A7YUFDM0IsU0FBUyx1QkFBeUIsaUJBQW1CRTthQUNyRCxLQUFLSDtXQUVULFNBQVMsVUFBVS9PLE9BQVE4TyxZQUFZeFQ7V0FDdkMsT0FBTyx1QkFBeUIsaUJBQW1CNFQsU0FmckI7U0FpQmxDOztTQUFvQ25GOztTQUFvQ0Y7U0FFeEUsU0FBU3NGLFFBQVEvVCxFQUFHdUIsRUFBR3lTO1dBQ25CLElBQUksV0FBV3pTO1dBQ2Y7WUFBVSxNQUFFO1lBQXNCLE1BQUU7WUFDM0IsS0FBRTBTLE1BQVEsUUFBVWpVO1lBQ3BCLEtBQUVrVSxNQUFRLFFBQVUzUztZQUNsQjtZQUFZO1lBQ1gsUUFBRVk7WUFBYyxRQUFFQTtZQUNuQjtXQUNYLFFBQVEsbUJBQWtCO1lBQWUsQ0FDckMsVUFBVSxVQUFVZ1MsS0FBTVA7YUFDMUIsU0FBUzthQUNULEdBQUlLLE1BQU8sU0FDRUwsb0JBQW9CUzthQUdqQyxVQUFVLFVBQVVELEtBQU1SO2FBQzFCLFNBQVM7YUFDVCxHQUFJTSxNQUFPLFNBQ0VOLG9CQUFvQlU7YUFHakMsT0FBT0M7YUFDUCxPQUFPQzthQUNQLFlBQVksR0FBR0gsT0FBUUM7V0FyQjNCLElBdUJJN0UsSUFBTSxHQUFHd0UsVUFBZUMsaUJBQXVCLFlBQWE7V0FDaEUsSUFBVyxJQUFGblMsRUFBSTZDLGtCQUFtQjdDLE9BQVFBO1lBQVEsTUFDdEMsYUFBYTZSLG1CQUFtQixPQUFPaFAsT0FBTzdDO1dBRXhELE9BQU8wTixHQUNYO1NBRUEsc0NBQ0ksT0FBTyxvQkFEZ0I7U0FHM0I7O1NBQTZCZDs7U0FBNkJGO1NBRTFEOztrQkFBcUN2TyxHQUNqQyxPQUFPLFFBQVFSLEtBQU1RLFdBQWE0QixFQUFHWSxHQUFLLE9BQU9aLElBQUlZLENBQTdCLEVBREQ7U0FHM0I7O1NBQTZCaU07O1NBQTZCRjtTQUUxRDs7a0JBQW9Ddk8sR0FDaEMsT0FBTyxRQUFRUixLQUFNUSxXQUFhNEIsRUFBR1ksR0FBSyxPQUFPWixJQUFJWSxDQUE3QixFQURGO1NBRzFCOztTQUE0QmlNOztTQUE0QkY7U0FFeEQ7O2tCQUFxQ3ZPLEdBQ2pDLE9BQU8sUUFBUVIsS0FBTVEsV0FBYTRCLEVBQUdZLEdBQUssT0FBT1osSUFBSVksQ0FBN0IsRUFERDtTQUczQjs7U0FBNkJpTTs7U0FBNkJGO1NBRTFEO1VBQWM7VUFBc0IsWUFBR2YsU0FBUUEsU0FBU0EsU0FBUUEsUUFBUStHO1NBQ3hFLFNBQVNFLFNBQVN6VTtXQUdkO1lBQU0sRUFBRUE7WUFDRjtvQkFBUzZDO2VBQWlCQSxJQUFJMFI7c0JBQ3JCMVI7aUJBQWlCQSxJQUFJLE9BQU8wUjtpQkFDL0IxUixPQUFPQSxPQUFPMkssT0FBT2dIO1dBQ2pDLE9BQU8xVSxNQUFLQSxDQUNoQjtTQUVBLFNBQVM0VSxpQkFBaUJsRyxNQUFPYztXQUM3QixHQUFJLGVBQWVkO1lBQWEsQ0FDNUI7Y0FBUSxJQUFFLGlCQUFpQkEsTUFBTyxZQUFZYztjQUN4QyxFQUFFcUY7Y0FDRixFQUFFQTtjQUNGLEVBQUUsV0FBV3JGO2FBQ25CLE9BQU8sWUFBWWQsZUFBbUIvTCxJQUFNbVMsY0FBbUI1USxJQUFNNFE7V0FFekUsVUFBWSxjQUNoQjtTQUVBOzs7V0FDSSxJQUFJNVUsRUFBSVI7V0FDUixHQUFJLFlBQVksZUFBZ0IsSUFDeEIsb0JBQW9CO1dBRTVCLEdBQUksWUFBWSxpQkFBa0IsT0FDdkI7V0FFWCxPQUFPLE9BQU8saUJBQWlCUSxFQUFHLGtCQUFrQixVQVJ2QjtTQVVqQzs7U0FBbUN5Tzs7U0FBbUNGO1NBRXRFLFNBQVNzRyxJQUFJalQsRUFBR1k7V0FDWixJQUFJLFdBQVdaLEdBQ2YsSUFBSSxXQUFXWSxHQUNmLE9BQU8sVUFBVUEsR0FBS1osRUFBSVksQ0FDOUI7U0FDQSxTQUFTc1MsSUFBSWxULEVBQUdZO1dBQ1osSUFBSSxXQUFXWixHQUNmLElBQUksV0FBV1ksR0FDZixPQUFPLFNBQVNBLEdBQUtaLEVBQUlZLENBQzdCO1NBQ0EsU0FBU3VTLElBQUluVCxFQUFHWTtXQUNaLElBQUksV0FBV1o7V0FDZixJQUFJLFdBQVdZO1dBQ2YsR0FBSSxTQUFTQSxHQUFJLE9BQU9aO1dBQ3hCLEdBQUksV0FBWSxPQUFPWTtXQUN2QixHQUFJLFdBQVksT0FBT1o7V0FDdkIsSUFBTSxFQUFFcU0sV0FBWXhJLEVBQUdoRDtXQUN2QixNQUFPLGNBQWM7WUFBWSxDQUM3QixJQUFJLElBQUksU0FBU2IsR0FBSSxTQUFTWTthQUM5QixJQUFJLFNBQVNpRDthQUNiLElBQUksU0FBU0E7YUFDYixJQUFJLFdBQVdBO1dBRW5CLE1BQU8sV0FBWSxJQUNYLFNBQVMsU0FBUzdEO1dBRTFCO1lBQUcsQ0FDQyxNQUFPLFdBQVksSUFDWCxTQUFTLFNBQVNZO2FBRTFCLEdBQUksVUFBVUEsR0FBSSxDQUNkLElBQUlBLEVBQUcsSUFBSVosRUFBRyxJQUFJYTthQUV0QixJQUFJLFdBQVdiOztlQUNUO1dBQ1YsT0FBTyxXQUFhQSxFQUFJLFdBQVdjLEVBQ3ZDO1NBQ0EsU0FBU3NTLElBQUlwVCxFQUFHWTtXQUNaLElBQUksV0FBV1o7V0FDZixJQUFJLFdBQVdZO1dBQ2YsT0FBTyxTQUFTLElBQUlaLEVBQUdZLGFBQWFBLEVBQ3hDO1NBQ0EsU0FBU3lTLFlBQVlyVCxFQUFHWTtXQUNwQixJQUFJLFdBQVdaO1dBQ2YsSUFBSSxXQUFXWTtXQUNmLElBQVEsSUFBRSxJQUFJWixFQUFHWSxHQUFTLEtBQUUsSUFBSVosRUFBR1ksR0FDekIsTUFBRSxjQUFjMFM7V0FDMUIsR0FBSUUsY0FBZSxPQUFPLFFBQVEsV0FBVyxnQkFBZ0JBO1dBRjdELElBR1csT0FBRSxPQUFPQSxNQUFPNUgsWUFDaEIsVUFBaUI7V0FDNUIsSUFBVyxJQUFGM0wsSUFBT0EsSUFBSXdULGNBQWV4VDtZQUFLLENBQ3BDO2NBQVEsSUFBRTBULFdBQWFGLE9BQU94VCxHQUFLMkw7Y0FDekIsTUFBRSxTQUFTLGdCQUFnQmdJO2FBQ3JDLFlBQVlDO2FBQ1osR0FBSUEsUUFBUUQsSUFBSztXQUVyQixPQUFPLFFBQVEsa0JBQWtCOVEsT0FBUThJLFlBQzdDO1NBRWMsU0FBVmMsVUFBc0JvSCxLQUFNcEcsS0FBTW5CLFNBQVVDO1dBQzVDLFdBQVdELFlBQVlOO1dBQ3ZCLE9BQU8sT0FBTzZIO1dBQ2QsS0FBS3RIO1lBQWUsQ0FDaEIsT0FBTyxtQkFDUCxXQUFXO1dBRWYsSUFBVyxPQUFFc0gsWUFDVDdULEVBQ1EsUUFBRSxTQUFTeU4sTUFDSjtXQUNuQixJQUFLek4sTUFBT0EsSUFBSXNNLGdCQUFpQnRNLElBQUssZUFDbkJzTSxTQUFTdE0sTUFBTUE7V0FFbEMsSUFBS0EsTUFBT0EsSUFBSW9CLE9BQVFwQjtZQUFLLENBQ3pCLElBQUlhLEVBQUlnVCxLQUFLN1Q7YUFDYixHQUFJYSxVQUFXO2FBQ2YsR0FBSUEsS0FBS2tUO2NBQWdCLEdBQ2pCQSxlQUFlbFQsTUFBTWlUO2VBQVMsQ0FDOUIsR0FBSWpULGFBQWFpVCxjQUFlO2dCQUNoQzt1QkFBVXpEO3dCQUFNeFAsdUNBQXVDNE07V0FJbkUsT0FBTyxXQUFXQTtXQWpCbEIsSUFrQlcsVUFDSSxXQUFFb0c7V0FDakIsSUFBSzdULElBQUlnVSxlQUFvQmhVLElBQUk2VCxZQUFhN1Q7WUFBSyxDQUMvQyxJQUFJYSxFQUFJZ1QsS0FBSzdUO2FBQ2IsR0FBSWEsS0FBS2tUO2NBQWdCLFlBQVksV0FBV0EsZUFBZWxUOztjQUMxRCxHQUFJQTtlQUFXLENBQ2hCLElBQUlvVCxNQUFRalU7Z0JBQ1osR0FBRyxVQUFnQjZULEtBQUs3VCxjQUFjQSxJQUFJNlQ7Z0JBQzFDLFlBQVksV0FBVyxXQUFXSSxVQUFXalU7O2VBRTVDLFVBQVVxUSxNQUFNeFA7V0FFekIsT0FBTyxtQkFBbUIyUyxPQUFRL0YsS0FBTXVHLFdBckM1QjtTQXdDaEIsU0FBU0UsbUJBQW1CVixPQUFRL0YsS0FBTXVHO1dBQ3RDLElBQVEsSUFBRTVILFdBQWdCLElBQUVBLFdBQVlwTTtXQUN4QyxJQUFLQSxJQUFJd1Qsa0JBQW1CeFQsT0FBUUE7WUFBSyxDQUNyQyxNQUFNLFFBQVEsT0FBT0EsU0FBU29VLE1BQzlCLE1BQU0sVUFBVTNHO1dBRXBCLE9BQU91RyxXQUFhLGFBQWVHLEdBQ3ZDO1NBRUEsU0FBU0UsVUFBVVQsTUFBT3RIO1dBQ3RCLFdBQVdBLFlBQVlOO1dBQ3ZCLEdBQUk0SCxRQUFRdEgsZ0JBQWlCLE9BQ2xCQSxTQUFTc0g7V0FFcEIsYUFBYUEsV0FDakI7U0FFQSxTQUFTSCxPQUFPdFYsRUFBR3NQO1dBQ2YsT0FBTyxPQUFPQTtXQUNkLEdBQUk7WUFBZSxDQUNmLEdBQUksV0FBWTthQUNoQixVQUFVNEM7V0FFZCxHQUFJO1lBQWlCLENBQ2pCLEdBQUksV0FBWTthQUNoQixHQUFJO2NBQ0E7c0JBQ1c7O3dCQUFvQixZQUFZalEsS0FBTSxRQUFPOzBCQUMzQytHOzthQUtqQjtjQUFJNkY7ZUFBTSxZQUFZNU0sS0FBTSxNQUFNO2lCQUN6QitHO2FBQ1Q7YUFDQSxjQUNXLG1CQUFvQjZGO1dBS25DLElBQUlzSDtXQUNKLEdBQUksa0JBQWtCLGtCQUFtQixDQUNyQyxXQUNBLElBQUk7V0FFUixHQUFJO1lBQWUsQ0FDZixHQUFJLFdBQVk7YUFFaEI7cUJBQ1csWUFBWWxVLEtBQU0sTUFBTTt1QkFDdEJtVTtnQ0FDR0Q7V0FYcEIsSUFjUSxPQUNDLEtBQUVuVyxFQUFHdVc7V0FDZCxNQUFPLHFCQUFxQixnQkFBZ0JqSDtZQUFZLENBQ3BELFNBQVMsWUFBWUE7YUFDckIsT0FBT2lIO2FBQ1AsSUFBSWQsTUFBUWM7YUFDWixHQUFJO2NBQW9CLENBQ3BCLFFBQVEsV0FBV2QsYUFDbkIsT0FBTzthQUVYLFNBQVM7V0FFYixTQUFTO1dBQ1QsY0FBZ0IseUJBQTJCVSxJQUMvQztTQUVBLFNBQVNLLGFBQWF4VyxFQUFHc1AsS0FBTW5CO1dBQzNCLElBQUlVLElBQU0sT0FBTzdPLEVBQUdzUDtXQUNwQixRQUFRVDs7a0JBQTZCLHVCQUF3Qi9PLEdBQ3pELE9BQU8sVUFBVUEsRUFBR3FPLFNBRDJCO3VCQUd2RDtTQUVBOztrQkFBeUNELE9BQ3JDLE9BQU8sT0FBTzFPLEtBQU0wTyxNQURPO1NBSS9COztrQkFBMkNBLE9BQ3ZDLE9BQU8sT0FBTzFPLEtBQU0wTyxNQURTO1NBSWpDOztrQkFBMkNBLE9BQ3ZDLE9BQU8sT0FBTzFPLEtBQU0wTyxNQURTO1NBSWpDOztrQkFBMENBLE1BQU9DO1dBQzdDLEdBQUlELFVBQVUvRixVQUFXO1dBQ3pCLEdBQUkrRixhQUFjLE9BQU8sYUFBYTFPLEtBQU0wTyxNQUFPQztXQUNuRDtZQUFNLEVBQUUzTztZQUFjLEVBQUVxRDtZQUFjLElBQUUsT0FBT0EsSUFBSTFDO1lBQVc7WUFBYXNWO1dBQzNFLFFBQVN0VjtZQUFRLENBQ2IsUUFBUSxPQUFPMEMsRUFBRTFDLElBQ2pCLE9BQU8sWUFBWXNWLGdCQUFnQkE7V0FIdkMsSUFLSXpVLEtBQU94QjtXQUNYLE9BQU93QixPQUFPOEwsR0FUYztTQVloQzs7a0JBQTRDb0IsTUFBT0M7V0FDL0MsR0FBSUQsVUFBVS9GLFVBQVc7V0FDekIsR0FBSStGLFlBQWEsT0FBTyxhQUFhMU8sS0FBTTBPLE1BQU9DO1dBQ2xELE9BQU8sT0FBTzNPLFdBSGdCO1NBTWxDLGtDQUFrQ2lQO1NBRWxDOztTQUFnQ0Y7O1NBQThCRTs7b0JBQThDLE9BQU8sZUFBckI7U0FFOUY7O29CQUNJLE9BQU8sU0FBUyxtQkFEVztTQUcvQixrQ0FBa0NGO1NBRWxDLDRDQUNJLE9BQU8vTyxVQURzQjtTQUdqQyxvQ0FBb0NpUDtTQUNwQzs7U0FBaUNDOztvQkFDN0IsT0FBTyxTQUFTLG1CQURpRDtTQUlyRSxTQUFTaUksaUJBQWlCOVQ7V0FDdEIsR0FBSSxZQUFXQTtZQUFJLENBQ2YsSUFBSS9DLElBQUsrQzthQUNULEdBQUkvQyxNQUFNLFNBQVNBO2NBQ2YsT0FBT2tPOzJCQUEyQlUsYUFBYSxPQUFPNU87MkJBQVUyTyxhQUFhM087YUFDakYsVUFBVW9TLDRCQUE0QnJQO1dBRTFDLElBQUk3QixLQUFPNkI7V0FDWCxHQUFJN0IsS0FBTSxJQUFJO1dBRGQsSUFFSTRWLE1BQVE7V0FDWixHQUFJQTtZQUFrQixVQUFVMUUsNEJBQTRCO1dBQzVELEdBQUkwRTtZQUFvQixDQUNwQixJQUFJbEUsSUFBTWtFO2FBQ1YsR0FBSWxFLGVBQWdCLE1BQU07YUFDMUIsUUFBT0E7YUFDUCxHQUFJQSxRQUFRLFNBQVNBLFVBQVMsVUFBVUE7Y0FBTTtxQkFBVVI7NENBQTRCUTthQUhwRixJQUlTLEtBQUVrRSxTQUNNLGFBQUU7YUFDbkIsR0FBSUM7Y0FBbUIsQ0FDbkIsT0FBT25CLGNBQWNtQjtlQUNyQjs7ZUFBTyxhQUFjQTs7ZUFBZ0IsV0FBV0E7YUFFcEQsR0FBSW5FO2NBQVM7cUJBQVVSOzthQUN2QixRQUFRLElBQUtsSixNQUFNMEo7YUFDbkIsSUFBSWdEO1dBakJSLElBbUJJb0IsUUFBVSx1QkFBdUJqVTtXQUNyQyxLQUFLaVUsUUFBUyxVQUFVNUUsNEJBQTRCclA7V0FDcEQsR0FBSW1MO1lBQXNCLFdBQ1hVLGFBQWEsT0FBTzFOLFdBQWE2QixFQUFJQTtXQXRCcEQsSUF3Qk0sS0FBVSxJQUFFQSxTQUFZLEVBQUU0SyxTQUFjLElBQUVvSCxNQUFNMVU7V0FDdEQsTUFBTzBVO1lBQVMsQ0FDWixTQUFRLFFBQVFDLElBQUtELE1BQ3JCLE9BQU8xVSxFQUNQLEdBQUkyVSxRQUFTLFFBQ2IsT0FBTzNVO1dBRVgsS0FBS0Q7V0FDTCxXQUFXcU8sV0FBV3JPLEVBQUdjLEtBQzdCO1NBRUEsU0FBUytWLGlCQUFpQmxVO1dBQ3RCLEdBQUltTCxxQkFBc0IsV0FDWFUsYUFBYSxPQUFPN0w7V0FFbkMsR0FBSSxVQUFVQTtZQUFJLENBQ2QsR0FBSUEsTUFBTSxTQUFTQSxHQUFJLFVBQVVxUCxNQUFNclA7YUFDdkMsV0FBVzRMLGFBQWE1TDtXQUU1QixPQUFPLGlCQUFpQixhQUM1QjtTQUVBLFNBQVN3TCxXQUFXeEw7V0FDaEIsVUFBV0EsZUFBZ0IsT0FDaEIsaUJBQWlCQTtXQUU1QixVQUFXQSxlQUFnQixPQUNoQixpQkFBaUJBO1dBRTVCLFVBQVdBLGVBQWdCLFdBQ1o2TCxhQUFhN0w7V0FFNUIsT0FBT0EsQ0FDWDtTQUVBLElBQVcsSUFBRmhCLElBQU9BLFNBQVVBO1VBQUssQ0FDM0IsUUFBUUEsS0FBSyxXQUFXQSxHQUN4QixHQUFJQSxNQUFPLFVBQVNBLEtBQUssYUFBWUE7U0FHekMsY0FBY29NO1NBQ2QsZUFBZUE7U0FDZixtQkFBbUJBO1NBQ25CLGNBQWM0RztTQUNkLGNBQWNDO1NBQ2QsY0FBY0M7U0FDZCxjQUFjQztTQUNkOztrQkFBK0JsVjtXQUFLLE9BQU9BLGFBQWF5Tzs7a0JBQWN6TyxhQUFhMk87O2tCQUFnQjNPLGFBQWE0TyxZQUEzRjtTQUNyQixzQkFBc0J1RztTQUV0Qjs7a0JBQThCSSxPQUFRL0YsS0FBTXVHO1dBQ3hDLE9BQU87b0JBQW1CLFdBQVd4SCxZQUFhLFdBQVdpQixZQUFhdUcsV0FEMUQ7U0FJcEIsT0FBTzVILE9BbjZDRzs7SUNJZCxTQUFTK0ksZUFBZWxYO01BQ3RCLElBQUl1QixFQUFJLG1CQUNSLEdBQUcsU0FBUyxPQUFPQSxJQUFLLE9BQU9BLEVBQy9CLE9BQU92QixDQUNUO0lBaWVBLFNBQVNtWCxTQUFTQyxHQUFJOVA7TUFDcEIsS0FBSyxPQUFPQTtNQUNaLEdBQUksTUFBTTtPQUFZO01BR3RCLE9BQU8sZUFBZSxPQUFPOFAsUUFBUTlQLElBQ3ZDO0lBc0VBLFNBQVMrUCxVQUFVQyxFQUFHdlY7TUFDcEIsSUFBUyxLQUFFLFVBQ0gsSUFBRTtNQUNWLElBQUksT0FBT3VWO01BRVgsR0FBSXZWLGVBQWUsS0FBS3dWO09BQU87TUFJL0IsR0FBSSxTQUFTQSxTQUFTLFNBQVNDLEtBQU0sT0FDNUIsZUFBZUY7TUFUeEIsSUFZVSxNQUFFQyxLQUNKLElBQUVELEVBQ0YsSUFBRW5WLEtBRUYsSUFBRTtNQUVWLE1BQU8sVUFBVXNWO09BQ2pCLENBQ0UsSUFBUSxJQUFFLFVBQVVBLFlBQVlFLEtBQ3pCLEdBQUUsUUFBUTVWO1FBQ2pCLEdBQUksVUFBVXVWO1NBQUksT0FDVCxlQUFlTTs7U0FDakIsR0FBSSxNQUFNTixHQUFJLENBQ25CLFFBQVEsV0FDUixNQUFNTSxTQUNELE1BQ0M7TUFHVixPQUFPLGVBQWVGLElBQ3hCO0lBS0EsU0FBU0ksYUFBYVIsRUFBR3ZWO01BQ3ZCLElBQVMsS0FBRSxVQUNILElBQUU7TUFDVixJQUFJLE9BQU91VjtNQUVYLEdBQUl2VixlQUFlLEtBQUt3VjtPQUFPO01BSS9CLEdBQUksU0FBU0EsU0FBUyxTQUFTQyxLQUFNLFVBQ3hCLGVBQWVGLEdBQUlDO01BVGhDLElBWVUsTUFBRUEsS0FDSixJQUFFRCxFQUNGLElBQUVuVixLQUVGLElBQUU7TUFFVixNQUFPLFVBQVVzVjtPQUNqQixDQUNFLElBQVEsSUFBRSxVQUFVQSxZQUFZRSxLQUN6QixHQUFFLFFBQVE1VjtRQUNqQixHQUFJLFVBQVV1VjtTQUFJLFVBQ0wsZUFBZU0sS0FBTUw7O1NBQzNCLEdBQUksTUFBTUQsR0FBSSxDQUNuQixRQUFRLFdBQ1IsTUFBTU0sU0FDRCxNQUNDO01BR1YsVUFBVyxlQUFlRixLQUFNLGVBQWUsUUFBUSxRQUFRM1YsS0FDakU7SVoxZEEsU0FBU2dXLHNCQUFzQnZLLE1BQzNCLG9CQUNKO0lOd01BLFNBQVN3SyxvQkFBb0JsVztNQUMzQjtjQUFXbEI7ZUFBUWtCLFlBQWFBLFlBQWNBO2VBQzNCQSxZQUFhQSxZQUFjQTtlQUMzQkEsWUFBYUEsVUFDbEM7SW1CdUNBLFNBQVNtVyxvQkFBb0JDLEdBQUlDO01BQy9CLElBQUlDLElBQU0sVUFBVUQ7TUFDcEIsR0FBR0MsV0FBV0YsZUFBZ0I7TUFEOUI7T0FFTyxHQUFFLE9BQU9FO09BQ1QsR0FBRSxPQUFPQTtPQUNULEdBQUUsT0FBT0E7T0FDVCxHQUFFLE9BQU9BO09BQ1QsR0FBRSxPQUFPQTtPQUNULEdBQUUsT0FBT0E7T0FDVCxHQUFFLE9BQU9BO09BQ1QsR0FBRSxPQUFPQTtNQUNoQixPQUFPLHFCQUFxQlEsR0FBR0QsR0FBR0QsR0FBR0QsR0FBR0QsR0FBR0QsR0FBR0QsR0FBR0QsSUFDbkQ7SW5CakRBLFNBQVNRLG9CQUFvQjdZLEdBQUssT0FBTyxXQUFZO0ljek5yRCxTQUFTOFksbUJBQW1CQyxPQUFRaFcsRUFBR2lXO01BQ3JDLElBQUl0VyxFQUFJLG9CQUFxQks7TUFDN0IsSUFBVyxJQUFGaEIsSUFBT0EsTUFBT0EsSUFBSyxlQUFpQlcsRUFBRVg7TUFDL0M7TUFBYyxZQUNoQjtJSzBMQSxTQUFTa1gsaUJBQWlCZixJQUN4QixPQUFPQSxjQUNUO0lqQnJVQSxTQUFTZ0IseUJBQTBCelksS0FBTyxPQUFPQSxHQUFLO0lrQjZHdEQsU0FBUzBZLG9CQUFvQnJFO01BRXpCLEdBQUdBLGFBQWE1TCxNQUFPLE9BQU80TDtNQUU5QjtRQUFHclY7O1FBQ0dxVixhQUFhclY7O1FBQ2JxVjs7UUFDQTtPQUNKLE9BQU8seUJBQXlCcFU7TUFFbEM7UUFBR2pCOztRQUNHcVYsYUFBYXJWOztRQUNicVY7O1FBQ0E7T0FDSixPQUFPLHlCQUF5QnBVO01BRWxDLEdBQUdvVSxhQUFhclYsb0JBQW9CO09BQ2xDLFVBQVUsNEJBQTRCcVY7TUFFeEMsVUFBVXBVLHlCQUF5Qix3QkFBeUIsT0FBT29VLElBR3ZFO0lad0pBLFNBQVNzRSxpQkFBaUJoVSxLQUFLaEM7TUFDN0IsSUFBSTRCLEtBQU8sa0JBQWtCSTtNQUM3QixLQUFLSixxQkFBc0I7TUFDM0IscUJBQXFCQSxVQUFVNUI7TUFDL0IsUUFDRjtJQUtBLFNBQVNpVyxpQkFBaUJqVSxLQUFLaEM7TUFDN0I7T0FBUyxLQUFFLHVCQUF1QmdDO09BQ3RCLFFBQUUsdUJBQXVCaEM7TUFDckMsT0FBTyxpQkFBaUJnQyxLQUFNaEMsUUFDaEM7SUE1QkEsU0FBU2tXO01BQ1AsSUFBSXpFLElBQUlwVjtNQUNSLEdBQUdvVjtPQUFJLElBQ0ssSUFBRjlTLElBQU9BLElBQUk4UyxXQUFZOVM7UUFBSSxpQkFDaEI4UyxJQUFJOVMsUUFBUThTLElBQUk5UztNQUdyQyw4QkFBOEJzWDtNQUM5QjtNQUNBLFFBQ0Y7SUY1SUEsU0FBU0Usa0NBQXFDLFVBQVk7SWU5STFELElBQUlDO0lBNlFKLFNBQVNDLHNCQUFzQmhOO01BQzdCLElBQUlpTixRQUFVRixrQkFDZCxvQkFBb0IvTSxLQUNwQixPQUFPaU4sT0FDVDtJRGhHQSxTQUFTQyxzQkFBc0I3WDtNQUM3QixJQUFJekI7TUFDSixJQUFTLElBQUQwQixFQUFFRCxhQUFjQyxPQUFNQSxJQUFJLENBQ2hDLElBQUkrUyxFQUFJaFQsRUFBRUMsR0FDVixPQUFPK1MsRUFBRXpVO01BRVgsT0FBT0EsQ0FDVDtJRS9HQSxTQUFTdVosU0FBUzlYLEVBQUVZLEdBQ2xCLE9BQU8sVUFBVVosRUFBRVksRUFDckI7SUNUQSxTQUFTbVgsa0JBQWtCNVksRUFBRTBFO01BQzNCLElBQUksU0FBU0E7TUFDYixJQUFNQSxVQUFZQTtNQUNsQixJQUFJLFNBQVNBO01BQ2IsS0FBS0E7TUFDTCxJQUFNMUUsVUFBWUE7TUFDbEIsUUFBVUEsS0FBS0EsbUNBQ2pCO0lYTEEsU0FBUzZZLGVBQWVDLElBQUszQixJQUFLcFc7TUFDaEMsSUFBVSxJQUFGRCxFQUFJQyxRQUFTRCxPQUFRQSxJQUFLLEdBQzdCZ1ksU0FBUzNCLE1BQUlyVyxRQUFTLE9BQU9BO01BRWxDLFFBQ0Y7SUF0RUEsU0FBU2lZLGNBQWNoYTtNQUNyQixJQUFRLElBQUUsZUFBZUEsSUFBTUEsZUFDekI7TUFDTixJQUFXLElBQUYrQixJQUFPQSxJQUFJQyxJQUFLRCxJQUFLLElBQ3hCLGtCQUFrQmQsRUFBR2pCLE9BQU8rQjtNQUVsQyxPQUFPZCxDQUNUO0lUUkEsU0FBU2daLGNBQWNoWSxFQUFHbUU7TUFDeEIsR0FBR25FLE1BQ0QsT0FBTyxjQUFjQSxNQUFPbUU7TUFFOUIsVUFBVW5FLGlCQUFrQixPQUFPQTtNQUNuQyxJQUFJL0IsRUFBSStCO01BQ1IsR0FBRy9CLFFBQVMsT0FBTyxRQUFRaUMsS0FBS2lFO01BRGhDLElBRVksUUFBRUEsZ0JBQ1IsRUFBRWxHLElBQUlnYTtNQUNaLEdBQUl2VTtPQUNGLE9BQU8sUUFBUXhELEtBQU1pRTs7T0FDbEIsR0FBSVQ7UUFBTyxPQUNQLGNBQWMsUUFBUXhELEtBQUssYUFBYWpDLElBQUksV0FBV0E7O1FBRTNEO1VBRUQ7V0FBZSxXQUFHa2Esd0JBQXlCQTtXQUNqQyxVQUFNbFIsTUFBTTlDLGNBQVkrVDtVQUNsQyxJQUFVLElBQUZwWSxJQUFPQSxJQUFJcUUsWUFBYXJFLElBQU0sTUFBTUEsS0FBS3FFLEtBQUtyRTtVQUN0RCxJQUFVLElBQUZBLElBQU9BLElBQUlxWSxpQkFBa0JyWTtXQUFNLE1BQU1xRSxjQUFZckUsS0FBS3FZLFVBQVVyWTtVQUM1RSxPQUFPLGNBQWNFLEVBQUdvWSxNQUxuQixDQVFYO0lpQnNCQSxJQUFJQyxjQUFnQkw7SUEyT3BCLFNBQVNNLGdDQUFnQ3RZO01BQ3ZDO1FBQ0UsSUFBUSxJQUFFbVksaUJBQ0QsU0FBTWxSLE1BQU1sSDtRQUNyQixJQUFXLElBQUZELElBQU9BLElBQUlDLElBQUtELElBQUssS0FBS0EsS0FBS3FZLFVBQVVyWTtRQUNsRCxPQUFPLGNBQWNFLEdBQUltRSxNQUpwQixDQU1UO0lacElBLFNBQVNvVSxlQUFlQztNQUN0QixJQUFJelYsS0FBTyxrQkFBa0J5VjtNQUM3QixHQUFHLG1CQUFtQnpWO09BQVksQ0FDaEMsR0FBR0E7U0FBVyxtQkFBbUIsb0JBQW9CQSxZQUFZQTs7U0FDNUQsbUJBQW1CQTtRQUN4Qjs7T0FFRyx3QkFDcUIsdUJBQXVCeVYsS0FFbkQ7SWdCN0pBLFNBQVNDLGFBQWMxYTtNQUNyQixHQUFLQSxhQUFha0osU0FBVWxKLFFBQVNBO09BQ25DLE9BQU9BOztPQUNKLEdBQUksaUJBQWlCQTtRQUN4Qjs7UUFDRyxHQUFJLGtCQUFrQkE7U0FDekI7O1NBQ0csR0FBS0EsYUFBYTJhLG1CQUFvQjNhO1VBQ3pDOztVQUNHLEdBQUlBLEtBQUtBLGNBQ1osZ0JBRUEsV0FDSjtJQXNIQSxTQUFTNGEsb0JBQW9CbFksRUFBRTJILEVBQUVuSztNQUM3QixHQUFHd0MsUUFBTTJILEVBQUcsQ0FBRSxPQUFPbkssRUFBRyxTQUN4QixRQUNKO0lDdkhBLElBQUkyYTtJQUNKLFNBQVNDLDRCQUE0QnROO01BQ25DLE9BQU9xTiw0QkFDVDtJRHdIQSxTQUFTRSw0QkFBNEIxUTtNQUNuQyxJQUFJMUgsRUFBSSxhQUFhMEg7TUFDckIsR0FBRzFILFlBQVlBLFlBQVlBLFNBQ3pCO01BQ0YsR0FBRyxvQkFBb0IwSDtPQUFjOztPQUU5QixDQUNMLElBQUkyUSxPQUFTM1E7UUFDYixJQUFJQTtRQUNKLEdBQUcxSDtTQUFVLE9BQ1JxWSxVQUFVOztTQUlSLEdBQUlyWSxTQUFVLGNBRWQsU0FLWDtJUnRLQSxTQUFTc1ksbUJBQXFCLGtCQUFtQjtJRXVDakQsU0FBU0MsU0FBUzlELEdBQUkrRDtNQUNwQixLQUFLLE9BQU9BO01BQ1osR0FBRyxVQUFVLFdBQVk7TUFDekIsT0FBTyxlQUFlLE9BQU8vRCxXQUFXLE9BQU8rRCxLQUNqRDtJQXFWQSxTQUFTQyxVQUFVaEUsSUFDakIsT0FBTyxPQUFPQSxZQUFZM0osWUFDNUI7SUFoWEEsU0FBUzROLFNBQVNqRSxHQUFJK0Q7TUFDcEIsT0FBTyxlQUFlLE9BQU8vRCxRQUFRLE9BQU8rRCxLQUM5QztJQTRCQSxTQUFTRyxVQUFVbEUsR0FBSStEO01BQ3JCLElBQVcsT0FBRSxVQUFVL0QsSUFDWixPQUFFLFVBQVUrRDtNQUN2QixHQUFJSSxTQUFTQztPQUF3RCxLQUM5RCxPQUFPcEUsUUFBUSxPQUFPK0QsWUFBWTtRQUFZLE9BQzFDLFNBQVMsU0FBUy9ELEdBQUkrRCxJQUFLO01BR3RDLE9BQU8sU0FBUy9ELEdBQUkrRCxHQUN0QjtJTHlaQSxTQUFTTTtNQUNQLG9EQUNGO0lKeE5BLFNBQVNDLG1CQUFtQkM7TUFDMUI7UUFDSTtZQUNLN0c7UUFDTCxJQUFJaFAsV0FBYTtRQUNqQjtVQUFxQkEsV0FBWSxzQ0FBd0M2VixrQkFFL0U7SUF2Q0EsU0FBU0Msa0JBQWtCblg7TUFDekIsSUFBSU8sS0FBTyxrQkFBa0JQO01BQzdCLEtBQUtPO09BQXFCO01BRDFCLElBSUkyVyxXQUFhLG9CQUFvQjNXO01BQ3JDLGdCQUFtQjJXLGdCQUFrQmxYLEtBQ3ZDO0lBcUNBLFNBQVNvWCxvQkFBb0JGO01BQzNCLG1CQUFtQkE7TUFDbkIsSUFBSUcsZUFBaUIsa0JBQWtCSDtNQUN2QyxxQkFBcUJHO01BQ3JCLFFBQ0Y7SVA5T0EsU0FBU0M7TUFDUCxvQkFBb0JyYiw2QkFDdEI7SU95TUEsU0FBU3NiLGtCQUFrQkw7TUFDekIsSUFBSTNTO01BQ0o7UUFDSSxRQUFRO1lBQ0g4TDtRQUNMLElBQUloUCxXQUFhO1FBQ2pCO1VBQXFCQSxXQUFZLHFDQUF1QzZWO01BRTVFLEdBQUkzUyxVQUFVN0c7T0FBTTs7T0FFYixPQUNJLHdCQUF3QjZHLFdBRXJDO0lBNEJBLFNBQVNpVCxvQkFBb0J4WDtNQUUzQixJQUFJeVgsUUFBVSx3QkFBd0J6WDtNQUN0QyxVQUFVO01BQ1YsT0FBTyx3QkFBd0J5WDtNQUYvQjtPQUllLFdBQUUsa0JBQWtCelg7T0FDbkIsWUFBRSxrQkFBa0JrWDtNQUVwQyxVQUFXUSxZQUFhUixXQUMxQjtJZTdGQSxTQUFTUyx5QkFBeUJ6WixHQUNoQyxRQUNGO0luQnJNQSxJQUFJMFosUUFBVTliLGFBQWE7SUFDM0IsU0FBUytiLGdCQUFnQnRjO01BQ3ZCLEdBQUdxYyxRQUFTLE9BQU8sV0FBVyxVQUFVcmM7TUFDeEMsSUFBSStCO01BQ0osR0FBSS9CLE9BQVEsU0FBUTZTO01BQ3BCLEdBQUc3UyxPQUFNLE1BQVFBLE9BQU0sQ0FBQyxPQUFNLFNBQ3pCLE1BQVFBLE1BQU8sQ0FBQyxPQUFNO01BQzNCLE9BQU8rQixDQUNUO0lBd0NBLFNBQVN3YSx5QkFBMEJ2YztNQUNqQyxJQUFJd2MsYUFBZUM7TUFDbkIsY0FBY3pjO01BRGQsSUFFSTBjLFdBQWFDLFdBQVdIO01BQzVCLE9BQU9FLGFBQ1Q7SUxtUkEsU0FBU0UsMkJBQTJCL2IsR0FBSUMsR0FBSUM7TUFDMUMsV0FBV0gsUUFBUUMsR0FBSUMsR0FBSUMsR0FDN0I7SUs5VEEsU0FBUzhiLHlCQUEwQjdjO01BQ2pDLEtBQUssU0FBU0E7T0FBSSxDQUNoQixHQUFJLE1BQU1BLEdBQ1IsT0FBTztRQUNULE9BQUlBO2lCQUNLO2lCQUVBO01BRVgsSUFBSWtCLEtBQVFsQixjQUFVQSxPQUFNNlMsZ0JBQWtCN1M7TUFDOUMsR0FBSWtCLEtBQU0sTUFBS2xCO01BRGYsSUFJSTRTLElBQU0sZ0JBQWdCNVM7TUFDMUIsR0FBSTRTO09BQVUsQ0FDWixRQUNBLEtBQUs7O09BQ0EsQ0FDTCxLQUFLLFdBQVdBO1FBQ2hCLEdBQUk1UyxPQUFRLENBQ1YsT0FBUTtRQUNWLEdBQUk0UyxTQUFVO01BWmhCLElBZU0sRUFBRSxlQUNELEdBQUU1UztNQUNULEtBQUtBLElBQUkrYyxNQUFNRDtNQWpCZixJQWtCSUUsR0FBS2hkO01BQ1QsS0FBS0EsSUFBSWdkLE1BQU1GO01BbkJmLElBb0JJRyxHQUFLamQ7TUFDVCxLQUFNK2MsV0FBVzdiLE9BQU8wUjtNQUN4QixPQUFPLDJCQUEyQnFLLEdBQUlELEdBQUlELEdBQzVDO0ljNGhCQSxTQUFTRyxrQkFBa0JuRSxPQUFRYixHQUFJaUY7TUFDckMsZ0JBQWlCakY7TUFDakIsZ0JBQWtCQSxVQUFXQTtNQUM3QixHQUFHQTtPQUNELElBQVUsSUFBRm5XLElBQU9BLElBQUltVyxlQUFnQm5XO1FBQUssR0FDbkNtVyxRQUFRblc7U0FDVCxnQkFBaUJtVyxRQUFRblc7O1NBQ3RCLENBQ0g7VUFDQTtVQUNBLGdCQUFpQm1XLFFBQVFuVzs7T0FJN0IsSUFBVSxJQUFGQSxJQUFPQSxJQUFJbVcsZUFBZ0JuVyxJQUFLLGdCQUFnQm1XLFFBQVFuVztNQUNsRSxPQUFPbVc7Ozs7U0FJTCxJQUFVLElBQUZuVyxJQUFPQSxJQUFJbVcsZUFBZ0JuVyxJQUFJLGVBQ3JCbVcsUUFBUW5XLElBRTFCOzs7U0FHQSxJQUFVLElBQUZBLElBQU9BLElBQUltVyxlQUFnQm5XLElBQUksZ0JBQ3BCbVcsUUFBUW5XLElBRTNCOztTQUVBLElBQVUsSUFBRkEsSUFBT0EsSUFBSW1XLGVBQWdCblcsSUFBSSxnQkFDcEJtVyxRQUFRblcsSUFFM0I7OztTQUdBO1NBQ0EsSUFBVSxJQUFGQSxJQUFPQSxJQUFJbVcsZUFBZ0JuVyxJQUFJLGdCQUNwQm1XLFFBQVFuVztTQUUzQjs7U0FFQSxJQUFVLElBQUZBLElBQU9BLElBQUltVyxtQkFBb0JuVztVQUFJLENBQ3pDLElBQUlXLEVBQUksb0JBQW9CLE9BQU9YO1dBQ25DLElBQVcsSUFBRmlCLElBQU9BLE1BQU9BLElBQUssZUFBaUJOLEVBQUVNO1NBRWpEOztTQUVBLElBQVUsSUFBRmpCLElBQU9BLElBQUltVyxlQUFnQm5XO1VBQUksQ0FDckMsSUFBSVcsRUFBSSxvQkFBb0IseUJBQXlCLE9BQU9YO1dBQzVELElBQVcsSUFBRmlCLElBQU9BLE1BQU9BLElBQUssZUFBaUJOLEVBQUVNO1NBRWpEOztTQUVBLElBQVUsSUFBRmpCLElBQU9BLElBQUltVyxlQUFnQm5XO1VBQUksQ0FDckMsSUFBSVcsRUFBSSx5QkFBeUIsT0FBT1gsSUFDeEMsZ0JBQWlCVztTQUVuQjs7U0FFQSxJQUFVLElBQUZYLElBQU9BLElBQUltVyxtQkFBb0JuVztVQUFJLENBQ3pDLElBQUlpQixFQUFJLE9BQU9qQjtXQUNmLGdCQUFpQix5QkFBeUJpQjtXQUMxQyxnQkFBaUIseUJBQXlCQTtTQUU1Qzs7U0FFQSxJQUFVLElBQUZqQixJQUFPQSxJQUFJbVcsbUJBQW9Cblc7VUFBSSxDQUN6QztZQUFZLFFBQUUsT0FBT0E7WUFDZixFQUFFLG9CQUFvQix5QkFBeUJxYjtXQUNyRCxJQUFXLElBQUZwYSxJQUFPQSxNQUFPQSxJQUFLLGVBQWlCTixFQUFFTTtXQUYvQyxJQUdJTixFQUFJLG9CQUFvQix5QkFBeUIwYTtXQUNyRCxJQUFXLElBQUZwYSxJQUFPQSxNQUFPQSxJQUFLLGVBQWlCTixFQUFFTTtTQUVqRDs7TUFFRixhQUFha1Y7TUFDYixhQUFhQSxtQkFDZjtJQTduQkEsU0FBU21GLDZCQUE2QkM7TUFDcEMsT0FBT0EsNkJBQ21CLGlCQUNqQixTQUVYO0lBS0EsU0FBU0Msc0JBQXNCRCxLQUFNRTtNQUNuQyxJQUFJQztNQUNKLE9BQU9IO2VBQ0UsT0FBT2IsYUFBYztlQUNyQixPQUFPaUIsYUFBYztlQUNyQixPQUFPQyxVQUFXO2VBQ2xCLE9BQU8vVyxXQUFZO2VBQ25CLE9BQU9nWCxXQUFZO2VBQ25CLE9BQU9DLFlBQWE7ZUFDcEIsT0FBT2xCLFdBQVk7ZUFDbkIsT0FBT0EsV0FBWTtlQUNuQixPQUFPQSxXQUFZO2VBQ25CLE9BQU9BLFdBQVk7Z0JBQ25CLE9BQU9GLGFBQWM7Z0JBQ3JCLE9BQU9pQixhQUFjO2dCQUNyQixPQUFPOVcsV0FBWTs7TUFFNUIsS0FBSzZXLEtBQU07TUFoQlgsSUFpQkl4VixTQUFXd1YsS0FBS0QsT0FBTyw2QkFBNkJGO01BQ3hELE9BQU9yVixJQUNUO0lkb0dBLFNBQVM2Vix5QkFBMEI5ZDtNQUNqQyxJQUFJMGMsV0FBYUM7TUFDakIsWUFBWTNjO01BRFosSUFFSXdjLGFBQWVDLGFBQWFDO01BQ2hDLE9BQU9GLFdBQ1Q7SUFyREEsU0FBU3VCLHlCQUEwQi9kO01BQ2pDLElBQU8sR0FBRUEsS0FDRixHQUFFQSxLQUNGLEdBQUVBLEtBQ0QsS0FBR2U7TUFDWCxHQUFJNlI7T0FBYSxRQUNWL1IsS0FBR0MsS0FBSUMsZUFDRkEsY0FBZThSLFNBQVVBLFNBRTFCbUw7TUFSWCxJQVVNLEVBQUUsaUJBQ0EsS0FBR25kLEtBQUdpYyxJQUFFaGMsTUFBSWdjLEtBQUcvYjtNQUN2QixHQUFJNlI7T0FBUyxDQUNYLFVBQ0EsT0FBTyxXQUFXQTs7T0FFbEIsT0FBTztNQUNULEdBQUk3UixZQUFhLFFBQVF3SDtNQUN6QixPQUFPQSxHQUNUO0ljbEhBLFNBQVMwVixpQkFBaUJDO01BQ3hCLElBQVcsT0FBRUEsWUFDSjtNQUNULElBQVcsSUFBRm5jLElBQU9BLElBQUlvYyxPQUFRcGM7T0FBSyxDQUMvQixHQUFJbWMsS0FBS25jO1NBQ1A7UUFDRixPQUFPeWIsT0FBT1UsS0FBS25jO01BRXJCLE9BQU95YixJQUNUO0luQnVUQSxTQUFTWSx3QkFBd0J2ZCxHQUFJRTtNQUNuQztjQUFXSDtlQUNUQztlQUNFQSxvQkFBdUJFO2VBQ3hCQSxtQkFDTDtJQUtBLFNBQVNzZCxnQkFBZ0J0YixHQUFJLE9BQU8sUUFBUztJQUg3QyxTQUFTdWIsZ0JBQWdCdmIsR0FBSSxPQUFPLFFBQVM7SW1CclI3QyxJQUFJd2I7SUFLSixTQUFTQyxZQUFhbEIsS0FBTW1CLE9BQVFQLEtBQU1wYTtNQUV4QyxZQUFjd1o7TUFDZCxjQUFjbUI7TUFDZCxZQUFjUDtNQUNkLFlBQVlwYSxNQUNkO0lBRUEsb0NBQW9DeWE7SUFFcEM7O2FBQXlDaGM7TUFDdkMsSUFBSTZWO01BQ0osVUFBVTdWLGlCQUFrQixPQUFPQTtNQUNuQyxNQUFPQSxlQUFlMkc7T0FBUTtNQUM5QixHQUFJeEosb0JBQW9CNkM7T0FDdEI7TUFDRixHQUFHN0M7T0FBaUMsSUFDdkIsSUFBRnFDLElBQU9BLElBQUlyQyxpQkFBa0JxQztRQUFLLENBQ3pDLEdBQUlRLElBQUlSLFVBQVVRLElBQUlSLE1BQU1yQyxVQUFVcUMsR0FDcEM7U0FDRixNQUFPcVcsTUFBTTFZLFVBQVVxQyxLQUFNUSxJQUFJUjs7T0FFOUIsSUFDTSxJQUFGQSxFQUFJckMscUJBQXNCcUMsT0FBUUE7UUFBSyxDQUM5QyxHQUFJUSxJQUFJUixVQUFVUSxJQUFJUixLQUFLckMsVUFBVXFDLEdBQUc7U0FHeEMsTUFBT3FXLE1BQU0xWSxVQUFVcUMsTUFBT1EsSUFBSVI7TUFHdEMsT0FBT3FXLEdBcEJzQjtJQXVCL0I7O2FBQXNDQTtNQUNwQyxPQUFPMVk7O1NBR0wsSUFBTSxFQUFFQSxVQUFVMFksYUFDWixFQUFFMVksVUFBVTBZO1NBQ2xCLE9BQU8sd0JBQXdCL1gsRUFBRVk7OztTQUdqQyxJQUFNLEVBQUV2QixVQUFVMFksYUFDWixFQUFFMVksVUFBVTBZO1NBQ2xCLFlBQWFoWSxFQUFHMkI7Z0JBRWhCLE9BQU9yQyxVQUFVMFksS0FiTztJQWlCNUI7O2FBQXNDQSxJQUFJclY7TUFDeEMsT0FBT3JEOztTQUdMLFVBQVUwWSxlQUFlLGdCQUFnQnJWO1NBQ3pDLFVBQVVxVixlQUFlLGdCQUFnQnJWO1NBQ3pDOzs7U0FHQSxVQUFVcVYsZUFBZXJWLEtBQ3pCLFVBQVVxVixlQUFlclYsS0FDekI7Z0JBRUEsVUFBVXFWLE9BQU9yVixFQUNqQjtNQUVGLFFBaEIwQjtJQW9CNUI7O2FBQXVDQTtNQUNyQyxPQUFPckQ7O1NBR0wsSUFBTSxFQUFFLGdCQUFnQnFELEdBQ2xCLEVBQUUsZ0JBQWdCQTtTQUN4QixHQUFHakIsS0FBS1k7VUFBRSxlQUNPWjs7VUFFWixJQUNPLElBQUZDLElBQU9BLElBQUVyQyxpQkFBa0JxQyxJQUFJLFVBQzNCQSxLQUFNQSxXQUFZRCxFQUFJWTtTQUdwQzs7O1NBR0EsSUFBTyxHQUFFSyxLQUNGLEdBQUVBO1NBQ1QsR0FBR2dKLE1BQU0yUztVQUFHLGVBQ0szUzs7VUFFWixJQUNPLElBQUZoSyxJQUFPQSxJQUFFckMsaUJBQWtCcUM7V0FBSSxVQUMzQkEsS0FBTUEsV0FBWWdLLEdBQUsyUztTQUdyQztnQkFFQSxlQUFlM2IsR0FDZixNQTlCeUI7SUFtQzdCOzthQUEwQ0wsRUFBR2ljO01BQzNDLEdBQUlqZixlQUFlZ0QsWUFBWWhELGFBQWFnRDtPQUFRLENBQ2xELElBQU8sR0FBRWhELFlBQWFBLGlCQUNmLEdBQUtnRCxTQUFVQTtRQUN0QixPQUFPbWMsS0FBS0Q7TUFFZCxHQUFJbGYsb0JBQW9CZ0Q7T0FBZSxPQUM5QkEsZ0JBQWdCaEQ7TUFFekIsSUFBVyxJQUFGcUMsSUFBT0EsSUFBSXJDLGlCQUFrQnFDO09BQ3BDLEdBQUlyQyxVQUFVcUMsTUFBTVcsT0FBT1gsR0FDekIsT0FBUXJDLFVBQVVxQyxLQUFLVyxPQUFPWDtNQUNsQyxPQUFRckM7Ozs7O1NBTU4sSUFBSU0sRUFBR3VCO1NBQ1AsSUFBVyxJQUFGUSxJQUFPQSxJQUFJckMsaUJBQWtCcUM7VUFBSyxDQUN6QyxJQUFJckMsVUFBVXFDO1dBQ2QsSUFBSVcsT0FBT1g7V0FDWCxHQUFJL0IsSUFBSXVCLEVBQ047V0FDRixHQUFJdkIsSUFBSXVCLEVBQ047V0FDRixHQUFJdkIsS0FBS3VCO1lBQUcsQ0FDVixLQUFLb2QsTUFBTyxPQUFPWCxJQUNuQixHQUFJaGUsS0FBS0EsRUFBRyxTQUNaLEdBQUl1QixLQUFLQSxFQUFHO1NBR2hCOztTQUdBLElBQVcsSUFBRlEsSUFBT0EsSUFBSXJDLGlCQUFrQnFDO1VBQU0sQ0FFMUMsR0FBSXJDLFVBQVVxQyxTQUFPVyxPQUFPWCxPQUMxQjtXQUNGLEdBQUlyQyxVQUFVcUMsU0FBT1csT0FBT1gsT0FDMUI7V0FDRixHQUFLckMsVUFBVXFDLFdBQWFXLE9BQU9YLFNBQ2pDO1dBQ0YsR0FBS3JDLFVBQVVxQyxXQUFhVyxPQUFPWCxTQUNqQztTQUVKOzs7Ozs7Ozs7U0FTQSxJQUFXLElBQUZBLElBQU9BLElBQUlyQyxpQkFBa0JxQztVQUFLLENBQ3pDLEdBQUlyQyxVQUFVcUMsS0FBS1csT0FBT1gsR0FDeEI7V0FDRixHQUFJckMsVUFBVXFDLEtBQUtXLE9BQU9YLEdBQ3hCO1NBRUo7O01BRUYsUUEvRDhCO0lBb0VoQyxTQUFTK2Msa0JBQWtCeEIsS0FBTW1CLE9BQVFQLEtBQU1wYTtNQUM3QyxZQUFjd1o7TUFDZCxjQUFjbUI7TUFDZCxZQUFjUDtNQUNkLFlBQWNwYSxNQUNoQjtJQUVBLGtDQUFrQzBhO0lBQ2xDOzthQUErQ2pjO01BQzdDLFVBQVVBO09BQWlCLEdBQ3JCQSxlQUFlMkcsU0FBVTNHO1FBQzNCLE1BQU1BOztRQUNIO01BRVAsR0FBSUEsV0FBV0EsT0FBTzdDLGFBQ3BCO01BQ0YsT0FBTzZDLEdBUjRCO0lBV3JDLDJDQUE0QzZWLEtBQzFDLE9BQU8xWSxVQUFVMFksSUFEZTtJQUlsQzs7YUFBNENBLElBQUlyVixHQUM5QyxVQUFVcVYsT0FBT3JWLEVBQ2pCLFFBRmdDO0lBS2xDOzthQUE2Q0EsR0FDM0MsZUFBZUEsR0FDZixRQUZpQztJQWFuQyxTQUFTZ2Msc0JBQXNCekIsS0FBTW1CLE9BQVFQLEtBQU1qVztNQUNqRCxJQUFJK1csaUJBQW1CLDZCQUE2QjFCO01BQ3BELEdBQUcsaUJBQWlCWSxRQUFRYyxvQkFBb0IvVztPQUFhO01BRzdELEdBQUd3VyxlQUNBUCxvQkFDQWM7T0FDRCxXQUFXRixrQkFBa0J4QixLQUFNbUIsT0FBUVAsS0FBTWpXO01BQ25ELFdBQVd1VyxZQUFZbEIsS0FBTW1CLE9BQVFQLEtBQU1qVyxLQUU3QztJQXlYQSxTQUFTZ1gsb0JBQW9CQyxPQUFRL0IsR0FBSS9YO01BQ3ZDLElBQUkrWixTQUFXO01BQ2YsR0FBSUEsZ0JBQWdCQTtPQUNsQjtNQUZGLElBR1EsSUFBRSxpQkFDRCxLQUFFMWUsV0FDQSxPQUFHQSxhQUNMO01BQ1QsR0FBRzJFO09BQ0QsSUFBVyxJQUFGckQsSUFBT0EsSUFBSW9kLFNBQVVwZDtRQUFLLENBQ2pDLElBQUlxZCxTQUFXO1NBQ2YsR0FBR0E7VUFBbUIsQ0FDcEIsSUFBZ0IsWUFBRSxpQkFDRixZQUFFO1dBQ2xCLEdBQUdDO1lBQ0Q7V0FDRixXQUFXQztTQUViLFVBQVVGOztPQUdaLElBQVcsSUFBRnJkLElBQU9BLElBQUlvZCxTQUFVcGQsSUFBSyxVQUFVO01BcEIvQztPQXFCUyxLQUFFLGlCQUFpQm1jO09BQ25CLEtBQUUsc0JBQXNCWixLQUFNRTtPQUNoQyxHQUFFLHNCQUFzQkYsS0FBTW1CLE9BQVFQLEtBQU1qVztNQUNuRCxPQUFPcVY7ZUFFTCxJQUFVLElBQUZ2YixJQUFPQSxJQUFJeWIsS0FBTXpiLElBQUksS0FDdEJBLEtBQUssZ0JBRVo7O2dCQUdBLElBQVUsSUFBRkEsSUFBT0EsSUFBSXliLEtBQU16YixJQUFJLEtBQ3RCQSxLQUFLLGdCQUVaO2VBRUEsSUFBVSxJQUFGQSxJQUFPQSxJQUFJeWIsS0FBTXpiLElBQUksS0FDdEJBLEtBQUssaUJBRVo7ZUFFQSxJQUFVLElBQUZBLElBQU9BLElBQUl5YixLQUFNemIsSUFBSSxLQUN0QkEsS0FBSyxpQkFFWjtlQUVBLElBQVUsSUFBRkEsSUFBT0EsSUFBSXliLEtBQU16YixJQUFJLEtBQ3RCQSxLQUFLLGlCQUVaOzs7U0FHQSxJQUFJd2QsTUFBUTtTQUNaLEdBQUdBO1VBQU87O1NBQ1YsSUFBVSxJQUFGeGQsSUFBT0EsSUFBSXliLEtBQU16YixJQUFJLEtBQ3RCQSxLQUFLO1NBRVo7O1NBRUEsSUFBSVksTUFBUXVHO1NBQ1osSUFBVSxJQUFGbkgsSUFBT0EsSUFBSXliLEtBQU16YjtVQUFJLENBQzNCLElBQVcsSUFBRmlCLElBQU1BLE1BQU1BLElBQUssRUFBRUEsS0FBSztXQUNqQyxJQUFJd2MsTUFBUSxvQkFBb0I3YztXQUNoQyxPQUFPWixFQUFFeWQ7U0FFWDs7U0FFQSxJQUFJN2MsTUFBUXVHO1NBQ1osSUFBVSxJQUFGbkgsSUFBT0EsSUFBSXliLEtBQU16YjtVQUFJLENBQzNCLElBQVcsSUFBRmlCLElBQU1BLE1BQU1BLElBQUssRUFBRUEsS0FBSztXQUNqQyxJQUFJZixFQUFJLHlCQUF5QixvQkFBb0JVO1dBQ3JELE9BQU9aLEVBQUVFO1NBRVg7O1NBRUEsSUFBVSxJQUFGRixJQUFPQSxJQUFJeWIsS0FBTXpiO1VBQUksQ0FDM0IsSUFBSUUsRUFBSSx5QkFBeUIsa0JBQ2pDLE9BQU9GLEVBQUVFO1NBRVg7O1NBRUEsSUFBVSxJQUFGRixJQUFPQSxJQUFJeWIsS0FBTXpiO1VBQUksQ0FDM0I7WUFBTyxHQUFFLHlCQUF5QjtZQUMzQixHQUFFLHlCQUF5QjtXQUNsQyxPQUFPQSxPQUFPMmMsR0FBRzNTO1NBRW5COztTQUVBLElBQUlwSixNQUFRdUc7U0FDWixJQUFVLElBQUZuSCxJQUFPQSxJQUFJeWIsS0FBTXpiO1VBQUksQ0FDM0IsSUFBVyxJQUFGaUIsSUFBTUEsTUFBTUEsSUFBSyxFQUFFQSxLQUFLO1dBQ2pDLElBQUkwYixHQUFLLHlCQUF5QixvQkFBb0IvYjtXQUN0RCxJQUFXLElBQUZLLElBQU1BLE1BQU1BLElBQUssRUFBRUEsS0FBSztXQURqQyxJQUVJK0ksR0FBSyx5QkFBeUIsb0JBQW9CcEo7V0FDdEQsT0FBT1osT0FBTzJjLEdBQUczUztTQUVuQjs7TUFFRixhQUFhb1Q7TUFDYixPQUFPLHNCQUFzQjdCLEtBQU1tQixPQUFRUCxLQUFNalcsS0FDbkQ7SUFqZkEsU0FBU3dYLGdCQUFnQjNkLEVBQUVZLEVBQUVpYyxPQUMzQixPQUFPLFVBQVVqYyxFQUFFaWMsTUFDckI7SUl2TEEsU0FBU2Usb0JBQXFCemUsRUFBRzhCO01BQy9CLElBQUksa0JBQWtCOUIsRUFBRyxnQkFBZ0I4QjtNQUN6QyxJQUFJLGtCQUFrQjlCLEVBQUcsZ0JBQWdCOEI7TUFDekMsT0FBTzlCLENBQ1Q7SUFWQSxTQUFTMGUsb0JBQXFCMWUsRUFBRzJlO01BQy9CLE9BQU8sb0JBQW9CM2UsRUFBRyx5QkFBMEIyZSxJQUMxRDtJSndyQkEsU0FBU0MsYUFBYTNIO01BQ3BCLElBQWEsU0FBRSxpQkFBaUJBLFNBQzFCO01BQ04sT0FBT0E7Ozs7U0FJTCxHQUFHNEgsZUFBZ0I7U0FDbkIsSUFBTSxJQUFPO1NBQ2IsSUFBSS9kLE1BQU9BLFNBQVNtVyxlQUFnQm5XO1VBQUssQ0FDdkM7O1dBQUltVyxRQUFRblc7O1dBQVFtVyxRQUFRblc7Ozs7V0FBY21XLFFBQVFuVzs7OztXQUFlbVcsUUFBUW5XOzs7V0FDekUsSUFBSSxrQkFBa0JkLEVBQUU4ZTtTQUUxQjtTQUNBLE9BQVFEO2tCQUNBLElBQUs1SCxRQUFRblc7a0JBQ2IsS0FBS21XLFFBQVFuVztrQkFDYixLQUFLbVcsUUFBUW5XLE9BQ25CLElBQUksa0JBQWtCZCxFQUFHOGU7O1NBRTNCOzs7U0FHQSxHQUFHRCxlQUFnQjtTQUNuQixJQUFNLElBQU87U0FDYixJQUFJL2QsTUFBT0EsU0FBU21XLGVBQWdCblc7VUFBSyxDQUN2QyxJQUFJbVcsUUFBUW5XLFNBQVFtVyxRQUFRblc7V0FDNUIsSUFBSSxrQkFBa0JkLEVBQUU4ZTtTQUUxQixJQUFLRCxtQkFDSCxJQUFJLGtCQUFrQjdlLEVBQUdpWCxRQUFRblc7U0FDbkM7O1NBRUEsR0FBSStkLGNBQWU7U0FDbkIsSUFBVyxJQUFGL2QsSUFBT0EsSUFBSStkLFNBQVUvZCxJQUFLLElBQUksa0JBQWtCZCxFQUFHaVgsUUFBUW5XO1NBQ3BFOzs7U0FHQSxHQUFJK2QsY0FBZTtTQUNuQixJQUFXLElBQUYvZCxJQUFPQSxJQUFJK2QsU0FBVS9kLElBQUssSUFBSSxrQkFBa0JkLEVBQUdpWCxRQUFRblc7U0FDcEU7O1NBRUEsR0FBSStkLGNBQWU7U0FDbkI7U0FDQSxJQUFXLElBQUYvZCxJQUFPQSxJQUFJK2QsU0FBVS9kLElBQUssSUFDN0Isa0JBQWtCZCxFQUFHaVgsUUFBUW5XO1NBRW5DO2dCQUVBOztTQUVBLEdBQUkrZCxjQUFlO1NBQ25CLElBQVcsSUFBRi9kLElBQU9BLElBQUkrZCxTQUFVL2QsSUFBSyxJQUFJLG9CQUFvQmQsRUFBR2lYLFFBQVFuVztTQUN0RTtnQkFFQTs7U0FFQSxHQUFJK2QsY0FBZTtTQUNuQixJQUFXLElBQUYvZCxJQUFPQSxJQUFJK2QsU0FBVS9kLElBQUssSUFBSSxvQkFBb0JkLEVBQUdpWCxRQUFRblc7U0FDdEU7O01BRUYsT0FBT2QsQ0FDVDtJTGpzQkEsU0FBUytlLHFCQUFxQmQsT0FBUTFCO01BQ3BDLFlBQ0EsT0FBTyxnQkFDVDtJQUlBLFNBQVN5Qyx5QkFBeUJmLE9BQVExQjtNQUN4QyxPQUFRO2VBRU4sWUFDQSxPQUFPO2VBRVA7Z0JBQ08sd0RBRVg7SUFoQ0EsU0FBUzBDLHFCQUFxQmhCLE9BQVExQjtNQUNwQyxJQUFJN2EsTUFBUXVHO01BQ1osSUFBVyxJQUFGbEcsSUFBTUEsTUFBTUEsSUFBSyxFQUFFQSxLQUFLO01BQ2pDO01BQ0EsT0FBTyxvQkFBcUJMLEVBQzlCO0lka0VBLFNBQVN3ZCxtQkFBbUJuZ0IsRUFBRXVCLEVBQUdvZCxPQUFTLE9BQU8sVUFBVXBkLEVBQUc7SUE4SjlELFNBQVM2ZSxnQkFBZ0JyZCxHQUN2QixPQUFRLFdBQWEsUUFDdkI7SWNqTUE7S0FBSXNkOztvQkFFZ0JIO2tCQUNEcEg7O2dCQUVIcUg7YUFDSEM7eUJBR1FKO3lCQUlBQzs7O2lCQUlXZixPQUFRL0IsSUFBSyxPQUFPLG9CQUFxQitCLE9BQU8vQixlQUExRDtrQkFDSEQ7Z0JBQ0Z1QzthQUNKSTs7O2lCQUdtQlgsT0FBUS9CLElBQUssT0FBTyxvQkFBcUIrQixPQUFPL0IsZUFBMUQ7a0JBQ0hEO2dCQUNGdUM7YUFDSkk7SVl6S2IsU0FBU1MsNEJBQTRCeGU7TUFDbkMsT0FBT3VlLGdCQUFnQnZlOzthQUFrQnVlLGdCQUFnQnZlLHNCQUMzRDtJQUlBLFNBQVN5ZSwrQkFBK0JDLElBQUtDLE9BQVFDLEtBQU0vQjtNQUN6RCxJQUFJblosS0FBTyw0QkFBNEJpYjtNQUN2QyxHQUFHamI7T0FBTSxDQUNQLElBQUl4RixFQUFLMGdCLFNBQVUsS0FBS0QsT0FBT0QsSUFBSTdCLE9BQU8sS0FBSzZCLElBQUlDLE9BQU85QjtRQUMxRCxHQUFHQSxTQUFTM2UsS0FBS0EsRUFBRyxPQUFPMGdCO1FBQzNCLEtBQUkxZ0IsT0FBTUEsRUFBRyxTQUFRQTtRQUNyQixJQUFJQSxZQUFhLE9BQVFBO01BRTNCLE9BQU8wZ0IsSUFDVDtJQXRDQSxTQUFTQyxxQkFBcUI3ZTtNQUM1QixVQUFXQTtPQUFnQjs7T0FDdEIsR0FBSSxpQkFBaUJBO1FBQUk7O1FBQ3pCLEdBQUksa0JBQWtCQTtTQUFJOztTQUMxQixHQUFJQSxhQUFhb0gsU0FBU3BILFNBQVVBLGNBQWFBO1VBQWEsQ0FFakUsSUFBSXJCLElBQU1xQixTQUdWLE9BQVFyQixhQUFjQTs7VUFFbkIsR0FBSXFCLGFBQWFJO1dBQVE7O1dBQ3pCLFVBQVdKO1lBQWU7O1lBQzFCLEdBQUlBLGFBQWF3VTthQUFROzthQUN6QixHQUFJeFUsS0FBS0E7Y0FBZTs7Y0FDeEIsR0FBSUEsS0FBS0E7ZUFBVzs7ZUFDcEIsVUFBV0E7Z0JBQWlCOztnQkFDNUIsVUFBV0EsY0FBZTtNQUMvQixXQUNGO0lBME1BLFNBQVM4ZSxpQkFBa0I5ZSxFQUFHWTtNQUM1QixHQUFJWixJQUFJWSxFQUFHLFdBQWEsR0FBSVosS0FBS1ksRUFBRyxTQUFVLFFBQ2hEO0l6QnNSQSxTQUFTbWUsbUJBQW1CeFosR0FBSUU7TUFDOUIsWUFBYyw2QkFBNkJGO01BQzNDLFlBQWMsNkJBQTZCRTtNQUMzQyxPQUFRRixPQUFPRSxTQUFVRixPQUFPRSxRQUNsQztJQThPQSxTQUFTdVosb0JBQW9CelosR0FBSUUsSUFDL0IsT0FBTyxtQkFBbUJGLEdBQUdFLEdBQy9CO0l5QjNyQkEsU0FBU3daLGlCQUFrQmpmLEVBQUdZLEVBQUdpYztNQUMvQixJQUFJcUM7TUFDSjtPQUFRLENBQ04sTUFBTXJDLFNBQVM3YyxNQUFNWTtTQUFJLENBQ3ZCLElBQUl1ZSxNQUFRLHFCQUFxQm5mO1VBRWpDLEdBQUdtZixhQUFjLENBQUUsSUFBSW5mLEtBQU07VUFGN0IsSUFJSW9mLE1BQVEscUJBQXFCeGU7VUFFakMsR0FBR3dlLGFBQWMsQ0FBRSxJQUFJeGUsS0FBTTtVQUc3QixHQUFHdWUsVUFBVUM7V0FBTyxDQUNsQixHQUFHRDthQUFlLENBQ2hCLEdBQUdDO2VBQWUsT0FDVCwrQkFBK0JwZixFQUFHWSxNQUFPaWM7Y0FFbEQ7WUFFRixHQUFHdUM7YUFBZSxDQUNoQixHQUFHRDtlQUFlLE9BQ1QsK0JBQStCdmUsRUFBR1osSUFBTTZjO2NBRWpEO1lBRUYsT0FBUXNDLFFBQVFDO1VBRWxCLE9BQU9EO3FCQUlMLG1EQUNBOzthQUVBLElBQUlqaEIsRUFBSSxpQkFBaUI4QixLQUFNWSxNQUMvQixHQUFJMUMsT0FBUSxPQUFRQSxNQUNwQjtxQkFHQSxtREFDQTs7YUFHQTs7YUFDQTtxQkFFQSwrQ0FDQTs7YUFFQSxHQUFJOEIsTUFBTVksRUFBRyxDQUNYLElBQUkxQyxFQUFJLG1CQUFtQjhCLEVBQUdZLEdBQzlCLEdBQUkxQyxPQUFRLE9BQVFBO2FBRXRCOzthQUdBO2FBQ0E7O2FBR0E7O2FBQ0E7O2FBRUE7YUFDQTs7YUFFQSxtREFDQTs7YUFFQSxJQUFJd0YsS0FBTyw0QkFBNEIxRDthQUN2QyxHQUFHMEQsUUFBUSw0QkFBNEI5QztjQUFHLE9BQ2hDWixnQkFBY1k7YUFFeEIsS0FBSThDLEtBQ0Y7YUFMRixJQU1JeEYsRUFBSSxLQUFLOEIsRUFBRVksRUFBRWljO2FBQ2pCLEdBQUczZSxLQUFLQSxFQUFFLE9BQ0QyZSxVQUFTM2U7YUFFbEIsR0FBR0EsT0FBT0EsT0FBSzthQUdmLEdBQUlBLE9BQVEsT0FBUUE7YUFDcEI7O2FBRUEsSUFBSUEsRUFBSSxVQUFVMEMsRUFBRWljO2FBQ3BCLEdBQUczZSxLQUFLQSxFQUFHLE9BQ0YyZSxVQUFTM2U7YUFFbEIsR0FBR0EsT0FBT0EsT0FBSzthQUdmLEdBQUlBLE9BQVEsT0FBUUE7YUFDcEI7O2FBRUEsTUFBSzhCO2FBQ0wsTUFBS1k7YUFDTCxHQUFJWixJQUFJWSxFQUFHO2FBQ1gsR0FBSVosSUFBSVksRUFBRzthQUNYLEdBQUlaLEtBQUtZO2NBQUcsQ0FDVixLQUFLaWMsTUFBTyxPQUFPWCxJQUNuQixHQUFJbGMsS0FBS0EsRUFBRyxTQUNaLEdBQUlZLEtBQUtBLEVBQUc7YUFFZDs7YUFlQSxHQUFJWixJQUFJWSxFQUFHO2FBQ1gsR0FBSVosSUFBSVksRUFBRzthQUNYLEdBQUlaLEtBQUtZO2NBQUcsQ0FDVixLQUFLaWMsTUFBTyxPQUFPWCxJQUNuQixHQUFJbGMsS0FBS0EsRUFBRyxTQUNaLEdBQUlZLEtBQUtBLEVBQUc7YUFFZDtzQkFFQSxHQUFHWixNQUFNWSxFQUFHLENBQ1YsS0FBS2ljLE1BQU8sT0FBT1gsSUFDbkIsU0FFRjs7YUFFQSxJQUFNLEVBQUUsdUJBQXVCbGMsR0FDekIsRUFBRSx1QkFBdUJZO2FBQy9CLEdBQUdaLE1BQU1ZLEVBQUcsQ0FDVixHQUFHWixJQUFJWSxFQUFHLFdBQ1YsR0FBR1osSUFBSVksRUFBRzthQUVaOzthQUVBLElBQU0sRUFBRSxhQUNGLEVBQUU7YUFDUixHQUFHWixNQUFNWSxFQUFHLENBQ1YsR0FBR1osSUFBSVksRUFBRyxXQUNWLEdBQUdaLElBQUlZLEVBQUc7YUFFWjs7OzthQUlBLEdBQUcseUJBQXlCdWU7Y0FBUSxDQUNsQyxxREFDQTthQUVGLEdBQUluZixZQUFZWSxTQUFVLE9BQVFaLFdBQVdZO2FBQzdDLEdBQUlaLGFBQWMsV0FBV0EsRUFBR1k7YUFDaEM7UUFHSixHQUFJc2Usa0JBQW1CO1FBQ3ZCLElBQUlqZixFQUFJO1FBQ1IsSUFBSTtRQUNKLElBQUk7UUFDSixHQUFJQSxRQUFRRCxTQUFVLFdBQVdBLEVBQUdZLEVBQUdYO1FBQ3ZDLElBQUlELEVBQUVDO1FBQ04sSUFBSVcsRUFBRVgsR0FFVjtJQW1CQSxTQUFTb2YsaUJBQWtCbmhCLEVBQUd1QixHQUFLLFVBQVMsaUJBQWlCdkIsRUFBRXVCLGFBQWU7SWRhOUUsU0FBUzZmLFdBQVd0ZixFQUFHWSxFQUFHRTtNQUN4QjtPQUFNLEVBQUVkLGFBQWFZO09BQ2YsRUFBRSxXQUFXMUMsSUFBRTRDO09BQ2YsRUFBRzVDLElBQUk0QztPQUNQLEVBQUUwVSxLQUFLNVU7TUFDYixRQUFRbkIsSUFBSSxXQUFXd2UsSUFBRW5kLEdBQUltZCxJQUFJbmQsRUFDbkM7SUFLQSxTQUFTeWUsY0FBY0MsS0FBTUMsS0FBTUMsS0FBTUMsS0FBTXBXLEtBQU1DLEtBQU10SixJQUFLd0osS0FBTUM7TUFDcEUsSUFBSWlXLElBQU9yVyxVQUFVQyxPQUFLdEo7TUFHMUIsSUFBVSxJQUFGRCxFQUFJQyxRQUFPRCxPQUFRQTtPQUFLLENBQzlCLElBQUkvQixFQUFJLFdBQVcwaEIsSUFBTXJXLFVBQVVDLE9BQUt2SixTQUFZeUosVUFBVUM7UUFDOUQsVUFBVThWLE9BQUt4ZixLQUFLL0I7UUFDcEIsTUFBTUE7TUFFUixVQUFVeWhCLFFBQVFDO01BQ2xCLFFBQ0Y7SUFqTUEsU0FBU0MsK0JBQStCNUgsSUFBSzNCO01BQzNDLElBQU0sRUFBRTJCLFNBQVMzQixLQUNYO01BQ04sR0FBR3RXLGVBQWdCLENBQUUsUUFBUTtNQUM3QixHQUFHQSxXQUFnQixDQUFFLE9BQVE7TUFDN0IsR0FBR0EsU0FBZ0IsQ0FBRSxPQUFRO01BQzdCLEdBQUdBLE9BQWdCLENBQUUsT0FBUTtNQUM3QixHQUFHQSxNQUFnQixDQUFFLE9BQVE7TUFDN0IsR0FBR0EsTUFBZ0I7TUFDbkIsWUFBWVksQ0FDZDtJQWdKQSxTQUFTa2YsZUFBZXZXLEtBQU1DLEtBQU1DLEtBQU1DLEtBQU1DLEtBQU1DO01BQ3BELEdBQUdBLFdBQVksQ0FDYixVQUFVRCxVQUNWO01BRUYsSUFBSUU7TUFDSixJQUFVLElBQUY1SixJQUFPQSxJQUFJd0osS0FBTXhKO09BQUssQ0FDNUIsSUFBSUQsRUFBS3VKLFVBQVVDLE9BQUt2SjtRQUN4QixVQUFVdUosT0FBS3ZKLEtBQU1ELEtBQUs0SixRQUFTQztRQUNuQyxPQUFPN0osV0FBWTRKO01BRXJCLFVBQVVELFFBQVFFO01BQ2xCLFFBQ0Y7SUEzUEEsU0FBU2tXLE1BQU03aEI7TUFDYixnQkFBZ0IyYyxXQUFXM2MsR0FHM0IsY0FBY04sb0JBQ2hCO0lBRUE7SUFzQkEsU0FBU29pQixXQUFXdEU7TUFDbEIsSUFBSXpPLFFBQVU4UyxNQUFNckU7TUFDcEIsSUFBVSxJQUFGemIsSUFBT0EsSUFBSXliLEtBQU16YixJQUFLLFNBQ25CQTtNQUVYLE9BQU9nTixHQUNUO0lBR0EsU0FBU2dULGdCQUFnQmhJLElBQUszQixJQUFLcFc7TUFDakMsSUFBVSxJQUFGRCxJQUFPQSxJQUFJQyxJQUFLRCxJQUFLLFNBQ2xCcVcsTUFBSXJXLE9BRWYsUUFDRjtJQXdFQSxTQUFTaWdCLFNBQVNqSSxJQUFLM0IsSUFBS3BXLElBQUtpZ0I7TUFDL0IsSUFBSTFTLE1BQVEwUztNQUNaLElBQVUsSUFBRmxnQixJQUFPQSxJQUFJQyxJQUFLRDtPQUFLLENBQzNCLElBQUkvQixHQUFLK1osU0FBUzNCLE1BQUlyVyxZQUFZd047UUFDbEMsU0FBUzZJLE1BQUlyVyxLQUFNL0I7UUFDbkIsR0FBR0EsS0FBTUEsUUFBVSxDQUNqQixVQUNBLFdBQ0s7TUFJVCxPQUFPdVAsS0FDVDtJQUtBLFNBQVMyUyxRQUFRN1csS0FBTUMsS0FBTUMsS0FBTUMsS0FBTUMsS0FBTTBXLEtBQU1GO01BQ25ELElBQUkxUyxNQUFRMFM7TUFDWixJQUFVLElBQUZsZ0IsSUFBT0EsSUFBSW9nQixLQUFNcGdCO09BQUssQ0FDNUI7U0FBSS9CO1dBQUtxTCxVQUFVQyxPQUFLdkosYUFBYXlKLFVBQVVDLE9BQUsxSixZQUFZd047UUFDaEUsVUFBVWpFLE9BQUt2SixLQUFLL0I7UUFDcEIsR0FBR0EsS0FBTUEsUUFBVSxlQUVaO01BSVQsT0FBTyxTQUFTcUwsS0FBTUMsT0FBSzZXLEtBQU01VyxPQUFLNFcsS0FBTTVTLE1BQzlDO0lBMUhBLFNBQVM2UyxhQUFhL2hCLEdBQ3BCLFdBQVd3aEIsTUFBTXhoQixFQUNuQjtJQXdLQSxTQUFTZ2lCLGVBQWVoWCxLQUFNQyxLQUFNQyxLQUFNQyxLQUFNQyxLQUFNMFcsS0FBTUcsS0FBTUM7TUFDaEUsSUFBVSxRQUNKLEVBQUdELFVBQVVDO01BQ25CLElBQVUsSUFBRnhnQixJQUFPQSxJQUFJb2dCLEtBQU1wZ0I7T0FBSyxDQUM1QjtTQUFPO1dBQUdzSixVQUFVQyxPQUFLdko7O1dBQWF5SixVQUFVQyxPQUFLMUo7O1dBQWFEOztVQUFrQnlOO1NBQzdFLElBQUcvRCxVQUFVQyxPQUFLMUosYUFBYUQ7UUFDdEMsUUFBUSxXQUFXMmdCO1FBRm5CLElBR0lDLEdBQUtGLEtBQU1DO1FBQ2YsVUFBVW5YLE9BQUt2SixLQUFLMmdCO1FBQ3BCLFNBQVMsV0FBV0E7TUFHdEIsT0FBR1AsT0FBTzVXLFFBQVFnRTtlQUNUO2lCQUFRbEUsS0FBTUMsT0FBSzZXLEtBQU01VyxPQUFLNFcsS0FBTSxjQUFjNVM7ZUFFbERBLEtBRVg7SUF0REEsU0FBU29ULFNBQVM1SSxJQUFLM0IsSUFBS3BXLElBQUtpZ0I7TUFDL0IsSUFBSWxTLE9BQVVrUztNQUNkLElBQVUsSUFBRmxnQixJQUFPQSxJQUFJQyxJQUFLRDtPQUFLLENBQzNCLElBQUkvQixHQUFLK1osU0FBUzNCLE1BQUlyVyxZQUFXZ087UUFDakMsU0FBU3FJLE1BQUlyVyxLQUFLL0I7UUFDbEIsR0FBSUEsT0FBUSxDQUNWLFdBQ0EsV0FDSztNQUlULE9BQVErUCxlQUNWO0lBTUEsU0FBUzZTLFFBQVF2WCxLQUFNQyxLQUFNQyxLQUFNQyxLQUFNQyxLQUFNMFcsS0FBTUY7TUFDbkQsSUFBSWxTLE9BQVVrUztNQUNkLElBQVUsSUFBRmxnQixJQUFPQSxJQUFJb2dCLEtBQU1wZ0I7T0FBSyxDQUM1QjtTQUFJL0I7V0FBS3FMLFVBQVVDLE9BQUt2SixhQUFheUosVUFBVUMsT0FBSzFKLFlBQVlnTztRQUNoRSxVQUFVekUsT0FBS3ZKLEtBQUsvQjtRQUNwQixHQUFJQSxPQUFRLGdCQUVMO01BSVQsT0FBTyxTQUFTcUwsS0FBTUMsT0FBSzZXLEtBQU01VyxPQUFLNFcsS0FBT3BTLGdCQUMvQztJQTRKQSxTQUFTOFMsWUFBWXhYLEtBQU1DLEtBQU1DLEtBQU1DLEtBQU1DLEtBQU0wVztNQUNqRCxJQUFNLEVBQUUsZUFBZTlXLEtBQU1DLEtBQU1DLE1BQzdCLEVBQUUsZUFBZUMsS0FBTUMsS0FBTTBXO01BQ25DLEdBQUdyZ0IsSUFBSVksRUFBRztNQUNWLEdBQUdaLElBQUlZLEVBQUc7TUFDVixJQUFVLElBQUZYLEVBQUl3SixTQUFVeEosT0FBUUE7T0FBSyxDQUNqQyxHQUFLc0osVUFBVUMsT0FBS3ZKLFdBQWF5SixVQUFVQyxPQUFLMUosU0FBVztRQUMzRCxHQUFLc0osVUFBVUMsT0FBS3ZKLFdBQWF5SixVQUFVQyxPQUFLMUosU0FBVztNQUU3RCxRQUNGO0lBckVBLFNBQVMrZ0IsUUFBUXpYLEtBQU1DLEtBQU1DLEtBQU1DLEtBQU1DLEtBQU0wVztNQUM3QyxHQUFHQTtPQUFXLENBQ1osY0FBYzlXLEtBQU1DLFNBQVFELEtBQU1DLEtBQU1ELEtBQU1DLEtBQU1DLEtBQU1DLEtBQU1DO1FBQ2hFO01BR0YsSUFBSXRMLEVBQUksK0JBQStCcUwsS0FBTUMsT0FBSzBXO01BQ2xELGVBQWUzVyxLQUFNQyxLQUFNMFcsS0FBTSxvQkFBc0JoaUI7TUFDdkQsZUFBZWtMLEtBQU1DLEtBQU1DLEtBQU0sb0JBQXNCcEw7TUFGdkQsSUFJTSxHQUFHcUwsVUFBVUMsT0FBSzBXLHFCQUNsQixFQUFFLFdBQVdBO01BQ25CLElBQVcsSUFBRnBnQixFQUFJd0osU0FBVXhKLEtBQUtvZ0IsS0FBTXBnQjtPQUFLLENBRXJDO1NBQUlnaEI7VUFBTXBkO1lBQW1CMEYsVUFBVUMsT0FBS3ZKO1lBQVk7ZUFBWXNKLFVBQVVDLE9BQUt2SixTQUFZc0osVUFBVUMsT0FBS3ZKLGFBQVk0RDs7UUFDMUgsZ0JBQWdCN0QsSUFBTXFnQjtRQUN0QixlQUFlcmdCLElBQU1xZ0IsU0FBUTNXLEtBQU1DLEtBQU0wVyxLQUFNLGNBQWNZO1FBQzdELFFBQVExWCxLQUFNQyxPQUFLdkosSUFBRW9nQixLQUFNQSxTQUFRcmdCLElBQU1xZ0I7UUFFekM7VUFBTzlXLFVBQVVDLE9BQUt2Sjs7OztVQUFXLFlBQVlzSixLQUFNQyxPQUFLdkosSUFBRW9nQixLQUFNQSxLQUFNM1csS0FBTUMsS0FBTTBXOzs7U0FBWSxDQUM1RixNQUFNWTtVQUNOLFFBQVExWCxLQUFNQyxPQUFLdkosSUFBRW9nQixLQUFNQSxTQUFRM1csS0FBTUMsS0FBTTBXO1FBR2pELFVBQVU3VyxPQUFLdkosS0FBS2doQjtNQUd0QixnQkFBZ0IxWCxLQUFNQyxLQUFNNlcsS0FBTSxvQkFBc0JoaUI7TUFDeEQsZ0JBQWdCcUwsS0FBTUMsS0FBTTBXLEtBQU0sb0JBQXNCaGlCO01BQ3hELFFBQ0Y7SU9rTEEsU0FBUzZpQixhQUFhQyxJQUFLQztNQUN6QixHQUFJQSxtQkFBbUJEO09BQ3JCO01BQ0YsSUFBVyxJQUFGbGhCLElBQU9BLElBQUltaEIsZ0JBQWlCbmhCO09BQ25DLEdBQUltaEIsU0FBU25oQixNQUFNa2hCLFNBQVNsaEI7UUFDMUI7TUFDSixhQUFha2hCO01BQ2IsUUFDRjtJUG5aQSxTQUFTRSxhQUFhcEosSUFBSzNCLEtBQ3pCLEdBQUkyQixTQUFTM0IsVUFBVyxTQUN4QixRQUNGO0laa0pBLFNBQVNnTCxlQUFnQnBqQixFQUFHdUIsR0FBSyxPQUFPLE1BQU1BLEVBQUc7STJCM05qRCxTQUFTOGhCLHNCQUFzQmxqQjtNQUM3QixJQUFJbWpCO01BQ0osR0FBRyxRQUFRQTtPQUNYLENBQ0UsSUFBSXRXLElBQVUsS0FBRTtRQUNoQixpQkFBZ0I3TTtRQUNoQixNQUFLb2pCLG9CQUFvQkE7UUFDekIsT0FBS3BoQjtRQUNMLE9BQU82Szs7T0FFSixrQ0FDK0I3TSxFQUV0QztJMUJ3ckJBLFNBQVNzakIsdUJBQXdCdGpCLEVBQUc0QixFQUFHYTtNQUNyQyxPQUFPLHNCQUFzQnpDLEVBQUU0QixFQUFFYSxFQUNuQztJRHpkQSxTQUFTOGdCLG9CQUFxQjFqQjtNQUM1QixHQUFJQSxNQUFPLElBQUksVUFBVUE7TUFDekI7Y0FBV1k7ZUFDVFo7ZUFDQSxXQUFXQSxJQUFJTTtlQUNmLFdBQVdOLElBQUlNLG9CQUFvQkEsNEJBQ3ZDO0lldkZBLFNBQVNxakIsd0JBQXdCdFc7TUFDL0IsSUFBSU4sS0FBT0YsaUJBQWlCUTtNQUM1QixPQUFPLG9CQUFvQixtQkFDN0I7SUk4UkEsU0FBU3VXLGNBQWMxTCxHQUFJQyxHQUFJN1EsR0FBSXZFLEdBQ2pDLE9BQU8sV0FBV29WLEdBQUc3USxLQUFNdkUsR0FDM0IsUUFDRjtJRGpTQSxTQUFTOGdCLGNBQWNDO01BQ3JCLElBQUl6TjtNQUNKLEdBQUcsbUJBQW1CeU4sSUFBSztPQUFtQyxDQUM1RCxXQUNBLE1BQU0sZUFBZUE7TUFIdkI7T0FLTyxHQUFFLGdCQUFnQkE7T0FDbEIsR0FBRSxnQkFBZ0JBO09BQ25CLEVBQUUsT0FBT2pqQixRQUFRLE9BQU9FO01BQzlCLEdBQUdzVixJQUFLLElBQU07TUFDZCxPQUFPLGVBQWVyVyxFQUN4QjtJQTgxQkEsU0FBUytqQixlQUFlN2pCLEVBQUU0YztNQUN4QixrREFDRjtJUjc2QkE7S0FBYztNQUFHO1NBQ2YsSUFBWSxRQUFFcmQsbUJBQ0wsYUFDQTtTQUVULEdBQUcwTCxXQUNHQSxnQkFDQUE7VUFBeUIsQ0FDN0IsSUFBSStZLEtBQU8vWSxhQUVYLE9BQU8rWSxRQUNQLE9BQU87U0FWVCxJQWFNLEVBQUUsd0JBQXdCRCxNQUN0QixTQUFNL2Y7U0FDaEIsSUFBVSxJQUFGbkMsSUFBT0EsSUFBSXFFLFlBQWFyRTtVQUM5QixXQUFXLHdCQUF3QnFFLEtBQUtyRTtTQUMxQyxPQUFPb2lCLEtBbEJTOztLQXVCTyxxQkFBRUg7SVU2TzNCLFNBQVNLLG9CQUFxQmxrQixHQUFJLE9BQU8sS0FBSyx3QkFBd0JBLEdBQUk7SVJBMUUsU0FBU29rQixjQUFjeEwsT0FBUWdCLElBQUtvRDtNQUNsQyxJQUFJbmIsSUFBTStYO01BQ1YsZ0JBQWlCL1g7TUFDakIsSUFBVSxJQUFGRCxJQUFPQSxJQUFJQyxJQUFLRCxJQUFJLGdCQUNUZ1ksU0FBU2hZO01BRTVCLFFBQVFDO01BQ1IsUUFBUUEsT0FDVjtJSXJXQSxTQUFTd2lCLGlCQUFpQkMsVUFDeEIsUUFDRjtJRVpBLFNBQVNDLFNBQVN0TixJQUNoQixPQUFPLGVBQWUsT0FBT0EsYUFDL0I7SVJUQSxTQUFTdU4sY0FBZTNlO01BQ3RCLEdBQUd2RyxnQkFBaUIsZ0JBQWdCdUc7TUFFcEMsR0FBR3ZHLHNCQUFzQkE7T0FDdkIsd0JBQXdCdUc7TUFDMUIsd0RBQ0Y7SUtnSUEsU0FBUzRlLHdCQUF3QnZYO01BQy9CLElBQUlOLEtBQU9GLGlCQUFpQlEsUUFDNUIsT0FBT04sT0FDVDtJS29CQSxTQUFTOFgsbUJBQW1CL2lCLEdBQzFCLE9BQU8sVUFDVDtJRHdZQSxTQUFTZ2pCLGdCQUFnQjVNLEdBQUk2TTtNQUMzQixPQUFPLG1CQUFtQkE7TUFDMUIsSUFBWSxXQUNDLFNBQUVBO01BRWYsR0FBSTVGLGdCQUFnQkE7T0FBYztNQUhsQyxJQU1JVztNQUNKLElBQVcsSUFBRi9kLElBQU9BLElBQUlvZCxTQUFVcGQ7T0FBSyxDQUNqQyxRQUFRQSxLQUFLZ2pCLEtBQUtoakI7UUFDbEIsR0FBSWlqQixRQUFRampCO1NBQ1Y7UUFDRixXQUFXK2QsV0FBV2tGLFFBQVFqakI7TUFYaEMsSUFjSXliLEtBQU8saUJBQWlCdEY7TUFFNUIsR0FBSTRILFlBQVl0QztPQUNkO01BQ0YsT0FBTyxzQkFBc0J0RixRQUFTQSxVQUFXOE0sUUFBUzlNLFFBQzVEO0lLcmRBLElBQUkrTTtJQUlKLFNBQVNDLGVBQWdCeGlCLEdBQ3ZCLE9BQUt1aUIsa0JBQ0wsT0FBT3ZpQixDQUNUO0lYK0tBLFNBQVN5aUIsa0JBQWtCbmxCLEVBQUV1QixFQUFFd2UsRUFBRTllO01BQy9CLElBQUlkLEVBQUk7TUFDUixtQkFBbUJILEVBQUVHLFdBQVdvQixFQUFFd2UsSUFBRzllO01BQ3JDLFFBQ0Y7SWV4UEEsU0FBU21rQixpQ0FBaUNDLEtBQU1DLEtBQU1DLElBQUtDLEtBQU14akI7TUFDL0QsU0FBU3VqQjtPQUNQOztNQUNGLEdBQUd2akIsU0FBVTtNQUNiLElBQUl5SixLQUFPLFdBQVcrWjtNQUN0QixHQUFHRixPQUFPdGpCLE1BQU0sc0JBQXNCcWpCLE1BQU87TUFHN0MsR0FBRzVaLE9BQU96SixNQUFNdWpCLGdCQUFpQjtNQUpqQyxJQU9JRSxNQUFRLDJCQUEyQkosWUFBWUMsS0FBS0EsT0FBT3RqQjtNQUMvRCxhQUFheWpCLE1BQU1oYTtNQUNuQixRQUNGO0lmcURBLFNBQVNpYSx5QkFBeUJ0Z0I7TUFDaEMsSUFBSWpGLEVBQUk7TUFDUixVQUFVaUY7TUFEVixJQUVJdWdCLE9BQVMsd0JBQXdCdmdCO01BQ3JDLEdBQUdqRixZQUFhLFlBQVl3bEI7TUFDNUIsUUFDRjtJVjVCQSxTQUFTQyx1QkFBMEIsT0FBT2xsQixnQkFBa0I7SUgySTVELFNBQVNtbEIsZ0NBQWlDN2xCLEVBQUdHO01BQUssT0FBTyx1QkFBdUJBLEVBQUc7SW1CcUluRixTQUFTMmxCLG9CQUFvQjVOLEdBQUlDO01BQy9CLElBQUlDLElBQU0sVUFBVUQ7TUFDcEIsR0FBR0MsV0FBV0YsZUFBZ0I7TUFEOUIsSUFFTyxHQUFFLE9BQU9FLEtBQ1QsR0FBRSxPQUFPQTtNQUNoQixPQUFRQyxLQUFNQyxPQUNoQjtJRDlNQSxTQUFTeU4sY0FBY2hrQixHQUNyQixPQUFPQSxLQUNUO0lRbURBLFNBQVNpa0IsYUFBY2xrQixFQUFHWSxHQUFLLE9BQU8saUJBQWtCWixFQUFHWSxPQUFVO0lHNUxyRTtLQUFJdWpCO01BQW9CO1NBQ3RCLFNBQVM3VyxJQUFLcFAsRUFBR3VCLEdBQUssT0FBUXZCLElBQUl1QixLQUFRO1NBQzFDLFNBQVMya0IsR0FBRzFrQixFQUFFTSxFQUFFWSxFQUFFMUMsRUFBRUcsRUFBRXdDO1dBQ3BCLElBQUksSUFBSSxJQUFJYixFQUFHTixHQUFJLElBQUl4QixFQUFHMkMsSUFDMUIsT0FBTyxJQUFLYixLQUFLM0IsSUFBTTJCLFdBQVkzQixFQUFLdUMsRUFDMUM7U0FDQSxTQUFTeWpCLEdBQUdya0IsRUFBRVksRUFBRUUsRUFBRStDLEVBQUUzRixFQUFFRyxFQUFFd0MsR0FDdEIsT0FBTyxHQUFJRCxJQUFJRSxNQUFRRixJQUFLaUQsRUFBSTdELEVBQUdZLEVBQUcxQyxFQUFHRyxFQUFHd0MsRUFDOUM7U0FDQSxTQUFTeWpCLEdBQUd0a0IsRUFBRVksRUFBRUUsRUFBRStDLEVBQUUzRixFQUFFRyxFQUFFd0MsR0FDdEIsT0FBTyxHQUFJRCxJQUFJaUQsSUFBTS9DLE1BQU0rQyxFQUFLN0QsRUFBR1ksRUFBRzFDLEVBQUdHLEVBQUd3QyxFQUM5QztTQUNBLFNBQVMwakIsR0FBR3ZrQixFQUFFWSxFQUFFRSxFQUFFK0MsRUFBRTNGLEVBQUVHLEVBQUV3QyxHQUFLLE9BQU8sR0FBR0QsSUFBSUUsSUFBSStDLEVBQUc3RCxFQUFHWSxFQUFHMUMsRUFBR0csRUFBR3dDLEVBQUk7U0FDbEUsU0FBUzJqQixHQUFHeGtCLEVBQUVZLEVBQUVFLEVBQUUrQyxFQUFFM0YsRUFBRUcsRUFBRXdDLEdBQUssT0FBTyxHQUFHQyxLQUFLRixNQUFNaUQsR0FBSzdELEVBQUdZLEVBQUcxQyxFQUFHRyxFQUFHd0MsRUFBSTtTQUV2RSxnQkFBaUJvZCxFQUFHamM7V0FDbEIsSUFBTSxFQUFFaWMsS0FBUSxFQUFFQSxLQUFRLEVBQUVBLEtBQVEsRUFBRUE7V0FFdEMsSUFBSSxHQUFHamUsRUFBR1ksRUFBR0UsRUFBRytDLEVBQUc3QjtXQUNuQixJQUFJLEdBQUc2QixFQUFHN0QsRUFBR1ksRUFBR0UsRUFBR2tCO1dBQ25CLElBQUksR0FBR2xCLEVBQUcrQyxFQUFHN0QsRUFBR1ksRUFBR29CO1dBQ25CLElBQUksR0FBR3BCLEVBQUdFLEVBQUcrQyxFQUFHN0QsRUFBR2dDO1dBQ25CLElBQUksR0FBR2hDLEVBQUdZLEVBQUdFLEVBQUcrQyxFQUFHN0I7V0FDbkIsSUFBSSxHQUFHNkIsRUFBRzdELEVBQUdZLEVBQUdFLEVBQUdrQjtXQUNuQixJQUFJLEdBQUdsQixFQUFHK0MsRUFBRzdELEVBQUdZLEVBQUdvQjtXQUNuQixJQUFJLEdBQUdwQixFQUFHRSxFQUFHK0MsRUFBRzdELEVBQUdnQztXQUNuQixJQUFJLEdBQUdoQyxFQUFHWSxFQUFHRSxFQUFHK0MsRUFBRzdCO1dBQ25CLElBQUksR0FBRzZCLEVBQUc3RCxFQUFHWSxFQUFHRSxFQUFHa0I7V0FDbkIsSUFBSSxHQUFHbEIsRUFBRytDLEVBQUc3RCxFQUFHWSxFQUFHb0I7V0FDbkIsSUFBSSxHQUFHcEIsRUFBR0UsRUFBRytDLEVBQUc3RCxFQUFHZ0M7V0FDbkIsSUFBSSxHQUFHaEMsRUFBR1ksRUFBR0UsRUFBRytDLEVBQUc3QjtXQUNuQixJQUFJLEdBQUc2QixFQUFHN0QsRUFBR1ksRUFBR0UsRUFBR2tCO1dBQ25CLElBQUksR0FBR2xCLEVBQUcrQyxFQUFHN0QsRUFBR1ksRUFBR29CO1dBQ25CLElBQUksR0FBR3BCLEVBQUdFLEVBQUcrQyxFQUFHN0QsRUFBR2dDO1dBRW5CLElBQUksR0FBR2hDLEVBQUdZLEVBQUdFLEVBQUcrQyxFQUFHN0I7V0FDbkIsSUFBSSxHQUFHNkIsRUFBRzdELEVBQUdZLEVBQUdFLEVBQUdrQjtXQUNuQixJQUFJLEdBQUdsQixFQUFHK0MsRUFBRzdELEVBQUdZLEVBQUdvQjtXQUNuQixJQUFJLEdBQUdwQixFQUFHRSxFQUFHK0MsRUFBRzdELEVBQUdnQztXQUNuQixJQUFJLEdBQUdoQyxFQUFHWSxFQUFHRSxFQUFHK0MsRUFBRzdCO1dBQ25CLElBQUksR0FBRzZCLEVBQUc3RCxFQUFHWSxFQUFHRSxFQUFHa0I7V0FDbkIsSUFBSSxHQUFHbEIsRUFBRytDLEVBQUc3RCxFQUFHWSxFQUFHb0I7V0FDbkIsSUFBSSxHQUFHcEIsRUFBR0UsRUFBRytDLEVBQUc3RCxFQUFHZ0M7V0FDbkIsSUFBSSxHQUFHaEMsRUFBR1ksRUFBR0UsRUFBRytDLEVBQUc3QjtXQUNuQixJQUFJLEdBQUc2QixFQUFHN0QsRUFBR1ksRUFBR0UsRUFBR2tCO1dBQ25CLElBQUksR0FBR2xCLEVBQUcrQyxFQUFHN0QsRUFBR1ksRUFBR29CO1dBQ25CLElBQUksR0FBR3BCLEVBQUdFLEVBQUcrQyxFQUFHN0QsRUFBR2dDO1dBQ25CLElBQUksR0FBR2hDLEVBQUdZLEVBQUdFLEVBQUcrQyxFQUFHN0I7V0FDbkIsSUFBSSxHQUFHNkIsRUFBRzdELEVBQUdZLEVBQUdFLEVBQUdrQjtXQUNuQixJQUFJLEdBQUdsQixFQUFHK0MsRUFBRzdELEVBQUdZLEVBQUdvQjtXQUNuQixJQUFJLEdBQUdwQixFQUFHRSxFQUFHK0MsRUFBRzdELEVBQUdnQztXQUVuQixJQUFJLEdBQUdoQyxFQUFHWSxFQUFHRSxFQUFHK0MsRUFBRzdCO1dBQ25CLElBQUksR0FBRzZCLEVBQUc3RCxFQUFHWSxFQUFHRSxFQUFHa0I7V0FDbkIsSUFBSSxHQUFHbEIsRUFBRytDLEVBQUc3RCxFQUFHWSxFQUFHb0I7V0FDbkIsSUFBSSxHQUFHcEIsRUFBR0UsRUFBRytDLEVBQUc3RCxFQUFHZ0M7V0FDbkIsSUFBSSxHQUFHaEMsRUFBR1ksRUFBR0UsRUFBRytDLEVBQUc3QjtXQUNuQixJQUFJLEdBQUc2QixFQUFHN0QsRUFBR1ksRUFBR0UsRUFBR2tCO1dBQ25CLElBQUksR0FBR2xCLEVBQUcrQyxFQUFHN0QsRUFBR1ksRUFBR29CO1dBQ25CLElBQUksR0FBR3BCLEVBQUdFLEVBQUcrQyxFQUFHN0QsRUFBR2dDO1dBQ25CLElBQUksR0FBR2hDLEVBQUdZLEVBQUdFLEVBQUcrQyxFQUFHN0I7V0FDbkIsSUFBSSxHQUFHNkIsRUFBRzdELEVBQUdZLEVBQUdFLEVBQUdrQjtXQUNuQixJQUFJLEdBQUdsQixFQUFHK0MsRUFBRzdELEVBQUdZLEVBQUdvQjtXQUNuQixJQUFJLEdBQUdwQixFQUFHRSxFQUFHK0MsRUFBRzdELEVBQUdnQztXQUNuQixJQUFJLEdBQUdoQyxFQUFHWSxFQUFHRSxFQUFHK0MsRUFBRzdCO1dBQ25CLElBQUksR0FBRzZCLEVBQUc3RCxFQUFHWSxFQUFHRSxFQUFHa0I7V0FDbkIsSUFBSSxHQUFHbEIsRUFBRytDLEVBQUc3RCxFQUFHWSxFQUFHb0I7V0FDbkIsSUFBSSxHQUFHcEIsRUFBR0UsRUFBRytDLEVBQUc3RCxFQUFHZ0M7V0FFbkIsSUFBSSxHQUFHaEMsRUFBR1ksRUFBR0UsRUFBRytDLEVBQUc3QjtXQUNuQixJQUFJLEdBQUc2QixFQUFHN0QsRUFBR1ksRUFBR0UsRUFBR2tCO1dBQ25CLElBQUksR0FBR2xCLEVBQUcrQyxFQUFHN0QsRUFBR1ksRUFBR29CO1dBQ25CLElBQUksR0FBR3BCLEVBQUdFLEVBQUcrQyxFQUFHN0QsRUFBR2dDO1dBQ25CLElBQUksR0FBR2hDLEVBQUdZLEVBQUdFLEVBQUcrQyxFQUFHN0I7V0FDbkIsSUFBSSxHQUFHNkIsRUFBRzdELEVBQUdZLEVBQUdFLEVBQUdrQjtXQUNuQixJQUFJLEdBQUdsQixFQUFHK0MsRUFBRzdELEVBQUdZLEVBQUdvQjtXQUNuQixJQUFJLEdBQUdwQixFQUFHRSxFQUFHK0MsRUFBRzdELEVBQUdnQztXQUNuQixJQUFJLEdBQUdoQyxFQUFHWSxFQUFHRSxFQUFHK0MsRUFBRzdCO1dBQ25CLElBQUksR0FBRzZCLEVBQUc3RCxFQUFHWSxFQUFHRSxFQUFHa0I7V0FDbkIsSUFBSSxHQUFHbEIsRUFBRytDLEVBQUc3RCxFQUFHWSxFQUFHb0I7V0FDbkIsSUFBSSxHQUFHcEIsRUFBR0UsRUFBRytDLEVBQUc3RCxFQUFHZ0M7V0FDbkIsSUFBSSxHQUFHaEMsRUFBR1ksRUFBR0UsRUFBRytDLEVBQUc3QjtXQUNuQixJQUFJLEdBQUc2QixFQUFHN0QsRUFBR1ksRUFBR0UsRUFBR2tCO1dBQ25CLElBQUksR0FBR2xCLEVBQUcrQyxFQUFHN0QsRUFBR1ksRUFBR29CO1dBQ25CLElBQUksR0FBR3BCLEVBQUdFLEVBQUcrQyxFQUFHN0QsRUFBR2dDO1dBRW5CLE9BQU8sSUFBSWhDLEVBQUdpZTtXQUNkLE9BQU8sSUFBSXJkLEVBQUdxZDtXQUNkLE9BQU8sSUFBSW5kLEVBQUdtZDtXQUNkLE9BQU8sSUFBSXBhLEVBQUdvYSxLQTFFVCxDQWZnQjs7SUF5R3pCLFNBQVN3RyxlQUFlQyxJQUFLQyxNQUFPQztNQUNsQyxJQUFXLE9BQUVGLGVBQ0M7TUFDZCxXQUFXRTtNQUNYLEdBQUdDO09BQU8sQ0FDUixJQUFJRSxhQUFlRjtRQUNuQixHQUFHRCxZQUFZRztTQUFTLENBQ3RCLFdBQVcsaUJBQWlCSCxXQUFXQyxRQUN2QztRQUVGLFdBQVcsaUJBQWlCRSxTQUFTRjtRQUNyQyxrQkFBa0JILE1BQU9BO1FBQ3pCLGFBQWFLO1FBQ2IsYUFBYUE7TUFFZixNQUFNSDtPQUFnQixDQUNwQixXQUFXLGVBQWVFLFVBQVVBO1FBQ3BDLGtCQUFrQkosTUFBT0E7UUFDekI7UUFDQTtNQUVGLEdBQUdFO09BQ0QsV0FBVyxlQUFlRSxVQUFVQSxZQUFZRixhQUNwRDtJTHJDQSxTQUFTSSxtQkFDUCxPQUFPN0IsaUJBQ1Q7SXhCa0lBLFNBQVM4QixvQkFBcUIvbUIsR0FBSyxPQUFPLFdBQWE7SW1Cd0p2RCxTQUFTZ25CLGNBQWM5TyxHQUFJQyxJQUN6QixPQUFPLE9BQU8sVUFBVUEsSUFDMUI7SVN6WUEsU0FBUzhPLHNCQUFzQjVmLEdBQUlpZSxLQUFNL2QsR0FBSWllLEtBQU14akI7TUFDakQsSUFBVyxJQUFGRCxJQUFPQSxJQUFJQyxJQUFLRDtPQUFLLENBQzVCLElBQU0sRUFBRSxjQUFjc0YsR0FBR2llLE9BQU92akIsR0FDMUIsRUFBRSxjQUFjd0YsR0FBR2llLE9BQU96akI7UUFDaEMsR0FBSUQsSUFBSVksRUFBRztRQUNYLEdBQUlaLElBQUlZLEVBQUc7TUFFYixRQUNGO0kzQm16QkEsU0FBU3drQixnQkFBaUIvbUIsR0FBSyxPQUFPLHVCQUF1QkEsRUFBRztJSXRqQmhFLFNBQVNnbkIsZUFBZW5uQjtNQUN0QjtPQUFPO09BQ0E7T0FDQTtPQUNBO09BQ0E7T0FDRDtPQUVHO01BQ1QsR0FBSUEsTUFBTztNQUdYLElBQUksU0FBU0E7TUFYYjtPQVlNLGVBQWVrRSxJQUFJbEU7T0FDbkI7OztZQUFZd25CLEtBQUs3a0IsSUFBSTRrQixNQUFNNWtCLElBQUkya0IsTUFBTTNrQixJQUFJMGtCLE1BQU0xa0IsSUFBSXlrQjs7UUFBTXprQjs7UUFBSSxZQUFVM0MsSUFBSUE7TUFFakYsT0FBT2tCLE9BQU9LLENBQ2hCO0ljbUZBLFNBQVNrbUIsb0JBQW9CdlAsR0FBSUM7TUFDL0IsSUFBSUMsSUFBTSxVQUFVRDtNQUNwQixHQUFHQyxXQUFXRixlQUFnQjtNQUQ5QjtPQUVPLEdBQUUsT0FBT0U7T0FDVCxHQUFFLE9BQU9BO09BQ1QsR0FBRSxPQUFPQTtPQUNULEdBQUUsT0FBT0E7TUFDaEIsT0FBVUMsVUFDQUMsVUFDQUMsV0FDQUMsUUFDWjtJV3hYQSxTQUFTa1AsNEJBQThCLFFBQVU7SVo4SWpELFNBQVNDLGlCQUFpQnZRLEdBQUl3UTtNQUM1QixPQUFPLGVBQWUsT0FBT3hRLGVBQWV3USxLQUM5QztJYW9LQSxTQUFTQyxvQkFBb0JyYSxNQUMzQixRQUNGO0lQcFNBLFNBQVNzYSxlQUFnQnJuQixJQUFLK2M7TUFDNUIsSUFBSW5ULE1BQVFuQixNQUFNc1U7TUFDbEIsT0FBSy9jO01BQ0wsSUFBVyxJQUFGc0IsSUFBT0EsS0FBS3liLEtBQU16YixJQUFLLEVBQUVBO01BQ2xDLE9BQU9zSSxDQUNUO0lYdUdBLFNBQVMwZDtNQUNQLElBQUk1bkIsRUFBSTtNQUNSLGlCQUFpQkE7TUFDakIsa0JBQWtCQTtNQUVsQixRQUNGO0llekpBLFNBQVM2bkIsMEJBQTBCQyxJQUNqQyxPQUFPQSxjQUNUO0lsQjBUQSxTQUFTQyxzQ0FBc0NDLE9BQzdDLFFBQ0Y7SUUyREEsU0FBU0MsZUFBZS9jLEtBQU1DLEtBQU1FLEtBQU1DO01BQ3hDLFVBQVVILFNBQVNFLFVBQVVDLE1BQzdCLFFBQ0Y7SVl6T0EsU0FBUzRjLG9CQUFvQnRsQixFQUFFNUI7TUFDN0IsZ0RBQ0Y7SVIvRkEsU0FBU21uQixxQkFBd0IsUUFBVTtJSTZIM0MsU0FBU0MsaUJBQWlCem1CO01BQ3hCLElBQVEsSUFBRUEsU0FDSixNQUFNb0gsTUFBTWxIO01BQ2xCO01BQ0EsSUFBUyxJQUFERCxJQUFJQSxJQUFFQyxJQUFJRCxJQUFLLEVBQUVBLFNBQU9ELEVBQUVDO01BQ2xDLE9BQU9XLENBQ1Q7SUZsREEsU0FBUzhsQixXQUFXcFIsR0FBSStEO01BQ3RCLE9BQU8sZUFBZSxPQUFPL0QsT0FBTyxPQUFPK0QsS0FDN0M7SUxxREEsU0FBU3NOLGFBQWF6b0IsRUFBRXVCO01BQ3RCO09BQU0sRUFBRTtPQUNGLEdBQUM7T0FDRCxFQUFFd0s7T0FDRSxNQUFFNUw7TUFDWixPQUFRdW9CO01BQ1IsT0FBUUEsa0JBQ1IvaUIsT0FBUStpQjtNQUNSO01BQ0EsTUFBSTFvQjtNQUNKLE1BQUl1QjtNQUNKLHVCQUF1QndLLEdBQUcvTCxFQUFFRyxXQUFXb0I7TUFDdkMsUUFDRjtJWnNHQSxTQUFTb25CLGlCQUFpQnhvQixFQUFFNEIsRUFBRTZtQjtNQUM1QixHQUFJN21CLFdBQVc1QixRQUFTO01BQ3hCLElBQU8sVUFBU3lvQixTQUNULFVBQVNBO01BQ2hCLHNCQUF1QnpvQixFQUFHNEIsTUFBT3NXO01BQ2pDLHNCQUF1QmxZLEVBQUc0QixNQUFPdVc7TUFDakMsUUFDRjtJQVlBLFNBQVN1USxrQkFBa0Ixb0IsRUFBRTRCLEVBQUU2bUIsS0FDN0IsT0FBTyxpQkFBaUJ6b0IsRUFBRTRCLEVBQUU2bUIsSUFDOUI7SUFrQ0EsU0FBU0UsaUJBQWlCM29CLEVBQUU0QixFQUFFK2hCO01BQzVCLEdBQUkvaEIsV0FBVzVCLFFBQVM7TUFDeEIsSUFBSTJCLEVBQUksb0JBQW9CZ2lCO01BQzVCLElBQVUsSUFBRjlnQixJQUFPQSxNQUFPQSxJQUFLLHNCQUNGN0MsRUFBRzRCLFFBQVFpQixFQUFHbEIsRUFBRWtCO01BRXpDLFFBQ0Y7SXFCM1BBLFNBQVMrbEIsaUJBQWlCL29CO01BQ3hCLElBQUl1QixFQUFJLG9CQUFvQnZCO01BQzVCLE9BQU8scUJBQXFCdUIsS0FBTUEsS0FBTUEsS0FBTUEsS0FBTUEsS0FBTUEsS0FBTUEsS0FBTUEsTUFDeEU7SUptVEEsU0FBU3luQixjQUFjNVIsSUFDckIsT0FBR0EsT0FBT0EsV0FFWjtJQUtBLFNBQVM2UixnQkFBZ0I3UixJQUN2QixPQUFPLGNBQWNBLEdBQ3ZCO0lGcGJBLFNBQVM4UixjQUFjMWI7TUFFckIsVUFBVS9OLDRCQUE2QixnQkFDdkMsUUFDRjtJRXdKQSxTQUFTMHBCLGdCQUFnQi9SLEdBQUl3UTtNQUMzQixPQUFPLGVBQWUsT0FBT3hRLGNBQWN3USxLQUM3QztJY3BKQSxTQUFTd0IsZUFBZWpwQjtNQUN0QixJQUFJLHVCQUF1QkE7TUFDM0IsSUFBTSxFQUFFQSxhQUNGLE1BQU0rSSxNQUFNN0k7TUFDbEIsSUFBVyxJQUFGMEIsSUFBT0EsSUFBSTFCLEVBQUcwQjtPQUNyQixFQUFFQTs7UUFBTSxpQkFBaUJBLEtBQU0saUJBQWlCQTs7Ozs7TUFDbEQsT0FBT0QsQ0FDVDtJQUlBLFNBQVN1bkIsZ0JBQWdCQyxJQUFLQyxZQUFhQztNQUN6QztPQUFlO09BQ0k7T0FDRDtPQUNEO09BQ0E7T0FDRztPQUNBO09BQ1A7T0FDRztPQUNBO09BQ0Y7T0FDQTtNQUVkLEtBQUtGO09BQWlCLENBQ3BCLGVBQWtCLGVBQWdCQSxJQUFJVTtRQUN0QyxrQkFBa0IsZUFBZ0JWLElBQUlXO1FBQ3RDLGdCQUFrQixlQUFnQlgsSUFBSWM7UUFDdEMsZ0JBQWtCLGVBQWdCZCxJQUFJYTtRQUN0QyxrQkFBa0IsZUFBZ0JiLElBQUlZO01BbEJ4QztPQXFCSXRuQjtPQUFTLE1BQUUybUI7T0FFSixPQUFFLDBCQUEwQkMsT0FBT0M7TUFFOUMsR0FBSVk7T0FBWSxDQUVkLE9BQU9SLGdCQUFnQkwsT0FBT0csaUJBQWlCSCxPQUFPSTtRQUN0RCxPQUFPRTs7T0FDRixVQUVJTztNQUVYO09BQVEsQ0FFTixJQUFJN2EsS0FBTzhaLGFBQWFlO1FBQ3hCLEdBQUk3YSxTQUFVLFNBQVFBO1FBRHRCLElBR0k4YSxRQUFVaEIsZ0JBQWdCZTtRQUM5QixHQUFJQztTQUFjLENBQ2hCLE9BQU9ULGdCQUFnQkwsT0FBT0k7VUFDOUIsT0FBT0UsbUJBQW1CUTtRQUc1QixHQUFJZCxPQUFPSSxpQkFBaUJKLE9BQU9FO1NBQWdCLEdBQzdDRixPQUFPTyxzQkFDVCxTQUFRTSxlQUVSOztTQUNDLENBRUgsSUFBSXZtQixPQUFPMGxCLE9BQU9JLGVBQ2xCLE9BQU9BO1FBR1QsR0FBSU4sY0FBYzlaLE9BQU81TSxNQUFNeW5CO1NBQzdCLFFBQVFmLGNBQWM5WixPQUFPNU07O1NBRTdCLFFBQVEwbUIsZ0JBQWdCZTtRQUUxQixHQUFJQTtTQUFXLENBQ2IsT0FBT1QsZ0JBQWdCSixPQUFPSztVQUM5QixHQUFJTCxPQUFPTTtXQUNUOztXQUVBLE9BQU9OLE9BQU9NOztTQUNiLEdBSUNsbkIsU0FBVSxPQUFPbW5CLHFCQUczQjtJeEJtR0EsU0FBU1EscUJBQXNCbmxCO01BQzdCLElBQUlKLEtBQU8sa0JBQWtCSSxNQUM3QixPQUFPLG1CQUFtQkosVUFDNUI7SXNCaktBLFNBQVN3bEI7TUFDUCxnREFDRjtJRzNCQSxTQUFTQyxlQUFnQjNvQixFQUFHQyxFQUFHQztNQUM3QixJQUFJcWxCLE9BQVNuZSxNQUFNbEg7TUFDbkI7TUFDQSxRQUFXLEtBQU8sR0FBRUQsTUFBS3lGLE1BQU14RixJQUFLd0YsS0FBS0YsS0FBTSxHQUMxQ0UsTUFBSTFGLEVBQUV3RjtNQUVYLE9BQU8rZixFQUNUO0loQ3NmQSxTQUFTcUQsaUJBQWlCcmpCLEdBQUlFO01BQzVCLEdBQUdGLE9BQU9FLEdBQUk7TUFDZCxZQUFjLDZCQUE2QkY7TUFDM0MsWUFBYyw2QkFBNkJFO01BQzNDLE9BQVFGLFFBQVFFLFFBQ2xCO0lZaFhBLFNBQVNvakIsaUJBQ1AsSUFBSXhxQixFQUFJLG9CQUNSLE9BQU9BLE9BQ1Q7SWlCdkpBLFNBQVN5cUIsNEJBQStCLFFBQVU7SUxhbEQsU0FBU0Msc0JBQXNCQyxJQUFLL29CO01BQ2xDLElBQUk0RixJQUFNbWpCLE9BQ1YsVUFBVS9vQixFQUNWLE9BQU80RixHQUNUO0lmNk9BO0tBQUlvakI7TUFBV3RyQjs7T0FDQUE7O09BQ0FBOzs7OztJQVhmLFNBQVN1ckIsK0JBQWtDLE9BQU9ELHVCQUE2QjtJTGUvRSxTQUFTRSxnQkFBaUJqckIsR0FBSyxPQUFPLFVBQVVBLEVBQUk7STZCcFJwRCxTQUFTa3JCLFVBQ1AsbUJBQ0Y7SUFJQSxTQUFTQyxrQkFBa0IzZCxNQUN6QixXQUFXMGQsU0FDYjtJQ1lBLElBQUlFO0lBNkZKLFNBQVNDLG9CQUFvQnJyQixFQUFHK0I7TUFDOUIsSUFBSXVwQixLQUFPdHJCLEVBQUVvckIsdUJBQXVCcnBCO01BQ3BDLEdBQUd0QyxzQkFBc0I2ckIsZ0JBQWdCN3JCO09BQW9CLE9BQU87TUFDcEUsT0FBRzZyQixTQUFPampCLGFBSVo7SVp6QkEsU0FBU2tqQixvQkFBb0J0cUI7TUFDM0IsS0FBS0E7TUFDTCxJQUFJLFNBQVVBO01BQ2QsS0FBS0E7TUFDTCxJQUFJLFNBQVVBO01BQ2QsS0FBS0E7TUFDTCxPQUFPQSxDQUNUO0lWNlJBLFNBQVN1cUIsa0JBQWtCQztNQUN6QjtPQUFNLEVBQUU7T0FDRixFQUFFLHNCQUFzQix3QkFBd0JBO01BQ3RELFVBQVUxTCxFQUFFNWYsWUFDZDtJbUJ4UkEsU0FBU3VyQixpQkFBaUJ2ckIsRUFBRzRCLEVBQUc0cEIsSUFBS0M7TUFDbkM7T0FBUyxDQUNQLElBQUkxSSxJQUFNLGFBQWFuaEI7UUFBSTtRQUMzQixHQUFJbWhCLFlBQWE7UUFEakIsSUFFSUQsSUFBTSxhQUFhbGhCO1FBQUk7UUFDM0IsR0FBSWtoQjtTQUNGLElBQUtDLFdBQVcwSTs7U0FFaEIsSUFBSzFJLFdBQVd5SSxJQUFLMUksU0FFM0I7SUFFQSxTQUFTNEksaUJBQWlCMXJCLEVBQUc0QixFQUFHNHBCO01BQzlCO09BQVMsQ0FDUCxJQUFJekksSUFBTSxhQUFhbmhCO1FBQUk7UUFDM0IsR0FBSW1oQixZQUFhO1FBRGpCLElBRUlELElBQU0sYUFBYWxoQjtRQUFJO1FBQzNCLEdBQUlraEIsWUFDRixJQUFLQyxvQkFFTCxJQUFLQSxXQUFXeUksSUFBSzFJLFNBRTNCO0lBRUEsU0FBUzZJLG9CQUFvQnhDLElBQUtDLFlBQWFDO01BQzdDO09BQWU7T0FDSTtPQUNEO09BQ0Q7T0FDQTtPQUNHO09BQ0E7T0FDUjtPQUNDO09BQ0c7T0FDQTtPQUNGO09BQ0E7T0FDSTtPQUNHO09BQ0E7T0FDRjtPQUNBO09BQ047TUFFYixLQUFLRjtPQUFpQixDQUNwQixlQUFrQixlQUFnQkEsSUFBSVU7UUFDdEMsa0JBQWtCLGVBQWdCVixJQUFJVztRQUN0QyxnQkFBa0IsZUFBZ0JYLElBQUljO1FBQ3RDLGdCQUFrQixlQUFnQmQsSUFBSWE7UUFDdEMsa0JBQWtCLGVBQWdCYixJQUFJWTtNQUV4QyxLQUFLWjtPQUFzQixDQUN6QixvQkFBdUIsZUFBZ0JBLElBQUkwQztRQUMzQyx1QkFBdUIsZUFBZ0IxQyxJQUFJMkM7UUFDM0MscUJBQXVCLGVBQWdCM0MsSUFBSThDO1FBQzNDLHFCQUF1QixlQUFnQjlDLElBQUk2QztRQUMzQyx1QkFBdUIsZUFBZ0I3QyxJQUFJNEM7TUFFN0MsR0FBSTVDLGdCQUFnQm5uQjtPQUFNLGVBQWUsdUJBQXVCbW5CLElBQUkrQztNQWxDcEU7T0FvQ0l6cEI7T0FBUyxNQUFFMm1CO09BRUosT0FBRSwwQkFBMEJDLE9BQU9DO01BRTlDLEdBQUlZO09BQVksQ0FFZCxPQUFPUixnQkFBZ0JMLE9BQU9HLGlCQUFpQkgsT0FBT0k7UUFDdEQsT0FBT0U7O09BQ0YsVUFFSU87TUFFWDtPQUFRLENBRU4sSUFBSTdhLEtBQU84WixhQUFhZTtRQUN4QixHQUFJN2E7U0FBVSxDQUNaLElBQUk4YyxPQUFTaEQsa0JBQWtCZTtVQUMvQixpQkFBaUJmLGFBQWNnRCxPQUFROUMsT0FBT3VDO1VBQzlDLFNBQVF2YztRQUpWLElBT0k4YSxRQUFVaEIsZ0JBQWdCZTtRQUM5QixHQUFJQztTQUFjLENBQ2hCLElBQUlnQyxPQUFTaEQscUJBQXFCZTtVQUNsQyxpQkFBaUJmLGFBQWNnRCxPQUFROUMsT0FBT3VDO1VBQzlDLE9BQU9sQyxnQkFBZ0JMLE9BQU9JO1VBQzlCLE9BQU9FLG1CQUFtQlE7UUFHNUIsR0FBSWQsT0FBT0ksaUJBQWlCSixPQUFPRTtTQUFnQixHQUM3Q0YsT0FBT08sc0JBQ1QsU0FBUU0sZUFFUjs7U0FDQyxDQUVILElBQUl2bUIsT0FBTzBsQixPQUFPSSxlQUNsQixPQUFPQTtRQXZCVCxJQTBCSTJDLE9BQVNsQztRQUNiLEdBQUlmLGNBQWM5WixPQUFPNU0sTUFBTXluQjtTQUM3QixRQUFRZixjQUFjOVosT0FBTzVNOztTQUU3QixRQUFRMG1CLGdCQUFnQmU7UUFFMUIsR0FBSUE7U0FBVyxDQUNiLE9BQU9ULGdCQUFnQkosT0FBT0s7VUFDOUIsR0FBSUwsT0FBT007V0FDVDs7V0FFQSxPQUFPTixPQUFPTTs7U0FDYixDQUVILElBQWMsVUFBRVIsa0JBQWtCaUQsUUFBU0Q7VUFDM0MsR0FBSWhELG1CQUFtQmtELFlBQVk1cEIsTUFBTTJwQjtXQUN2QyxTQUFTakQsbUJBQW1Ca0QsWUFBWTVwQjs7V0FFeEMsU0FBUzBtQixxQkFBcUJpRDtVQUNoQyxHQUFJRDtXQUNGO2FBQ0RoRCxhQUFjZ0QsT0FBUTlDLE9BQU91QyxTQUFVdkMsT0FBT0k7VUFJL0MsR0FBSWhuQixTQUFVLE9BQU9tbkIsc0JBRzNCO0lib09BLFNBQVMwQyxvQkFBb0J2VSxHQUFJQyxHQUFJcFY7TUFDbkMsSUFBSXFWLElBQU0sVUFBVUQ7TUFDcEIsR0FBR0MsV0FBV0YsZUFBZ0I7TUFEOUIsSUFFSW5WLEVBQUksb0JBQW9CQTtNQUM1QixJQUFVLElBQUZoQixJQUFPQSxNQUFPQSxJQUFLLE9BQU9xVyxNQUFJclcsRUFBR2dCLE1BQUloQjtNQUM3QyxRQUNGO0lEc1hBLFNBQVMycUIsY0FBY3BWO01BQ3JCLElBQUksT0FBT0E7TUFDWCxJQUFTLEtBQUUsVUFDSCxJQUFFO01BQ1YsR0FBSSxLQUFLQyxNQUFPLG9CQUNNO01BSHRCLElBS0l4VjtNQUNKLElBQUtBLFFBQVEsU0FBU3dWLE1BQU94VixJQUFLLElBQzVCLE1BQU07TUFFWixHQUFHQSxNQUFNQSxPQUFNLG9CQUFvQjtNQUNuQyxPQUFPQSxLQUNUO0lSNXFCQSxTQUFTNHFCLHlCQUF5QjdxQixHQUNoQyxPQUFPc2lCLG9CQUNUO0lnQjRFQSxTQUFTd0ksZUFBZ0I1c0IsRUFBR3VCLEdBQUssVUFBUyxpQkFBaUJ2QixFQUFFdUIsY0FBZ0I7SXJCdUI3RSxTQUFTc3JCLGlCQUFrQjdzQixHQUFLLE9BQU8sV0FBV0EsRUFBSTtJd0J6SXRELFNBQVM4c0I7TUFDUDtPQUFXLFdBQU1DO09BQ1QsUUFBTUUsWUFBWW5wQjtPQUNuQixPQUFNOEMsV0FBVzlDO01BQ3hCO29CQUNjbXBCO2tCQUNGRDtpQkFDRHBVLEdBQ2I7SWRzUkEsU0FBU3NVLGNBQWU3ZjtNQUN0QixJQUFJTixLQUFPRixpQkFBaUJRO01BQzVCLEtBQUtOLFlBQWE7TUFDbEIsS0FBSUEsZUFBZUEsc0JBQXVCO01BQzFDLEdBQUdBO09BQWEsWUFDRix5QkFBeUJBLGNBQWdCQTs7T0FDaEQsZ0JBQ1dBLFlBQWFBLGNBQWdCQTtNQUUvQyxlQUFlQTtNQUNmO01BQ0EsUUFDRjtJQTRFQSxTQUFTb2dCLGNBQWM5ZixPQUFReEY7TUFDN0IsY0FBY3dGO01BQ2QsSUFBSU4sS0FBT0YsaUJBQWlCUTtNQUM1QixjQUFjeEY7TUFDZCxRQUNGO0lBU0EsU0FBU3VsQixvQkFBb0IvZixPQUFPeEY7TUFDbEMsSUFBSUEsSUFBTSxvQkFBb0JBLEtBQzlCLE9BQU8sY0FBY3dGLE9BQVF4RixJQUMvQjtJSHJLQSxTQUFTd2xCLGlCQUFpQmhpQixLQUFLRztNQUM3QixPQUFPLFlBQVlILE9BQU9BLGlCQUFpQkcsT0FBT0EsaUJBQ3BEO0lJalZBLFNBQVM4aEIsWUFBWTdJLFVBQ25CLFFBQ0Y7SUlSQSxTQUFTOEksWUFBWWxqQixFQUFFcEksR0FBSyxPQUFPb0ksRUFBRXBJLEVBQUk7SVhzQ3pDLFNBQVN1ckIsaUJBQWlCQztNQUN4QixHQUFHO09BQXFCLENBQ3RCLElBQUlDLElBQU0sZUFDVixPQUFPLFdBQVdEOztPQUNiLFFBR1Q7SU1vZkEsU0FBU0UscUJBQXFCdGdCLE9BQU90SztNQUNuQyxpQkFBaUJzSyxtQkFBbUJ0SztNQUNwQyxLQUFJQSxFQUFHLGNBQWNzSztNQUNyQixRQUNGO0lDNWlCQSxTQUFTdWdCLHFCQUFzQixRQUFRO0ltQnNFdkMsU0FBU0Msa0JBQWtCN3RCLEVBQUcrQjtNQUM1QixHQUFHQSxTQUFTcXBCLHVCQUF1QnJwQixLQUFLL0I7T0FDdEM7TUFDRixJQUFJc3JCLEtBQU90ckIsRUFBRW9yQix1QkFBdUJycEI7TUFDcEMsR0FBR3RDLHNCQUFzQjZyQixnQkFBZ0I3ckI7T0FBb0IsT0FBTztNQUNwRSxPQUFRNnJCLFNBQU9qakIsZUFBaUJpakIsS0FDbEM7STFCckVBLFNBQVN3QyxvQkFBcUJuckI7TUFDNUI7T0FBTSxNQUFNb3JCLEtBQU1wckI7T0FDUixNQUFFO09BQ0ssYUFBRSxJQUFLb3JCLEtBQUs7T0FDckIsSUFBRSxZQUFZQyxRQUFRQztPQUN0QixRQUFNRixLQUFLO09BQ1gsUUFBTUEsS0FBSztPQUNHO1FBQUUsU0FBUyx3QkFBeUI7TUFDMUQ7Y0FBZ0I7Y0FBZ0I7Y0FBZ0I7Y0FDbkM7Y0FBYTtjQUFjO2NBQzNCO2NBQVlHO2NBQ1gsd0JBQXdCRyxzQkFDeEM7SUFLQSxTQUFTQyxpQkFBaUJDO01BQ3hCO09BQU0sRUFBRSxJQUFLUixLQUFLUSxhQUFXQSxNQUFNQSxNQUFNQSxNQUFNQSxNQUFNQTtPQUMvQyxFQUFFLFdBQVc1b0I7T0FDWCxJQUFFLG9CQUFvQmhEO01BQzlCLFVBQWVBLEVBQUU2ckIsSUFDbkI7SVNrUkEsU0FBU0MseUJBQXlCamYsS0FBTXJQO01BQ3RDLEdBQUlxUDtPQUFXLENBQ2I7UUFDQSxJQUFNLElBQ0c7UUFDVCxHQUFHclAsRUFBRStELFVBQVcsQ0FBRSxXQUFXLFNBQ3hCLEdBQUkvRCxFQUFFK0QsVUFBVztRQUN0QixHQUFJL0QsRUFBRStEO1NBQVcsQ0FDZjtVQUNBLEdBQUkvRCxZQUFZK0Q7V0FBRzs7V0FFWixDQUNMLElBQUl3cUIsR0FBS3Z1QixFQUFFK0Q7WUFDWCxHQUFJd3FCLGFBQWFBO2FBQVc7O2FBRXJCLEdBQUlBLGFBQWFBO2NBQVc7O2NBRTVCLEdBQUlBLGFBQWFBLFVBQVc7WUFHbkMsR0FBR2xmLFdBQVksQ0FDYixJQUFJLFlBQVl0TCxPQUNoQixHQUFHaEQsWUFBWSxVQUFVZjtNQU1qQyxTQUFTd1YsTUFBTTNQO1FBQ2IsR0FBR0EsY0FBY0EsV0FBWSxPQUFPQTtRQUNwQyxHQUFHQSxjQUFjQSxZQUFhLE9BQU9BO1FBQ3JDLEdBQUdBLGNBQWNBLFdBQVksT0FBT0EsY0FDdEM7TUFDQSxJQUFJakU7TUFDSixHQUFJNUIsRUFBRTRCLFVBQVcsSUFFWCxvQkFFRCxHQUFHNUIsRUFBRTRCLFVBQVc7TUFDckIsR0FBRzVCLEVBQUU0QjtPQUFXO01BQ2hCLElBQUk7TUFFSixHQUFHNUIsWUFBWUEsUUFBUztNQUN4QixLQUFPNEIsSUFBSTVCLFNBQVc0QjtPQUFJLENBQ3hCLElBQUlhLEVBQUksTUFBTSxhQUFhYjtRQUMzQixHQUFHYSxLQUFLeUYsYUFBYXpGLEtBQUs0TTtTQUN4QjtNQUVKLE9BQU8sZUFBZSxPQUFPclAsRUFBR3FQLE1BRWxDO0lBS0EsU0FBU21mLHVCQUF1Qm5mLEtBQU1yUCxFQUFHMEgsSUFBSzdGO01BQzVDLElBQUksdUJBQXVCN0I7TUFDM0IsR0FBRzBILFlBQVk3RixPQUFPN0I7T0FBVSxDQUM5QixHQUFJQSxXQUFXMEgsTUFBTTdGO1NBQUs7O1FBRzFCLElBQUksUUFBUTZGLElBQUlBLE1BQUk3RjtNQUV0QixPQUFPLHlCQUF5QndOLEtBQU1yUCxFQUN4QztJVTdTQSxTQUFTeXVCLGdDQUFnQ3ZKLEtBQU1DLEtBQU1DLElBQUtDLEtBQU14akI7TUFDOUQsU0FBU3VqQjtPQUNQOztNQUNGLEdBQUd2akIsU0FBVTtNQUNiLElBQUl5SixLQUFPLFdBQVcrWjtNQUN0QixHQUFHRixPQUFPdGpCLE1BQU0scUJBQXFCcWpCLE1BQU87TUFHNUMsR0FBRzVaLE9BQU96SixNQUFNdWpCLGdCQUFpQjtNQUpqQyxJQU9JRSxNQUFRLDBCQUEwQkosWUFBWUMsS0FBS0EsT0FBT3RqQjtNQUM5RCxhQUFheWpCLE1BQU1oYTtNQUNuQixRQUNGO0liL0VBLElBQUlvakIsaUJBQW1CM2xCO0lBSXZCLFNBQVM0bEIsZUFBZWxsQjtNQUN0QixJQUFJekIsS0FBTzBtQixhQUFhamxCO01BQ3hCLEdBQUd6QixLQUFNO01BQ1QsT0FBTzBtQixhQUFhamxCO01BQ3BCLFFBQ0Y7SUFxSkEsU0FBU21sQixzQkFBdUIxaEI7TUFDOUIsSUFBSU4sS0FBT0YsaUJBQWlCUTtNQUM1QjtNQUNBLGVBQWVOO01BQ2YsUUFDRjtJSzFCQSxTQUFTaWlCLDJCQUEyQkMsSUFBS0M7TUFFdkMsS0FBSUQsZ0JBQWdCQyxTQUFTRDtPQUFlOztZQUFtQnh2QjtNQUMvRCxPQUFPd3ZCLEdBQ1Q7SUs3SEEsU0FBU0UscUJBQXFCckUsSUFBSy9uQixHQUNqQyxJQUFJM0MsRUFBSTBxQixPQUNSLFNBQVMvbkIsRUFDVCxPQUFPM0MsQ0FDVDtJZmtQQSxTQUFTZ3ZCLGdCQUFnQkMsT0FDdkIsUUFDRjtJRTNLQSxTQUFTQyxjQUFjdlYsSUFBSzNCLEtBQzFCLEdBQUcyQixTQUFTM0IsVUFBVyxTQUN2QixRQUNGO0lId0JBLFNBQVNtWCxnQkFBZ0JucUI7TUFDdkIsSUFBSUosS0FBTyxrQkFBa0JJO01BQzdCLEtBQUtKO09BQW1CO01BR3hCLE9BQU8sa0JBQWtCQSxlQUMzQjtJQUtBLFNBQVN3cUIsbUJBQW1CcHFCO01BQzFCLElBQUloRixFQUFJLGdCQUFnQmdGLE1BQ3hCLE9BQU8sb0JBQW9CaEYsS0FDN0I7SVdsSUEsU0FBU3F2QixZQUFZcGxCLEVBQUVwSSxFQUFFYyxHQUFLLEVBQUVkLEtBQUdjLEVBQUUsUUFBUTtJRnV1QjdDLFNBQVMyc0IsbUJBQW1CdFksR0FBSStEO01BQzlCLEtBQUssT0FBTy9EO01BQ1osS0FBSyxPQUFPK0Q7TUFDWjtPQUFRLElBQUUsV0FBVy9ELEdBQUcrRDtPQUNsQixFQUFFL0Q7T0FDRixFQUFFK0Q7T0FDRixFQUFFO09BQ0UsTUFBRTtPQUNOLEVBQUU7T0FDRSxNQUFFO09BQ1IzWjtPQUFHbUI7T0FBR3ZDO01BQ1YsR0FBRyxVQUFVLFdBQVk7TUFHekIsUUFBTyxTQUFTO09BQVksQ0FDMUIsSUFBSSxTQUFTc0M7UUFDYixJQUFJLFdBQVcsV0FBV0E7UUFDMUIsSUFBSTFDO1FBQ0osSUFBSSxlQUFlLFdBQVdBO1FBQzlCLFFBQVEyQztRQUNSLElBQUlwQjtRQUNKLElBQUksZUFBZSxXQUFXQTtRQUM5QixRQUFRb0I7UUFDUixJQUFJRDtRQUNKLElBQUl0QztNQUVOLE9BQUcsS0FBSztrQkFDSSxlQUFlLFlBQVksZUFBZTtrQkFFMUMsZUFBZTBCLEdBQUcsZUFBZTZ0QixTQUMvQztJQWxpQkEsU0FBU0UsYUFBYXZZLEVBQUV6UDtNQUN0QixJQUFJLE9BQU95UCxHQUNYLE9BQVEsYUFBYXpQLFNBQVMsMkJBQ2hDO0llOUtBLFNBQVNpb0IsZUFBZ0JDLE1BQU9DO01BQzlCLEdBQUtBLGFBQWVBLFNBQVNELGlCQUFtQjtNQUNoRCxPQUFPQSxNQUFNQyxVQUNmO0kzQjhEQSxTQUFTQyw0QkFBNEJDO01BQ25DLElBQUlsUCxNQUFNa1AsUUFDVixZQUNBLE9BQU9sUCxLQUNUO0lHcUJBLFNBQVNtUCxnQkFBZ0IvcUI7TUFDdkIsSUFBSUosS0FBTyxrQkFBa0JJO01BQzdCLEtBQUtKO09BQW1CO01BR3hCLE9BQU8sa0JBQWtCQSxlQUMzQjtJSjhGQSxTQUFTb3JCLGdCQUFnQnB3QixHQUFLLE9BQU8sVUFBVUEsRUFBSTtJVzlMbkQsU0FBU3F3Qiw0QkFBNEI3aUIsTUFBUSxRQUFVO0lFazJCdkQsU0FBUzhpQixlQUFleHVCLEVBQUVZLEVBQUVFO01BQzFCLElBQUkyVSxLQUFPO01BQ1gsSUFBSSxPQUFPelY7TUFDWCxJQUFJLE9BQU9ZO01BQ1gsSUFBSSxPQUFPRTtNQUNYLEdBQUcsU0FBUzJVLFNBQVMsU0FBUzdVLEdBQUk7TUFDbEMsT0FBTyxRQUFRQSxpQkFBaUJFLE1BQ2xDO0lSM21CQSxTQUFTMnRCO01BQ1AsK0RBQ0Y7SVYvR0EsU0FBU0MsZUFBZ0J4d0IsRUFBR3VCLEdBQUssT0FBTyxNQUFNQSxFQUFHO0llNkhqRCxTQUFTa3ZCLGFBQWFwakIsT0FBUXhGO01BQzVCLElBQUlrRixLQUFPRixpQkFBaUJRO01BQzVCLEdBQUlOLGVBQWU1SyxLQUFNO01BQ3pCO1FBQUcwRjs7UUFBT2tGOztRQUFjQTs7UUFDbEJsRjs7UUFBT2tGOztRQUNQQTtPQUF3QixtQkFDVEEsbUJBQW1CQSxjQUFjbEY7O09BQy9DLENBQ0wsY0FBY0EsSUFDZCxxQkFDQTtNQUVGLFFBQ0Y7SUFVQSxTQUFTNm9CLG1CQUFtQnJqQixPQUFPeEY7TUFDakMsSUFBSUEsSUFBTSxvQkFBb0JBLEtBQzlCLE9BQU8sYUFBYXdGLE9BQVF4RixJQUM5QjtJVTdUQSxJQUFJOG9CO0lTOUJKLFNBQVNDLHFCQUFxQmp1QixHQUM1QixpQkFDQSxRQUNGO0lUaUNBLElBQUlrdUI7SUFDSixTQUFTQyxrQkFBa0I3dUIsRUFBRTh1QjtNQUN6QixJQUFPLEdBQUVGLHlCQUNELElBQUVGO01BQ1YsaUJBQWlCSztNQUNqQixjQUFjL3VCO01BQ2QsaUJBQWlCMEY7TUFDakIscUJBQXFCb3BCO01BQ3JCLE9BQU9DLEVBQ1g7SWhCcUZBLFNBQVNDLGdCQUFnQjdyQixLQUFNOHJCO01BQzdCLElBQUlsc0IsS0FBTyxrQkFBa0JJO01BQzdCLEtBQUtKO09BQW1CO01BR3hCLE9BQU8sa0JBQWtCQSxVQUFXa3NCLFVBQ3RDO0lUa0ZBLFNBQVNDLHNCQUF1Qm54QixFQUFHRyxHQUFLLE9BQU8sYUFBYUEsRUFBRztJMEJEL0QsU0FBU2l4QixjQUFlcHhCLEVBQUd1QixHQUFLLFVBQVMsaUJBQWlCdkIsRUFBRXVCLGNBQWdCO0lSdEg1RSxTQUFTOHZCLFNBQVNqYSxJQUNoQixPQUFPLGVBQWUsT0FBT0EsVUFDL0I7SVJvSEEsU0FBU2thLDBCQUE2QixTQUFXO0lVc0NqRCxTQUFTQyxzQkFBc0J0dkI7TUFDN0I7UUFDRSxJQUFJRCxJQUFNb1k7UUFDVixHQUFHcFk7U0FBUSxDQUNULElBQUlvRSxTQUFXOEMsTUFBTWxIO1VBQ3JCLElBQVcsSUFBRkQsSUFBT0EsSUFBSUMsSUFBS0QsSUFBSyxLQUFLQSxLQUFLcVksVUFBVXJZOztTQUM3QyxRQUNHc0c7UUFMVixJQU9JRSxJQUFNLGNBQWN0RyxFQUFHbUU7UUFDM0IsT0FBUW1DLGVBQWVvUyxTQUFVLHNCQUFzQnBTLEtBQUtBLEdBVHZELENBV1Q7SUFrQ0EsU0FBU2lwQiwyQkFBMkJ2dkI7TUFDbEM7UUFDRSxJQUFRLElBQUVtWSxpQkFDRCxTQUFNbFIsTUFBTWxIO1FBQ3JCLFVBQVV0QztRQUNWLElBQVcsSUFBRnFDLElBQU9BLElBQUlDLElBQUtELElBQUssS0FBS0EsU0FBT3FZLFVBQVVyWTtRQUhwRCxJQUlJd0csSUFBTSxjQUFjdEcsRUFBRW1FO1FBQzFCLE9BQVFtQyxlQUFlb1MsU0FBVSxzQkFBc0JwUyxLQUFLQSxHQU52RCxDQVFUO0lBbE9BLFNBQVNrcEIsYUFDUCxRQUNGO0lJNEVFLFNBQVNDLDRCQUE0QnJuQjtNQUNyQyxvQkFBb0JBLFdBQ3BCLFFBQ0Y7SUw0SkEsU0FBU3NuQixZQUFZelosR0FBSW5XO01BQ3ZCLEdBQUlBLFNBQVNBLEtBQUttVyxlQUNoQjtNQUNGLE9BQU9BLFFBQVFuVyxFQUNqQjtJQUlBLFNBQVM2dkIsY0FBYzFaLElBQ3JCLE9BQU8sWUFBWUEsS0FDckI7SUQwYkEsU0FBUzJaLFVBQVV6YTtNQUNqQixJQUFNLEVBQUUsT0FBT0EsSUFDTixLQUFFO01BQ1gsR0FBSSxLQUFLRztPQUFPO01BR2hCLE9BQU8sVUFBVUQsSUFDbkI7SUVwakJBLFNBQVN3YSxrQkFBa0J6bkIsRUFBR3BJLEVBQUdtRTtNQUMvQixPQUFPLEVBQUUsd0JBQXdCbkUsVUFBVW9JLEVBQUcsbUJBQW1CakUsTUFDbkU7SUZpd0JBLFNBQVMyckIsWUFBWWh3QjtNQUNuQixHQUFHQSxNQUFPO01BQ1YsR0FBR0EsT0FBUTtNQUNYLEdBQUdBLE9BQVE7TUFDWCxJQUFNLEVBQUUsVUFBYSxFQUFFO01BQ3ZCLElBQVUsSUFBRithLElBQU9BLElBQUkvYSxFQUFHK2EsSUFBSSxDQUN4QixJQUFJeEUsR0FBSzVWLEVBQ1QsSUFBSSxNQUFNQSxHQUNWLElBQUk0VjtNQUVOLE9BQU8sZUFBZTVWLEVBQ3hCO0lpQjUrQkEsSUFBSXN2QjtJQWdESixTQUFTQyxpQkFBa0IveEI7TUFDekIsR0FBSUEsTUFBTztNQUNYLElBQUlGO01BQ0osV0FBV29yQix1QkFBdUJsckI7TUFDbEMsT0FBT0YsQ0FDVDtJQVpBLFNBQVNreUIsaUJBQWtCaHlCLEdBQ3pCLElBQUlGLEVBQUksaUJBQWlCRSxHQUN6QixPQUFPRixDQUNUO0lsQ294QkEsU0FBU215Qix1QkFBdUJoeUIsR0FBSyxPQUFPLHVCQUF1QkEsRUFBRztJaUIzSXRFLFNBQVNpeUIsa0JBQWtCOWEsRUFBR3ZWLEdBQzVCLE9BQUksT0FBT3VWLG1CQUFtQnZWLE1BS2hDO0lFN3FCQSxTQUFTc3dCLGdCQUFnQjlwQjtNQUN2QixJQUFJM0Y7TUFDSixNQUFNMkYsT0FBT0E7T0FBYyxDQUN6QixNQUFNLG9CQUFvQnBHLEtBQU1vRyxjQUNoQztNQUVGLE9BQU9BLEdBQ1Q7SWpCeUVBLFNBQVMrcEIsdUJBQXVCOWtCLE1BQVEsUUFBUztJRmtLakQsU0FBUytrQixpQkFBaUJweUIsRUFBRTRCO01BQzFCLEdBQUlBLFdBQVc1QixRQUFTO01BQ3hCLElBQUkyQixNQUFRb0g7TUFDWixJQUFVLElBQUZsRyxJQUFPQSxNQUFPQSxJQUFJLE1BQ2xCQSxLQUFLLHNCQUF1QjdDLEVBQUc0QixJQUFJaUI7TUFFM0MsT0FBTyxvQkFBb0JsQixFQUM3QjtJUXBEQSxTQUFTMHdCLHNCQUFzQmhsQixNQUM3QixPQUFPLHVCQUNUO0lTM0lBLFNBQVNpbEIsU0FBU3JiLEdBQUkrRDtNQUNwQixLQUFLLE9BQU9BO01BQ1osR0FBSSxVQUFVLFdBQVk7TUFHMUIsT0FBTyxlQUFlLE9BQU8vRCxRQUFRK0QsSUFDdkM7SWlCNUVBLFNBQVN1WCxrQkFBa0IxeUIsRUFBRytCLEVBQUdnQjtNQUMvQixHQUFHaEIsU0FBU3FwQix1QkFBdUJycEIsS0FBSy9CO09BQ3RDO01BQ0YsR0FBSStDLGFBQWF2RCxVQUFVQztPQUFvQixDQUM3QyxHQUFHTyxjQUFlLGNBQWMrQyxFQUFHc0YsVUFBV3RGO1FBQzlDLEVBQUVxb0IsdUJBQXVCcnBCLFVBQVN0QyxvQkFBbUJzRDs7T0FFbEQsRUFBRXFvQix1QkFBdUJycEIsS0FBS2dCO01BQ25DLFFBQ0Y7SUFJQSxTQUFTNHZCLG9CQUFvQjN5QixFQUFHK0I7TUFDOUIsR0FBR0EsU0FBU3FwQix1QkFBdUJycEIsS0FBSy9CO09BQ3RDO01BQ0Y7UUFBR1A7O1FBQXNCTyxFQUFFb3JCLHVCQUF1QnJwQixjQUFjdEM7O1FBQXNCTztPQUFpQixDQUNyRyxJQUFJMkgsSUFBTSxFQUFFeWpCLHVCQUF1QnJwQjtRQUNuQyxHQUFHNEYsUUFBUVU7U0FBVyxDQUNwQixJQUFJdXFCO1VBQ0osSUFBVSxJQUFGNXZCLEVBQUlvb0IscUJBQXNCcG9CLElBQUloRCxTQUFVZ0Q7V0FBSSxDQUNsRCxJQUFJbUgsSUFBTW5LLEVBQUVnRDtZQUNaLEdBQUdtSCxlQUFlMUs7YUFBbUIsQ0FDbkMsTUFBTSxZQUNOLEdBQUcwSyxRQUFReEMsSUFBSztVQUdwQixHQUFHaXJCLFdBQVksZ0JBQWdCanJCO01BR25DLEVBQUV5akIsdUJBQXVCcnBCLEtBQUtzRztNQUM5QixRQUNGO0lBc0JBLFNBQVN3cUIsY0FBYzd5QixFQUFHK0IsRUFBR2dCO01BQzNCLEdBQUdBLE9BQVEsb0JBQW9CL0MsRUFBRStCLFFBQzVCLGtCQUFrQi9CLEVBQUUrQixFQUFFZ0I7TUFDM0IsUUFDRjtJM0J3SUEsU0FBUyt2QixnQkFBZ0IxdEI7TUFDdkIsSUFBUyxLQUFFLGtCQUFrQkEsTUFDdEIsR0FBRSxtQkFBbUJKO01BQzVCLEdBQUdpRSxRQUFTLHdCQUF3Qix1QkFBdUI3RDtNQUMzRCxRQUNGO0lQdkJBLFNBQVMydEI7TUFDUCw0Q0FDRjtJQXNDQSxTQUFTQyxrQkFBa0I3eUIsRUFBRTRCO01BQzNCLEdBQUlBLFdBQVcsc0JBQXNCNUIsT0FBUTtNQUM3QztPQUFPLEdBQUUsdUJBQXdCQSxFQUFHNEI7T0FDN0IsR0FBRSx1QkFBd0I1QixFQUFHNEI7T0FDN0IsR0FBRSx1QkFBd0I1QixFQUFHNEI7T0FDN0IsR0FBRSx1QkFBd0I1QixFQUFHNEI7TUFDcEMsT0FBUXlXLFdBQVdELFdBQVdELFVBQVVELEVBQzFDO0lBd0NBLFNBQVM0YSxlQUFnQjl5QixFQUFHNEI7TUFDMUIsR0FBSUEsV0FBVzVCLElBQUs7TUFDcEIsT0FBTyxzQkFBdUJBLEVBQUc0QixFQUNuQztJSXJCQSxTQUFTbXhCLGlCQUFrQmx6QixFQUFHdUIsR0FBSyxPQUFPLFdBQVd2QixFQUFHdUIsRUFBSTtJYTRzQjVELFNBQVM0eEIsVUFBVXB4QixFQUFHZ0g7TUFDcEIsR0FBR2hILFVBQU1nSDtPQUFNO01BQ2YsSUFBSSxPQUFPQTtNQUNYLElBQVksUUFBRSxPQUFPaEgsR0FDYixJQUFFO01BQ1YsTUFBTTtPQUFxQixDQUN6QixNQUFNLGFBQWFxeEIsU0FDbkIsVUFBVSxjQUFjcnFCO01BRTFCLE9BQU8sZUFBZVIsSUFDeEI7SUVwd0JBLFNBQVM4cUIsYUFBYXB4QixFQUFHb0ksRUFBR2pFO01BQVEsT0FBTyxRQUFRaUUsRUFBRyxtQkFBbUJqRSxNQUFRO0lWeUJqRixTQUFTa3RCLDRCQUErQix5QkFBMEI7SUQwRWxFLFNBQVNDLGdDQUFrQyxRQUFTO0lTelRwRCxTQUFTQyxtQkFBbUJ4ekIsRUFBRXVCLEdBQzVCLElBQUkrVixFQUFJdFgsSUFBRXVCLEVBQ1YsT0FBTytWLE1BQU1BLE1BQ2Y7SUErTUEsU0FBU21jLFlBQVlyYztNQUNuQixHQUFJQSxPQUFPQSxRQUFTLE9BQU9BO01BQzNCLG9CQUFvQixrQ0FDdEI7SUtqRkEsU0FBU3NjLHdCQUF3Qnp5QixFQUFHZDtNQUNsQyxJQUFRLElBQUVBLFNBQVU0QixFQUFHZ2U7TUFDdkIsSUFBS2hlLE1BQU9BLFNBQVNDLElBQUtEO09BQVEsQ0FDaEMsSUFBSTVCLEVBQUU0QixLQUNENUIsRUFBRTRCLGNBQ0Y1QixFQUFFNEIsZUFDRjVCLEVBQUU0QjtRQUNQLElBQUksa0JBQWtCZCxFQUFHOGU7TUFFM0I7TUFDQSxPQUFRL2Q7ZUFDQSxJQUFLN0IsRUFBRTRCO2VBQ1AsS0FBSzVCLEVBQUU0QjtlQUNQLEtBQUs1QixFQUFFNEIsR0FDYixJQUFJLGtCQUFrQmQsRUFBRzhlOztNQUczQixLQUFLL2Q7TUFDTCxPQUFPZixDQUNUO0lBM0NBLFNBQVMweUIsc0JBQXNCMXlCLEVBQUdkO01BQ2hDLElBQVEsSUFBRUEsU0FBVTRCLEVBQUdnZTtNQUN2QixJQUFLaGUsTUFBT0EsU0FBU0MsSUFBS0Q7T0FBUSxDQUNoQzs7UUFBSSxhQUFhQTs7UUFDWixhQUFhQTs7OztRQUNiLGFBQWFBOzs7O1FBQ2IsYUFBYUE7OztRQUNsQixJQUFJLGtCQUFrQmQsRUFBRzhlO01BRTNCO01BQ0EsT0FBUS9kO2VBQ0EsSUFBSyxhQUFhRDtlQUNsQixLQUFLLGFBQWFBO2VBRXhCLEtBQUssYUFBYUEsR0FDbEIsSUFBSSxrQkFBa0JkLEVBQUc4ZTs7TUFHM0IsS0FBSy9kO01BQ0wsT0FBT2YsQ0FDVDtJdEI4cUJBLFNBQVMyeUIsc0JBQXNCenpCO01BQzdCLE9BQVFBO2dCQUVOLDZCQUE2QkEsVUFFN0IsT0FBT0E7ZUFFUCxPQUFPQTtTQUVYO0lzQjFwQkEsU0FBUzB6QixvQkFBb0I1eUIsRUFBRzhCO01BQzlCLElBQUlLLFFBQVUsc0JBQXNCTDtNQUNwQyxjQUFVSztlQUNELHNCQUFzQm5DLEVBQUdtQztlQUV6Qix3QkFBd0JuQyxFQUFHbUMsUUFDdEM7SXRCeVhBLFNBQVMwd0Isb0JBQW9CenNCLEdBQUlFO01BQy9CLFlBQWMsNkJBQTZCRjtNQUMzQyxZQUFjLDZCQUE2QkU7TUFDM0MsT0FBUUYsT0FBT0UsUUFDakI7SUlsUEEsU0FBU3dzQixnQkFBZ0IvekIsR0FDdkIsV0FBVyxlQUFlQSxFQUM1QjtJUUNBLFNBQVNnMEIsa0JBQWtCQztNQUN6QixJQUFJOXpCLEVBQUk7TUFDUjtNQUNBLGlCQUFpQjh6QixTQUFTOXpCLFdBQVc4ekI7TUFDckMsSUFBVSxJQUFGbHlCLElBQU9BLElBQUlreUIsVUFBV2x5QjtPQUM1QixpQkFBaUJreUIsR0FBR2x5QixNQUFNNUIsV0FBVzh6QixHQUFHbHlCO01BQzFDLGlCQUFpQmt5QixTQUFTOXpCLFdBQVc4ekI7TUFDckM7TUFDQSxRQUNGO0lHL1NBLFNBQVNDLHFCQUNQLDBDQUNGO0lFcTdCQSxTQUFTQyxTQUFTcHlCO01BQ2hCLEdBQUdBLE9BQU07TUFDVCxPQUFPLFVBQVVBLElBQ25CO0lIL29CQSxTQUFTcXlCLG1CQUFvQi9tQjtNQUMzQixJQUFJTixLQUFPRixpQkFBaUJRO01BQzVCLEdBQUdOLG9CQUFvQkE7T0FBZ0IsQ0FDckMscUJBQ0Esb0JBQ0EsWUFBWUE7TUFFZCxHQUFJQSxvQkFBb0JBLGdCQUN0QjtNQVBGLElBUUl4RSxJQUFNd0UsWUFBWUE7TUFDdEI7TUFDQSxPQUFPeEUsR0FDVDtJQUtBLFNBQVM4ckIsa0JBQW1CaG5CO01BQzFCLElBQVMsS0FBRVIsaUJBQWlCUSxRQUNwQjtNQUNSLElBQVUsSUFBRnRMLElBQU9BLE1BQU9BLElBQUksT0FDakJ3RyxZQUFZLG1CQUFtQjhFO01BRXhDLE9BQU85RSxHQUNUO0lGdUpBLFNBQVMrckI7TUFDUCxxREFDRjtJS3FiQSxTQUFTQyxlQUFlenlCLEVBQUdZO01BQ3pCLElBQUk2VSxLQUFPO01BQ1gsSUFBSSxPQUFPelY7TUFDWCxJQUFJLE9BQU9ZO01BQ1gsR0FBRyxTQUFTNlUsU0FBUyxTQUFTQSxNQUFPO01BQ3JDLE9BQU8sZ0JBQWdCN1UsTUFDekI7SU14eEJBLFNBQVM4eEIseUJBQXlCbnFCLEdBQUssUUFBVTtJWmhGakQsU0FBU29xQixjQUFjMWEsSUFBSzNCLEtBQzFCLE9BQU8yQixTQUFTM0IsSUFDbEI7SXFCckJBLFNBQVNzYyxnQkFBZ0J0TixHQUFJOWYsR0FBSStmLEdBQUk3ZixHQUFJeEY7TUFDdkMsR0FBSXdGLE1BQU1GO09BQUksSUFDRCxJQUFGdEUsSUFBT0EsS0FBS2hCLElBQUtnQixJQUFLLEdBQUd3RSxLQUFLeEUsS0FBS29rQixHQUFHOWYsS0FBS3RFOztPQUMvQyxJQUNNLElBQUZBLEVBQUloQixJQUFLZ0IsT0FBUUEsSUFBSyxHQUFHd0UsS0FBS3hFLEtBQUtva0IsR0FBRzlmLEtBQUt0RTtNQUV0RCxRQUNGO0k1QmdiQSxTQUFTMnhCLHFCQUFxQngwQjtNQUM1QixJQUFJb0k7TUFDSixJQUFJLHVCQUF1QnBJO01BQzNCLFFBQU9BO01BQ1AsR0FBS0EsZ0JBQWtCb0ksUUFBUUEsSUFBTSxPQUFPQTtNQUM1QyxJQUFJO01BQ0osUUFBT3BJO01BQ1AsR0FBTUEsZ0JBQWtCb0ksUUFBUUEsT0FBUyxtQkFBbUJwSSxHQUFJLE9BQU9vSTtNQU52RSxJQU9JUSxFQUFJLCtEQUErRDVJO01BRXZFLEdBQUc0STtPQUFFLENBQ0g7U0FBTyxHQUFFO1NBQ0ksU0FBRSxTQUFTQSxPQUFPQSxPQUFPNnJCO1NBQ3pCLFVBQUc3ckIsZ0JBQVk2ckI7UUFDNUIsTUFBTUMsV0FBVyxXQUFZQztRQUM3QixPQUFPdnNCO01BRVQsR0FBRyx5QkFBeUJwSSxHQUFJLE9BQU8wUztNQUN2QyxHQUFHLHVCQUF1QjFTLEdBQUksU0FBUTBTO01BQ3RDLGdDQUNGO0lHclZBLFNBQVNraUI7TUFDUCxPQUFPLHVCQUF1QjF2QixpQkFDaEM7SVJtREEsU0FBUzJ2QixlQUFnQmgxQixFQUFHdUIsR0FBSyxPQUFPLE1BQU1BLEVBQUc7SUFPakQsU0FBUzB6QixlQUFlajFCLEVBQUV1QixHQUFLLE9BQU8sTUFBTUEsRUFBRztJQWhCL0MsU0FBUzJ6QixlQUFlbDFCLEVBQUV1QixHQUFLLE9BQU8sV0FBV0EsTUFBUTtJc0JwTHpELFNBQVM0ekIseUJBQTBCaDFCO01BQ2pDLElBQU0sSUFBUyxJQUFFLHNCQUFzQkEsR0FBUyxRQUFXO01BQzNELEdBQUk2QjtPQUFTLE9BQ0gsdUJBQXVCN0IsRUFBRTRCO2lCQUN4QixJQUFLLFdBQVcsY0FDaEIsSUFBSyxTQUFVO01BRzFCLEdBQUlBLFFBQVFDLE9BQU8sdUJBQXVCN0IsRUFBRzRCO09BQzNDLE9BQVEsdUJBQXVCNUIsRUFBRzRCOztpQkFDZixVQUFXLE9BQVE7O2lCQUNuQixTQUFXLE9BQVE7O2lCQUNuQixTQUFXLE9BQVE7O2lCQUNuQixPQUFROztNQUU3QixRQUFRQSxFQUFHYixLQUFNc08sS0FDbkI7SUFHQSxTQUFTNGxCLGlCQUFpQnh5QjtNQUN4QixHQUFJQSxXQUFXQSxRQUFVLE9BQU9BO01BQ2hDLEdBQUlBLFdBQVdBLFFBQVUsT0FBT0E7TUFDaEMsR0FBSUEsV0FBV0EsU0FBVSxPQUFPQTtNQUNoQyxVQUNGO0l0QmlRQSxTQUFTeXlCLHFCQUFxQmwxQjtNQUM1QjtPQUFNLEVBQUUseUJBQTBCQTtPQUM1QixFQUFFQztPQUFXLEtBQUVBO09BQVcsS0FBRUE7T0FDdkIsT0FBRSxvQkFBb0JvUDtPQUNuQjtRQUNWLElBQUk1TywyQ0FBNkMwMEI7T0FDL0MsRUFBRSx1QkFBdUJuMUIsRUFBRzRCO09BQzVCLEVBQUUsaUJBQWlCYTtNQUN6QixHQUFJK0MsU0FBU0EsS0FBSzZKLEtBQU07TUFQeEIsSUFRSWpILElBQU0sb0JBQW9CNUM7TUFDOUI7T0FBUyxDQUNQO1FBQ0EsSUFBSSx1QkFBdUJ4RixFQUFHNEI7UUFDOUIsR0FBSWEsUUFBUztRQUNiLElBQUksaUJBQWlCQTtRQUNyQixHQUFJK0MsU0FBU0EsS0FBSzZKLEtBQU07UUFFeEIsR0FBSSxlQUFlK2xCLFVBQVdodEIsS0FBTTtRQUNwQyxJQUFJLG9CQUFvQjVDO1FBQ3hCLE1BQU0sZUFBZSxlQUFlMnZCLE9BQVEvc0IsS0FBTTVDO1FBRWxELEdBQUksZUFBZTRDLElBQUs1QyxHQUFJO01BRTlCLEdBQUk1RCxLQUFLLHNCQUFzQjVCLEdBQUk7TUFDbkMsR0FBSXFQLGNBQWMsbUJBQW1CNU8sb0JBQXVCMkg7T0FDMUQ7TUFDRixHQUFJckgsU0FBVSxNQUFNLGVBQWVxSDtNQUNuQyxPQUFPQSxHQUNUO0ltQnVJQSxTQUFTaXRCLGNBQWN0ZCxHQUFJQyxHQUFJcFYsR0FDN0IsT0FBTyxVQUFVb1YsSUFBS3BWLEdBQ3RCLFFBQ0Y7SW5CNU9BLFNBQVMweUIsZUFBZ0J6MUIsRUFBR3VCLEdBQUssT0FBTyxNQUFNQSxFQUFHO0lBSGpELFNBQVNtMEIsY0FBZTExQixFQUFHdUIsR0FBSyxPQUFPLEtBQUtBLEVBQUk7SW9Ddk9oRCxTQUFTbzBCLGNBQWM1eUI7TUFDckIsU0FBUzZ5QixRQUFRNTFCLEVBQUc4YyxHQUNsQixPQUFPLHNCQUFzQjljLEVBQUU4YyxFQUNqQztNQUNBLFNBQVMrWSxRQUFRNzFCLEVBQUc4YyxHQUNsQixPQUFPLGdDQUFnQzljLEVBQUU4YyxFQUMzQztNQUNBLFNBQVNnWixHQUFHaDBCLEVBQUdZLEdBQ2IsT0FBTyxjQUFjWixFQUFFWSxFQUN6QjtNQUNBLFNBQVNxekIsSUFBSWowQixFQUFHWSxHQUNkLE9BQU8sZUFBZVosRUFBRVksRUFDMUI7TUFDQSxTQUFTME0sSUFBSXROLEVBQUdZLEdBQ2QsT0FBTyxlQUFlWixFQUFFWSxFQUMxQjtNQUNBLFNBQVNzekIsSUFBSWwwQixFQUFHWSxHQUNkLE9BQU8sZUFBZVosRUFBRVksRUFDMUI7TUFDQSxTQUFTdXpCLEtBQUtqMkIsRUFBRzhjLEdBQ2YsT0FBTyxHQUFHLFFBQVE5YyxFQUFFOGMsR0FBRyxRQUFTOWMsT0FBUThjLEdBQzFDO01BQ0EsU0FBU25kLElBQUltQyxFQUFHQyxHQUNkLE9BQU8sY0FBY0QsRUFBR0MsRUFDMUI7TUFDQSxTQUFTbTBCLElBQUlwMEIsRUFBR0MsRUFBRy9CLEdBQ2pCLE9BQU8sY0FBYzhCLEVBQUdDLEVBQUcvQixFQUM3QjtNQUNBO09BQU0sRUFBRSxxQkFBcUI7T0FDcEIsS0FBRSxxQkFBcUI7T0FDNUJzWDtPQUFHK2U7T0FBSUM7T0FDSixHQUFFdnpCO09BQ0gsRUFBRSxJQUFJd3pCO09BQ04sRUFBRSxJQUFJQTtPQUNMLEdBQUUsSUFBSUE7T0FDTixHQUFFLElBQUlBO01BRWIsSUFBSSxJQUFJcDJCLEVBQUdxMkI7TUFFWCxJQUFJLElBQUksSUFBSWxmLEVBQUUsUUFBUUEsT0FBUThlO01BQzlCLElBQUksSUFBSSxJQUFJOWUsRUFBRSxRQUFRQSxPQUFROGU7TUFDOUIsSUFBSSxJQUFJOWUsRUFBRSxRQUFRQTtNQUVsQixJQUFJaWYsS0FBTyxJQUFLLElBQUlwMkIsRUFBRWcyQixHQUFJcjBCO01BZjFCLElBaUJPLEdBQUUwMEIsR0FDRixHQUFFaFU7TUFDVCxLQUFLLElBQUk4VCxHQUFHRDtNQUNaLEtBQUssS0FBS0E7TUFDVixLQUFLLElBQUksSUFBSUEsR0FBSUMsSUFBTSxRQUFRQTtNQUMvQixLQUFLLEtBQUtBO01BQ1YsSUFBSUMsS0FBT0Y7TUFDWCxJQUFJRSxLQUFPRDtNQUVYLE9BQU9oZixDQUNUO0kxQitLQSxTQUFTbWYsNEJBQStCLFFBQVU7SVVuQ2xELFNBQVNDLHNCQUFzQnIyQjtNQUM3QixJQUFJeUIsS0FDSixLQUFNekIsUUFBU0EsSUFBSUEsS0FBTSxPQUNoQkEsTUFFVCxPQUFPeUIsQ0FDVDtJTjZPQTtLQUE0QjtLQWFSO01BQUU7U0FDcEIsU0FBUyswQixTQUFZLGVBQWlCO1NBQ3RDOzs7Ozs7OzttQkFFa0JyWixLQUFNOU87WUFDcEIsSUFBVyxJQUFGM00sRUFBSXliLFNBQVN6YixPQUFPQTthQUMzQixXQUFXckMsb0JBQXFCZ1AsU0FBUzNNLFFBRnZDOzttQkFJYThGLElBQUsyVixLQUFNOU87WUFDNUIsSUFBSTdHLElBQU1BO1lBQ1YsSUFBVyxJQUFGOUYsRUFBSXliLFNBQVN6YixPQUFPQTthQUMzQixXQUFXOEYsU0FBVTZHLFNBQVMzTSxRQUh6Qjs7bUJBS1l5YixLQUFNeFgsS0FBTTBJO1lBQy9CLFdBQVdoUCxvQkFBb0JzRztZQUMvQixJQUFXLElBQUZqRSxFQUFJeWIsU0FBU3piLE9BQU9BO2FBQzNCLFdBQVdyQyxvQkFBcUJnUCxTQUFTM00sUUFIbEM7O21CQUtZWjtZQUNyQixHQUFJQTthQUFtQix1QkFBOENBOzthQUNoRSxHQUFJQTtjQUFvQix3QkFBZ0RBOztjQUN4RSx3QkFBZ0RBLE9BSDFDO3lCQUtLLE9BQU96QixjQUFyQjs7O1lBRUYsaUJBQWlCQTtZQUNqQjtZQUNBO1lBQ0EsY0FBZ0JBO1lBQ2hCLGNBQWdCQTtZQUNoQixjQUFnQkE7WUFDaEIsY0FBZ0JBO1lBQ2hCLE9BQU9BLFVBUkE7U0FXWCxnQkFBaUJxRCxFQUFHcUY7V0FDbEIsUUFBUSxzQkFBc0JBO1dBRTlCO1lBQWUsV0FBRztZQUNMLFNBQUk7V0FHakIsR0FBSTJ1QjtZQUNGOztXQUxGO1lBT1csV0FBTUY7WUFDUDtZQUNXLGlCQUFFQyxXQUFhMzBCLFNBQVc2SjtXQUUvQyxTQUFTa3JCLEtBQUtuMEI7YUFDWixHQUFJK3pCLFdBQVk7YUFDaEIsSUFBSUssZ0JBQWtCLHdCQUF3QnAwQjthQUM5QyxHQUFJbzBCO2NBQWlCLENBQUUsb0JBQW9CQSxpQkFBa0I7O2NBQ3hELENBQUUsdUJBQXVCcDBCLEdBQUksYUFDcEM7V0FFQSxTQUFTcTBCLFdBQVlyMEI7YUFDbkIsR0FBSUE7Y0FBZSxDQUNqQixHQUFJLEtBQUtBLEdBQUk7ZUFDYjtnQkFBUyxLQUFFQTtnQkFDSCxJQUFFc2QsZ0JBQWdCamI7Z0JBQ2I7ZUFDYixLQUFJaXlCO2dCQUNGO2VBQ0YsR0FBR1Y7Z0JBQXlCLENBQzFCO2lCQUNBLElBQVcsSUFBRjUwQixJQUFPQSxJQUFJcUQsWUFBYXJEO2tCQUMvQixlQUFpQixnQkFBZ0JBO2lCQUNuQztpQkFDQSxjQUFjZ1gsT0FBUWhXLEVBQUd1MEI7O2dCQUNwQixHQUFHRCxvQkFBb0JodkI7aUJBQVUsQ0FDdEM7a0JBQ0EsSUFBVyxJQUFGdEcsSUFBT0EsSUFBSXFELFlBQWFyRDttQkFDL0IsZUFBaUIsZ0JBQWdCQTtrQkFDbkM7a0JBQ0EsSUFBSXcxQixXQUFhO2tCQUNqQixJQUFVLElBQUZ4MUIsSUFBT0EsT0FBUUEsSUFBSztrQkFHNUIsY0FBY2dYLE9BQVFoVyxFQUFHdTBCO2tCQUN6QixnQkFBZ0JDLGNBQWdCRDtrQkFDaEMsZ0JBQWdCQztrQkFDaEIsZ0JBQWdCQSxrQkFBb0JEOztpQkFDL0IsQ0FDTDtrQkFDQSxJQUFXLElBQUZ2MUIsSUFBT0EsSUFBSXFELFlBQWFyRDttQkFDL0IsZUFBaUIsZ0JBQWdCQTtrQkFDbkM7a0JBQ0EsSUFBSXkxQixRQUFVO2tCQUNkLGNBQWN6ZSxPQUFRaFcsRUFBR3UwQjtrQkFDekIsR0FBSUQsb0JBQW9CLGVBQWVHO21CQUNyQzsyRUFBb0VweUI7ZUFFeEUsdUJBQXdCa3lCO2VBQ3hCLHVCQUF3QkE7O2NBRXJCLEdBQUl2MEIsYUFBYW1HLFNBQVNuRyxVQUFVQTtlQUFTLENBQ2hELEdBQUlBO2lCQUFhO2dCQUdqQixHQUFJLHlCQUF5QkE7aUJBQzNCO2dCQUNGLEdBQUlBLGdCQUFnQixLQUFLQSxHQUFJO2dCQUM3QixHQUFJQSxhQUFhQTtpQkFDZixzQkFBbURBLFFBQVNBOztpQkFFNUQsMEJBQW1EQSxxQkFBcUJBO2dCQUMxRSxrQkFBa0JBO2dCQUNsQixrQkFBa0JBO2dCQUNsQixHQUFJQSxhQUFjLFdBQVlBOztlQUN6QixHQUFJLGlCQUFpQkE7Z0JBQUksQ0FDOUIsS0FBSyxpQkFBaUI7a0JBQThCOztpQkFHcEQsR0FBSSxLQUFLQSxHQUFJO2lCQUNiLElBQUlmLElBQU0scUJBQXFCZTtpQkFDL0IsR0FBSWY7a0JBQ0Ysc0JBQW9EQTs7a0JBQ2pELEdBQUlBO21CQUNQLHlCQUFnREE7O21CQUVoRCwwQkFBbURBO2lCQUNyRCxJQUFXLElBQUZELElBQU1BLElBQUlDLElBQUlEO2tCQUNyQixlQUFpQixzQkFBc0JnQixFQUFFaEI7aUJBQzNDLHdCQUF5QkM7aUJBQ3pCLHdCQUF5QkE7O2dCQUNwQixHQUFJLGtCQUFrQmU7aUJBQUksQ0FDL0IsSUFBSWYsSUFBTSxzQkFBc0JlO2tCQUNoQyxHQUFJZjttQkFDRixzQkFBb0RBOzttQkFDakQsR0FBSUE7b0JBQ1AseUJBQWdEQTs7b0JBRWhELDBCQUFtREE7a0JBQ3JELElBQVcsSUFBRkQsSUFBTUEsSUFBSUMsSUFBSUQ7bUJBQ3JCLGVBQWlCLHVCQUF1QmdCLEVBQUVoQjtrQkFDNUMsd0JBQXlCQztrQkFDekIsd0JBQXlCQTs7aUJBQ3BCLEdBQ0RlLE1BQU1BO2tCQUFLLENBQ2IsSUFBSTAwQixpQkFBbUIxMEI7bUJBU3ZCO3dEQUErQzAwQjs7a0JBSzVDLEdBQUkxMEIsVUFBVUE7bUJBQVUsc0JBQ3NCQTs7bUJBQzVDLEdBQ0RBLG1CQUFrQkE7b0JBQ3BCLHlCQUE2Q0E7O29CQUMxQyxHQUFJQSxvQkFBbUJBO3FCQUMxQiwwQkFBK0NBOztxQkFFL0MsMEJBQStDQSxFQUd2RDtXQUNBLFdBQVlBO1dBQ1osTUFBT2llO1lBQWtCLENBQ3ZCLElBQU0sRUFBRSxZQUNGLEVBQUU7YUFDUixHQUFJamYsUUFBUWdCLFNBQVUsV0FBWUEsRUFBR2hCO2FBQ3JDLFdBQVlnQixFQUFFaEI7V0FFaEIsR0FBSWsxQjtZQUFrQixxQkFBcUJBO1dBQzNDO1dBQ0EsT0FBT2xlLFlBNUlGLENBbkNhOztJYjBDdEIsU0FBUzJlLHFCQUFzQjUxQjtNQUM3QixPQUFPLHVCQUF1Qix5QkFBeUJBLElBQUlBLFVBQzdEO0lheUlBLFNBQVM2MUIsNEJBQTZCNTBCLEVBQUdxRjtNQUN2QyxPQUFPLHFCQUFzQixnQkFBaUJyRixFQUFHcUYsT0FDbkQ7SU5qY0EsU0FBU3d2QixxQkFBcUJ4eUI7TUFDNUIscUJBQXNCQSwyQkFDeEI7SUVkQSxTQUFTeXlCLHdCQUF3QkM7TUFDL0IsSUFBSUEsSUFBTSx3QkFBd0JBO01BQ2xDLFVBQVdqdUI7T0FBdUIsQ0FDaEMsSUFBSWt1QixjQUFnQjtRQUNwQixHQUFHQSxpQkFBaUJBO1NBQ2xCO1dBQ0UsdUJBQXVCRCx1QkFDdkI7ZUFDT2hqQixHQUNQOztPQUdELFVBQ1A7SWlCdEhBLFNBQVNrakIsMkJBQTJCL0k7TUFDbEMsR0FBR0EsYUFBYyxPQUFTQSxhQUMxQixPQUFPOXNCLElBQ1Q7SWxCd0lBLFNBQVM4MUIsaUJBQWlCenFCO01BQ3hCLEdBQUcvTixzQkFBc0JBO09BQTBCLE9BQzFDO01BRVQsc0JBQ0Y7SUdxTEEsU0FBU3k0QixnQkFBZ0JoWixPQUFRL0I7TUFDL0IsSUFBUSxJQUFFLGlCQUNGLFFBQU0wRSxNQUFNN2Y7TUFDcEIsSUFBVSxJQUFGRCxJQUFPQSxJQUFJQyxJQUFLRCxJQUFJLFNBQ2pCQSxLQUFLO01BRWhCLFFBQVFDO01BQ1IsT0FBTytYLEdBQ1Q7SUExWkEsU0FBU29lO01BQ1A7O21CQUNrQkQsMEJBQ0YzVCxtQkFDTHZLLGNBRWI7SU0yR0EsU0FBU29lLFVBQVVoaEIsSUFDakIsT0FBTyxlQUFlLE9BQU9BLFdBQy9CO0lMeVlBLFNBQVNpaEIsdUJBQXVCdjJCLEVBQUVZLEVBQUVFLEVBQUUrQztNQUNwQyx1REFDRjtJQ2xIQSxTQUFTMnlCLHVCQUF3Qm40QixFQUFHaVk7TUFDbEMsU0FBU21nQixNQUFNcDRCLEVBQUU0QjtRQUNmLE9BQVEsc0JBQXNCNUIsRUFBRzRCOzs7O2VBQzlCLHNCQUFzQjVCLEVBQUc0Qjs7OztlQUN6QixzQkFBc0I1QixFQUFHNEI7Ozs7ZUFDMUIsc0JBQXNCNUIsRUFBRzRCLE1BQzdCO01BQ0EsR0FBSSxNQUFNNUIsRUFBR2lZO09BQ1g7TUFDRixPQUFRLE1BQU1qWSxFQUFHaVksUUFDbkI7SUF0V0EsU0FBU29nQixlQUFnQnI0QixFQUFHNEI7TUFBSyxTQUFTLHVCQUF1QjVCLEdBQUksU0FBUzRCLENBQUc7SUFDakY7O3VCQUN1QixPQUFPLGtCQUFrQnJDLFNBQXZDO3VCQUNjLE9BQU8sa0JBQWtCQSxxQkFBdkM7OztPQUVMLElBQU0sRUFBRUEsT0FBVSxFQUFFQTtPQUNwQixTQUFTcUM7T0FDVCxPQUFRLGFBQWFBLFVBQVcsYUFBYUEsTUFIdkM7OztPQU1OLElBQU0sRUFBRXJDLE9BQVUsRUFBRUE7T0FDcEIsU0FBU3FDO09BQ1QsT0FBUSxhQUFhQSxpQkFBa0IsYUFBYUEsTUFIOUM7OztPQU1OLElBQU0sRUFBRXJDLE9BQVUsRUFBRUE7T0FDcEIsU0FBU3FDO09BQ1QsUUFBUyxhQUFhQTs7OztlQUFhLGFBQWFBOzs7O2VBQ3ZDLGFBQWFBOzs7O2VBQWEsYUFBYUE7O2VBSjFDOzs7T0FPTixJQUFNLEVBQUVyQyxPQUFVLEVBQUVBO09BQ3BCLFNBQVNxQztPQUNULE9BQVEsYUFBYUE7Ozs7Y0FBYSxhQUFhQTs7OztjQUM1QyxhQUFhQTs7OztjQUFhLGFBQWFBLE1BSnBDOztjQU1VQztPQUNoQixJQUFJRCxFQUFJckM7T0FDUixTQUFTcUMsSUFBSUM7T0FDYixPQUFPLHVCQUF1QixpQkFBaUJELEVBQUdBLElBQUlDLEtBSGhEO0lBa0RWLFNBQVN5MkIsb0JBQXFCMzJCO01BQzVCLE9BQU8seUJBQTBCLG9CQUFxQkEsR0FDeEQ7SUF5RkEsU0FBUzQyQiw2QkFBNkJ4WixPQUFROUc7TUFDNUM7T0FBVyxPQUFFO09BQ0UsV0FBRTtPQUNELFlBQUU7T0FDTCxTQUFFO09BQ0YsU0FBRTtPQUNMO09BQ1csaUJBQUd5Z0IsbUJBQW9CMTJCO09BQzVCO01BQ2hCLFNBQVM4MkI7UUFDUCxJQUFJanpCLEtBQU87UUFDWCxHQUFJQTtTQUF1QyxHQUNyQ0E7VUFBeUMsQ0FDM0MsSUFBUSxJQUFFQSxXQUNELEtBQUdBLGdCQUNOLEdBQUd2RjtXQUNULEdBQUkrYyxVQUFXLE9BQU96YTtXQUN0QixHQUFJazBCLGlCQUFrQixpQkFBaUIrQixpQkFBaUJqMkI7V0FDeEQsV0FBV0EsRUFBR3lhO1dBQ2QsT0FBT3phOztVQUVQLE9BQVFpRDs7U0FDTCxHQUNEQTtVQUEwQyxDQUM1QyxJQUFRLElBQUVBLFlBQ0osRUFBRSxlQUFnQmhFO1dBQ3hCLEdBQUlpMUIsaUJBQWtCLGlCQUFpQitCLGlCQUFpQmoyQjtXQUN4RCxPQUFPQTs7VUFDRixPQUNFaUQ7c0JBRUwsT0FBTztzQkFFUCxPQUFPO3NCQUVQLE9BQU87c0JBRVAsZ0RBQ0E7O2FBRUEsSUFBSTdFLE9BQVM7YUFDYixPQUFPODFCLGlCQUFpQitCLGNBQWM3M0I7O2FBRXRDLElBQUlBLE9BQVM7YUFDYixPQUFPODFCLGlCQUFpQitCLGNBQWM3M0I7O2FBRXRDLElBQUlBLE9BQVM7YUFDYixPQUFPODFCLGlCQUFpQitCLGNBQWM3M0I7O2FBRXRDO2NBQVcsT0FBRTtjQUNMLElBQUUrM0I7Y0FDRCxLQUFFQTtjQUNMLEdBQUd6NEI7YUFDVCxHQUFJK2MsVUFBVyxPQUFPemE7YUFDdEIsR0FBSWswQixpQkFBa0IsaUJBQWlCK0IsaUJBQWlCajJCO2FBQ3hELFdBQVdBLEVBQUd5YTthQUNkLE9BQU96YTs7YUFFUCxtREFDQTs7YUFFQSxJQUFRLElBQUUsZ0JBQ0osRUFBRSxlQUFnQmY7YUFDeEIsR0FBSWkxQixpQkFBa0IsaUJBQWlCK0IsaUJBQWlCajJCO2FBQ3hELE9BQU9BOzthQUVQLElBQVEsSUFBRSxpQkFDSixFQUFFLGVBQWdCZjthQUN4QixHQUFJaTFCLGlCQUFrQixpQkFBaUIrQixpQkFBaUJqMkI7YUFDeEQsT0FBT0E7O2FBRVAsSUFBSUosTUFBUXVHO2FBQ1osSUFBVyxJQUFGbkgsSUFBTUEsTUFBTUEsSUFBSyxNQUFNQSxLQUFLO2FBRHJDLElBRUlnQixFQUFJLG9CQUFxQko7YUFDN0IsR0FBSXMwQixpQkFBa0IsaUJBQWlCK0IsaUJBQWlCajJCO2FBQ3hELE9BQU9BOzthQUVQLElBQUlKLE1BQVF1RzthQUNaLElBQVcsSUFBRm5ILElBQU1BLE1BQU1BLElBQUssRUFBRUEsS0FBSzthQURqQyxJQUVJZ0IsRUFBSSxvQkFBcUJKO2FBQzdCLEdBQUlzMEIsaUJBQWtCLGlCQUFpQitCLGlCQUFpQmoyQjthQUN4RCxPQUFPQTs7YUFFUCxJQUFRLElBQUUsZ0JBQ0osTUFBTW1HLE1BQU1sSDthQUNsQjthQUZBLElBR0lXLE1BQVF1RzthQUNaLEdBQUkrdEIsaUJBQWtCLGlCQUFpQitCLGlCQUFpQmoyQjthQUN4RCxJQUFXLElBQUZoQixJQUFNQSxLQUFLQyxJQUFJRDtjQUFLLENBQzNCLElBQVcsSUFBRmlCLElBQU1BLE1BQU1BLElBQUssTUFBTUEsS0FBSztlQUNyQyxFQUFFakIsS0FBSyxvQkFBcUJZO2FBRTlCLE9BQU9JOzthQUVQLElBQVEsSUFBRSxnQkFDSixNQUFNbUcsTUFBTWxIO2FBQ2xCO2FBRkEsSUFHSVcsTUFBUXVHO2FBQ1osR0FBSSt0QixpQkFBa0IsaUJBQWlCK0IsaUJBQWlCajJCO2FBQ3hELElBQVcsSUFBRmhCLElBQU1BLEtBQUtDLElBQUlEO2NBQUssQ0FDM0IsSUFBVyxJQUFGaUIsSUFBTUEsTUFBTUEsSUFBSyxFQUFFQSxLQUFLO2VBQ2pDLEVBQUdqQixLQUFLLG9CQUFxQlk7YUFFL0IsT0FBT0k7O2FBRVAsSUFBUSxJQUFFLGlCQUNKLE1BQU1tRyxNQUFNbEg7YUFDbEI7YUFDQSxHQUFJaTFCLGlCQUFrQixpQkFBaUIrQixpQkFBaUJqMkI7YUFIeEQsSUFJSUosTUFBUXVHO2FBQ1osSUFBVyxJQUFGbkgsSUFBTUEsS0FBS0MsSUFBSUQ7Y0FBSyxDQUMzQixJQUFXLElBQUZpQixJQUFNQSxNQUFNQSxJQUFLLE1BQU1BLEtBQUs7ZUFDckMsRUFBRWpCLEtBQUssb0JBQXFCWTthQUU5QixPQUFPSTs7YUFFUCxJQUFRLElBQUUsaUJBQ0osTUFBTW1HLE1BQU1sSDthQUNsQjthQUZBLElBR0lXLE1BQVF1RzthQUNaLElBQVcsSUFBRm5ILElBQU1BLEtBQUtDLElBQUlEO2NBQUssQ0FDM0IsSUFBVyxJQUFGaUIsSUFBTUEsTUFBTUEsSUFBSyxFQUFFQSxLQUFLO2VBQ2pDLEVBQUdqQixLQUFLLG9CQUFxQlk7YUFFL0IsT0FBT0k7O3NCQUdQLDJDQUNBOzs7O2FBSUEsSUFBSUgsRUFBSzthQUNULE9BQVFBLElBQUksc0JBQXdCLEtBQUssb0JBQXFCQTthQUQ5RCxJQUVRLElBQUV5ZCxnQkFBZ0JsZ0IsR0FDdEJnNUI7YUFDSixLQUFJOUI7Y0FDRjthQUNGLE9BQU9yeEI7eUJBRUw7O2dCQUVBLEtBQUlxeEI7aUJBQ0Y7O2dCQUNGLGdCQUFnQkE7Z0JBQ2hCOztnQkFFQSxnQkFBZ0I7Z0JBRWhCO2dCQUFrQjtnQkFDbEI7O2FBbEJGLElBb0JZLFFBQUVuWSxTQUNMLFNBQ0gsRUFBRSxnQkFBZ0JBLE9BQVExQjthQUNoQyxHQUFHMmIsaUJBQWlCOXdCO2NBQVUsR0FDekI4d0IsaUJBQWlCM2I7ZUFDbEI7O2FBRUosR0FBSXlaLGlCQUFrQixpQkFBaUIrQixpQkFBaUJqMkI7YUFDeEQsT0FBT0E7b0JBRVAsaURBSVI7TUFDQSxJQUFJd0YsSUFBTTtNQUNWLE1BQU95WTtPQUFrQixDQUN2QixJQUFTLEtBQUUsWUFDTCxFQUFFLFlBQ0YsRUFBRWplO1FBQ1IsR0FBSTRDLElBQUk2WCxLQUFNLFdBQVd6YSxFQUFHeWE7UUFDNUIsRUFBRTdYLEtBQUs7TUFFVCxVQUFXeVMsZ0JBQWUsU0FBUzhHO01BQ25DLE9BQU8zVyxHQUNUO0liMFlBLFNBQVM2d0IscUJBQXFCajVCLEdBQUssT0FBT0EsQ0FBRTtJYXpvQjVDLFNBQVNrNUIsNEJBQTRCbDVCLEVBQUVpWTtNQUNyQztPQUFJOEc7O1NBQWFzWjtVQUFnQixxQkFBcUJyNEIsVUFBV2lZLGdCQUFjQSxJQUFJQTtNQUNuRixPQUFPLDZCQUE2QjhHLE9BQVE5RyxJQUM5QztJQ3dJQSxTQUFTa2hCLGlCQUFrQmpzQjtNQUN6QixJQUFTLEtBQUVSLGlCQUFpQlEsUUFDakIsV0FBTXpHO01BQ2pCLFNBQVMyeUIsTUFBTXoxQixPQUFRM0MsT0FBUWpCO1FBQzdCLElBQUlFO1FBQ0osTUFBTUEsSUFBSUY7U0FBRSxDQUNWLEdBQUc2TSxvQkFBb0JBO1dBQWdCLENBQ3JDLHFCQUNBLG9CQUNBLFlBQVlBO1VBRWQsR0FBSUEsb0JBQW9CQSxnQkFDdEI7VUFDRixPQUFPNUwsU0FBT2YsS0FBSzJNLFlBQVlBO1VBQy9CO1VBQ0E7UUFFRixPQUFPM00sQ0FDVDtNQUNBLElBQUlBLEVBQUksTUFBTTg0QjtNQUNkLEdBQUc5NEI7T0FDRDs7T0FDRyxHQUFJQSxPQUNQO01BSkY7T0FLUSxJQUFFLHVCQUF3QixvQkFBb0I4NEI7T0FDOUMsUUFBTXR5QixXQUFXNUU7TUFDekIsUUFBUWszQjtNQVBSLElBUUk5NEIsRUFBSSxNQUFNd0gsT0FBUzVGO01BQ3ZCLEdBQUc1QixJQUFJNEI7T0FDTCxpREFBaUQ1QixXQUFXNEI7TUFWOUQ7T0FXVztPQUNILElBQUUsNEJBQTRCLG9CQUFvQjRGLEtBQU16RztNQUNoRSxjQUFjNEwsY0FBYzVMO01BQzVCLE9BQU9vSCxHQUNUO0lBSUEsU0FBU2l4QixpQ0FBaUM1MkIsR0FDeEMsT0FBTyxpQkFBaUJBLEVBQzFCO0lVelNBLFNBQVM2MkIsZ0JBQWdCM08sSUFBSXpnQixFQUFFbks7TUFDN0IsR0FBRzRxQixXQUFXemdCLEVBQUUsQ0FDZCxTQUFTbkssRUFDVCxTQUVGLFFBQ0Y7SXBCaU9BLFNBQVN3NUIsb0JBQXFCMTVCLEVBQUd1QjtNQUMvQixHQUFJQSxPQUFRLFFBQVFBLEVBQ3BCLElBQUksU0FBU3ZCLEdBQ2IsT0FBUXVCLFFBQVN2QixFQUFHQSxDQUN0QjtJUTBIQSxTQUFTMjVCLHNCQUFzQm5jO01BQzdCLElBQUlyZCxFQUFJO01BQ1IsY0FBY3FkO01BQ2QsaUJBQWlCcmQsc0JBQXNCLHdCQUF3QkE7TUFDL0QsUUFDRjtJWS9XQSxTQUFTeTVCLGlCQUFpQjlPLEtBQ3hCLE9BQU9BLE1BQ1Q7SUltS0EsU0FBUytPLGNBQWNyVDtNQUNyQixJQUFJRyxPQUFTSDtNQUNiLE9BQU9HO01BQ1A7TUFDQSxHQUFHQTtPQUFhLENBQ2QsSUFBVSxJQUFGM2pCLEVBQUkyakIsT0FBUTNqQixPQUFRQSxJQUFJLE9BQ3ZCQTtRQUVULGtCQUFrQndqQixNQUFPQTtRQUN6QixJQUFVLElBQUZ4akIsSUFBT0EsT0FBUUEsSUFBSSxPQUNsQkE7O09BRUosSUFDSyxJQUFGQSxFQUFJMmpCLE9BQVEzakIsT0FBUUEsSUFBSSxPQUN2QkE7TUFHWCxjQUFjd2pCO01BQ2QsY0FBZUE7TUFDZixrQkFBa0JBLE1BQU9BO01BbEJ6QixJQW1CSTdqQixNQUFRaUU7TUFDWixJQUFXLElBQUY3RSxJQUFPQSxNQUFPQTtPQUNyQixJQUFXLElBQUZpQixJQUFPQSxNQUFPQSxJQUNyQixFQUFFakIsUUFBUWlCLEtBQU13akIsTUFBTXprQixVQUFXaUI7TUFDckMsT0FBT0wsQ0FDVDtJQU1BLFNBQVNtM0IsZUFBZTM1QixFQUFHaVksSUFBS3BXO01BQzlCLElBQVEsSUFBRSxlQUNKLEVBQUUsMEJBQTBCN0I7TUFDbEMsZUFBZXFtQixJQUFJLFdBQVdwTyxJQUFLQSxNQUFNcFcsS0FBTUE7TUFDL0MsT0FBTyxxQkFBcUIsY0FBY3drQixLQUM1QztJVitOQSxTQUFTdVQsb0JBQW9CN2hCLEdBQUluVyxFQUFHZ0I7TUFDbEMsT0FBTyxVQUFVLG1CQUFtQmhCLElBQUtnQixHQUN6QyxRQUNGO0libFJBLFNBQVNpM0IsdUJBQXVCcjNCLEVBQUVzM0IsUUFDOUIsUUFDSjtJTHNYQSxTQUFTQyxxQkFBcUI3eUIsR0FBSUU7TUFDaEMsWUFBYyw2QkFBNkJGO01BQzNDLFlBQWMsNkJBQTZCRTtNQUMzQyxPQUFRRixRQUFRRSxRQUNsQjtJQWtPQSxTQUFTNHlCLHNCQUFzQjl5QixHQUFJRSxJQUNqQyxPQUFPLHFCQUFxQkYsR0FBR0UsR0FDakM7SUF4TkEsU0FBUzZ5Qix5QkFBeUIveUIsR0FBSUU7TUFDcEMsT0FBTyxzQkFBc0JBLEdBQUdGLEdBQ2xDO0lJN1pBLFNBQVNnekIscUJBQXNCcjZCLEVBQUV1QjtNQUMvQixHQUFHLE1BQU12QixNQUFNLE1BQU11QixHQUFJLE9BQU95YztNQUNoQyxHQUFHaGUsS0FBR3VCLEVBQUcsT0FBT0E7TUFDaEIsR0FBR3ZCLE9BQUssT0FDSHVCLFFBQ08sbUJBRUQ7TUFFWCxJQUFTLEtBQUUseUJBQXlCdkIsR0FDNUIsSUFBRTtNQUNWLEdBQUtBLElBQUV1QixLQUFPdkI7T0FDWixPQUFPLGVBQWVtVCxLQUFNcUU7O09BRTVCLE9BQU8sZUFBZXJFLEtBQU1xRTtNQUM5QixPQUFPLHlCQUF5QnJFLEtBQ2xDO0lRS0EsU0FBU21uQixpQkFDUCxJQUFJbjZCLEVBQUksb0JBQ1IsT0FBT0EsUUFDVDtJS3d5QkEsU0FBU282QixVQUFVeDRCO01BQ2pCLEdBQUdBLE9BQU07TUFDVCxPQUFPLFVBQVVBLElBQ25CO0lINWxCQSxTQUFTeTRCLFlBQVludEI7TUFDbkIsSUFBSU4sS0FBT0YsaUJBQWlCUTtNQUM1QixPQUFPTixlQUFlQSxrQkFBa0JBLGlCQUMxQztJQUlBLFNBQVMwdEIsZUFBZXB0QixRQUN0QixPQUFPLFlBQVlBLE9BQ3JCO0lmdkpBLFNBQVNxdEIsZUFBZ0IxNkIsRUFBR3VCLEdBQUssT0FBTyxNQUFNQSxFQUFJO0lVS2xELFNBQVNvNUIsMkJBQThCLFNBQVc7SVFtMUJsRCxTQUFTQyxTQUFTMTZCLEVBQUc0YztNQUNuQixJQUFNLEVBQUUsT0FBTzVjLEdBQ1QsRUFBRSxPQUFPNGMsR0FDTCxNQUFFO01BQ1osSUFBVyxJQUFGOWMsRUFBSSxRQUFROGMsT0FBTyxXQUFZLE1BQU01YyxHQUFJRixJQUFJLE1BQU07T0FBWSxRQUFRLGVBQWVBO01BQy9GLElBQUtBLElBQUksVUFBVyxNQUFNOGMsR0FBSTljLElBQUksTUFBTSxXQUFZLFFBQVEsYUFBYUE7TUFDekUsT0FBTyxlQUFlNjZCLE1BRXhCO0lUaDRCQSxTQUFTQyxpQkFBaUIxMUI7TUFDeEIsSUFBSUosS0FBTyxrQkFBa0JJO01BQzdCLEtBQUtKO09BQW9CO01BR3pCLE9BQU8sbUJBQW1CQSxlQUM1QjtJRnlGQSxTQUFTKzFCLHVCQUF1Qm54QixHQUFJeEI7TUFDbEMsR0FBR0E7T0FBWTtTQUVYLElBQU8sR0FBRSxjQUNELElBQUUsWUFBWUE7U0FDdEIsV0FBV3VCLFNBQVNzeEIsSUFBSzd5QjthQUNuQjBNO01BRVYsV0FBV25MLFNBQVNDLEdBQUl4QixNQUMxQjtJSVhBLFNBQVM4eUIsYUFBYXR4QixHQUFHeEI7TUFDdkIsZ0JBQWdCMUksS0FBTTtNQUN0QixvQkFBc0JTLEdBQUssUUFBZjtNQUNaLEdBQUd5SixrQkFBa0JvdEI7T0FDbkIsV0FBV0E7O09BQ1IsR0FBR3B0QixrQkFBa0JvdEI7UUFDeEIsV0FBV0E7O1FBQ1IsVUFBVUEsMEJBQ2IsV0FBV0E7TUFDYixhQUFhNXVCLEtBQ2Y7SUFDQSwyQ0FBNkMsUUFBYjtJQUNoQzs7YUFBeUNqSCxPQUFPeUcsSUFBSUMsSUFBSTdGO01BQ3RELEdBQUd0QztPQUFVLENBQ1g7VUFBR3NDOzs7O1VBQ0c2Rjs7OztVQUNBQTs7VUFBSTdGOztVQUFPNEY7O1VBQ1hBLElBQUlDLE1BQUk3Rjs7O1NBQ1o7UUFHRixJQUFJaWhCLElBQU0sa0JBQWtCamhCO1FBQzVCLGdCQUFnQixvQkFBb0I0RixLQUFNQyxJQUFLb2IsTUFBUWpoQjtRQUN2RCxTQUFTO1FBQ1Q7TUFFRixxQkFBcUJ0Qyw2Q0FkUTtJQWdCL0I7O2FBQXdDeUIsT0FBUXlHLElBQUtDLElBQUs3RjtNQUN4RCxxQkFBcUJ0Qyw0Q0FETztJQUc5QiwwQ0FDRSxXQUFXMkksU0FEa0I7SUlsUy9CLFNBQVM4eUIsdUJBQXVCaHpCLEtBQUtpekI7TUFDbkMsR0FBR0EsT0FBTy95QixVQUFVLE1BQ1p3bUI7TUFFUixhQUFhdU0sT0FBT2p6QjtNQUNwQixPQUFPaXpCLEdBQ1Q7SUFDQSxTQUFTQyxjQUFlajJCLEtBQU1nRCxNQUFPa3pCO01BQ25DLElBQUlyNUI7TUFDSixNQUFNbUc7T0FBTSxDQUNWLE9BQU9BO2lCQUNDLGFBQWE7aUJBQ2IsYUFBYTtpQkFDYixhQUFhO2lCQUNiLGFBQWE7aUJBQ2IsZUFBZTtpQkFDZixXQUFZO2lCQUNaLGFBQWE7aUJBQ2IsV0FBVztpQkFDWCxlQUFlOztRQUV2QixRQUFNQTtNQUVSLEdBQUduRyxZQUFZQTtPQUNiO1NBQXFCLHVCQUF1Qm1EOzs7TUFDOUMsR0FBR25ELFVBQVVBO09BQ1g7U0FBcUIsdUJBQXVCbUQ7OztNQWxCOUMsSUFtQlMsS0FBRSxrQkFBa0JBLE1BQ3BCLEtBQUUsaUJBQWlCSixVQUFVL0M7TUFDdEMsT0FBTyx1QkFBd0JrRyxLQUFNRSxVQUN2QztJQUNBO1FBQ0UsU0FBU0YsS0FBS3lCLEdBQUl4QjtVQUNoQixPQUFHO21CQUNNLHVCQUF1QndCLEdBQUl4Qjt1QkFHdkI4eUIsYUFBYXR4QixHQUFJeEIsTUFDaEM7UUFDQTtVQUF1QjtRQUN2QjtVQUF1QjtRQUN2QjtVQUF1Qix1REFWeEI7O0lHcVZELFNBQVNtekIsU0FBU25rQixHQUFJK0Q7TUFDcEIsT0FBTyxlQUFlLFdBQVcsT0FBTy9ELElBQUssT0FBTytELFdBQ3REO0lBeldBLFNBQVNxZ0IsU0FBU3BrQixHQUFJK0Q7TUFDcEIsT0FBTyxlQUFlLE9BQU8vRCxhQUFhLE9BQU8rRCxLQUNuRDtJQTJ5QkEsU0FBU3NnQixhQUFhcmtCLEdBQUkrRDtNQUN4QixHQUFHLE9BQU8vRCxvQkFBb0IsT0FBTytEO09BQWtCLG9CQUNqQztNQUV0QjtTQUFJL0QsT0FBT0EsV0FBVytELE9BQU9BOztTQUFhLE9BQU8vRCxvQkFBb0IsT0FBTytEO09BQW1CO01BRy9GLE9BQU8sY0FBYyxPQUFPL0QsUUFBUSxPQUFPK0QsS0FDN0M7SWpCbHBCQSxTQUFTdWdCLGdCQUFpQnY3QixFQUFHNEI7TUFDM0IsR0FBSUEsV0FBVyxzQkFBc0I1QixHQUFJO01BQ3pDLE9BQU8sdUJBQXdCQSxFQUFHNEIsRUFDcEM7SThCbk1BO0tBQUk0NUI7TUFBVztTQUNiO1VBQW9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUFXUjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FVWixTQUFTRyxlQUFlbDVCO1dBQ3RCLE9BQVFnNUIsZ0JBQW1CaDVCLFlBQWFBLFVBQzFDO1NBRUEsU0FBU201QixVQUFVNTdCLEVBQUU0QjtXQUNuQixPQUFRLGdCQUFnQjVCLEVBQUc0QixZQUFhQSxVQUMxQztTQUVBLFNBQVNpNkIsY0FBY3RkLEdBQUl2ZSxFQUFHMEgsSUFBS28wQjtXQUVqQztZQUFrQixLQUFFLG1CQUFtQnZkO1lBQ3JCLE1BQUUsbUJBQW1CQTtZQUNyQixVQUFFLHVCQUF1QkE7WUFDekIsVUFBRUE7WUFDRixhQUFFQTtZQUNGLFdBQUVBO1lBRWQsRUFBRSwyQkFBMkJ2ZTtZQUU1QjtZQUNFO1lBQ0M7WUFDQyxXQUFNK0ksTUFBTW16QjtZQUNQLGdCQUFNbnpCLE1BQU1vekI7V0FFNUIsSUFBVSxJQUFGdjZCLElBQU9BLElBQUkyNkIsY0FBZTM2QixJQUFJLE9BQzdCQTtXQUVULGtCQUFrQjhGO1dBRUosU0FBViswQjthQUNGLE1BQU81YjtjQUFjLENBQ25CLElBQUk2YixLQUFPO2VBQ1gsR0FBSUE7Z0JBQVcsY0FDQ0Esa0JBQWtCQTs7Z0JBRTdCLEdBQUdBLFNBQVUsQ0FDaEIsS0FBS0EsWUFDTCxNQUFNQSxhQUNOO2FBR0osV0FaYztXQWVQLFNBQUxDLEtBQWdCRCxNQUFRLFdBQVdBLEtBQTVCO1dBRUEsU0FBUEU7YUFDRixnQkFBZ0JsMUI7YUFDaEIsSUFBSWpELFdBQWFzRSxVQUFVd3pCO2FBQzNCO2FBQ0EsSUFBVSxJQUFGMzZCLElBQU9BLElBQUkyNkIsY0FBZTM2QjtjQUFJLENBQ3BDLElBQUlpN0IsRUFBSU4sT0FBTzM2QjtlQUNmLEdBQUdpN0IsZUFBZUEsVUFBVyxVQUNqQkE7ZUFFWixXQUFTajdCLFNBQVVpN0I7ZUFDbkIsV0FBU2o3QixhQUFjaTdCO2FBRXpCLE9BQU9wNEIsTUFaSTtXQWVJLFNBQWJxNEI7YUFDRixHQUFHaEIsUUFBUyxPQUFPLGNBQ2QsV0FGWTtXQU1uQixRQUFRUTtZQUFNLENBQ1o7Y0FBTyxHQUFFUCxLQUFLTTtjQUNMLEtBQUVOLEtBQUtNO2NBQ1AsS0FBRVc7Y0FDTCxFQUFFaDlCLEVBQUUwSDtjQUNOdzFCO2FBRUo7YUFFQSxPQUFRSDtvQkFDSHJCO2dCQUNILEdBQUdoMEIsUUFBUTFILFNBQVUsQ0FBQyxlQUFpQjtnQkFDdkMsR0FBSXlDLE1BQU13NkIsS0FBTSxXQUNYO2dCQUNMO29CQUNHdkI7Z0JBQ0gsR0FBR2gwQixRQUFRMUgsU0FBVSxDQUFDLGVBQWlCO2dCQUN2QyxHQUFJLHFCQUFxQnlDLE9BQU93NkIsS0FBTSxXQUNqQztnQkFDTDtvQkFDR3ZCO2dCQUNIO3NCQUFhLElBQUUsdUJBQXVCTSxNQUFNaUIsT0FBVTtrQkFBS3I3Qjs7a0JBQUlRO2tCQUFZUjtpQkFBSyxDQUM5RSxHQUFHOEYsUUFBUTFILFNBQVUsQ0FBQyxlQUFpQjtrQkFDdkMsR0FBSXlDLE1BQU0sZUFBZWI7bUJBQ3ZCLElBQUk1QixJQUFJMEg7O21CQUNMLENBQUUsWUFBYTtnQkFFdEI7b0JBQ0dnMEI7Z0JBQ0g7c0JBQWEsSUFBRSx1QkFBdUJNLE1BQU1pQixPQUFVO2tCQUFLcjdCOztrQkFBSVE7a0JBQVlSO2lCQUFLLENBQzlFLEdBQUc4RixRQUFRMUgsU0FBVSxDQUFDLGVBQWlCO2tCQUN2QyxHQUFJLHFCQUFxQnlDLE9BQU8sZUFBZWI7bUJBQzdDLElBQUk1QixJQUFJMEg7O21CQUNMLENBQUUsWUFBYTtnQkFFdEI7b0JBQ0dnMEI7Z0JBQ0gsR0FBR2gwQixRQUFRMUgsU0FBVSxDQUFDLGVBQWlCO2dCQUN2QyxHQUFJLFVBQVVnOEIsTUFBTWlCLE1BQU94NkIsR0FBSSxXQUMxQjtnQkFDTDtvQkFDR2k1QjtnQkFDSCxHQUFHaDBCLFdBQVcxSCxFQUFFMEgsZUFBeUIsWUFDekM7b0JBQ0dnMEI7Z0JBQ0gsR0FBR2gwQixNQUFNMUgsWUFBWUEsRUFBRTBILFdBQXFCLFlBQzVDO29CQUNHZzBCO2dCQUNILEdBQUdoMEI7aUJBQVUsQ0FDWCxHQUFHQSxRQUFRMUgsU0FBVSxDQUFDLGVBQWlCO2tCQUN2QyxHQUFHLGVBQWVBLE1BQU87a0JBQ3pCOztpQkFFRyxHQUFJMEgsUUFBUTFIO2tCQUFVLENBQ3pCLEdBQUcsZUFBZUEsRUFBRTBILFVBQVcsTUFDL0I7O2tCQUVHLENBQ0gsR0FBRyxlQUFlMUgsRUFBRTBILGFBQWEsZUFBZTFILEVBQUUwSDtvQkFBTzttQkFDekQ7Z0JBRUY7b0JBQ0dnMEI7Z0JBQ0gsUUFBUWEsT0FBT1U7Z0JBQ2YsZ0JBQWlCQyx5QkFFR0E7Z0JBQ3BCLGNBQWN4MUI7Z0JBQ2Q7b0JBQ0dnMEI7Z0JBQ0gsUUFBUWEsT0FBT1U7Z0JBQ2YsZ0JBQWtCQyx1QkFFRUE7Z0JBQ3BCLFlBQVl4MUI7Z0JBQ1o7b0JBQ0dnMEI7Z0JBQ0gsUUFBUWEsT0FBT1U7Z0JBQ2YsR0FBR0MsbUJBQW1CQSxjQUFlLENBQUMsWUFBYztnQkFDcEQsSUFBVyxJQUFGdDdCLEVBQUlzN0IsWUFBYXQ3QixJQUFJczdCLFVBQVd0N0I7aUJBQUksQ0FDM0MsR0FBRzhGLFFBQVExSCxTQUFVLENBQUMsZUFBaUI7a0JBQ3ZDLEdBQUdBLEVBQUU0QixNQUFNNUIsRUFBRTBILEtBQU0sQ0FBQyxZQUFjO2tCQUNsQztnQkFFRjtvQkFDR2cwQixrQkFDSCxHQUFJLFVBQVVNLE1BQU1pQixNQUFPeDZCLEdBQUksTUFDL0I7b0JBQ0dpNUI7Z0JBQ0gsTUFBTyxVQUFVTSxNQUFNaUIsTUFBT3g2QixHQUM1QixJQUFJekMsSUFBSTBILEtBQ1Y7b0JBQ0dnMEI7Z0JBQ0gsR0FBR2gwQixRQUFRMUgsU0FBVSxDQUFDLGVBQWlCO2dCQUN2QyxHQUFJLFVBQVVnOEIsTUFBTWlCLE1BQU94NkI7aUJBQUksR0FDMUIsSUFDR3pDLElBQUkwSCxXQUNELFVBQVVzMEIsTUFBTWlCLE1BQU94NkI7O2lCQUU3QjtnQkFDTDtvQkFDR2k1QixlQUNILE9BQU87b0JBQ0pBLGFBQ0gsS0FBS1csS0FBS1csS0FDVjtvQkFDR3RCLGlCQUNILGNBQWdCVyxLQUFLVyxTQUFXdDFCLE9BQ2hDO29CQUNHZzBCO2dCQUNIOzZCQUFpQmMsaUJBQ0VTLFdBQ0NULFlBQVlTO2dCQUNoQyxZQUFZQSxRQUFRdjFCO2dCQUNwQjtvQkFDR2cwQjtnQkFDSCxHQUFJYyxZQUFZUyxVQUFVdjFCLElBQUssWUFDL0I7dUJBQ08sVUFBVXVLO1dBR3JCLFFBQ0Y7U0FFQSxPQUFPNHBCLGFBdE5NOztJQTBPZixTQUFTc0IsbUJBQW1CNWUsR0FBSXZlLEVBQUcwSDtNQUNqQyxHQUFHQSxXQUFXQSxNQUFNLHNCQUFzQjFIO09BQ3hDO01BQ0YsTUFBTzBILFNBQVUsQ0FDZixJQUFJVSxJQUFNLFNBQVNtVyxHQUFJdmUsRUFBRzBILE9BQzFCLEdBQUlVLElBQUssT0FBT0EsSUFDaEI7TUFHRixVQUNGO0licklBLFNBQVNnMUIsWUFBWW5tQixHQUFJK0Q7TUFDdkIsT0FBTyxlQUFlLE9BQU8vRCxRQUFRLE9BQU8rRCxLQUM5QztJakJzdEJBLFNBQVNxaUIsb0JBQW9CcjlCLEdBQzNCLE9BQU8sd0JBQXdCQSxFQUNqQztJa0I5VkEsU0FBU3M5QixZQUFZdmxCLEdBQUlFLElBQUtwVztNQUM1QixJQUFJMDdCLFlBQ0k7TUFDUixHQUFJeGxCO09BQWdCLENBQ2xCLElBQVcsSUFBRm5XLElBQU9BLElBQUltVyxlQUFnQm5XLElBQ2xDLE1BQU1pMEIsTUFBTTlkLFFBQVFuVztRQUN0Qjs7T0FDSyxDQUNMLElBQVcsSUFBRkEsSUFBT0EsSUFBS21XLG1CQUFxQm5XLElBQ3hDLE1BQU1pMEIsTUFBTTlkLFFBQVFuVztRQUN0QixjQUFjbVc7UUFDZCxNQUFNRTtNQUVSLEdBQUlBLFdBQVdwVyxXQUFZb1csTUFBTXBXLE1BQU9rVyxRQUFRd2xCO09BQWE7TUFaN0QsSUFlSUM7TUFDSixJQUFXLElBQUY1N0IsSUFBT0EsSUFBSW1XLGVBQWdCblcsSUFDbEMsU0FBU0EsS0FBS21XLFFBQVFuVztNQUN4QixTQUFTMjdCLGVBQWUxN0I7TUFDeEIsT0FBTyw2QkFBNkJrVztNQW5CcEMsSUFvQkkwbEIsU0FBVyxpQkFBaUJ4bEIsTUFBTTRkLEtBQU01ZCxNQUFNcFcsT0FBT2cwQjtNQUN6RCxPQUFPLHNCQUFzQjlkLFFBQVNBLFVBQVd5bEIsU0FBVUMsU0FDN0Q7SUg3Z0JBLFNBQVNDLG1CQUFtQnJ3QjtNQUUxQixVQUFVL04sNEJBQTZCLGdCQUN2QyxRQUNGO0lrQkdBLFNBQVNxK0IsdUJBQXVCbjdCO01BQzlCLEtBQUlBLFNBQVUsQ0FDWixnQkFDQSxTQUVGLFFBQ0Y7SWpDdVRBLFNBQVNvN0IsaUJBQWlCNTlCLEVBQUU0QixFQUFFaThCO01BQzVCLEdBQUlqOEIsV0FBVzVCLFFBQVM7TUFDeEI7T0FBTyxVQUFTNjlCO09BQ1QsVUFBU0E7T0FDVCxVQUFTQTtPQUNULFVBQVNBO01BQ2hCLHNCQUF1Qjc5QixFQUFHNEIsTUFBT3NXO01BQ2pDLHNCQUF1QmxZLEVBQUc0QixNQUFPdVc7TUFDakMsc0JBQXVCblksRUFBRzRCLE1BQU93VztNQUNqQyxzQkFBdUJwWSxFQUFHNEIsTUFBT3lXO01BQ2pDLFFBQ0Y7SVlrSUEsU0FBU3lsQix1QkFBdUIsUUFBUTtJTXRCeEMsU0FBU0Msb0JBQW9CaG1CLEdBQUlDLEdBQUlwVjtNQUNuQyxJQUFJcVYsSUFBTSxVQUFVRDtNQUNwQixHQUFHQyxXQUFXRixlQUFnQjtNQUM5QixPQUFPRSxRQUFRclY7TUFDZixPQUFPcVYsUUFBUXJWO01BQ2YsT0FBT3FWLFFBQVFyVjtNQUNmLE9BQU9xVixRQUFRclY7TUFDZixRQUNGO0lEcFdBLFNBQVNvN0IsYUFBYS9tQixHQUFJK0QsSUFDeEIsVUFBVyxTQUFTL0QsR0FBRytELElBQUssU0FBUy9ELEdBQUkrRCxJQUMzQztJUmlKQSxTQUFTaWpCLDZCQUFnQyxPQUFPclQscUJBQTJCO0lEbFAzRSxTQUFTc1QsaUJBQWtCMTdCO01BQ3pCO09BQU0sTUFBTW9yQixLQUFNcHJCO09BQ1IsTUFBRTtPQUNLLGFBQUUsSUFBS29yQixLQUFLLFNBQVM7T0FDOUIsSUFBRSxZQUFZQyxRQUFRQztNQUM5QjtjQUFnQjtjQUFtQjtjQUFtQjtjQUN6QztjQUFnQjtjQUFpQjtjQUNqQztjQUFlQzt3QkFFOUI7SUo0T0EsU0FBU29RLG1CQUFtQnQrQixHQUMxQixHQUFJQSxPQUFRLFFBQVFBLEVBQ3BCLE9BQVFBLFNBQ1Y7SVF3Q0EsU0FBU3UrQix1QkFBdUJ4ZTtNQUM5QixJQUFJNWYsRUFBSTtNQUNSLGVBQWU0ZjtNQUNmLHNCQUFzQkE7TUFDdEIsUUFDRjtJQTZEQSxTQUFTeWUsaUJBQWlCdjhCO01BQ3hCLElBQUk5QixFQUFJO01BQ1IsU0FBUzhCO01BQ1QsaUJBQWlCOUIsc0JBQXNCLHdCQUF3QkE7TUFDL0QsUUFDRjtJQWxNQSxTQUFTcytCLGtCQUFrQi9WO01BQ3pCLElBQUl2b0IsRUFBSTtNQUNSLFNBQVN1K0IsUUFBUUM7UUFDZixJQUFJM3hCLFNBQVc7UUFDZixNQUFPQSxlQUFnQixZQUFZQTtRQUNuQyxPQUFPQSxHQUNUO01BQ0EsSUFDRSxFQUFHMGIsbUJBQ0gsRUFBR0Esa0JBQ0gsRUFBR0E7TUFDTCxVQUFRQTtNQUpSLElBS0lrVyxZQUFjLFFBQVF4K0IsS0FBSyxRQUFRNDhCLEtBQUssUUFBUXQ2QjtNQUNwRCxzQkFBd0JrOEI7TUFDeEIsd0JBQXdCQTtNQUN4QixRQUNGO0lBNEJBLFNBQVNDLGVBQWU3K0IsRUFBRXVCO01BQ3hCLElBQUlwQixFQUFJLG9CQUNSLE1BQUlILEVBQ0osTUFBSXVCLEVBQ0osUUFDRjtJQXBGQSxTQUFTdTlCLHNCQUFzQi9lLEVBQUU5ZTtNQUMvQixJQUFJZCxFQUFJO01BQ1IsVUFBVTRmO01BQ1YsV0FBVzllO01BQ1gsaUJBQWlCOGU7TUFDakIsa0JBQWtCOWU7TUFDbEIsUUFDRjtJQWxFQSxTQUFTODlCO01BQ1AsZUFBZW56QixnQkFBZ0JBO01BQy9CLHNCQUFzQkEsb0JBQW9CQTtNQUMxQyx1QkFBdUJBO01BQ3ZCLHNCQUFzQkE7TUFDdEIsaUJBQWlCQTtNQUNqQixrQkFBa0JBO01BQ2xCLHlCQUF5QkE7TUFFekIsNkNBQ0Y7SUF5SUEsU0FBU296QixvQkFDUCxJQUFJNytCLEVBQUksb0JBQ1IsT0FBT0EsR0FDVDtJTWlvQkEsU0FBUzgrQiw0QkFBNEJDO01BQ25DLElBQUk1aEI7TUFDSixHQUFTNGhCLGNBQWN6aUI7T0FBYzs7T0FDaEMsR0FBSXlpQixjQUFjeGhCO1FBQWM7O1FBQ2hDLEdBQUl3aEIsY0FBY3ZoQjtTQUFXOztTQUM3QixHQUFJdWhCLGNBQWN0NEI7VUFBWTs7VUFDOUIsR0FBSXM0QixjQUFjdGhCO1dBQVk7O1dBQzlCLEdBQUlzaEIsY0FBY3JoQjtZQUFhOztZQUMvQixHQUFJcWhCLGNBQWN2aUI7YUFBWTs7YUFDOUIsR0FBSXVpQixjQUFjalM7Y0FBYTs7Y0FDL0I7O01BQ0wsT0FBTzNQLElBQ1Q7SUFLQSxTQUFTNmhCLHlCQUF5QkQ7TUFDaEMsSUFBSTVoQixLQUFPLDRCQUE0QjRoQjtNQUN2QyxPQUFPLHNCQUFzQjVoQixRQUFVNGhCLFdBQVlBLEdBQ3JEO0lKblhBLFNBQVNFLGlCQUFpQi94QixPQUFPeEYsS0FDL0IsT0FBTyxjQUFjd0YsT0FBUXhGLElBQy9CO0lLNWVBLFNBQVN3M0IsZUFBZWgxQixHQUFLLGNBQWNBLENBQUc7SUdpSjlDLFNBQVNpMUIscUJBQXFCcitCLEVBQUc4QjtNQUMvQixPQUFPLHNCQUFzQjlCLEVBQUcsdUJBQXVCOEIsR0FDekQ7SUEyRUEsU0FBU3c4QixpQkFBaUJ0K0IsRUFBRzhCO01BQzNCLElBQU0sRUFBRSxxQkFBcUI5QixFQUFFOEIsR0FDekIsRUFBRSxvQkFBb0I5QjtNQUM1QixPQUFPQSxjQUNUO0lPL05BLFNBQVN1K0IsMkJBQTJCdlEsSUFBS3dRLElBQU0sUUFBUztJakI4TXhELFNBQVNDLGVBQWUxL0IsRUFBRXVCO01BQ3hCLElBQUlwQixFQUFJO01BQ1I7TUFDQSxpQkFBaUJBLElBQUlBLFdBQVdBO01BQ2hDLGlCQUFpQkgsRUFBRUcsV0FBV29CO01BQzlCO01BQ0EsTUFBSXZCO01BQ0osTUFBSXVCO01BQ0osUUFDRjtJTzBIQSxTQUFTbytCLHVCQUF1QjE5QixHQUM5QixPQUFPQSxRQUNUO0lBYkEsU0FBUzI5QixrQ0FBa0MzOUI7TUFDekM7UUFDRSxJQUFRLElBQUUsdUJBQXVCQSxPQUN4QixTQUFNaUgsTUFBTWxIO1FBQ3JCLFVBQVV0QztRQUNWLElBQVcsSUFBRnFDLElBQU9BLElBQUlDLElBQUtELElBQUssS0FBS0EsU0FBT3FZLFVBQVVyWTtRQUNwRCxPQUFPLGNBQWNFLEVBQUdtRSxLQUxuQixDQU1UO0lEQUEsU0FBU3k1QixjQUFjM25CLElBQ3JCLE9BQU8sWUFBWUEsS0FDckI7SVRsVkEsU0FBUzRuQiwwQkFBMEI3UTtNQUNqQyxPQUFPQSxxQ0FJTCxpQkFFQSxTQUVKO0lBSUEsU0FBUzhRLHNCQUFzQjlRO01BQzdCLElBQUk3dUI7TUFDSixHQUFHNnVCO09BQWEsQ0FDZCxLQUFLQTtRQUNMO1VBQUdBOzs7O1VBQW1CQTs7OztVQUFrQiwwQkFBMEJBO1NBRWhFLElBQVcsT0FBRUEsT0FDSDs7U0FFVixJQUFVLFFBQ0MsT0FBRUE7UUFFZjtRQUNBLElBQVUsSUFBRmx0QixFQUFJaVUsTUFBT2pVLElBQUlpK0IsY0FBZWorQjtTQUFLLENBQ3pDLEdBQUdBLElBQUlpVSxNQUFPO1VBQ2QsSUFBSWpULEVBQUlpOUIsT0FBT2orQjtVQUNmLFVBQVVnQjtXQUNSLEtBQUk7O1dBQ0QsR0FBR0EsYUFBYUU7WUFBUSxXQUNqQjs7WUFFUCxVQUFVRjthQUFjLFdBQ2pCOzthQUVQO1FBRVA7O09BQ0ssR0FBSWtzQixjQUFjLEtBQ2xCQTtNQUVQLE9BQU83dUIsQ0FDVDtJQUlBLFNBQVM2L0IsOEJBQThCbjJCO01BQ3JDLEdBQUdBLGVBQWVaLFVBQVVZLGVBQWVBO09BQWdCLENBQ3pELElBQUlvMkIsUUFBVTtRQUNkLEdBQUdBO1NBQVMsY0FBY0EsU0FBVXAyQjs7U0FDL0IsQ0FDSDtXQUFRLElBQUUsc0JBQXNCQTtXQUNwQixRQUFFO1VBQ2QsR0FBR3EyQixRQUFTLGNBQWNBO1VBQzFCLDBDQUEwQzM4Qjs7T0FHekMsTUFDR3NHLEdBRVY7SXlCMkdBLFNBQVNzMkIscUJBQXFCcGdDO01BQzVCLE9BQUdBLEVBQUVneUIsMkJBQTJCM3BCLGFBSWxDO0lsQ3lCQSxTQUFTZzRCLGlCQUFpQmxnQyxFQUFFNEI7TUFDMUIsR0FBSUEsV0FBVzVCLFFBQVM7TUFDeEIsSUFBTyxHQUFFLHNCQUF1QkEsRUFBRzRCLEdBQzVCLEdBQUUsc0JBQXVCNUIsRUFBRzRCO01BQ25DLE9BQVF1VyxVQUFVRCxFQUNwQjtJdUI5SkEsU0FBU2lvQixzQkFBdUI1OUIsRUFBRUssR0FDaEMsV0FDQSxPQUFLQSxFQUNMLFFBQ0Y7SUp5RkEsU0FBU3c5QixrQkFBa0J2Z0MsR0FBSyxXQUFTQSxDQUFHO0lMcEY1QyxTQUFTd2dDLHlCQUF5Qm56QixPQUFRakk7TUFDeEMsSUFBSTJILEtBQU9GLGlCQUFpQlEsUUFDNUIsWUFBWWpJLEtBQ1osUUFDRjtJVjZLQSxTQUFTcTdCLGdCQUFnQnpnQyxHQUFLLE9BQU8sV0FBWUEsRUFBSTtJUS9JckQsU0FBUzBnQztNQUNQLElBQUl2Z0MsRUFBSTtNQUNSO01BQ0E7TUFDQSxRQUNGO0lZM0NBLFNBQVN3Z0MseUJBQXlCbnpCLE1BQzlCLFFBQ0o7SXhCMllBLFNBQVNvekIsbUJBQW1CNStCO01BQzFCLEdBQUdBLFFBQVM7TUFDWixXQUFXaUIsUUFBUWpCLFdBQVdBLElBQ2hDO0ljM09BLFNBQVM2K0Isb0JBQXFCeHpCLE9BQVE2SyxHQUFJblcsRUFBRzFCO01BQzNDO09BQVMsS0FBRXdNLGlCQUFpQlE7T0FDdEIsRUFBRWhOO09BQ0UsTUFBRTBNLGtCQUFrQkE7TUFDOUIsR0FBRzFNLEtBQUt5Z0M7T0FBTyxDQUNiLE9BQU8scUJBQXFCL3pCLGlCQUFpQkEsbUJBQW1CMU0sR0FBSTBCO1FBQ3BFLG9CQUFvQjFCOztPQUVqQixHQUFHeWdDO1FBQVcsQ0FDakI7V0FBTyxxQkFBcUIvekIsaUJBQWlCQSxtQkFBbUIrekIsT0FBUS8rQjtTQUN4RSxvQkFBb0IrK0I7U0FDcEIsSUFBSUE7O1FBQ0MsQ0FDTDtTQUNBO1NBQ0EsWUFBWS96QjtTQUNaLElBQUkrekIsTUFBUS96QixrQkFBa0JBO1NBQzlCLEdBQUc3TSxJQUFJNGdDLE1BQU8sSUFBSUE7U0FDbEIsT0FBTyxxQkFBcUIvekIsaUJBQWlCQSxtQkFBbUI3TSxHQUFJNkI7U0FDcEUsb0JBQW9CN0I7TUFFdEIsT0FBT0EsQ0FDVDtJYzNQQSxTQUFTNmdDLGNBQWMxekIsT0FBTzJ6QjtNQUM1QixJQUFRLElBQUUsZUFDQyxXQUFNcDZCO01BQ2pCLEdBQUdvNkI7T0FBVztRQUNELENBQ1QsSUFBSWgzQixLQUFPLG9CQUFvQnFELE9BQU92SixTQUFTQTtTQUMvQyxHQUFHa0csVUFBVztTQUNkLGVBQWV3YyxJQUFJLGtCQUFtQnhjLE1BQU9BOztPQUUxQyxNQUNDZzNCO1FBQVksQ0FDaEI7VUFBSWgzQjtXQUFPO2FBQW9CcUQsT0FBT3ZKLFNBQVdrOUIsU0FBU2w5QixjQUFnQkEsY0FBZ0JrOUI7U0FDMUYsR0FBR2gzQixVQUFXO1NBQ2QsZUFBZXdjLElBQUksa0JBQW1CeGMsTUFBT0E7U0FDN0MsVUFBVUE7TUFHZCxPQUFPLHFCQUFxQixjQUFjd2MsS0FDNUM7SXhCdVBBLFNBQVN5YSxpQkFBa0JqaEMsR0FBSyxPQUFPLFdBQVdBLEVBQUk7SUM1R3RELFNBQVNraEMseUJBQXlCditCLEdBQzlCLFFBQ0o7SUdtSUEsU0FBU3crQixtQkFBbUJ4bEI7TUFDMUIsT0FBTyxrQkFBa0JBLFdBQzNCO0lNc0lBLFNBQVN5bEIscUJBQXFCL3pCLE9BQU92SixPQUFPM0MsT0FBT2E7TUFDakQsSUFBSStLLEtBQU9GLGlCQUFpQlE7TUFDNUIsS0FBS047T0FBYTtNQURsQixJQUVJakosT0FBUywwQkFBMEJBO01BQ3ZDLFNBQVMsZ0JBQWdCM0MsT0FBUUEsU0FBU2E7TUFDMUMsR0FBRytLLG1CQUFtQmpKLGdCQUFnQmlKO09BQW9CLENBQ3hELElBQUlySyxNQUFRa0UsV0FBV21HLG1CQUFtQmpKO1FBQzFDLE1BQU1pSjtRQUNOLGNBQWNySztNQUVoQixPQUFPcUs7O1NBRUwsZ0JBQWdCakosT0FBUWlKO1NBQ3hCLG9CQUFvQmpKO1NBQ3BCLGNBQWV1SjtTQUNmOztTQUVBLGdCQUFnQnZKLE9BQVFpSjtTQUN4QixvQkFBb0JqSjtTQUNwQixHQUFHaUosb0JBQW9CQSxtQkFDckIsY0FBZU07U0FDakI7O1NBRUEsSUFBSTJqQixHQUFLO1NBQ1QsR0FBR0E7VUFBUSxDQUNULGdCQUFnQmx0QixPQUFRaUo7V0FDeEIsb0JBQW9Cako7V0FDcEIsR0FBR2lKLG9CQUFvQkEsbUJBQ3JCLGNBQWVNOztVQUVkLENBQ0gsZ0JBQWdCLGtCQUFtQjJqQixRQUFTamtCO1dBQzVDLG9CQUFvQmlrQjtXQUNwQixjQUFlM2pCO1dBQ2YsZ0JBQWdCLGdCQUFnQjJqQixRQUFTamtCO1dBQ3pDLG9CQUFvQmpKLGdCQUFnQmt0QjtTQUV0Qzs7TUFFRixRQUNGO0lBSUEsU0FBU3FRLGVBQWVoMEIsT0FBT3ZKLE9BQU8zQyxPQUFPYTtNQUMzQyxPQUFPO2VBQXFCcUwsT0FBTyxxQkFBcUJ2SixRQUFRM0MsT0FBT2EsSUFDekU7SVU5WkEsU0FBU3MvQixrQkFBa0I5ekIsTUFDdkIsT0FBT21qQixjQUNYO0lVZ0VBLFNBQVM0USxtQkFBbUJ2aEM7TUFDMUIsT0FBR0EsRUFBRWd5QiwyQkFBMkIzcEI7O2tCQUduQnJJLEVBQUVneUIsdUJBQ2pCO0lSckZBLFNBQVN3UCwyQkFBMkJoMEI7TUFDbEMsVUFBVS9OO09BQ1IsS0FBTSxZQUFXQSxtQ0FBbUNxVjtNQUV0RCxVQUFVclY7T0FBMEMsQ0FDbEQ7VUFBTSxZQUFXQTtjQUFtRHFWO1FBQ3BFO1VBQU0sWUFBV3JWO2NBQW1EcVY7UUFDcEU7VUFBTSxZQUFXclY7Y0FBc0RxVjtNQUV6RSwrQ0FDRjtJUDVCQSxTQUFTMnNCLHVCQUF1QngvQixFQUFFbUU7TUFDaEMsa0JBQWtCbkUsV0FBV21FLEtBQy9CO0lMb2dCQSxTQUFTczdCLG9CQUFvQnIwQjtNQUMzQixPQUFPUixpQkFBaUJRLG9CQUMxQjtJa0IzaEJBLFNBQVNzMEIsa0JBQWtCdmEsR0FBSUM7TUFDN0IsSUFBTyxHQUFFRCxVQUFjLEdBQUVDLFVBQ25CLEVBQUV0VyxLQUFHQyxPQUNMLE1BQU05SCxNQUFNN0k7TUFDbEI7TUFIQSxJQUlNLElBQU07TUFDWixLQUFLMEIsSUFBRWdQLEdBQUdoUCxJQUFLLEVBQUVBLEtBQUdxbEIsR0FBR3JsQjtNQUN2QixLQUFLQSxJQUFFMUIsRUFBRTBCLElBQUlpQixJQUFLLEVBQUVqQixLQUFHc2xCLEdBQUdya0I7TUFDMUIsT0FBT2xCLENBQ1Q7SXhCckNBLFNBQVM4L0IseUJBQ1AsT0FBTyxJQUFLN1QsdUJBQ2Q7SUFLQSxTQUFTOFQsaUJBQ1AsT0FBTyxXQUFXLHlCQUNwQjtJTXdNQSxTQUFTQywyQkFBMkJ6MEIsT0FBT3BMO01BQ3pDLGlCQUFpQm9MLGlCQUFpQnBMLEVBQ2xDLFFBQ0Y7SUdtZ0JBLFNBQVM4L0IsZUFBZTNxQjtNQU10QixLQUFLLE9BQU9BO01BQ1osSUFBUSxJQUFFLFVBQ0YsSUFBRTtNQUVWLEdBQUksTUFBTUksUUFBUSxVQUFVQSxLQUFNO01BSWxDLEdBQUksT0FBT0EsWUFBWUEsS0FBTSxLQUN0QixPQUFPRyxVQUNQLEtBQ0EsT0FBT0g7TUFHZDtPQUFhLEdBQ1A7UUFBd0IsT0FDbkIsZUFBZUo7O1FBQ2pCLEtBQ0EsT0FBT08sSUFHbEI7SWpCMUtBLFNBQVNxcUIsZ0JBQWdCN2hDLEVBQUc0QixFQUFHMUIsRUFBR3VDO01BQ2hDLEdBQUl2QztPQUFPLEdBQ0wwQixXQUFXMUIsS0FBS0YsT0FBUUEsWUFBMEJFLEtBQUtGO1FBQWMsR0FDbkV5QztTQUFRLENBQ1YsU0FDQTs7U0FDSyxDQUNMLE1BQU0sZ0JBQWlCdkMsRUFBRyxvQkFBb0J1QyxJQUM5QyxNQUFPdkMsS0FBS0Y7O1FBRVQsQ0FDTCxHQUFJQSxTQUFzQiw0QkFBNEJBO1NBQ3RELElBQUtFLEtBQUswQixFQUFHQSxJQUFJMUIsRUFBRzBCLElBQUssSUFBSUEsS0FBS2E7TUFHdEMsUUFDRjtJbUI3TUEsU0FBU3EvQixhQUFhOWhDO01BQ3BCO01BQ0EsT0FBTyxLQUFLLHdCQUF3QkEsR0FBSTtJVnJGMUMsU0FBUytoQyxpQ0FBa0MvWjtNQUN6QyxPQUFPNWIscUJBQ1Q7SVE1UUEsU0FBUzQxQixTQUFTL3FCLEdBQUkrRDtNQUNwQixPQUFPLGVBQWUsT0FBTy9ELGFBQWEsT0FBTytELEtBQ25EO0lBbUNBLFNBQVNpbkIsVUFBVWhyQixHQUFJK0Q7TUFDckIsSUFBVyxPQUFFLFVBQVUvRCxJQUNaLE9BQUUsVUFBVStEO01BQ3ZCLEdBQUlJLFNBQVNDO09BQXdELEtBQzlELE9BQU9wRSxRQUFRLE9BQU8rRCxZQUFZO1FBQVksT0FDMUMsU0FBUyxTQUFTL0QsR0FBSStELElBQUs7TUFHdEMsT0FBTyxTQUFTL0QsR0FBSStELEdBQ3RCO0lBMmFBLFNBQVNrbkIsYUFBYWpyQjtNQUNwQixLQUFLLE9BQU9BO01BQ1osSUFBSTdPO01BQ0osUUFBTyxVQUFVO09BQVcsQ0FDMUIsT0FBTyxvQkFBb0IsT0FBTztRQUNsQyxLQUFLLFVBQVU7TUFFakIsTUFBTUEsb0JBQW9CLE9BQ2pCO01BRVQsT0FBTyx1QkFBdUJBLElBQ2hDO0lKc0hBLFNBQVMrNUIsMkJBQTRCdi9CLEVBQUdxRjtNQUN0QyxPQUFPLG9CQUFxQixnQkFBaUJyRixFQUFHcUYsT0FDbEQ7SUVoa0JBLFNBQVNtNkIscUJBQXFCLzBCLE1BQVEsUUFBVTtJYS9CaEQsU0FBU2cxQixnQkFBZ0JyaUMsRUFBR2lZLElBQUtwVztNQUMvQixPQUFPLGVBQWUscUJBQXFCN0IsR0FBR2lZLElBQUlwVyxJQUNwRDtJNUJrdEJBLFNBQVN5Z0Msa0JBQWtCcDdCLEdBQUlFLElBQzdCLE9BQU8saUJBQWlCRixHQUFHRSxHQUM3QjtJQWlIQSxTQUFTbTdCLHFCQUFxQjFpQyxHQUFLLE9BQU8sMkJBQTJCQSxFQUFHO0ltQjV2QnhFLFNBQVMyaUMsOEJBQThCbjFCLE1BQ3JDLFFBQ0Y7SUYrdkJBLFNBQVNvMUIsY0FBY3hyQixHQUFJK0QsSUFDekIsT0FBTyxTQUFTL0QsR0FBSStELEdBQ3RCO0lKM09BLFNBQVMwbkIsNEJBQTZCMWlDLEVBQUdpWSxJQUFLcFcsSUFBS2UsRUFBR3FGO01BQ3BELElBQUl6RixFQUFJLGdCQUFpQkksRUFBR3FGO01BQzVCLEdBQUl6RixXQUFXWCxJQUFLO01BQ3BCLGdCQUFnQlcsSUFBTXhDLEVBQUdpWSxJQUFLelY7TUFDOUIsUUFDRjtJaUIzV0EsU0FBU21nQyxvQkFBb0JDLEtBQUtyRyxPQUFPc0c7TUFDdkM7T0FBUyxLQUFFLHVCQUF1QkQ7T0FDMUIsSUFBRUE7T0FDRCxLQUFFLHVCQUF1QkM7T0FDMUI7T0FDRjtPQUNGQztPQUNBanRCO09BQU95QjtPQUFLN1U7TUFDaEIsTUFBTTFDLElBQUk4QjtPQUFJLENBQ1osTUFBTSxZQUFZOUI7UUFDbEIsR0FBRytpQztTQUFZLE9BQ05BOztTQUVKLENBQ0gsR0FBRy9pQyxLQUFLOEI7V0FBSztVQUNiLE1BQU0sWUFBWTlCO1VBQ2xCLE9BQU8raUM7c0JBRUwsT0FBT0EsSUFDUDs7Ozs7Ozs7Ozs7YUFHQSxNQUFLQTthQUNMLEdBQUlyZ0MsU0FBTzg1QjtjQUNUO2FBQ0YsUUFBUSxlQUFlQSxPQUFPOTVCO2FBQzlCLE1BQU0sZUFBZTg1QixPQUFROTVCO2FBQzdCLEdBQUlvVDtjQUNGO2FBQ0YsT0FBSyxXQUFXQSxNQUFNeUI7YUFDdEI7b0JBRUEsY0FBZ0J3ckI7TUFJdEIsT0FBTyx1QkFBdUIxNkIsSUFBTTtJWHFFdEMsU0FBUzI2QixrQkFBbUIvaUM7TUFDMUI7TUFDQSxPQUFPLEtBQUssd0JBQXdCQSxHQUFJO0luQjBPMUMsU0FBU2dqQyxpQkFBaUJyaEMsRUFBRVksRUFBRUUsRUFBRStDLEVBQUVtUDtNQUNoQyxnQkFBZ0IscUJBQXFCaFQsR0FBR1ksRUFBRUUsRUFBRStDLEVBQUVtUCxHQUM5QyxRQUNGO0lXeGtCQSxTQUFTc3VCLFNBQVMvM0IsS0FBTUMsS0FBTUUsS0FBTUMsS0FBTXpKO01BQ3hDLElBQVUsSUFBRkQsSUFBT0EsSUFBSUMsSUFBS0QsSUFBSyxVQUNqQnVKLE9BQUt2SixLQUFLeUosVUFBVUMsT0FBSzFKO01BRXJDLFFBQ0Y7SWdCNENBLFNBQVNzaEMsZ0NBQWdDQyxJQUFLaGUsS0FBTWllLE9BQVEvZCxLQUFNeGpCO01BQ2hFLFNBQVNzaEM7T0FDUDs7TUFDRixHQUFHdGhDLFNBQVU7TUFDYixJQUFJc0osS0FBTyxXQUFXZ2E7TUFDdEIsR0FBR2hhLE9BQU90SixNQUFNc2hDLGdCQUFnQjtNQUdoQyxHQUFHOWQsT0FBT3hqQixNQUFNLHFCQUFxQnVoQyxRQUFRO01BSjdDLElBT0k5ZCxNQUFRLGVBQWVuYSxLQUFNQSxPQUFLdEo7TUFDdEMsZ0JBQWdCLG9CQUFvQnlqQixTQUFXOGQsT0FBUS9kLEtBQU14akI7TUFDN0QsUUFDRjtJbkJFQSxTQUFTd2hDLGVBQWVwK0I7TUFDdEIsSUFBSUosS0FBTyxrQkFBa0JJO01BQzdCLEtBQUtKLGlCQUFrQjtNQUd2QixPQUFPLGlCQUFpQkEsZUFDMUI7SU56Q0EsU0FBU3krQiwwQkFBMEJsOUIsR0FBR3hEO01BQ3BDLGtCQUFrQix1QkFBdUJ3RCxPQUFPeEQsRUFDaEQsUUFDRjtJSzZMQSxTQUFTMmdDLHdCQUF3QnQrQixLQUFLaEM7TUFDcEMsR0FBRzNEO09BQ0QsNEJBQTRCMkYsS0FBS2hDOztPQUM5QixDQUNILEtBQUkzRCx1QkFBd0I7UUFDNUIsa0NBQWtDMkYsYUFBYWhDO01BRWpELFFBQ0Y7SUMxSkEsU0FBU3VnQyxrQkFBa0J2K0I7TUFDekIsSUFBSWhGLEVBQUksZUFBZWdGLE1BQ3ZCLE9BQU8sb0JBQW9CaEYsS0FDN0I7SVI4dEJBLFNBQVN3akMsa0JBQWtCempDLEdBQ3pCLE9BQU8sd0JBQXdCQSxFQUNqQztJaUMzMUJBLFNBQVMwakMsbUJBQW1CbGhDO01BQzFCLEdBQUdBO09BQ0Q7O09BQ0c7TUFDTCxRQUNGO0lIbU9BLFNBQVNtaEMsa0JBQWtCcGxCLEdBQUl2ZSxFQUFHMEg7TUFDaEMsR0FBR0EsV0FBV0EsTUFBTSxzQkFBc0IxSDtPQUN4QztNQUNGLE1BQU8wSCxPQUFPLHNCQUFzQjFIO09BQUksQ0FDdEMsSUFBSW9JLElBQU0sU0FBU21XLEdBQUl2ZSxFQUFHMEgsT0FDMUIsR0FBSVUsSUFBSyxPQUFPQSxJQUNoQjtNQUdGLFVBQ0Y7SU1sUEEsSUFBSXc3Qiw4QkFBZ0MzZTtJSjBGcEMsU0FBUzRlLGVBQWdCaGlDLElBQUtpaUM7TUFDNUIsR0FBSWppQyxRQUFTO01BQ2IsSUFBUSxJQUFFQSxZQUNKLE1BQU1rSCxNQUFNbEg7TUFDbEI7TUFDQSxJQUFXLElBQUZELElBQU9BLElBQUlDLElBQUtELElBQUssRUFBRUEsS0FBS2tpQztNQUNyQyxPQUFPdmhDLENBQ1Q7SWxCa1FBLFNBQVN3aEMsZ0JBQWdCNzJCLE9BQU94RixLQUM5QixPQUFPLGFBQWF3RixPQUFPeEYsSUFDN0I7SVBoS0EsU0FBU3M4Qix3QkFBd0IvK0I7TUFDL0I7T0FBUyxLQUFFLGtCQUFrQkE7T0FDdkIsRUFBRSxvQkFBb0JKO09BQ3RCLE1BQU1rRSxNQUFNcEg7TUFDbEI7TUFDQSxJQUFTLElBQURDLElBQUlBLElBQUVELFNBQVNDLElBQ3JCLEVBQUVBLFNBQU8sdUJBQXVCRCxFQUFFQztNQUNwQyxPQUFPMUIsQ0FDVDtJT3lSQSxTQUFTK2pDLG9CQUFxQi8yQixPQUFPeks7TUFDbkMsSUFBSXpDLEVBQUksdUJBQXVCLG9CQUFvQnlDO01BQ25ELGVBQWV5SyxPQUFPbE47TUFDdEIsUUFDRjtJTHBQQSxTQUFTa2tDLDhCQUFpQyxPQUFPdFosc0JBQTRCO0ljM083RSxTQUFTdVosa0JBQW1CdGtDLEdBQUssVUFBU0EsYUFBYWtKLE1BQVE7SUE0SC9ELFNBQVNxN0IsdUJBQXVCbDZCLEVBQUV0SSxFQUFFZ0IsR0FBSyxPQUFPc0gsRUFBRXRJLFNBQU9nQixDQUFFO0lKb0UzRCxTQUFTeWhDLFlBQVl4a0M7TUFDbkIsSUFBSUEsRUFBSSx3QkFBd0JBO01BRWhDLEtBQUk7T0FBbUU7OztTQUNuQ0E7OztNQUdwQyxPQUFPLEtBQUtBLEVBQ2Q7SWZ2REEsU0FBU3lrQyxpQkFBaUJ6a0MsR0FDeEIsT0FBTyxXQUFXQSxFQUNwQjtJYW90QkEsU0FBUzBrQyxvQkFBb0IzckIsT0FBUWhXLEVBQUdvYTtNQUN0QyxJQUFJLE9BQU9wYTtNQUNYLElBQUlvUSxLQUFPLFVBQVU7TUFDckIsZUFBZ0JBO01BRGhCLElBRVUsTUFBRUEsa0JBQ0osSUFBRW9tQjtNQUNWLGdCQUFpQnYzQjtNQUNqQixJQUFVLElBQUZELEVBQUl3M0IsVUFBV3gzQixPQUFRQTtPQUFLLENBQ2xDLGVBQWlCb1IsV0FBV3BSO1FBQzVCLGVBQWlCb1IsV0FBV3BSO1FBQzVCLGVBQWlCb1IsV0FBV3BSO1FBQzVCLGVBQWlCb1IsV0FBV3BSO01BRTlCLG1CQUFvQkM7TUFDcEIsbUJBQW9CQSxrQkFDdEI7SWlCcnRCQSxTQUFTMmlDLHFCQUFxQjNrQztNQUM1QixHQUFHUCxtQ0FBbUNBO09BQW9CLEdBQ3JETyxnQkFBZ0JQO1FBQWdDLElBRXZDLElBQUZ1RCxFQUFJb29CLHFCQUFzQnBvQixJQUFJaEQsU0FBVWdEO1NBQUksQ0FDbEQsSUFBSW1ILElBQU1uSyxFQUFFZ0Q7VUFDWixHQUFHbUgsZUFBZTFLO1dBQW9CLENBQ3BDLE1BQU0sWUFDTixHQUFHMEssSUFBSyxnQkFBZ0JBO01BS2hDLEVBQUU2bkIseUJBQXlCM3BCO01BQzNCLFFBQ0Y7SUFuQ0EsU0FBU3U4QixtQkFBbUI1a0MsRUFBR2lJO01BQzdCLEdBQUd4SSxtQ0FBbUNBO09BQW9CLE1BQ2xETyxnQkFBZ0JQO1FBQWtDLENBQ3REOzs7V0FBV0E7c0JBQThDLHFCQUFxQk8sRUFBbkM7U0FFM0MsSUFBVSxJQUFGZ0QsRUFBSW9vQixxQkFBc0Jwb0IsSUFBSWhELFNBQVVnRDtVQUFJLENBQ2xELElBQUltSCxJQUFNbkssRUFBRWdEO1dBQ1osR0FBR21ILGVBQWUxSztZQUFvQixDQUNwQyxNQUFNLFlBQ04sR0FBRzBLLElBQUssY0FBY0EsSUFBSzlCLFVBQVc4QjtNQUs5QyxFQUFFNm5CLHlCQUF5Qi9wQjtNQUMzQixRQUNGO0lBNUNBLFNBQVM0OEIsb0JBQW9CNWhCLElBQUtDO01BQ2hDLElBQUloakIsRUFBSStpQixJQUFJK087TUFDWixHQUFHOXhCLE1BQU1tSTtPQUFXLHFCQUFxQjZhOztPQUNwQyxtQkFBbUJBLElBQUtoakI7TUFDN0IsUUFDRjtJaEMzQkEsU0FBUzRrQyxrQkFBa0JsaUMsR0FBSyxVQUFTQSxVQUFVQSxRQUFVO0lGb3dCN0QsU0FBU21pQyxvQkFBb0Iva0MsR0FBSyxPQUFPLDBCQUEwQkEsRUFBRztJeUJub0J0RSxTQUFTZ2xDLFdBQVlobEMsRUFBR3VCLEdBQUssVUFBUyxpQkFBaUJ2QixFQUFFdUIsY0FBZ0I7SUt3Q3pFLFNBQVMwakMsaUJBQWlCdm1CLEdBQUd2ZSxFQUFFMEg7TUFDN0IsR0FBR0EsV0FBV0EsTUFBTSxzQkFBc0IxSDtPQUN4QztNQUNGLElBQUlvSSxJQUFNLFNBQVNtVyxHQUFJdmUsRUFBRzBIO01BQzFCLE9BQUlVLElBQVlBLE9BRWxCO0lyQnJFQSxTQUFTMjhCO01BQ1AsR0FBR3psQztPQUFtQixVQUNWQTtRQUFpRCxDQUV6RCxJQUFJcUMsTUFBUW1yQjtTQUNaLGtDQUFrQ25yQjtTQUNsQyxVQUFVQTs7UUFDTCxHQUFHckM7U0FBNkMsQ0FFckQsSUFBUyxLQUFFLGlDQUNMLE1BQU13dEIsWUFBWWtZO1VBQ3hCLFVBQVVyakM7TUFHZCxJQUFRLElBQUUsSUFBS2lzQixpQkFDVCxFQUFFcVgsbUJBQWU7TUFDdkIsVUFBVXBsQyxFQUNaO0lNM0xBLElBQUlxbEMsb0JBQXFCNWxDO0lBQ3pCLFNBQVM2bEMseUNBQTBDQyxHQUFJempDO01BQ3JELEdBQUdyQyxtQ0FBbUNxQyxhQUFhdEM7T0FBUSxDQUN6RDtTQUFJUTs7WUFBUVA7cUJBQTBDTyxHQUFHLHNCQUFzQkEsR0FBSSxNQUFPLE1BQTlDO1FBQzVDLFdBQVc4QixFQUFFOUI7UUFDYixtQkFBbUJBO01BRXJCLFFBQ0Y7SUdrWEEsU0FBU3dsQyxjQUFjdHRCLEdBQUlDLEdBQUk3USxJQUM3QixPQUFPLE9BQU8sV0FBVzZRLEdBQUc3USxLQUM5QjtJQWdCQSxTQUFTbStCLG9CQUFvQnZ0QixHQUFJQyxHQUFJcFY7TUFDbkMsSUFBSXFWLElBQU0sVUFBVUQ7TUFDcEIsR0FBR0MsV0FBV0YsZUFBZ0I7TUFDOUIsT0FBT0UsUUFBUXJWO01BQ2YsT0FBT3FWLFFBQVFyVjtNQUNmLFFBQ0Y7SUs3UEEsU0FBUzJpQyx3QkFBd0JyN0I7TUFDL0Isb0JBQW9CQSxXQUNwQixRQUNGO0lKOUtBLFNBQVNzN0IsZUFBZXQ3QixFQUFFcEksR0FBSyxPQUFPb0ksRUFBRXBJLEdBQUksUUFBUTtJRWtDcEQsU0FBUzJqQyxtQkFBb0J6bEM7TUFDM0I7T0FBTSxFQUFFLHlCQUEwQkE7T0FDNUIsRUFBRUM7T0FBVyxLQUFFQTtPQUFXLEtBQUVBO09BQzFCLElBQUUsc0JBQXNCRDtPQUNsQjtPQUNSLEVBQUc0QixJQUFJQyxJQUFLLHVCQUF1QjdCLEVBQUc0QjtPQUN0QyxFQUFFLGlCQUFpQmE7TUFDekIsR0FBSStDLFNBQVNBLEtBQUs2SixLQUFNO01BTnhCLElBT0lqSCxJQUFNNUM7TUFDVixJQUFLNUQsSUFBSUEsSUFBRUMsSUFBSUQ7T0FBSyxDQUNsQixJQUFJLHVCQUF1QjVCLEVBQUc0QjtRQUM5QixHQUFJYSxRQUFTO1FBQ2IsSUFBSSxpQkFBaUJBO1FBQ3JCLEdBQUkrQyxTQUFTQSxLQUFLNkosS0FBTTtRQUN4QixNQUFNQSxPQUFPakgsTUFBTTVDO1FBQ25CLEdBQUk0QyxNQUFNZ3RCLFVBQVc7TUFFdkIsR0FBSXh6QixLQUFLQyxJQUFLO01BSWQsTUFBTWQsT0FBT3FIO01BQ2IsR0FBS2lILGVBQWlCakgsWUFBWUEsSUFFaEM7TUFDRixPQUFPQSxPQUNUO0lkd0JBLFNBQVNzOUI7TUFDUCxJQUFJQztNQUNKLElBQVUsSUFBRi9qQyxJQUFPQSxJQUFJK0ksd0JBQXlCL0k7T0FBSSxDQUM5QyxJQUFJNEYsSUFBTW0rQjtRQUNWLFVBQVcsdUJBQXVCaDdCLGlCQUFpQi9JLFNBQVU0RjtNQUUvRCxPQUFPbStCLElBQ1Q7SU1yR0E7S0FBSUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lVOEhKLFNBQVNDLG1CQUFtQjM3QixFQUFFdEksR0FBSyxPQUFPc0ksRUFBRXRJLE1BQUs7SUptUGpELFNBQVNra0MsZUFBZ0JqbUMsRUFBR3VCLEdBQUssVUFBU3ZCLEtBQUt1QixFQUFJO0lJNVNuRCxTQUFTMmtDLDBCQUEwQmxtQyxFQUFFK0IsRUFBRTRGLElBQUl6SDtNQUN6QyxHQUFHRixFQUFFK0IsVUFBUTRGLElBQUssQ0FDaEIsRUFBRTVGLFNBQU83QixFQUNULFNBRUYsUUFDRjtJSWpGQSxTQUFTaW1DLHlCQUF5QmxlLElBQ2hDLE9BQU9BLE9BQ1Q7SVY2YkEsU0FBU21lLG9CQUFvQmh2QixJQUMzQixPQUFPLGNBQWNBLEdBQ3ZCO0lMdk1BLFNBQVNpdkIsZ0JBQWdCN2YsSUFBSThmLEdBQUdDLEdBQUdDLEdBQUdDLEdBQUdyZixHQUFHQztNQUMxQyxNQUFNRCxLQUFHQyxHQUFJO01BQ2I7TUFDQTtNQUNBO09BQVE7T0FBSXNmO09BQUtDO09BQUtDO09BQVVDO09BQ3RCO09BQ0YsS0FBS3pmLEtBQUtELE1BQU03bUIsWUFBWWttQyxLQUFHRCxXQUFVTztPQUN2QyxPQUFHMWYsS0FBS0QsTUFBTTdtQixVQUFVaWdCO09BQzVCLEVBQUU0RyxLQUFLN21CO01BQ2IsSUFBVSxJQUFEeUMsSUFBSUEsS0FBR3dkLElBQUl4ZDtPQUFJLENBQ3RCOztRQUFPc2pDOztRQUFNRzs7UUFBSyxTQUFTMWtDOztRQUFNLFNBQVMya0MsTUFBTW5tQzs7UUFBWWltQzs7UUFBSyxTQUFTemtDOztRQUFNLFNBQVMya0MsTUFBTW5tQztRQUMvRixPQUFPO1FBQ1A7O1FBQU9nbUM7O1FBQU1DOztRQUFLLFNBQVN6a0M7O1FBQU0sU0FBUzJrQyxNQUFNbm1DOztRQUFZa21DOztRQUFLLFNBQVMxa0M7O1FBQU0sU0FBUzJrQyxNQUFNbm1DO1FBQy9GLE9BQU87UUFDUCxHQUFJeUM7U0FBTSxXQUNHMmpDLEtBQU1DOztTQUNaLEdBQUlDLGFBQVdGLFFBQVFHLGFBQVdGLEtBQUssV0FDakNELEtBQU1DO1FBRW5CLFlBQVVEO1FBQ1YsWUFBVUM7UUFDVixLQUFJSTtNQUVOLFFBQ0Y7SUE0Q0EsU0FBU0MsaUJBQWlCam5DLEVBQUV1QixFQUFFa2xDLEdBQUdELEdBQUdwZixHQUFHQztNQUNyQyxJQUFJbG5CLEVBQUk7TUFDUjtNQUNBLGdCQUFnQkEsVUFBVUgsRUFBRUcsV0FBV29CLEVBQUVrbEMsR0FBR0QsR0FBR3BmLEdBQUdDO01BQ2xEO01BQ0EsUUFDRjtJTStNQSxTQUFTNmYsY0FBY2h2QixHQUFJNk07TUFDekIsT0FBTyxtQkFBbUJBO01BQzFCLElBQWEsU0FBRUEsWUFDTCxTQUNHLFlBQ1QzTTtNQUVKLEdBQUkrdUIsV0FBV2p2QjtPQUNiO01BR0YsR0FBSUE7T0FBZ0IsQ0FDbEIsSUFBVyxJQUFGblcsSUFBT0EsSUFBSW9sQyxTQUFVcGxDLElBQzVCLE1BQU1BLEtBQUtnakIsS0FBS2hqQjtRQUNsQixLQUFPQSxJQUFJbVcsZUFBZ0JuVyxJQUN6QixNQUFNQTtRQUNSLFdBQVcsY0FBY29sQzs7T0FDcEIsQ0FDTCxJQUFXLElBQUZwbEMsSUFBT0EsSUFBSW9sQyxTQUFVcGxDO1NBQzVCLE1BQU1tVyxpQkFBaUJpdkIsV0FBV3BsQyxLQUFLZ2pCLEtBQUtoakI7UUFDOUMsSUFBVyxJQUFGQSxJQUFPQSxJQUFJbVcsaUJBQWlCaXZCLFNBQVVwbEMsSUFDN0MsTUFBTUE7UUFDUixXQUFXLGdCQUFpQm1XLGlCQUFpQml2QjtNQUUvQyxNQUFNLFVBQVVuWDtNQXRCaEI7T0F1QlMsS0FBRSxpQkFBaUJvWDtPQUNQLGlCQUFFLDZCQUE2Qmx2QjtPQUN2QztRQUFFO1VBQWlCRSxNQUFNNEcsa0JBQW1CNUcsTUFBTW9GLFFBQVF3QjtNQUN2RSxPQUFPLHNCQUFzQjlHLFFBQVNBLFVBQVdrdkIsU0FBVXhKLFNBQzdEO0lEL1hBLFNBQVN5SixrQkFBa0J0bEMsR0FDekIsT0FBT0EsS0FDVDtJRWtJQSxTQUFTdWxDLDZCQUE2QnJsQztNQUNwQztRQUNFLElBQVEsSUFBRSx1QkFBdUJBLEdBQ3hCLFNBQU1pSCxNQUFNbEg7UUFDckIsSUFBVyxJQUFGRCxJQUFPQSxJQUFJQyxJQUFLRCxJQUFLLEtBQUtBLEtBQUtxWSxVQUFVclk7UUFDbEQsT0FBTyxjQUFjRSxFQUFHbUUsS0FKbkIsQ0FLVDtJRE9BLFNBQVNtaEMsYUFBYXJ2QixJQUNwQixPQUFPQSxPQUNUO0lDM0dBLFNBQVNzdkIsaUJBQWlCdmxDLEVBQUdIO01BQzNCLE9BQVFBO2VBQ0EsT0FBTztlQUNQLE9BQU8sRUFBR0E7ZUFDVixPQUFPLEVBQUdBLEtBQUtBO2VBQ2YsT0FBTyxFQUFHQSxLQUFLQSxLQUFLQTtlQUNwQixPQUFPLEVBQUdBLEtBQUtBLEtBQUtBLEtBQUtBO2VBQ3pCLE9BQU8sRUFBR0EsS0FBS0EsS0FBS0EsS0FBS0EsS0FBS0E7ZUFDOUIsT0FBTyxFQUFHQSxLQUFLQSxLQUFLQSxLQUFLQSxLQUFLQSxLQUFLQTtlQUNuQyxPQUFPLEVBQUdBLEtBQUtBLEtBQUtBLEtBQUtBLEtBQUtBLEtBQUtBLEtBQUtBOztNQUVoRCxPQUFPLFFBQVFLLEtBQU0sbUJBQW1CTCxHQUMxQztJSjlKQSxTQUFTMmxDLG9CQUFvQkMsTUFBUSxRQUFVO0lFK2lCL0MsU0FBU0MsWUFBWTdsQyxFQUFHNUI7TUFHdEIsSUFBSSxPQUFPNEI7TUFDWCxJQUFJLE9BQU81QjtNQUNYLElBQVMsS0FBRSxVQUNILElBQUU7TUFDVixHQUFHLGVBQWVzWCxLQUNoQjtNQUNGLEdBQUksU0FBU0QsU0FBUyxlQUFlQyxLQUFNLE9BQ2xDMVY7TUFFVCxHQUFJLFNBQVN5VixTQUFTLFNBQVNBLE1BQU87TUFQdEM7T0FVTSxFQUFFLG1CQUFtQnpWLEVBQUc1QjtPQUN4QixFQUFFLE9BQU9GO09BQ1AsSUFBRSxPQUFPOEIsWUFBWTFCLE9BQU9GO01BQ3BDLEdBQUcsT0FBT3FYLE1BQU8sTUFBTSxRQUFRO01BQy9CLEdBQUcsS0FBS0EsTUFBTyxJQUFJLE1BQU07TUFDekIsR0FBRyxXQUFXQyxLQUFNLE9BQ1gsZUFBZXBYO01BRXhCLHdCQUNGO0lBeE1BLFNBQVN3bkMsVUFBVXh3QixHQUFJK0QsR0FBSTBzQjtNQUN6QixJQUFTLEtBQUUsVUFDSCxJQUFFO01BQ1YsS0FBSyxPQUFPendCO01BQ1osS0FBSyxPQUFPK0Q7TUFDWixLQUFLLE9BQU8wc0I7TUFDWixHQUFHLFVBQVV0d0IsTUFBTztNQUNwQixHQUFHLGdCQUFnQkMsS0FBTTtNQUN6QixHQUFHLFVBQVVELE1BQU87TUFDcEIsR0FBRztPQUFVLENBQ1gsSUFBUSxJQUFFLE9BQU8sWUFBWUgsR0FBSXl3QixLQUMzQixFQUFFLFdBQVcsWUFBYUE7UUFDaEMsR0FBRyxLQUFLdHdCLE1BQU8sSUFBSSxNQUFNO1FBQ3pCLE9BQU8sZUFBZW5YOztPQUNqQixDQUNMLElBQUlBLEVBQUksT0FBT2dYLFdBQVcrRCxHQUFJMHNCO1FBQzlCLEdBQUcsS0FBS3R3QixNQUFPLElBQUksTUFBTTtRQUN6QixPQUFPLGVBQWVuWCxHQUUxQjtJQWlFQSxTQUFTMm5DLGNBQWMzd0IsR0FBSStELEdBQUkwc0I7TUFDN0IsS0FBSyxPQUFPQTtNQUVaLElBQUlyd0IsSUFBTTtNQUNWLEdBQUksT0FBTzJELE9BQU8zRDtPQUFNO01BR3hCLEtBQUssT0FBT3F3QixRQUFRcndCLFlBQVlBO09BQU07TUFHdEMsT0FBTyxVQUFVSixHQUFJK0QsR0FBSTBzQixHQUMzQjtJRTVoQkEsU0FBU0csa0JBQW1CL2xDLEdBQUssT0FBTyxjQUFjQSxNQUFTO0lSb1UvRCxTQUFTZ21DLG1CQUFtQjU4QixLQUFNQyxLQUFNRSxLQUFNQztNQUM1QyxHQUFHSixVQUFVQyxRQUFRRSxVQUFVQyxNQUFPO01BQ3RDLEdBQUdKLFVBQVVDLFFBQVFFLFVBQVVDLE1BQU87TUFDdEMsUUFDRjtJRzFHQSxTQUFTeThCLGNBQWU3NkIsT0FBUTNLLEVBQUdYLEVBQUcxQjtNQUNwQyxJQUFJNlgsR0FBSywwQkFBMEJ4VjtNQUNuQyxPQUFPLG9CQUFvQjJLLE9BQVE2SyxHQUFJblcsRUFBRzFCLEVBQzVDO0lGMk9BLFNBQVM4bkMsbUJBQW1CQztNQUMxQjtzRUFDRjtJQVBBLFNBQVNDLHdCQUF3QixRQUFRO0llMWR6QyxTQUFTQyx3QkFBd0JybkMsRUFBR2duQjtNQUNsQyxPQUFPLHdCQUF3QmhuQixFQUFFZ25CLFFBQ25DO0lFb0JBLFNBQVNzZ0Isd0JBQTJCLFFBQVU7SXJCK0I5QyxTQUFTQyxvQkFBcUI7SUNrTjlCLFNBQVNDO01BQ1AsVUFBVyxzQ0FDYjtJQVVBLFNBQVNDO01BQ1AsVUFBVyx1QkFBdUIzZCxjQUNwQztJY3ZMQSxTQUFTNGQsbUJBQW1CM29DLEdBQzFCLFFBQ0Y7SVRFQSxTQUFTNG9DO01BQ1AsSUFBSXZvQztNQUNKLElBQVUsSUFBRnVDLElBQU9BLElBQUlpSyx3QkFBeUJqSztPQUFJO1NBQzNDaUssaUJBQWlCaks7O1NBQU1pSyxpQkFBaUJqSzs7U0FBYWlLLGlCQUFpQmpLO1FBQ3ZFLE9BQUtpSyxpQkFBaUJqSyxNQUFNdkM7TUFFaEMsT0FBT0EsQ0FDVDtJVitLQSxTQUFTd29DLGlCQUFrQjdvQyxHQUFLLE9BQU8sV0FBV0EsRUFBSTtJYTJOdEQsU0FBUzhvQyxVQUFVMXhCO01BQ2pCLElBQU0sRUFBRSxPQUFPQSxZQUFZLGdCQUNuQjtNQUNSLElBQVcsSUFBRnJWLElBQU9BLElBQUlELGVBQWdCQztPQUFLLE1BQ2pDLGtCQUFrQmduQyxJQUFLam5DLFFBQVFDO01BRXZDLEdBQUdELHdCQUF5QixNQUNwQixrQkFBa0JpbkM7TUFFMUIsR0FBR2puQyxhQUFhLE1BQ1JpbkM7TUFFUixPQUFPQSxPQUNUO0lIc0JBLFNBQVNDLGFBQWEzN0I7TUFDcEIsSUFBSU4sS0FBT0YsaUJBQWlCUSxRQUM1QixPQUFPTixjQUFjQSxnQkFDdkI7SWF6Z0JBLFNBQVNrOEIsMEJBQTBCQztNQUNqQyxJQUFJaEssT0FBU3Q0QixXQUFXc2lDO01BQ3hCLE9BQU8sNEJBQThCaEssV0FBWUEsR0FDbkQ7SU5tRkEsU0FBU2lLLFNBQVNucEMsRUFBRXVCLEdBQ2xCLEdBQUlBLE9BQVEseUJBQ1osT0FBT3ZCLElBQUV1QixDQUNYO0lIbEZBLFNBQVM2bkMsZUFDUCxRQUNGO0lWZ0NBLFNBQVNDLDBCQUEwQnJwQyxHQUFJLE9BQU9BLENBQUU7SXNCc05oRCxTQUFTc3BDLGdCQUFnQjVxQixHQUFHdmUsRUFBRTBIO01BQzVCLEdBQUdBLFdBQVdBLE1BQU0sc0JBQXNCMUg7T0FDeEM7TUFDRixJQUFJb0ksSUFBTSxTQUFTbVcsR0FBSXZlLEVBQUcwSDtNQUMxQixPQUFJVSxJQUFZQSxPQUVsQjtJakJuTUEsU0FBU2doQyxnQkFBaUJ0aEIsR0FBSWxtQixHQUFLLFNBQVNrbUIsR0FBSSxTQUFTbG1CLENBQUc7SUFDNUQ7O3VCQUN1QixPQUFPLGNBQWNyQyxPQUFPQSxTQUExQzt1QkFDYyxPQUFPLGNBQWNBLE9BQU9BLHFCQUExQzs7O09BRUwsSUFBTSxFQUFFQSxPQUFVLEVBQUVBO09BQ3BCLFNBQVNxQztPQUNULE9BQVEsY0FBYzVCLEVBQUU0QixVQUFXLGNBQWM1QixFQUFFNEIsTUFIN0M7OztPQU1OLElBQU0sRUFBRXJDLE9BQVUsRUFBRUE7T0FDcEIsU0FBU3FDO09BQ1QsT0FBUSxjQUFjNUIsRUFBRTRCLGlCQUFrQixjQUFjNUIsRUFBRTRCLE1BSHBEOzs7T0FNTixJQUFNLEVBQUVyQyxPQUFVLEVBQUVBO09BQ3BCLFNBQVNxQztPQUNULFFBQVMsY0FBYzVCLEVBQUU0Qjs7OztlQUFlLGNBQWM1QixFQUFFNEI7Ozs7ZUFDL0MsY0FBYzVCLEVBQUU0Qjs7OztlQUFjLGNBQWM1QixFQUFFNEI7O2VBSmpEOzs7T0FPTixJQUFNLEVBQUVyQyxPQUFVLEVBQUVBO09BQ3BCLFNBQVNxQztPQUNULE9BQVEsY0FBYzVCLEVBQUU0Qjs7OztjQUFlLGNBQWM1QixFQUFFNEI7Ozs7Y0FDcEQsY0FBYzVCLEVBQUU0Qjs7OztjQUFjLGNBQWM1QixFQUFFNEIsTUFKM0M7O2NBTVVDO09BQ2hCLElBQU0sRUFBRXRDLE9BQ0EsUUFBTXdKLE1BQU1sSDtPQUNwQixJQUFVLElBQUZnQixJQUFPQSxJQUFJaEIsSUFBS2dCLElBQUksSUFDdEJBLEtBQUssY0FBY3RELE9BQVFxQyxJQUFFaUI7T0FFbkMsU0FBU2pCLElBQUlDO09BQ2IsT0FBTyxxQkFBcUIrTSxJQVB0QjtJRHdUVixTQUFTeTZCLG1CQUFtQno5QjtNQUMxQixJQUFJOUQ7TUFDSixJQUFTLElBQURsRyxJQUFLQSxJQUFFZ0ssVUFBVWhLO09BQUksQ0FDM0IsS0FBS0E7UUFDTCxJQUFTLElBQURpQixJQUFLQSxJQUFFK0ksU0FBUy9JO1NBQUksQ0FDMUI7V0FBTSxFQUFFakIsS0FBR2dLLGdCQUFlL0k7V0FDcEIsRUFBRStJLFFBQVExQjtXQUNWLEVBQUUwQixRQUFRMUI7V0FDVixFQUFFMEIsUUFBUTFCO1VBQ2hCLEtBQUt0SSxPQUFLaUIsVUFBUTVDLFlBQVk0OEIsVUFBVXQ2QjtNQUc1QyxPQUFPdUYsSUFDVDtJTTNEQSxTQUFTd2hDLG9CQUFvQnZ4QixHQUFJblc7TUFDL0IsSUFBSXFXLElBQU0sVUFBVSxtQkFBbUJyVyxJQUN2QyxPQUFPLE9BQU9xVyxJQUNoQjtJVnhVQSxTQUFTc3hCLG9CQUFxQjtJcUIvQjlCLFNBQVNDLCtCQUFrQyxRQUFVO0l6Qm9ackQsU0FBU0Msa0JBQW1Cam1DLElBQUszRDtNQUMvQixTQUFTNnBDLFFBQVE3cEMsRUFBRThwQztRQUNqQixHQUFJLFNBQVM5cEM7U0FBVSxPQUNkLFVBQVU4cEM7O1NBQ1osQ0FDTCxJQUFJaDFCLEVBQUksU0FBUztVQUNqQixHQUFJQTtXQUFRLENBQ1Y7WUFDQSxLQUFLLFlBQVlBO1lBQ2pCLEtBQUssSUFBSzVMLE1BQU00TDtZQUNoQixHQUFHZzFCLE9BQVEsSUFDTDlwQyxVQUFVLElBQUtrSixNQUFNNGdDO1lBRTNCLE9BQU85cEM7O1dBRUosT0FBTyxVQUFVOHBDLElBRTFCO01BQ0EsSUFBSTNwQyxFQUFLLEVBQUUsa0JBQWtCd0QsS0FDcEIsS0FBRzFCLGFBQWNBO01BQzFCLEdBQUlqQyxTQUFVQSxjQUFZQSxPQUFNNlMsU0FBVyxDQUFFLGFBQWEsTUFBSzdTO01BQy9ELEdBQUksTUFBTUE7T0FBSSxDQUFFLFVBQVc7O09BQ3RCLEtBQUssU0FBU0E7UUFBSSxDQUFFLFVBQVc7O1FBRWxDLE9BQVFpQzs7V0FFTixJQUFNLEVBQUUsZ0JBQWdCOG5DLE1BRWxCLEVBQUU1cEM7V0FDUixHQUFJLFNBQVM0QjtZQUNYLElBQUksVUFBWUEsZUFBZSxRQUFTQTtXQUMxQzttQkFFQSxJQUFJLFFBQVEvQixFQUFHK3BDLE1BQU87O1dBRXRCLE9BQU9BLEtBQUtBO1dBQ1osSUFBSSxnQkFBZ0JBO1dBQ3BCLElBQU0sRUFBRSxlQUNBLE1BQUcsUUFBUS9tQztXQUNuQixHQUFJNFAsYUFBWTVTLGFBQWEsc0JBQXNCK3BDO1lBQU0sQ0FFdkQsSUFBSWhvQyxFQUFJaUI7YUFBTyxNQUFPLFNBQVNqQixVQUFXO2FBQzFDLEdBQUksU0FBU0EsVUFBVzthQUN4QixJQUFJLFVBQVdBLFNBQVMsUUFBUWlCO2FBQ2hDLElBQUk3QzthQUNKLEdBQUksU0FBUzRCO2NBQ1gsSUFBSSxVQUFZQSxlQUFlLFFBQVNBO2FBQzFDOztZQUNLLENBQ0wsSUFBSW1DLEVBQUk2bEM7YUFDUixHQUFJbjNCO2NBQVMsQ0FBRSxLQUFLQSxRQUFTLElBQUksVUFBVTFPOztjQUN0QyxNQUFPL0QsSUFBSSxVQUFVK0QsR0FBSS9ELFdBQVc0cEMsU0FBVTthQUNuRCxHQUFJN2xDO2NBQUcsQ0FFTCxJQUFJbkMsRUFBSTVCO2VBQWMsTUFBTyxTQUFTNEIsVUFBVztlQUNqRCxHQUFJLFNBQVNBLFVBQVc7ZUFDeEIsSUFBSSxVQUFXQTtXQUduQjs7TUFFSixPQUFPLHVCQUF1QkUsRUFBRzlCLEVBQ25DO0lHbFZBLFNBQVM2cEMsb0JBQW9CNWtDLEtBQUtuRDtNQUNoQyxJQUFTLEtBQUUsZUFBZW1ELE1BQ2pCLEtBQUUsb0JBQW9CO01BQy9CLDRCQUE0QkEsZ0JBQWdCa0QsYUFBYWxELEtBQUtuRDtNQUM5RCxRQUNGO0lVcVBBLFNBQVNnb0MsV0FBVzd5QixHQUFJK0QsSUFDdEIsT0FBTyxPQUFPL0QsV0FBVyxPQUFPK0QsUUFDbEM7SUFnREEsU0FBUyt1QixnQkFBZ0I5eUI7TUFDdkIsS0FBSyxPQUFPQTtNQUNaLE9BQUksV0FBVzs7OztjQUF1QyxXQUFXOzs7O2dCQUluRTtJVTFaQSxTQUFTK3lCLDZCQUE2QjdHLElBQUtoZSxLQUFNQyxJQUFLQyxLQUFNeGpCO01BQzFELFNBQVNzaEM7T0FDUDtNQUNGLFNBQVMvZDtPQUNQO01BQ0YsR0FBR3ZqQixTQUFVO01BQ2IsSUFBUyxLQUFFLFdBQVdzakIsTUFDYixLQUFFLFdBQVdFO01BQ3RCLEdBQUdsYSxPQUFPdEosTUFBTXNoQyxnQkFBZ0I7TUFHaEMsR0FBRzczQixPQUFPekosTUFBTXVqQixnQkFBZ0I7TUFMaEMsSUFRSUUsTUFBUSxrQkFBa0JuYSxLQUFLQSxPQUFLdEo7TUFDeEMsYUFBYXlqQixNQUFNRDtNQUNuQixRQUNGO0lTekRBLElBQUk0a0IsaUNBQW1DRDtJbkIweUJ2QyxTQUFTRSxjQUFjL3lCO01BQ3JCLElBQUksT0FBT0E7TUFDWCxJQUFJQyxLQUFPO01BQ1gsR0FBSSxLQUFLQTtPQUFPO01BRGhCO09BSVMsS0FBRSxPQUFPLFVBQVVEO09BQ3BCLElBQUUsY0FBY3RTO09BQ2YsS0FBRSxXQUFXZ3hCO01BQ3RCLFVBQVcsZUFBZWh4QixNQUFPLGVBQWVzbEMsTUFDbEQ7SWpCM0NBLFNBQVNDLHFCQUFxQmxqQyxHQUFJRSxJQUNoQyxPQUFPLG9CQUFvQkYsR0FBR0UsR0FDaEM7SUFwTkEsU0FBU2lqQyx3QkFBd0JuakMsR0FBSUU7TUFDbkMsT0FBTyxxQkFBcUJBLEdBQUlGLEdBQ2xDO0lxQjVkQSxTQUFTb2pDLFNBQVN6cUMsRUFBRXVCO01BQ2xCLEdBQUlBLE9BQVEseUJBQ1osT0FBUXZCLElBQUV1QixLQUNaO0lFckNBLFNBQVNtcEMsYUFBYzFxQztNQUNyQixJQUFNLEVBQUVBLFNBQ0YsTUFBTWtKLE1BQU03STtNQUNsQixJQUFVLElBQUYwQixJQUFPQSxJQUFJMUIsRUFBRzBCLElBQU0sRUFBRUEsS0FBSy9CLEVBQUUrQjtNQUNyQyxPQUFPRCxDQUNUO0lXdUZBLFNBQVM2b0Msd0JBQXdCM3FDO01BQy9CLE9BQUdBLEVBQUVneUIsMkJBQTJCM3BCOztrQkFHbkIsYUFBYXJJLEVBQUVneUIsd0JBQzlCO0luQmhHQSxTQUFTNFksbUJBQW1CQyxLQUFLQyxXQUFXQyxTQUMxQyxRQUNGO0lFeW5CQSxTQUFTQyxvQkFBb0IxekI7TUFDM0IsSUFBSSxPQUFPQTtNQUNYLEdBQUksS0FBSyxXQUFZO01BR3JCLElBQUl0UyxLQUFPLE9BQU8sVUFBVXNTO01BQzVCLE9BQUksY0FBY3RTLFNBQVNzUyxNQU03QjtJUnppQkEsU0FBUzJ6QixrQkFBbUJucEMsR0FDMUIsVUFBV2tpQixhQUFjQSxVQUMzQjtJZTlHQSxTQUFTa25CLHdCQUF3QkMsT0FDL0IsUUFDRjtJTDJIQSxTQUFTQyxnQkFBZ0JwckMsR0FBSyxTQUFRQSxDQUFHO0lQMlJ6QyxTQUFTcXJDLHFCQUFxQnJyQyxFQUFFdUI7TUFDOUIsSUFBSXBCLEVBQUksb0JBQ1IsT0FBTywwQkFBMEJILEVBQUV1QixFQUNyQztJc0J6V0EsU0FBUytwQyx1QkFBdUJ0ckMsRUFBRytCO01BQ2pDLEdBQUdBLFNBQVNxcEIsdUJBQXVCcnBCLEtBQUsvQjtPQUN0QztNQUNGLElBQUl1QixFQUFJLGtCQUFrQnZCLEVBQUcrQjtNQUM3QixHQUFJUixRQUFTLE9BQU9BO01BRHBCLElBRUkrVixFQUFJL1Y7TUFDUixHQUFJK1YsYUFBYXBPLE1BQU8sVUFBVyxhQUFhb087TUFDaEQsT0FBTy9WLENBQ1Q7SVRzSkEsU0FBU2dxQyxjQUFldnJDLEVBQUd1QixHQUFLLFVBQVMsaUJBQWlCdkIsRUFBRXVCLGFBQWU7SUlwTzNFLFNBQVNpcUMsK0JBQWlDLFFBQVM7SVpxT25ELFNBQVNDLGtCQUFrQnIwQixJQUFNLE9BQU8sWUFBWUEsR0FBSTtJZjdKeEQsU0FBU3MwQixxQkFBc0J4ckMsRUFBRzZDLEVBQUc0b0M7TUFDbkMsR0FBR0EsWUFBWWxzQztPQUNiLElBQUksY0FBY0EsMEJBQTJCa3NDO01BQy9DLGlCQUFpQnpyQyxTQUFTNkM7TUFDMUIsR0FBRzRvQyxTQUFVLGlCQUFpQkEsWUFBWTVvQyxDQUM1QztJU3VIQSxTQUFTNm9DLFNBQVN2Z0MsS0FBTUMsS0FBTUMsS0FBTUMsS0FBTUMsS0FBTTBXLEtBQU1HLEtBQU1DLEtBQU1zcEI7TUFDaEUsSUFBSXQ4QjtNQUNKLElBQVUsSUFBRnhOLElBQU9BLElBQUk4cEMsS0FBTTlwQztPQUFLOztPQUNuQixlQUFlc0osS0FBTUMsT0FBS3ZKLEVBQUd3SixPQUFLeEosRUFBR3lKLEtBQU1DLEtBQU0wVyxLQUFNRyxLQUFNQyxPQUFLeGdCO01BRTdFLE9BQU93TixLQUNUO0lBTUEsU0FBU3U4QixXQUFXemdDLEtBQU1DLEtBQU1DLEtBQU1DLEtBQU1DLEtBQU0wVztNQUNoRCxJQUFJNVM7TUFDSixTQUFTLFFBQVFsRSxLQUFNQyxLQUFNQyxLQUFNRixLQUFNQyxLQUFNQztNQUMvQyxTQUFTLFNBQVNGLEtBQU1DLEtBQU1DLEtBQU1DLEtBQU1DLEtBQU0wVyxLQUFNM1csS0FBTUMsS0FBTTBXO01BQ2xFLE9BQU81UyxLQUNUO0lRbEVBLFNBQVN3OEIsbUJBQW1CL3JDLEdBQUssT0FBT0EsQ0FBRztJYXREM0MsU0FBU2dzQyx1QkFBdUJocUM7TUFDOUIsR0FBSUEsUUFBUztNQUNiLElBQVEsSUFBRUEsWUFDSixNQUFNa0gsTUFBTWxIO01BQ2xCO01BQ0EsSUFBVyxJQUFGRCxJQUFPQSxJQUFJQyxJQUFLRCxJQUFLLEVBQUVBO01BQ2hDLE9BQU9XLENBQ1Q7SWpCdkdBLFNBQVN1cEMsZUFDUCwwQ0FDRjtJQWtFQSxTQUFTQyxzQkFBc0Joc0MsR0FBSyxRQUFVO0lOMkU5QyxTQUFTaXNDLHFCQUFxQjVwQyxLQUM1QixZQUFZQSxJQUNaLFFBQ0Y7SWNwRUEsSUFBSTZwQztJQUNKLFNBQVNDLHVCQUF3QkMsSUFBSzdyQyxJQUFLOHJDO01BQ3pDLElBQVUsTUFBRUQsT0FDSixJQUFFRixrQkFBa0JHO01BQzVCLEdBQUluMEIsUUFBUS9QO09BQVcsSUFFVixJQUFGdEcsRUFBSXFxQyx5QkFBMEJycUMsSUFBSXdxQyxRQUFTeHFDO1FBQ2xELGtCQUFrQkE7O09BQ2YsR0FBSXlxQyxNQUFNcDBCLFNBQVMzWCxJQUFLLE9BQ3RCK3JDLE1BQU1wMEI7TUFQZixJQVNPLEtBQVEsR0FBRW8wQixpQkFBa0IxckM7TUFDbkMsTUFBTzJyQyxLQUFLMXJDO09BQUksQ0FDZCxLQUFPMHJDLEtBQUcxckMsWUFDVixHQUFJTixNQUFNK3JDLE1BQU0xckMsUUFBTyxLQUFLQSxZQUN2QixLQUFLQTtNQUVaLGtCQUFrQnlyQyxXQUFXRTtNQUU3QixPQUFRaHNDLE9BQU8rckMsTUFBTUMsUUFBUUQsTUFBTUMsS0FDckM7SUd4RUEsU0FBU0M7TUFDUDtPQUFNLEVBQUUxVjtPQUNGOzs7Ozs7Ozs7Ozs7Ozs7TUFFTixTQUFTLzBCLElBQU07TUFDZixJQUFXLElBQUZGLElBQU9BLElBQUlnSCxTQUFVaEgsSUFBSyxLQUFLYSxFQUFFbUcsRUFBRWhILElBQUssRUFBRWdILEVBQUVoSCxNQUFJRTtNQUN6RCxPQUFPVyxDQUNUO0lqQmlFQSxTQUFTK3BDLHVCQUF1QnZuQyxNQUM5QixPQUFPLGdCQUFpQkEsS0FDMUI7SUtTQSxTQUFTd25DLDJCQUE0QmhqQztNQUNuQyxJQUFJekIsS0FBTzBtQixhQUFhamxCO01BQ3hCLEdBQUd6QixrQkFBbUIsNkJBQTRCeUI7TUFEbEQ7T0FFVyxPQUFFekg7T0FDRDtjQUNMZ0c7Z0JBQ0VBLGtCQUFrQjtZQUN0QnlCOzs7OztvQkFLUWhEO2dCQUNKaW1DO01BRVQsaUJBQWlCQyxjQUFZQTtNQUM3QixPQUFPQSxVQUNUO0lhaElBLFNBQVNDLHlCQUF5QjcwQjtNQUNoQztPQUFJZ25COztTQUFTdDRCO1VBQVdzUixVQUFXQSxjQUFlQSxZQUFZQTtNQUM5RCxPQUFPLDRCQUE4QmduQixXQUFZQSxHQUNuRDtJdkJvUUEsU0FBUzhOLGlCQUFrQmh0QyxHQUFLLE9BQU8sV0FBV0EsRUFBSTtJYXVQdEQsU0FBU2l0QyxhQUFhNzFCO01BQ3BCLElBQU0sRUFBRTNKLFlBQ0UsTUFBRSxZQUNILEtBQUVBO01BQ1gsSUFBVSxJQUFGMUwsSUFBT0EsSUFBSSxzQkFBc0JxVixJQUFLclY7T0FBSSxDQUNoRCxJQUFJNEQsRUFBSSx1QkFBdUJ5UixHQUFHclY7UUFDbEMsSUFBSSxPQUFPeU4sZUFBZTdKLE9BQU92RjtRQUNqQyxPQUFPLE9BQU9vUCxlQUFlMDlCO01BRS9CLE9BQU8sZUFBZTlzQyxFQUN4QjtJRXRSQSxTQUFTK3NDLGlCQUFpQnZxQyxFQUFHZDtNQUMzQixPQUFRQTtlQUNBLFdBQVdjO2VBQ1gsV0FBV0EsRUFBR2Q7ZUFDZCxXQUFXYyxFQUFHZCxLQUFLQTtlQUNuQixXQUFXYyxFQUFHZCxLQUFLQSxLQUFLQTtlQUN4QixXQUFXYyxFQUFHZCxLQUFLQSxLQUFLQSxLQUFLQTtlQUM3QixXQUFXYyxFQUFHZCxLQUFLQSxLQUFLQSxLQUFLQSxLQUFLQTtlQUNsQyxXQUFXYyxFQUFHZCxLQUFLQSxLQUFLQSxLQUFLQSxLQUFLQSxLQUFLQTtlQUN2QyxXQUFXYyxFQUFHZCxLQUFLQSxLQUFLQSxLQUFLQSxLQUFLQSxLQUFLQSxLQUFLQTs7TUFFcEQsU0FBU3NyQyxJQUFNLE9BQU8sUUFBUTF0QyxLQUFNb0MsRUFBSTtNQUN4QyxjQUFjYztNQUNkLFdBQVd3cUMsR0FDYjtJUjNIQSxTQUFTQyxlQUFldHpCLElBQUszQixJQUFLcFc7TUFDaEMsSUFBVSxJQUFGRCxJQUFPQSxJQUFJQyxJQUFLRDtPQUFLLFNBQ2xCcVcsTUFBSXJXLG9CQUFtQmdZLFNBQVMzQixNQUFJclcsU0FFakQ7SU1iQSxTQUFTdXJDLFlBQVlsMkIsR0FBSStEO01BQ3ZCLE9BQU8sZUFBZSxPQUFPL0QsUUFBUSxPQUFPK0QsS0FDOUM7SU94SkEsSUFBSW95QjtJQUlKLFNBQVNDLG9CQUFvQjFyQyxHQUMzQixrQkFBa0JBLENBQ3BCO0lEeU1BLFNBQVMyckMsc0JBQXNCcGpDLEdBQzdCLE9BQVEsYUFBYUEsVUFBV0EsS0FBS0EsQ0FDdkM7SUdyTEEsSUFBSXFqQztJQUNKLFNBQVNDLG9CQUFxQnh0QztNQUM1QixLQUFLLHlCQUF5QkEsR0FBSSxPQUFPQTtNQUN6QyxPQUFPLFVBQVV1dEM7Z0JBQ05BO2VBQ0FBLDhCQUNiO0lSMlVBLFNBQVNFLGNBQWMxMUIsSUFDckIsT0FBTyxZQUFZQSxLQUNyQjtJQ3hCQSxTQUFTMjFCLHFDQUFxQzVyQztNQUM1QztRQUNFLElBQVEsSUFBRW1ZLGlCQUNELFNBQU1sUixNQUFNbEg7UUFDckIsSUFBVyxJQUFGRCxJQUFPQSxJQUFJQyxJQUFLRCxJQUFLLEtBQUtBLEtBQUtxWSxVQUFVclk7UUFDbEQsT0FBTyxjQUFjRSxHQUFHdkMsS0FBSzBHLE1BSnhCLENBTVQ7SWZyRUEsU0FBUzBuQyxnQkFBaUI5dEMsR0FBSyxPQUFPLFVBQVVBLEVBQUk7SUE3RXBELFNBQVMrdEMsaUJBQWtCL3RDLEVBQUU0UztNQUMzQjtNQUNBLEdBQUlBO09BQVksQ0FDZDtRQUNBLEtBQUs7UUFDTCxHQUFJQSxXQUFZLENBQ2QsWUFDQSxLQUFLO01BR1QsR0FBSUEsYUFBYSxDQUNmLFlBQ0EsS0FBSztNQUVQLEtBQUssV0FBWUE7TUFDakIsT0FBTzVTLENBQ1Q7SVE3TEEsU0FBU2d1QyxrQkFBa0J4bkI7TUFDekIsZ0JBQWNBLElBQ2QscUJBQ0EsUUFDRjtJSysyQkEsU0FBU3luQixzQkFBc0IvdUIsT0FBUS9CO01BQ3JDLElBQUkrd0I7TUFDSixPQUFPO2VBQ0MsY0FBZTtlQUNmLGVBQWdCO2dCQUNmO01BSlQsSUFNUSxJQUFFLGlCQUNKLEVBQUU7TUFDUixJQUFVLElBQUZuc0MsSUFBT0EsSUFBSUMsUUFBU0Q7T0FBSSxDQUM5QixJQUFJUixFQUFJLE9BQU87UUFDZixJQUFJLE1BQU87UUFDWCxJQUFJLE1BQU87UUFDWCxJQUFJLE1BQVE7UUFDWixJQUFJLFlBQVlRLFlBQVkvQjtNQUU5QixHQUFHa3VDLE9BQVEsSUFBSTtNQUNmLFFBQVFsc0M7TUFDUixPQUFPLGVBQWVoQyxFQUN4QjtJQXZHQSxTQUFTbXVDLG9CQUFvQjcyQjtNQUMzQixJQUFJLE9BQU9BO01BQ1gsSUFBUyxLQUFFLFVBQ0gsSUFBRTtNQUNWLEdBQUksU0FBU0MsTUFBTztNQUZwQixJQU1JeFY7TUFDSixJQUFJLE1BQU07TUFDVixJQUFLQSxRQUFRLFNBQVMwTCxhQUFjMUwsSUFBSyxJQUNuQztNQUVOLE9BQU9BLENBQ1Q7SUVyaEJBLFNBQVNxc0MsNkJBQTZCQyxNQUFPcHNDO01BQzNDO1FBQ0U7U0FBTSxFQUFFbVk7U0FDQyxTQUFNbFIsTUFBTW1sQztTQUNiLElBQUUsU0FBU2owQixpQkFBa0JpMEI7UUFDckMsSUFBVyxJQUFGdHNDLElBQU9BLElBQUlDLElBQUtELElBQUssS0FBS0EsS0FBS3FZLFVBQVVyWTtRQUNsRCxPQUFPLGNBQWNFLEVBQUdtRSxLQUxuQixDQU9UO0lKeE9BLFNBQVNrb0Msb0JBQW9COWdDLE1BQVEsUUFBVTtJYy9DL0MsU0FBUytnQyw2QkFBZ0MsVUFBWTtJbEI2VXJELFNBQVNDLGVBQWVuakMsS0FBTUMsS0FBTUUsS0FBTUM7TUFDeEMsVUFBVUgsU0FBU0UsVUFBVUMsTUFDN0IsUUFDRjtJWnBIQSxTQUFTZ2pDLGVBQWdCenVDLEVBQUd1QixHQUFLLE9BQU8sTUFBTUEsRUFBRztJd0J2TmpELFNBQVNtdEMsaUJBQWtCMXVDLEVBQUdTLEtBQU8sT0FBT0EsSUFBSyxRQUFVO0lGdUUzRCxTQUFTa3VDLGlCQUFpQjN1QztNQUN4QixRQUFVQTs7OztjQUNBQTs7OztjQUNBQTs7OztjQUNBQTs7ZUFDWjtJSGlYQSxTQUFTNHVDLGNBQWMxMkIsR0FBSUMsR0FBSTdRLEdBQUlFLEdBQUl6RTtNQUNyQyxPQUFPLFdBQVdvVixHQUFHN1EsR0FBR0UsS0FBTXpFLEdBQzlCLFFBQ0Y7SUQyaEJBLFNBQVM4ckMsWUFBWTN1QyxFQUFHNGM7TUFDdEIsSUFBSSxPQUFPNWM7TUFDWCxJQUFJLE9BQU80YztNQUVYLEdBQUcsTUFBTSxjQUFjLE1BQU0sZUFBZTtPQUMxQztNQUNGLElBQUksTUFBTUE7TUFDVixHQUFHLEtBQUssV0FBWSxJQUFJLE1BQU1BO01BQzlCLElBQUluYTtNQUNKLFFBQVMsU0FBUztPQUFXLENBQzNCLE1BQU8sZ0JBQWdCO1NBQVksQ0FDakMsSUFBSSxTQUFTO1VBQ2IsSUFBSXZDLEVBQUksTUFBTTtVQUNkLEdBQUksU0FBUyxjQUFjLFNBQVMsV0FBVyxNQUN4Q3VDO1FBR1QsSUFBTyxHQUFFekMsRUFBTSxHQUFFNGM7UUFDakIsSUFBSThCO1FBQ0osSUFBSWt3QjtRQUNKO1VBQUksTUFBTSxrQkFBa0I7O1VBQWUsTUFBTSxrQkFBa0I7U0FBWSxNQUN4RW5zQztRQUVQLElBQUksTUFBTW1hO01BRVosT0FBRyxTQUFTLFdBQ0huYSxHQUdYO0lBSUEsU0FBU29zQyxjQUFjanRDLEVBQUVZLEdBQ3ZCLE9BQU8sWUFBWVosRUFBRVksRUFDdkI7SUUzZ0NBLFNBQVNzc0MsbUJBQW1CM2tDLEVBQUV6SCxHQUFLLE9BQVF5SCxhQUFhekgsS0FBWTtJSjZEcEUsU0FBU3FzQyxzQkFBc0IvdUMsR0FBSyxRQUFVO0lxQnBGOUMsSUFBSWd2Qyw4QkFBZ0M3TDtJekJtRXBDLFNBQVM4TCxxQkFBcUJwMUIsSUFBSzNCLElBQUt6QztNQUN0QyxTQUFTeUMsT0FBT3pDLE1BQ2hCLFFBQ0Y7SUFHQSxTQUFTeTVCLHFCQUFxQnIxQixJQUFLM0IsS0FDakMsT0FBTzJCLFNBQVMzQixJQUNsQjtJWCtTQSxTQUFTaTNCLGtCQUFrQmx2QyxFQUFFNEIsRUFBRStoQixLQUM3QixPQUFPLGlCQUFpQjNqQixFQUFFNEIsRUFBRStoQixJQUM5QjtJWWxTQSxTQUFTd3JCLHFCQUFxQkMsT0FBT3h2QixFQUFFOWU7TUFDckMsSUFBSXV1QyxRQUFVO01BQ2QsZ0JBQ1dBO3FCQUNBRDs7O29CQUdEeHZCO3FCQUNDOWU7O21CQUVGOzs7b0JBR0MsMkJBRVo7SUFrTEEsU0FBU3d1QyxpQkFBaUJ6dkMsRUFBRXVCLEVBQUVrbEMsR0FBR0QsR0FBR3BmLEdBQUdDO01BQ3JDLElBQUlsbkIsRUFBSTtNQUNSO01BQ0EsZ0JBQWdCQSxVQUFVSCxFQUFFRyxXQUFXb0IsRUFBRWtsQyxHQUFHRCxHQUFHcGYsR0FBR0M7TUFDbEQ7TUFDQSxRQUNGO0lML0JBLFNBQVNxb0IsaUJBQWlCQyxJQUFLcnlCLEtBQU1tQixPQUFRbXhCLE9BQVExeEIsS0FBTXJXO01BRXpELGlEQUNGO0lBSUEsU0FBU2dvQywwQkFBMEIzckIsS0FBSzRyQjtNQUN0QyxPQUFPLGlCQUFpQjVyQixRQUFRQSxRQUFRQSxRQUFRQSxRQUFRQSxRQUFRQSxRQUNsRTtJV3dnQkEsU0FBUzZyQixvQkFBb0JDLE1BQU9DLE1BQU9DLE1BQU81eUIsS0FBTW1CLE9BQVFQO01BQzlELEdBQUcreEIsU0FBUyw2QkFBNkIzeUI7T0FBVzs7TUFHcEQsT0FBTyxzQkFBc0JBLEtBQU1tQixPQUFRUCxLQUFNOHhCLE1BQ25EO0lkcGdCQSxTQUFTRyxnQkFBaUJud0MsR0FBSyxPQUFPLFVBQVVBLEVBQUk7SVF3RHBELFNBQVNvd0MsaUJBQWlCcGpDO01BQ3hCLElBQU0sRUFBRSxvQkFDRixFQUFFLHNCQUFzQkEsS0FDdkIsR0FBRWpFO01BQ1QsbUJBQW1CaUUsSUFBSTdNLElBQUlBLFdBQVdBO01BQ3RDLE9BQU9rd0M7TUFDUCxRQUNGO0lBWUEsU0FBU0Msb0JBQW9CdGpDO01BQzNCLGlCQUFpQix3QkFBd0JBLE1BQ3pDLFFBQ0Y7SUswc0JBLFNBQVN1akMsZUFBZXp1QztNQUN0QixJQUFRLElBQUUsVUFDRixJQUFFLFVBQ0gsR0FBRTBWLElBQ0QsSUFBRUE7TUFDVixJQUFJLE9BQU8xVjtNQUNYLE1BQU8sT0FBT0E7T0FBSSxDQUNoQixHQUFJLHVCQUF3QixNQUNwQixhQUFhc1Y7UUFFckIsR0FBRyxVQUFVSSxRQUFRLFVBQVVHO1NBQU0sS0FBSyxPQUFPSDs7U0FDNUMsS0FBSyxPQUFPRztNQUVuQixPQUFPLGVBQWVwUCxJQUN4QjtJTG51QkEsU0FBU2lvQyxrQkFBa0I1dEM7TUFDekIsaUJBQWlCLG9CQUFvQkEsSUFDckMsUUFDRjtJTHJNQSxTQUFTNnRDLGFBQWFyckM7TUFDcEI7T0FBUyxLQUFFLGVBQWVBO09BQ2pCLEtBQUUsb0JBQW9CO09BQ3ZCO01BQ1IsSUFBVSxJQUFGckQsSUFBT0EsSUFBSStJLHdCQUF5Qi9JO09BQzFDLEdBQUcrSSxpQkFBaUIvSSxXQUFXcUQsS0FBTSxNQUFNckQ7TUFDN0MsR0FBR3E1QixVQUFVLHdCQUF3QkE7TUFDckMsUUFDRjtJVXEwQkEsU0FBU3NWLFNBQVMzdUM7TUFDaEIsR0FBR0EsTUFBTztNQUNWLEdBQUdBLFVBQVVBLE9BQVEsT0FBT0E7TUFDNUIsSUFBTSxFQUFFLFVBQWEsRUFBRTtNQUN2QixJQUFVLElBQUYrYSxJQUFPQSxJQUFJL2EsRUFBRythLElBQUksQ0FDeEIsSUFBSXhFLEdBQUs1VixFQUNULElBQUksTUFBTUEsR0FDVixJQUFJNFY7TUFFTixPQUFPLGVBQWU1VixFQUN4QjtJSmozQkEsU0FBU2l1Qyw2QkFBNkJ4d0MsRUFBRWlZO01BQ3RDLElBQUk4RyxXQUFhc1osZUFBZ0JyNEIsU0FBVWlZLGdCQUFjQSxJQUFJQTtNQUM3RCxPQUFPLDZCQUE2QjhHLE9BQVE5RyxJQUM5QztJQ21RQSxTQUFTdzRCLGtCQUFrQnZqQztNQUN6QixPQUFPLG9CQUFvQixZQUFZQSxRQUN6QztJRjJDQSxTQUFTd2pDLG1CQUFtQjlrQyxHQUFHL0wsRUFBRXVCO01BQy9CLElBQUlwQixFQUFJO01BQ1IsS0FBSTRMO09BQVUsQ0FDWixJQUFJd2pDLE9BQVM7UUFDYixlQUFlcHZDO1FBQ2YsZ0JBQWdCQTtRQUNoQixxQ0FBcUM0TDtRQUhyQyxJQUlJK2tDLFdBQVlyeEM7UUFDaEI7OztVQUNFLG9CQUFvQnF4QyxNQUFNOXdDLEVBQUVHLFdBQVc0TCxZQUFZeEs7VUFDbkQsV0FBV3V2QyxLQUZFO1FBSWYsWUFBWTs7T0FDUCxvQkFDZS9rQyxTQUFTL0wsRUFBRUcsV0FBVzRMLFlBQVl4SztNQUV4RCxRQUNGO0lIL0hBLFNBQVN3dkMsb0NBQW9DQyxVQUMzQyxRQUNGO0lUekJBLFNBQVNDLGdCQUFpQjl3QyxFQUFHNEIsRUFBR2E7TUFDOUIsR0FBSWIsV0FBVzVCLElBQUs7TUFDcEIsT0FBTyx1QkFBd0JBLEVBQUc0QixFQUFHYSxFQUN2QztJT2xEQSxTQUFTc3VDLGVBQWU5ckM7TUFDdEIsSUFBSUosS0FBTyxrQkFBa0JJLE1BQzdCLGtCQUFrQkosV0FDbEIsUUFDRjtJQ2pGQSxTQUFTbXNDLGtCQUFrQjVtQyxPQUFRMFksSUFBS0M7TUFDdEMsSUFBYSxTQUFFLGtCQUFrQkQsS0FDcEIsU0FBRSxrQkFBa0JDO01BQ2pDLEdBQUdrdUIsbUJBQW1CQztPQUNwQjs7TUFDRixLQUFLRDtPQUF5QjtNQUc5QixPQUFPLHdCQUF3QjdtQyxPQUFRNm1DLGNBQWVDLG1CQUN4RDtJTWlXQSxTQUFTQyxnQkFBZ0Jqa0MsUUFDdkIsT0FBTyxhQUFhQSxPQUN0QjtJTG5PQSxTQUFTa2tDLHVCQUF1QnBwQixPQUM5QixRQUNGO0lUNE5BLFNBQVNxcEIsb0JBQW9CbnFDLEdBQUlFLElBQU0sV0FBUyxpQkFBaUJGLEdBQUlFLEdBQUs7SVN2UDFFLFNBQVNrcUMsd0JBQXdCdHBCLE9BQy9CLE9BQU8sMEJBQ1Q7SVVnSEEsU0FBU3VwQixlQUFnQjV2QztNQUN2QixJQUFJdUk7TUFDSixJQUFXLElBQUZ0SSxJQUFPQSxJQUFJRCxTQUFVQztPQUFLLENBQ2pDLElBQUltQyxFQUFJcEMsRUFBRUMsR0FDVixFQUFFLHdCQUF3Qm1DLFNBQVNBO01BRXJDLE9BQU9tRyxDQUNUO0lEaEdBLFNBQVNzbkMsZUFBZXIwQixLQUFNbUIsT0FBUW16QjtNQUNwQztPQUFTLEtBQUUsbUJBQW1CQTtPQUNyQixLQUFFLHNCQUFzQnQwQixLQUFNLGlCQUFpQlk7TUFDeEQsT0FBTyxzQkFBc0JaLEtBQU1tQixPQUFRUCxLQUFNalcsS0FDbkQ7SU4wS0EsU0FBUzRwQztNQUNQLHNEQUNGO0lSOUtBLFNBQVNDLGVBQWU5eEMsRUFBR3VCLEVBQUcrVjtNQUM1QjtPQUFVLE1BQUU7T0FDRSxVQUFFO09BQ0osUUFBRTtPQUNSO09BQ0EsRUFBRSxhQUFhNDZCO09BQ2YsRUFBRSxhQUFhQTtNQUVyQixTQUFTRyxTQUFVdndDLEVBQUdZO1FBQ3BCO1NBQU8sR0FBRXF2QyxRQUFRandDO1NBQ1QsSUFBRXd3QyxNQUFNQSxLQUFLeHdDO1NBQ2IsSUFBRUEsSUFBSXl3QztTQUNQLEdBQUVSLFFBQVFydkM7U0FDVCxJQUFFKzhCLE1BQU1BLEtBQUsvOEI7U0FDYixJQUFFQSxJQUFJK3ZDO1NBQ1IsRUFBRTN3QyxJQUFJWTtTQUNOLEVBQUk2dkMsTUFBTUUsTUFBTXZ1QyxJQUFLcXVDLE1BQU1HLE1BQU1GLE1BQU1DLE1BQU9ELE1BQU1FO1FBQzFELFVBQ0t4dUMsSUFDQTRRLEVBRVA7TUFFQSxTQUFTMUYsSUFBS3ROLEVBQUdZO1FBQ2YsSUFBTSxFQUFFWixJQUFJWSxFQUNOLEVBQUV2QyxJQUFJMkIsRUFDTixFQUFHQSxLQUFLM0IsSUFBSTRDLE1BQU9MLElBQUlLLEdBQzdCLFVBQ0s1QyxJQUNBMlUsRUFFUDtNQUVBLFNBQVM2OUIsT0FBUTN5QyxFQUFHdUI7UUFDbEIsT0FBT3ZCLFdBQVd1QixXQUFXd3dDLFFBQVEveEMsS0FBSyt4QyxRQUFRL3hDLElBQUlBLE9BQU9BO2lCQUFJQSxVQUFVQSxrQkFBb0J1QixpQkFBbUIwd0M7aUJBQVdqeUMsQ0FDL0g7TUFFQTtRQUFJQTs7OztRQUFXQTs7UUFBTUE7O1FBQUtBOzs7OztRQUFnQkE7Ozs7O1FBQ3RDdUI7Ozs7UUFBV0E7O1FBQU1BOztRQUFLQTs7Ozs7UUFBZ0JBOzs7O09BQWMsT0FDL0N2QixJQUFJdUIsSUFBSStWO01BRWpCLEdBQUlBLFFBQVMsT0FDSnRYLElBQUl1QjtNQUViLEdBQUkrVixNQUFNQSxLQUFLQSxtQkFBZ0JBLGdCQUFjLE9BQ3BDQTtNQUdULElBQUlzN0I7TUFDSixNQUFPLFNBQVM1eUMsS0FBS215QyxFQUFHLENBQ3RCLFNBQVNBLEVBQ1QsS0FBS0M7TUFFUCxNQUFPLFNBQVM3d0MsS0FBSzR3QyxFQUFHLENBQ3RCLFNBQVNBLEVBQ1QsS0FBS0M7TUFFUCxHQUFJUSxnQkFBaUIsT0FDWjV5QyxJQUFJdUIsSUFBSXF4QztNQUVqQixNQUFPLFNBQVM1eUMsS0FBS295QyxFQUFHLENBQ3RCLFNBQVNBLEVBQ1QsS0FBS0Q7TUFFUCxNQUFPLFNBQVM1d0MsS0FBSzZ3QyxFQUFHLENBQ3RCLFNBQVNBLEVBQ1QsS0FBS0Q7TUFFUCxHQUFJUyxZQUFhLE9BQ1J0N0I7TUFyQlQsSUF3Qk8sR0FBRXRYLEVBQ0YsR0FBRXVCLEVBQ0YsR0FBRStWLElBQUlzN0I7TUFFYixHQUFJLFNBQVNHLE1BQU0sU0FBU0YsS0FBS0MsVUFBVWIsUUFBUyxPQUMzQzM2QjtNQUVULEdBQUksU0FBU3k3QixNQUFNLFNBQVNGLEtBQUtDLE1BQU1iLGNBQWNBO09BQWEsTUFDMUQzNkIsaUJBQW1CMDZCO01BaEMzQjtPQW1DTyxHQUFFLFNBQVNhLEdBQUlDO09BQ2hCLEVBQUUsSUFBSUUsS0FBTUQ7T0FDWixFQUFFLElBQUlDLEtBQU03eUM7T0FDWixFQUFFLElBQUlBLElBQUs4eUM7T0FFWCxFQUFFbHhDLE1BQU0sT0FBT0EsSUFBS2t4QztNQUMxQixHQUFJaHhDLFFBQVMsT0FDSkE7TUExQ1QsSUE2Q0krNEIsR0FBSy80QixJQUFJMndDO01BQ2IsR0FBSSxTQUFTNVgsTUFBTWdYLFVBQVcsT0FDckJoWDtNQUlULE9BQU9BLEtBQUssT0FBTy80QixJQUFJKzRCLEtBQUs0WCxNQUFPN3dDLE9BQU82d0MsS0FDNUM7SW9CN1dBLFNBQVNNLDhCQUE4QjFsQyxNQUFRLFFBQVM7SUh1RHhELFNBQVMybEMsYUFBYW56QyxHQUNwQixRQUFXQSxvQkFDQUEsZ0JBQ2I7SVBxREEsU0FBU296Qyx3QkFBd0IvbEMsT0FBTzNFO01BQ3RDLElBQUlxRSxLQUFPRixpQkFBaUJRO01BQzVCLHlCQUF3QjNFO01BQ3hCLHlCQUF5QkE7TUFDekIsUUFDRjtJQzVIQSxTQUFTMnFDLHNCQUF5QixRQUFVO0lIZ041QyxTQUFTQyxrQkFBa0J0ekMsRUFBRXVCLEVBQUV3ZSxFQUFFOWU7TUFDL0IsSUFBSWQsRUFBSTtNQUNSLHFCQUFxQkgsRUFBRUcsV0FBV29CLEVBQUV3ZSxJQUFHOWU7TUFDdkMsUUFDRjtJWm5DQSxTQUFTc3lDLGtCQUFrQnB6QyxFQUFFNEI7TUFDM0IsR0FBSUEsV0FBVyxzQkFBc0I1QixPQUFRO01BQzdDLElBQU8sR0FBRSx1QkFBd0JBLEVBQUc0QixHQUM3QixHQUFFLHVCQUF3QjVCLEVBQUc0QjtNQUNwQyxPQUFRdVcsVUFBVUQsRUFDcEI7SWNxUkEsU0FBU203QixrQkFBbUJubUMsT0FBT3RLLEVBQUVxRjtNQUNuQyxJQUFJakksRUFBSSw0QkFBNEI0QyxFQUFHcUY7TUFDdkMsZUFBZWlGLE9BQU9sTixJQUFJLHNCQUFzQkE7TUFDaEQsUUFDRjtJSTdFQSxTQUFTc3pDLGNBQWN2N0IsR0FBSUMsR0FBSTdRLEdBQUlFLElBQ2pDLE9BQU8sT0FBTyxXQUFXMlEsR0FBRzdRLEdBQUdFLEtBQ2pDO0lnQnJUQSxTQUFTa3NDLG1CQUFtQnRzQixHQUFJOWYsR0FBSStmLEdBQUk3ZixHQUFJeEY7TUFFMUM7UUFBZ0JvbEIsR0FBSWdFLHVCQUF1QjlqQixPQUMzQitmLEdBQUkrRCx1QkFBdUI1akIsT0FDM0J4RjtNQUNoQixRQUNGO0lqQmtHQSxTQUFTMnhDLGNBQWN2OEIsSUFBTSxPQUFPLFlBQVlBLEdBQUk7SVJ4QnBELElBQUl3OEIsa0JBQW9CLElBQUs3bEI7SUFDN0IsU0FBUzhsQjtNQUNQLElBQUl6TyxJQUFNLElBQUtyWCxpQkFDZixPQUFPcVgsY0FBY3dPLGlCQUN2QjtJQUlBLFNBQVNFLCtCQUErQnB4QyxHQUN0QyxPQUFPLGVBQ1Q7SXVCekhBLFNBQVNxeEMsaUJBQWtCaGtCLE1BQU9DO01BQ2hDLEdBQUlBLGVBQWVELGlCQUFrQjtNQUNyQyxPQUFPQSxLQUNUO0l4QmlJQSxTQUFTaWtCLG1CQUFtQnhtQyxNQUMxQixzQkFDRjtJU2tLQSxTQUFTeW1DLGFBQWE3OEIsR0FBSStELElBQ3hCLE9BQU8sT0FBTy9ELFlBQVksT0FBTytELElBQ25DO0lLM01BLFNBQVMrNEIsVUFBV3RoQixNQUFPdWhCLE1BQU9DLEtBQU05SDtNQUN0QyxJQUFJK0gsTUFBT0MsR0FBSUMsR0FBSXAzQixHQUFJcUQsSUFBS3ZmLEVBQUc4QixFQUFHaEIsRUFBR0M7TUFDckMsS0FBS215QztNQUNMLEdBQUloM0IsVUFBVUEsU0FBVTtNQUN4QixNQUFNeVY7TUFDTixJQUFJd2hCO01BQ0osU0FBUzlIO01BQU07TUFBUTtNQUN2QixNQUFPZ0ksS0FBS0MsTUFBTS96QjtPQUFTLENBQ3pCLElBQUk2ekIsTUFBTUM7UUFDVixHQUFJdnhDLEtBQUtBO1VBQWM7WUFDbEJzZCxnQkFBZ0J0ZDs7WUFBa0JzZCxnQkFBZ0J0ZDtXQUFxQixDQUN4RSxJQUFJc2pCLEdBQUssZ0JBQWdCdGpCLG9CQUFvQkE7WUFDN0MsSUFBSSxrQkFBbUI5QixFQUFHb2xCO1lBQzFCOztTQUdDLEdBQUl0akIsYUFBYW1HLFNBQVNuRyxVQUFVQTtVQUFTLE9BQ3hDQTtxQkFHTixJQUFJLGtCQUFrQjlCLEVBQUc4QixNQUN6QixNQUNBO3FCQUdBLFFBQVF1eEMsTUFBTXZ4QyxLQUNkOzthQUVBLEdBQUcseUJBQXlCQSxNQUFPO2FBS25DLElBQUl0QyxJQUFRc0MscUJBQXVCQTthQUNuQyxJQUFJLGtCQUFrQjlCLEVBQUdSO2FBQ3pCLElBQUtzQixNQUFPQyxNQUFNZSxTQUFVaEIsSUFBSUMsSUFBS0Q7Y0FBSyxDQUN4QyxHQUFJd3lDLE1BQU1wM0IsR0FBSSxNQUNkLE1BQU1vM0IsUUFBUXh4QyxFQUFFaEI7YUFFbEI7O1VBRUcsR0FBSSxpQkFBaUJnQjtXQUFJLENBQzlCLElBQUksb0JBQW9COUIsRUFBRThCLEdBQzFCOztXQUNLLEdBQUksa0JBQWtCQTtZQUFJLENBQy9CLElBQUkscUJBQXFCOUIsRUFBRThCLEdBQzNCOztZQUNLLFVBQVdBO2FBQWdCLENBQ2hDLElBQUksc0JBQXNCOUIsRUFBRThCLEdBQzVCOzthQUNLLEdBQUlBLE9BQU9BO2NBQU0sQ0FFdEIsSUFBSSxrQkFBa0I5QixFQUFHOEIsSUFBRUEsT0FDM0I7O2NBQ0ssR0FBSUEsUUFBT0EsRUFBRyxDQUVuQixJQUFJLG9CQUFvQjlCLEVBQUU4QixHQUMxQjtNQUdKLElBQUksb0JBQW9COUI7TUFDeEIsT0FBT0EsY0FDVDtJSnltQkEsU0FBU3V6Qyx1QkFBdUJ0OEIsSUFDOUIsT0FBT0EsT0FDVDtJTTkxQkEsU0FBU3U4QixvQkFBb0JqbkMsTUFDM0IsT0FBTysvQixlQUNUO0l4Qm1QQSxTQUFTbUgsaUJBQWlCdjBDLEVBQUU0QjtNQUMxQixHQUFJQSxXQUFXNUIsUUFBUztNQUN4QjtPQUFPLEdBQUUsc0JBQXVCQSxFQUFHNEI7T0FDNUIsR0FBRSxzQkFBdUI1QixFQUFHNEI7T0FDNUIsR0FBRSxzQkFBdUI1QixFQUFHNEI7T0FDNUIsR0FBRSxzQkFBdUI1QixFQUFHNEI7TUFDbkMsT0FBUXlXLFdBQVdELFdBQVdELFVBQVVELEVBQzFDO0lJdkNBLFNBQVNzOEIsaUJBQWtCMzBDO01BQ3pCLEdBQUtBLFlBQVksU0FBU0EsR0FBSSxVQUFXQTtNQUN6QyxJQUFJcVcsSUFBTXJXO01BQ1YsR0FBSXFXLElBQUssTUFBTXJXO01BRGYsSUFFSTRTLElBQU0sZ0JBQWdCLGdCQUFnQjVTO01BQzFDLEtBQUssYUFBWTRTO01BQ2pCLE1BQU81UyxRQUFTLENBQ2QsT0FDQTtNQUVGLE1BQU9BLE9BQVEsQ0FDYixTQUNBO01BRUYsR0FBSXFXLElBQUssTUFBTXJXO01BQ2YsVUFBV0EsRUFBRzRTLElBQ2hCO0lhckhBLFNBQVNnaUMsVUFBVXg5QixJQUNqQixPQUFPLGVBQWUsT0FBT0EsV0FDL0I7SWpCZ0pBLFNBQVN5OUIsa0JBQWtCMTBDLEVBQUU0QjtNQUMzQixHQUFJQSxXQUFXLHNCQUFzQjVCLE9BQVE7TUFDN0MsSUFBSTJCLE1BQVFvSDtNQUNaLElBQVUsSUFBRmxHLElBQU9BLE1BQU9BLElBQUksTUFDbEJBLEtBQUssdUJBQXdCN0MsRUFBRzRCLElBQUlpQjtNQUU1QyxPQUFPLG9CQUFvQmxCLEVBQzdCO0ltQjdHQSxTQUFTZ3pDLGtDQUFrQzdsQjtNQUN6QyxHQUFHQSxhQUFjLFVBQWFBLGNBQzlCLFFBQ0Y7SUw2WEEsU0FBUzhsQixtQkFBbUIxbkM7TUFDMUIsT0FBTyxvQkFBcUIsYUFBYUEsUUFDM0M7SUdnTkEsU0FBUzJuQyxhQUFhNTlCLEdBQUl2UCxJQUFLN0Y7TUFDN0IsS0FBSyxPQUFPb1Y7TUFDWixPQUFPO2VBQWUsY0FBY3ZQLFNBQVMsY0FBYzdGLGtCQUM3RDtJQW1NQSxTQUFTaXpDLFlBQVluekMsRUFBRVk7TUFDckIsSUFBUyxLQUFFLFVBQ0gsSUFBRTtNQUNWLElBQUksT0FBT1o7TUFDWCxJQUFJLE9BQU9ZO01BQ1gsR0FBRyxTQUFTNlUsTUFBTztNQUNuQixHQUFHLFNBQVNBLFNBQVMsZUFBZUMsS0FBTSxVQUFXMVY7TUFMckQsSUFNSUM7TUFDSixNQUFNLGdCQUFnQlcsR0FBRyxDQUN2QixJQUFJLFNBQVNBLEdBQ2I7TUFFRixVQUFXLGVBQWVaLEdBQUlDLEVBQ2hDO0lBcnZCQSxTQUFTbXpDLGNBQWNDO01BQ3JCLEdBQUdBLE1BQU10aUMsWUFBWXNpQyxRQUFPdGlDLFlBQVlzaUMsTUFBTUE7T0FDNUMsb0JBQW9CO01BQ3RCLE9BQU8sZUFBZSxPQUFPQSxPQUFLLFVBQVVBLElBQUksV0FBV0EsS0FDN0Q7SUE3REEsU0FBU0MsWUFBWWgrQixJQUNuQixPQUFPLGVBQWUsT0FBT0EsVUFDL0I7SVRnS0EsU0FBU2krQixvQkFBb0IxNUI7TUFDM0IsT0FBTyxtQkFBbUJBLFdBQzVCO0lJbU1BLFNBQVMyNUIsd0JBQXdCeHpDO01BQy9CLHdEQUNGO0lvQnhjQSxTQUFTeXpDLHFCQUFxQm51QixHQUFJOWYsR0FBSStmLEdBQUk3ZixHQUFJeEY7TUFDNUMsR0FBSXdGLE1BQU1GO09BQUksSUFDRCxJQUFGdEUsSUFBT0EsS0FBS2hCLElBQUtnQixJQUFLLEdBQUd3RSxLQUFLeEUsS0FBS29rQixHQUFHOWYsS0FBS3RFOztPQUMvQyxJQUNNLElBQUZBLEVBQUloQixJQUFLZ0IsT0FBUUEsSUFBSyxHQUFHd0UsS0FBS3hFLEtBQUtva0IsR0FBRzlmLEtBQUt0RTtNQUV0RCxRQUNGO0lqQnFCQSxTQUFTd3lDLG9CQUFvQmhvQyxNQUFRLFFBQVU7SU5VL0MsU0FBU2lvQyxvQkFBb0IzNEIsRUFBRS9aO01BQzdCLEtBQUl0RCwyQkFDRjtNQUNGLDJCQUEyQnFkLEtBQUsvWjtNQUNoQyxRQUNGO0lTOE5BLFNBQVMyeUMsc0JBQXNCeDlCLEdBQUl1RztNQUNqQyxHQUFHdkcsYUFBYXVHLE9BQVEsT0FBT3ZHO01BQy9CLElBQUl5bEI7TUFDSixJQUFVLElBQUY1N0IsSUFBT0EsSUFBSW1XLGVBQWdCblc7T0FBSyxTQUFTQSxLQUFLbVcsUUFBUUEsaUJBQWlCblc7TUFDL0UsT0FBTyxzQkFBc0JtVyxRQUFTdUcsT0FBUWtmLFNBQVV6bEIsUUFDMUQ7SUNqRkEsU0FBU3k5QixZQUFZL3lDLEVBQUdkO01BQ3RCLE9BQVFBO2VBQ0EsV0FBV2M7ZUFDWCxXQUFXQSxFQUFHZDtlQUNkLFdBQVdjLEVBQUdkLEtBQUtBO2VBQ25CLFdBQVdjLEVBQUdkLEtBQUtBLEtBQUtBO2VBQ3hCLFdBQVdjLEVBQUdkLEtBQUtBLEtBQUtBLEtBQUtBO2VBQzdCLFdBQVdjLEVBQUdkLEtBQUtBLEtBQUtBLEtBQUtBLEtBQUtBO2VBQ2xDLFdBQVdjLEVBQUdkLEtBQUtBLEtBQUtBLEtBQUtBLEtBQUtBLEtBQUtBO2VBQ3ZDLFdBQVdjLEVBQUdkLEtBQUtBLEtBQUtBLEtBQUtBLEtBQUtBLEtBQUtBLEtBQUtBOztNQUVwRCxTQUFTc3JDLElBQU0sT0FBTyxRQUFRMXRDLEtBQU0sbUJBQW1Cb0MsR0FBSztNQUM1RCxjQUFjYztNQUNkLFdBQVd3cUMsR0FDYjtJUDNCQSxTQUFTd0ksb0JBQ1AsSUFBSXoxQyxFQUFJLG9CQUNSLE9BQU9BLEdBQ1Q7SVM5TkEsU0FBUzAxQyxnQkFBZ0JseUMsSUFBSzVCO01BQzVCLEdBQUksdUJBQXVCNEI7T0FBYyxPQUFPLDRCQUEwQjVCO01BQzFFLElBQUlFLEVBQUksa0JBQWtCMEI7TUFDMUIsR0FBSTVCLE1BQU8sR0FBTUUsYUFBYyxDQUFFLGFBQWEsTUFBS0YsT0FBVTtNQUQ3RCxJQUVJNUIsRUFBSSxXQUFXOEI7TUFDbkIsR0FBSUE7T0FBYSxDQUNmO1FBQ0EsSUFBSS9CLEVBQUkrQixTQUFTOUI7UUFDakIsR0FBSUQsTUFBTyxJQUFJLGdCQUFpQkEsU0FBVUM7TUFFNUMsT0FBTyx1QkFBdUI4QixFQUFHOUIsRUFDbkM7SWhCNEpBLFNBQVMyMUM7TUFDUCxrREFDRjtJQWxDQSxTQUFTQztNQUErQzdsQixLQUFNOGxCLEtBQU1DLEtBQU1DO01BQ3hFLElBQUlsMUIsTUFBUSw0QkFBNEJrUDtNQUN4QyxjQUFlOGxCLEtBQU1DLEtBQU1DO01BQzNCLE9BQU9sMUIsS0FDVDtJa0JyRkEsU0FBU20xQixrQkFBbUJuMkMsRUFBR0c7TUFDN0IsR0FBSUEsVUFBUUEsUUFBUUgsU0FDbEI7TUFDRixHQUFJQSxZQUFZRyxNQUFPLFdBQVdBO01BQ2xDLFFBQ0Y7SXZCOHhCQSxTQUFTaTJDLGtCQUFtQmoyQyxHQUMxQixPQUFPLHdCQUF3QkEsRUFDakM7SVd0dkJBLFNBQVNrMkMsYUFBYXQ4QixJQUFLM0IsS0FDekIsR0FBRzJCLFNBQVMzQixTQUFVLFNBQ3RCLFFBQ0Y7SUZzS0EsU0FBU2srQixxQkFBcUJudUIsT0FDNUIsT0FBTywwQkFDVDtJS2hMQSxTQUFTb3VCLDRCQUE2QjNzQztNQUNwQyxJQUFJekIsS0FBTzBtQixhQUFhamxCO01BQ3hCLEdBQUd6QixrQkFBbUIsNkJBQTRCeUI7TUFEbEQ7T0FFYSxTQUFHekIsd0JBQXdCRSxVQUFhRjtPQUN6QztjQUNMQTtnQkFDRUEsa0JBQWtCO1lBQ3RCeUI7Ozs7b0JBSVFoRDtrQkFDRjR2QztNQUVYLGlCQUFpQjFKLGNBQVlBO01BQzdCLE9BQU9BLFVBQ1Q7SWtCMUZBLFNBQVMySixrQkFBa0JwMkM7TUFDekIsSUFBSXlCO01BQ0osTUFBT3pCO09BQVMsQ0FDZCxJQUFJcUMsRUFBSXJDLEtBQ1IsSUFBVyxJQUFGMEIsSUFBT0EsSUFBSVcsU0FBVVgsSUFBSyxPQUFPVyxFQUFFWCxJQUM1QyxJQUFJMUI7TUFFTixPQUFPeUIsQ0FDVDtJcEJQQSxTQUFTNDBDLG1CQUFtQkM7TUFDMUIsSUFBSUEsS0FBTyx3QkFBd0JBO01BQ25DLFNBQVNoM0MsSUFBSXlGO1FBQ1gsSUFBSW1ELElBQU0sdUJBQXFCbkQ7UUFDL0IsR0FBR21ELElBQUssT0FBT0EsTUFDakI7TUFDQSxJQUFJcXVDO01BQ0osTUFBS0QsWUFBVyxXQUFXQTtNQUQzQixJQUVJbnNDLE9BQVM7TUFDYixLQUFJQSxPQUFRO01BSFosSUFJSXFzQyxPQUFTO01BQ2IsS0FBSUEsT0FBUTtNQUxaLElBT0k5MkIsRUFBSTtNQUNSLElBQUlBLEVBQUUsU0FBU0E7TUFDZixzQkFBb0JBO01BVHBCLElBV0k5ZSxFQUFJO01BQ1IsSUFBSUEsRUFBRSxTQUFTQTtNQUNmLHVCQUFxQkE7TUFickIsSUFlSTYxQyxJQUFNLDhCQUE4QnRzQyxPQUFPO01BQy9DLEtBQUlzc0MsSUFBSztNQWhCVCxJQWlCUSxJQUFFQSxhQUNDLE9BQUU7TUFDYixlQUFlLzJCO01BQ2YsZ0JBQWdCOWU7TUFwQmhCLElBcUJJdWxCLElBQU0scUJBQXFCK29CLE9BQU94dkIsRUFBRTllO01BQ3hDLHlCQUEwQisxQyxPQUN4QixZQUFZQSxLQURFO01BR2hCLGtCQUFrQnh3QjtNQXpCbEIsSUEwQkl5d0IsS0FBT0Y7TUFDWDtNQUNBLGlCQUFpQnhIO01BQ2pCLFFBQ0Y7SW9Cb0NBLFNBQVMySCxxQkFBcUJsMUM7TUFDNUIsR0FBSUEsUUFBUztNQUNiLElBQVEsSUFBRUEsWUFDSixNQUFNa0gsTUFBTWxIO01BQ2xCO01BQ0EsSUFBVyxJQUFGRCxJQUFPQSxJQUFJQyxJQUFLRCxJQUFLLEVBQUVBO01BQ2hDLE9BQU9XLENBQ1Q7STVCMEtBLFNBQVN5MEMsZ0JBQWlCbjNDLEdBQUssT0FBTyxVQUFVQSxFQUFJO0lXN05wRCxTQUFTbzNDLGtCQUFrQjVwQyxNQUN6QixRQUNGO0lBTUEsU0FBUzZwQyxvQkFBb0I3cEMsTUFBUSxRQUFVO0lVNEsvQyxTQUFTOHBDLGtCQUFtQnQzQyxFQUFHdUI7TUFBSyxVQUFTLGlCQUFpQnZCLEVBQUV1QixjQUFnQjtJUjBLaEYsU0FBU2cyQyxhQUFhbmdDO01BQ3BCLEtBQUssT0FBT0E7TUFDWixJQUFNLElBQ1MsV0FBRTNKO01BQ2pCLE1BQU8sZUFBZTJKLElBQUssQ0FDekIsT0FDQSxhQUFhO01BRWYsT0FBT2xYLENBQ1Q7SVl0WkEsU0FBU3UzQyxtQ0FBc0MsVUFBWTtJekJzUDNELFNBQVNDLGlCQUFpQjEzQyxHQUFLLE9BQU8sV0FBV0EsRUFBSTtJbUJ2S3JELFNBQVMyM0MsdUJBQXdCNTBDLEdBQUssWUFBYUEsRUFBSTtJWnFSdkQsU0FBUzYwQyxjQUFjdnNDLEtBQU1DLEtBQU1FLEtBQU1DO01BQ3ZDLFVBQVVILFNBQVNFLFVBQVVDLE1BQzdCLFFBQ0Y7SUNtRkEsU0FBU29zQyxtQkFBbUI5ckMsR0FBRy9MLEVBQUV1QjtNQUMvQjtPQUFNLEVBQUU7T0FDQTtRQUFFLHVCQUF1QnZCLEVBQUVHLFdBQVc0TCxZQUFZeEssRUFBRXdLLFNBQVNBO01BQ3JFLElBQVcsSUFBRmhLLElBQU9BLElBQUkrMUMsZ0JBQWlCLzFDO09BQUssQ0FDeEMsUUFBUUEsS0FBSysxQyxTQUFTLzFDO1FBQ3RCLFFBQVFBLFNBQU8rMUMsU0FBUy8xQztRQUN4QixRQUFRQSxTQUFPKzFDLFNBQVMvMUM7UUFDeEIsUUFBUUEsU0FBTysxQyxTQUFTLzFDO01BRTFCLFFBQ0Y7SUE2QkEsU0FBU2cyQyxrQkFBa0JqMkM7TUFDekIsa0RBQ0Y7SWNyZUEsU0FBU2syQztNQUNQLElBQUlDLEdBQ0F4NEMscUJBQXFCQTtNQUN6QixPQUFPLDZCQUE0Qix3QkFDckM7STNCcU9BLFNBQVN5NEMsdUJBQXdCbDRDLEVBQUdHLEdBQUssT0FBTyxjQUFjQSxFQUFHO0ltQnNGakUsU0FBU2c0QyxlQUFlamdDLElBQ3RCLE9BQU9BLFNBQ1Q7SVczVEEsU0FBU2tnQyw2QkFBZ0MsVUFBWTtJRytDckQsU0FBU0MsZUFBZ0J0b0IsTUFBT0MsTUFBT3NvQjtNQUNyQyxHQUFLdG9CLGFBQWVBLFNBQVNELGlCQUFtQjtNQUNoRCxNQUFNQyxhQUFTc29CO01BQVEsUUFDekI7STNCZ0VBLFNBQVNDLGlCQUFpQkMsR0FBSUMsR0FBSUMsSUFDaEMsUUFDRjtJTHVhQSxTQUFTQyx3QkFBd0J0eEMsR0FBSUU7TUFDbkMsT0FBTyxxQkFBcUJBLEdBQUdGLEdBQ2pDO0lpQndHQSxTQUFTdXhDLG1CQUFtQnRoQztNQUkxQixJQUFJLE9BQU9BO01BQ1gsSUFBUyxLQUFFLFVBQ0gsSUFBRTtNQUVWLEdBQUksU0FBU0MsU0FBUyxTQUFTQyxRQUFRLFNBQVMsY0FBZTtNQUgvRCxJQU1JcWhDLE1BQVEsYUFBYTtNQUN6QixJQUFXLElBQUZuMkMsSUFBT0EsS0FBS20yQyxNQUFPbjJDO09BQUssQ0FDL0IsR0FBRyxLQUFLNlUsU0FBUzdVLFdBQVk7UUFDN0IsSUFBTyxHQUFFLFFBQ0gsRUFBRSxPQUFPLFVBQVVvMkMsR0FBSXAyQztRQUM3QixHQUFHLEtBQUs2VSxNQUFPLElBQUk7UUFGbkIsSUFHSW5YLEVBQUksT0FBTyxTQUFTOEQsRUFBR3hCO1FBQzNCLEdBQUksU0FBU3RDLEdBQUk7TUFJbkIsUUFDRjtJTnRuQkEsU0FBUzI0QyxjQUFjaC9CLElBQUszQixJQUFLekMsT0FDL0IsU0FBU3lDLE9BQU96QyxNQUNoQixRQUNGO0lNL0NBLFNBQVNxakMsVUFBVXhyQztNQUNqQjs7aUJBQ2dCazNCO21CQUNFdUo7WUFDUG5GO2VBQ0dtTDtNQUVkLFFBQVM7SUx5RlgsU0FBU2dGLHFCQUFxQjV1QjtNQUM1QixHQUFHQSwyQkFDRCxPQUFPQSwwQkFDWDtJRXFiQSxTQUFTNnVCLG1CQUFvQjdyQyxPQUFPdEw7TUFDbEM7T0FBUSxLQUFJQSxlQUFlQSxlQUFlQSxjQUFhQTtPQUNqRCxFQUFFLHFCQUFxQmdOO01BQzdCLGVBQWUxQixPQUFPbE47TUFDdEIsUUFDRjtJUzNmQSxTQUFTZzVDLGtCQUFrQjE0QyxJQUFJVDtNQUM3QixJQUFNLEVBQUVBLFNBQ0YsTUFBTWtKLE1BQU03STtNQUNsQixPQUFPSTtNQUNQLElBQVUsSUFBRnNCLElBQU9BLElBQUkxQixFQUFHMEIsSUFBTSxFQUFFQSxLQUFLL0IsRUFBRStCO01BQ3JDLE9BQU9ELENBQ1Q7SVQrSEEsU0FBU3MzQyxxQkFBcUIvckM7TUFDNUIsSUFBSU4sS0FBT0YsaUJBQWlCUSxRQUM1QixPQUFPLGtCQUNUO0llN0pBLFNBQVNnc0M7TUFDUDsrREFDRjtJekIyQ0EsU0FBU0Msd0JBQXlCdDVDLEVBQUcrcEMsS0FBTXdQO01BQ3pDLEtBQUssU0FBU3Y1QztPQUFJLENBQ2hCLEdBQUksTUFBTUEsR0FBSSxPQUFPO1FBQ3JCLE9BQU8sd0JBQTBCQTtNQUVuQyxJQUFJa0IsS0FBUWxCLGNBQVVBLE9BQU02UyxXQUFhN1M7TUFDekMsR0FBR2tCLEtBQU0sTUFBS2xCO01BRGQsSUFFSTRTO01BQ0osR0FBSTVTO09BQVE7O09BQ1AsR0FBSUE7UUFBTyxNQUNQQSxTQUFTNFMsYUFBYyxDQUFFLE9BQVE7O1FBQ25DLE1BQ0U1UyxPQUFRLENBQUUsT0FBUTtNQVAzQixJQVNhLFNBQUU0UyxlQUNGO01BQ2IsR0FBSTFSO09BQU07O09BQ0wsT0FDSXE0QztpQkFDWSxlQUFnQjtpQkFDaEIsZUFBZ0I7aUJBQzFCO01BR1gsR0FBSXhQLGFBQWFBO09BQVcsQ0FFMUIsSUFBSTJQLElBQU0sV0FBVzNQLFVBQ3JCLElBQUksV0FBVy9wQyxJQUFJMDVDLE9BQU9BO01BdEI1QixJQXdCSUMsTUFBUTtNQUNaLEdBQUc1UDtPQUFVLENBQ1gsSUFBSTNPLElBQU07UUFDVixHQUFHQTtTQUFPLGVBQ08sZ0JBQWdCMk87O1NBRTVCLENBQ0gsSUFBSXZzQixLQUFPNGQsVUFBTTJPO1VBQ2pCLEdBQUc0UCxlQUFlbjhCO1dBQ2hCLFNBQVMsZ0JBQWdCQSxPQUFPbThCOztXQUVoQyxRQUFRLGVBQWVuOEI7TUFHN0IsT0FBTztlQUF5Qmk4QixrQkFBa0JFLGNBQWNILFdBQVcsaUJBQzdFO0llc09BLFNBQVNJLGtDQUFrQ3ZMLE1BQU9wc0M7TUFDaEQ7UUFDRSxJQUFTLFNBQU1pSCxNQUFNbWxDLFdBQ2IsSUFBRSxTQUFTajBCLGlCQUFrQmkwQjtRQUNyQyxVQUFVM3VDO1FBQ1YsSUFBVyxJQUFGcUMsSUFBT0EsSUFBSUMsSUFBS0QsSUFBSyxLQUFLQSxTQUFPcVksVUFBVXJZO1FBQ3BELE9BQU8sY0FBY0UsRUFBR21FLEtBTG5CLENBT1Q7SUYvRkEsU0FBU3l6QyxZQUFZbDJDLElBQUt5VDtNQUN4QixLQUFLLE9BQU9BO01BQ1o7T0FBUSxJQUFFLHVCQUF1QnpUO09BRXhCO09BQ0Q7T0FDRTtPQUNGO09BQ0E7T0FDQztPQUNEO09BQ0E7T0FDRTtNQUNWLE1BQU1BLElBQUl5M0IsWUFBYTtNQUN2QixNQUFPQTtPQUFPLEdBQ1R6M0IsSUFBSXkzQjtRQUFhOztRQUNmLEdBQUl6M0IsSUFBSXkzQjtTQUFhOztTQUNyQixHQUFJejNCLElBQUl5M0I7VUFBYTs7VUFDckIsR0FBSXozQixJQUFJeTNCLGVBQWV6M0IsSUFBSXkzQixZQUFhLE9BQU96M0IsSUFBSXkzQixVQUNuRDtNQUVQLEdBQUcsTUFBTSxXQUFXLENBQUMsV0FBVyxLQUFLO01BQ3JDLEtBQUt6M0IsSUFBSXkzQixlQUFhejNCLElBQUl5M0IsWUFBV0E7T0FDbkMsYUFBUzJlLFVBQVVwMkMsSUFBSXkzQjtNQUN6QixPQUFPejNCLElBQUl5M0I7OztpQkFDbUI7aUJBQ3BCLFNBQVUsR0FBRzRlLElBQUssY0FBZTtpQkFDakMsU0FBVSxHQUFHQSxJQUFLLGNBQWU7aUJBQ2pDLFVBQVcsR0FBR0EsSUFBSyxjQUFlO2lCQUNsQyxVQUFXLEdBQUdBLElBQUssY0FBZSxRQUFTO2dCQUVuRCx1Q0FBdUNyMkM7TUFFekMsR0FBSThXLElBQUs7TUEvQlQsSUFnQ0lsUyxJQUFNLFlBQVlpSDtNQUN0QixHQUFJc3FDLFVBQVcsTUFDUDtNQWxDUixJQW9DSXQ4QixLQUFPalY7TUFDWCxHQUFJMHhDO09BQVksR0FDWHgvQjtRQUFLLENBQ04sTUFBTXZaLE9BQU9nNUMsU0FBUzN4QyxJQUN0QixLQUFLQSxhQUFXd3hDLE9BQVEsTUFBTXh4QyxNQUFNMHhDOztRQUMvQixDQUNMLE1BQU0vNEMsT0FBT2c1QyxTQUFTM3hDLElBQ3RCLEtBQUtBLGFBQVd3eEMsT0FBUSxNQUFNRSxNQUFNMXhDOztPQUVqQyxDQUNMLElBQUk0eEMsSUFBTWo1QyxPQUFPZzVDO1FBQ2pCLEtBQUszeEMsYUFBVzR4QyxhQUFXSixPQUFRLE1BQU1FLE1BQU0xeEM7UUFDL0MsTUFBTTR4QyxNQUFNNXhDO01BRWQsT0FBTyx1QkFBdUJBLElBQ2hDO0lBbEZBLFNBQVM2eEMsY0FBY2hqQztNQUNyQixLQUFLLE9BQU9BO01BQ1osS0FBSSxnQkFBZ0JBO09BQUssb0JBQ0g7TUFFdEI7T0FBUyxLQUFFO09BQ0osR0FBRSxPQUFPaWpDO09BQ1QsR0FBRSxzQkFBc0JBO09BQ3pCLEVBQUUsd0JBQXdCeDVDLEdBQUlFO01BQ3BDLE9BQU9mLENBQ1Q7SUF5bkJBLFNBQVNzNkMsVUFBVWxqQztNQUVqQixPQUFPLE9BQU9BLFlBQVksNEJBQzVCO0lUL3FCQSxTQUFTbWpDLG1CQUFtQm4xQztNQUMxQixJQUFJSixLQUFPLGtCQUFrQkk7TUFDN0IsS0FBS0o7T0FBc0I7TUFHM0IsT0FBTyxxQkFBcUJBLGVBQzlCO0lxQnZMQSxTQUFTdzFDLHdCQUEyQixRQUFVO0lwQmtKOUMsU0FBU0MsY0FBZTM0QyxHQUN0QixPQUFPa2lCLFNBQ1Q7SUFvSUEsU0FBUzAyQiw4QkFBOEIsUUFBUTtJU3FNL0MsU0FBU0MsYUFBYXppQyxHQUFJblYsR0FDeEIsUUFBUUEsR0FDUixRQUNGO0lkcFRBLFNBQVM2M0MsZ0JBQWlCNTZDO01BQ3hCLEdBQUksU0FBVUE7T0FBSSxDQUNoQixJQUFJcVcsUUFBU3JXO1FBQ2IsSUFBSSxTQUFTQTtRQURiLElBRU0sRUFBRSxXQUFZQSxHQUNkLEVBQUVBLElBQUkrQjtRQUNaLEdBQUlzVSxJQUFLLENBQUUsTUFBS3RVLEVBQUcsTUFBS0U7UUFDeEIsVUFBV0EsRUFBR0Y7TUFFaEIsR0FBSSxNQUFPL0IsR0FBSSxVQUFXZ2UsSUFBS0E7TUFDL0IsY0FBYWhlLEVBQUdBLEVBQ2xCO0lXcEtBLFNBQVM2NkMsY0FDUCwwQkFDRjtJWDBNQSxTQUFTQyxtQkFBb0I5NkMsRUFBR3VCO01BQzlCLEdBQUl2QixNQUFNdUIsRUFBRztNQUNiLEdBQUl2QixJQUFJdUIsRUFBRztNQUNYLEdBQUl2QixJQUFJdUIsRUFBRztNQUNYLEdBQUl2QixNQUFNQSxFQUFHO01BQ2IsR0FBSXVCLE1BQU1BLEVBQUc7TUFDYixRQUNGO0lhdkVBLFNBQVN3NUMsdUJBQXVCM2pDLEdBQUkrRDtNQUNsQyxPQUFPLFNBQVMsT0FBTy9ELElBQUssY0FBYytELElBQzVDO0lqQnFMQSxTQUFTNi9CLGtCQUFrQjc2QyxFQUFFNEIsRUFBRWk4QixLQUM3QixPQUFPLGlCQUFpQjc5QixFQUFFNEIsRUFBRWk4QixJQUM5QjtJb0JsVkEsU0FBU2lkLGtCQUFrQkMsT0FBUUMsSUFBS3JqQixJQUFLdjFCO01BRTNDO09BQVk7T0FRSDtPQUNLO09BQ0o7T0FDUTtPQUNQO09BRUk7T0FDTztPQUNKO09BQ0E7T0FDVTtPQUNKO09BRVI7T0FDQTtPQUNTO09BQ0Y7T0FDTDtPQUNBO09BQ0E7T0FDTDtPQUNNO09BQ0Y7T0FDTDtPQUNLO09BQ0c7T0FDVDtPQUNHO09BQ0U7T0FHSztPQUNBO09BQ1Q7T0FDQTtPQUNHO09BQ0Q7T0FDQztPQUNBO09BQ0E7T0FDRztPQUNKO09BQ0E7T0FFTTtPQUNBO01BR3BCLFNBQVNzN0MsSUFBSTc5QztRQUNYLElBQUlHLEVBQUksdUJBQXVCSDtRQUMvQixpQkFBa0JHLElBQU0sc0JBQXNCQSxHQUNoRDtNQUVBLFNBQVMyOUMsV0FBV0MsTUFBT3BmO1FBRXpCLElBQUkzeEIsSUFBTSx3QkFBd0Ird0M7UUFDbEMsR0FBSS93QyxpQkFDRjtRQUNGLE9BQU8sa0JBQWtCMnhCLE9BQzNCO01BRUEsU0FBU3FmLFlBQVkzekIsTUFBTzR6QjtRQUUxQixJQUFJQyxNQUFPNWdDO1FBQ1gsR0FBSTJnQyxlQUFlLzBDO1NBQU8sQ0FDeEIsUUFBUSxXQUFXZ3lDLE9BQU8wQyxpQkFBa0JLO1VBQzVDLFVBQVdBO1dBQ1QsWUFBWUE7O1dBQ1QsVUFBV0E7WUFDZCxPQUFPQTs7WUFDSixHQUFJQSxrQkFBa0JoN0M7YUFDekIsT0FBTyx1QkFBdUJnN0M7O2FBRTlCO1VBQ0YsZUFBZTV6QiwwQkFBMEI2ekIsY0FBYzVnQzs7U0FDbEQsQ0FDTCxRQUFRLFdBQVc0OUIsT0FBT3lDLGlCQUFrQk07VUFDNUMsZUFBZTV6QiwwQkFBMEI2ekIsT0FFN0M7TUFFQSxLQUFLaEQ7T0FBYyxDQUNqQixnQkFBZ0IsZUFBZ0JBLE9BQU9pQztRQUN2QyxnQkFBZ0IsZUFBZ0JqQyxPQUFPbUM7UUFDdkMsZUFBZ0IsZUFBZ0JuQyxPQUFPd0M7UUFDdkMsZ0JBQWdCLGVBQWdCeEMsT0FBT29DO1FBQ3ZDLGVBQWdCLGVBQWdCcEMsT0FBT3VDO1FBQ3ZDLGFBQWdCLGVBQWdCdkMsT0FBT2dDO1FBQ3ZDLGFBQWdCLGVBQWdCaEMsT0FBTytCO1FBQ3ZDLGdCQUFnQixlQUFnQi9CLE9BQU9xQztRQUN2QyxlQUFnQixlQUFnQnJDLE9BQU9rQztNQUd6QztPQUFRO09BQUtsOUM7T0FBRzR1QztPQUFJcVA7T0FBSUM7T0FHakIsR0FBRWpELElBQUl5QjtPQUNILE1BQUV6QixJQUFJMEI7T0FDSixRQUFFMUIsSUFBSTJCO01BRWxCO01BQUs7T0FBUztPQUNQLE9BQU9obEI7Z0JBRVYsVUFDQTs7VUFJQSxJQUFJb2pCLGNBQWM3d0I7VUFDbEIsR0FBSW5xQixPQUFRLENBQUUsTUFBTXM3QyxPQUFRO1VBQzVCLEdBQUlMLElBQUlrQixvQkFBcUIsQ0FBRSxNQUFNZixVQUFXO1VBQ2hELE1BQU1HO1VBQ047O1VBSUEsR0FBSWw1QyxlQUFlMkc7V0FBTyxDQUN4QixJQUFJbXpDLGlCQUFpQm5CLE9BQU84QixrQkFBa0J6NkM7WUFDOUMsSUFBSSs1QyxZQUFZLzVDOztXQUNYLENBQ0wsSUFBSTg1QyxpQkFBaUJuQixPQUFPNkIsa0JBQWtCeDZDO1lBQzlDLElBQUkrNUM7VUFFTixHQUFJOWlDLGtCQUFtQixZQUFhNlEsTUFBTzluQjs7VUFJM0MsS0FBSzI0QyxjQUFjN3dCO1VBQ25CLEtBQUt5a0IsS0FBS3FNLElBQUlrQjtVQUNkO1lBQUl2Tjs7OztZQUFXcVA7Ozs7WUFBV0E7O1lBQU1qRCxPQUFPc0M7O1lBQ25DdEMsYUFBYWlEOztZQUFPaEQsSUFBSWtCO1dBQWdCLENBQzFDLE1BQU0zcUMsTUFBTztVQUVmLEtBQUt3cEMsY0FBYzd3QjtVQUNuQixLQUFLeWtCLEtBQUtxTSxJQUFJa0I7VUFDZDtZQUFJdk47Ozs7WUFBV3FQOzs7O1lBQVdBOztZQUFNakQsT0FBT3NDOztZQUNuQ3RDLGFBQWFpRDs7WUFBT2hELElBQUlrQjtXQUFnQixDQUMxQyxJQUFJbkIsYUFBYWlELElBQ2pCLE1BQU0zQyxPQUFRO1VBRWhCLEdBQUk4QyxhQUFjLENBQ2hCLE1BQU14QyxvQkFDTjs7VUFLRixHQUFJd0M7V0FBYSxDQUNmO1lBQ0E7YUFBUyxDQUNQLFNBQVNuRCxJQUFJWSxhQUFhc0M7Y0FDMUIsS0FBS25ELGNBQWNrRDtjQUNuQixLQUFLdFAsS0FBS3NNO2NBQ1Y7Z0JBQUl0TTs7OztnQkFBV3FQOzs7O2dCQUFXQTs7Z0JBQU1qRCxPQUFPc0M7O2dCQUNuQ3RDLGFBQWFpRDs7Z0JBQU8vQztlQUFTLENBQy9CLEdBQUk1aEMsa0JBQ0YsNkJBQTZCNGtDO2dCQUMvQixNQUFNN0M7Z0JBQWU7O2VBQ2hCLENBQ0wsR0FBSS9oQyxrQkFDRiwwQkFBMEI0a0M7Z0JBQzVCLEdBQUlDLE1BQU1sRCxJQUFJaUI7aUJBQWdCLENBQzVCLEdBQUk1aUMsa0JBQ0Y7a0JBQ0YsT0FBT2tpQztnQkFHVDs7V0FHQyxDQUNMLEdBQUlQLElBQUlrQixvQkFDTixPQUFPWDtZQUNULEdBQUlsaUMsa0JBQ0Y7WUFDRixJQUFJNmlDO1lBQ0osTUFBTWhCO1lBQU07Z0JBSWQsSUFBSWdCLHFCQUNKLEdBQUlpQyxZQUFhOztVQUdqQixHQUFJOWtDO1dBQ0YsZUFBZTZRLDhCQUE4QjZ3QixhQUFhaUQ7VUFDNUQsUUFBUWpELGFBQWFpRDtVQUNyQjtVQUNBLEdBQUlFLE1BQU1sRCxJQUFJZ0IsZUFBZ0IsQ0FDNUIsTUFBTVIsY0FDTjs7VUFLRixJQUFJSSxhQUFhc0MsVUFBVWgwQjtVQUMzQixJQUFJMnhCLGFBQWFxQyxVQUFVbEQsSUFBSW1CO1VBQy9CLElBQUlMLHNCQUFzQm9DLFVBQVVsRCxJQUFJb0I7VUFDeEMsSUFBSUwsb0JBQW9CbUMsVUFBVWxELElBQUlxQjtVQUN0QyxNQUFNbkI7VUFDTjs7VUFHQSxHQUFJN2hDO1dBQ0YsZUFBZTZRLDhCQUE4Qm5xQjtVQUMvQyxJQUFJNkksRUFBSW15QyxXQUFXaDdDO1VBQ25CLElBQUl1OEMsV0FBVzRCO1VBQ2YsSUFBSTFCLG1CQUFtQno4QztVQUN2QixJQUFJdzhDLGdCQUFnQjN6QztVQUNwQixLQUFLczFDLEtBQUt0MUM7VUFDVixJQUFJbXlDLFdBQVdoN0M7VUFDZixTQUFTaTdDLElBQUlZLGFBQWFzQztVQUMxQixLQUFLbkQsY0FBY255QztVQUNuQixLQUFLK2xDLEtBQUtzUDtVQUNWO1lBQUl0UDs7OztZQUFXcVA7Ozs7WUFBV0E7O1lBQU1qRCxPQUFPc0M7O1lBQ25DdEMsYUFBYWlEOztZQUFPQztXQUN0QixRQUFRbEQsYUFBYWlEOztXQUVyQixRQUFRakQsYUFBYW55QztVQUN2QixHQUFJczFDLE1BQU1sRCxJQUFJZ0IsZUFBZ0IsQ0FDNUIsTUFBTVAsY0FDTjtnQkFLRixNQUFNQyx3QkFDTjs7VUFHQSxJQUFJRSxhQUFhc0MsVUFBVWgwQjtVQUMzQixJQUFJMnhCLGFBQWFxQyxVQUFVOTdDO1VBQzNCLElBQUlnOEMsSUFBTXBELElBQUlzQjtVQUNkLElBQUlQLG9CQUFvQm1DLFVBQVVsRCxJQUFJZSxvQkFBb0JxQztVQUMxRCxHQUFJRixLQUFLRTtXQUFLLElBRVJ0QyxzQkFBc0JvQzs7V0FBVWxELElBQUllLG9CQUFvQnFDO1VBRTlELE1BQU1sRDtVQUFNO2lCQUdaLE9BQU9LO01BSVgsSUFBSWtCLFVBQVV5QjtNQUNkLElBQUl4QixhQUFheHlCO01BQ2pCLElBQUl5eUIsZUFBZXdCO01BQ25CLE9BQU8vMUMsR0FDVDtJRGhLQSxTQUFTaTJDLHdCQUF3Qmh4QyxNQUMvQixRQUNGO0lJN0dBLFNBQVNpeEMsa0JBQW1CeitDLEVBQUd1QjtNQUM3QixVQUFXQSxpQkFBaUIsQ0FBRSxRQUFRQSxFQUFHO01BQ3pDLEdBQUlBLE1BQVEsQ0FBRSxRQUFRQSxNQUFPO01BQzdCLElBQUlRLEVBQUlSO01BQVUsTUFBT1EsSUFBSyxFQUFFQSxLQUFLUixFQUFFUTtNQUFJLFFBQzdDO0lTa0VBLFNBQVMyOEMsZ0JBQWdCM3VCLE1BQU8zWCxJQUFLcFcsSUFBS2U7TUFDeEMsSUFBVSxJQUFGaEIsSUFBT0EsSUFBSUMsSUFBS0QsSUFBSSxNQUNwQnFXLE1BQUlyVyxTQUFPZ0IsRUFFbkIsUUFDRjtJekIrSkEsU0FBUzQ3QyxlQUFldjVDLEtBQU04ckI7TUFDNUIsSUFBSWxzQixLQUFPLGtCQUFrQkk7TUFDN0Isa0JBQWtCSixVQUFVa3NCO01BQzVCLFFBQ0Y7SVAwUkEsU0FBUzB0QixxQkFBcUJ2M0MsR0FBSUUsSUFBTSxXQUFTLGtCQUFrQkYsR0FBSUUsR0FBSztJQXlDNUUsU0FBU3MzQyx1QkFBdUJ4M0MsR0FBSUUsSUFDbEMsT0FBTyxvQkFBb0JBLEdBQUlGLEdBQ2pDO0lZdkxBLFNBQVN5M0MsbUJBQW1CL3ZDO01BQzFCO09BQU0sRUFBRTtPQUNGLEVBQUVBO09BQ0YsRUFBRUE7T0FDRCxHQUFFLDBCQUEwQmdSLEVBQUU5ZTtNQUNyQyxJQUFTLElBQURjLElBQUlBLElBQUVkLEVBQUVjO09BQUksSUFDVCxJQUFEaUIsSUFBSUEsSUFBRStjLEVBQUUvYztRQUFJLENBQ2xCLElBQU0sRUFBRStMLElBQUloTixPQUFLaUIsT0FDWCxFQUFFakIsS0FBR2dlLFNBQVEvYztTQUNuQixHQUFHSjtVQUFTLENBQ1YsUUFBUXlIO1dBQ1IsUUFBUUE7V0FDUixRQUFRQTtXQUNSLFFBQVFBOztVQUNILENBQ0wsUUFBUUEsU0FBU3pIO1dBQ2pCLFFBQVF5SCxTQUFTekg7V0FDakIsUUFBUXlILFNBQVN6SDtXQUNqQixRQUFReUg7TUFJZCxPQUFPMEIsRUFDVDtJRTFOQSxTQUFTZ3pDLDJCQUEyQjF4QyxPQUFPcEw7TUFDekMsSUFBSThLLEtBQU9GLGlCQUFpQlE7TUFDNUIsdUJBQXlCbE4sR0FBSSxFQUFFQSxFQUFoQjtNQUNmLFFBQ0Y7SVB1SEEsU0FBUzYrQyx1QkFBd0I1NUM7TUFDL0I7T0FBUyxZQUFVQSxpQkFBa0IsdUJBQXVCQSxNQUFNQTtPQUN6RCxLQUFFLGtCQUFrQkE7TUFDN0IsR0FBRyxtQkFBbUJKO09BQVksQ0FDaEM7U0FBUyxLQUFFLGlCQUFpQkE7U0FDbkIsSUFBRTtTQUNILFFBQU00QixXQUFXNUU7UUFDekIsWUFBWTRGLE1BQU01RjtRQUNsQixPQUFPLHFCQUFxQjRGO01BRTlCLHdCQUF3Qix1QkFBdUJ4QyxNQUNqRDtJWTVKQSxTQUFTNjVDLGlCQUFpQmovQyxHQUFLLE9BQU9BLENBQUc7SVZpS3pDLFNBQVNrL0M7TUFDUCxJQUFJL3pDLFFBQVUxTDtNQUNkLEdBQUcwTCxXQUFXQTtPQUFZOztrQkFDa0JyQixJQUFLcTFDO1dBQzdDLDhCQUE4QnIxQyxLQUM5QixlQUY4Qjs7T0FLN0IsR0FBR3JLO1FBQTRCOzttQkFDWTIvQztZQUM1QyxHQUFHQSxZQUFZLDhCQUNpQkEsWUFGRyxFQU16QztJQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOzs7Ozs7Ozs7STJCdldEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNnaEJTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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T055Y1dNLEVBQXdCO0lBMUsxQixTQzVKVHNDLGFEdVVhaEYsR0FBSSxPTTdhakJrRCxjQTdCQWQsT04wY2FwQyxFQUEwQjtJQTNLOUIsU0MzSlRpRixZRHVVWWpGLEdBQUksT003YWhCZ0QsYUE5QkFaLE9OMmNZcEMsRUFBeUI7SUE1SzVCLFNDMUpUa0YsVUR1VVU1SjtNQUF5QixPTS9hbkM0SCxjQTdCQWQsT040Y21DLDRCQUF6QjlHLEdBQTBDO0lBN0szQyxTQ3pKVDZKLFlEdVVZM0YsR0FBeUIsT01oYnJDMEQsY0E3QkFkLE9KaUJBTixVRjRiWXRDLEdBQTRDO0lBOUsvQyxTQ3hKVDRGLGNEdVVjcEY7TUFDaEIsY00vY0VvQyxPTjhjY3BDO01BQ1Esb0JNL2N0Qm9DO01OK2MrQyxxQk0vYy9DQSxPTitjMkQ7SUFoTGxELFNDdkpUaUQ7TUR3VW1CLG9CTWhkbkJqRCxXTmdkNEMscUJNaGQ1Q0EsT05nZHdEO0lBakwvQyxTQ3RKVGtELFdEMlVXNUMsR0FBSSwyQk1uZGZMLE9ObWRXSyxFQUF3QjtJQXJMMUIsU0NySlQ2QyxhRDJVYXZGLEdBQUksT014YmpCa0QsY0E1QkFiLE9Ob2RhckMsRUFBMEI7SUF0TDlCLFNDcEpUd0YsWUQyVVl4RixHQUFJLE9NeGJoQmdELGFBN0JBWCxPTnFkWXJDLEVBQXlCO0lBdkw1QixTQ25KVHlGLFVEMlVVbks7TUFBeUIsT00xYm5DNEgsY0E1QkFiLE9Oc2RtQyw0QkFBekIvRyxHQUEwQztJQXhMM0MsU0NsSlRvSyxZRDJVWWxHLEdBQXlCLE9NM2JyQzBELGNBNUJBYixPSmdCQVAsVUZ1Y1l0QyxHQUE0QztJQXpML0MsU0NqSlRtRyxjRDJVYzNGO01BQ2hCLGNNemRFcUMsT053ZGNyQztNQUNRLG9CTXpkdEJxQztNTnlkK0MscUJNemQvQ0EsT055ZDJEO0lBM0xsRCxTQ2hKVHVEO01ENFVtQixvQk0xZG5CdkQsV04wZDRDLHFCTTFkNUNBLE9OMGR3RDtJQTVML0MsU0MvSVR3RCxpQkQrVWUsY00vZGZ6RCxRTitkZSxPQ3pTZm1DLFdJdExBcEMsTUwrZDZDO0lBaE1w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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQzJuQ1NDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBMW5DSkc7Ozs7Ozs7O0tBZ0tBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7OztJRERwRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNPd0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthQVNuQk0sc0JBQXVCQztNQUN6QixPQUR5QkE7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 \ No newline at end of file diff --git a/tests/test_arithmetic/bad/division_by_zero.catala_en b/tests/test_arithmetic/bad/division_by_zero.catala_en index 3e95f05e..dae37ecb 100644 --- a/tests/test_arithmetic/bad/division_by_zero.catala_en +++ b/tests/test_arithmetic/bad/division_by_zero.catala_en @@ -33,6 +33,30 @@ scope Money: ```catala-test-inline $ catala Interpret -s Dec +[WARNING] In scope "Int", the variable "i" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_arithmetic/bad/division_by_zero.catala_en:7.10-11: +└─┐ +7 │ context i content decimal + │ ‾ + └┬ `Division_by_zero` exception management + └─ with integers +[WARNING] In scope "Dec", the variable "i" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_arithmetic/bad/division_by_zero.catala_en:17.10-11: +└──┐ +17 │ context i content decimal + │ ‾ + └┬ `Division_by_zero` exception management + └─ with decimals +[WARNING] In scope "Money", the variable "i" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_arithmetic/bad/division_by_zero.catala_en:27.10-11: +└──┐ +27 │ context i content decimal + │ ‾ + └┬ `Division_by_zero` exception management + └─ with money [ERROR] division by zero at runtime The division operator: @@ -55,6 +79,30 @@ The null denominator: ```catala-test-inline $ catala Interpret -s Int +[WARNING] In scope "Int", the variable "i" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_arithmetic/bad/division_by_zero.catala_en:7.10-11: +└─┐ +7 │ context i content decimal + │ ‾ + └┬ `Division_by_zero` exception management + └─ with integers +[WARNING] In scope "Dec", the variable "i" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_arithmetic/bad/division_by_zero.catala_en:17.10-11: +└──┐ +17 │ context i content decimal + │ ‾ + └┬ `Division_by_zero` exception management + └─ with decimals +[WARNING] In scope "Money", the variable "i" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_arithmetic/bad/division_by_zero.catala_en:27.10-11: +└──┐ +27 │ context i content decimal + │ ‾ + └┬ `Division_by_zero` exception management + └─ with money [ERROR] division by zero at runtime The division operator: @@ -77,6 +125,30 @@ The null denominator: ```catala-test-inline $ catala Interpret -s Money +[WARNING] In scope "Int", the variable "i" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_arithmetic/bad/division_by_zero.catala_en:7.10-11: +└─┐ +7 │ context i content decimal + │ ‾ + └┬ `Division_by_zero` exception management + └─ with integers +[WARNING] In scope "Dec", the variable "i" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_arithmetic/bad/division_by_zero.catala_en:17.10-11: +└──┐ +17 │ context i content decimal + │ ‾ + └┬ `Division_by_zero` exception management + └─ with decimals +[WARNING] In scope "Money", the variable "i" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_arithmetic/bad/division_by_zero.catala_en:27.10-11: +└──┐ +27 │ context i content decimal + │ ‾ + └┬ `Division_by_zero` exception management + └─ with money [ERROR] division by zero at runtime The division operator: diff --git a/tests/test_date/bad/rounding_option.catala_en b/tests/test_date/bad/rounding_option.catala_en index ec299bc0..2192df31 100644 --- a/tests/test_date/bad/rounding_option.catala_en +++ b/tests/test_date/bad/rounding_option.catala_en @@ -12,6 +12,13 @@ scope Test: ```catala-test-inline $ catala Interpret -s Test +[WARNING] In scope "Test", the variable "ambiguous" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_date/bad/rounding_option.catala_en:5.10-19: +└─┐ +5 │ context ambiguous content boolean + │ ‾‾‾‾‾‾‾‾‾ + catala: internal error, uncaught exception: Dates_calc.Dates.AmbiguousComputation diff --git a/tests/test_date/bad/rounding_option.catala_fr b/tests/test_date/bad/rounding_option.catala_fr index c69dc506..4ebe8691 100644 --- a/tests/test_date/bad/rounding_option.catala_fr +++ b/tests/test_date/bad/rounding_option.catala_fr @@ -12,6 +12,13 @@ champ d'application Test: ```catala-test-inline $ catala Interpret -s Test +[WARNING] In scope "Test", the variable "ambiguité" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_date/bad/rounding_option.catala_fr:5.11-20: +└─┐ +5 │ contexte ambiguité contenu booléen + │ ‾‾‾‾‾‾‾‾‾ + catala: internal error, uncaught exception: Dates_calc.Dates.AmbiguousComputation diff --git a/tests/test_date/bad/uncomparable_duration.catala_en b/tests/test_date/bad/uncomparable_duration.catala_en index c2320316..a4cbad79 100644 --- a/tests/test_date/bad/uncomparable_duration.catala_en +++ b/tests/test_date/bad/uncomparable_duration.catala_en @@ -42,6 +42,38 @@ scope Ge: ```catala-test-inline $ catala Interpret -s Ge +[WARNING] In scope "Lt", the variable "d" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:7.10-11: +└─┐ +7 │ context d content boolean + │ ‾ + └┬ `UncomparableDurations` exception management + └─ `<` operator +[WARNING] In scope "Le", the variable "d" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:17.10-11: +└──┐ +17 │ context d content boolean + │ ‾ + └┬ `UncomparableDurations` exception management + └─ `<=` operator +[WARNING] In scope "Gt", the variable "d" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:27.10-11: +└──┐ +27 │ context d content boolean + │ ‾ + └┬ `UncomparableDurations` exception management + └─ `<=` operator +[WARNING] In scope "Ge", the variable "d" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:37.10-11: +└──┐ +37 │ context d content boolean + │ ‾ + └┬ `UncomparableDurations` exception management + └─ `>=` operator [ERROR] Cannot compare together durations that cannot be converted to a precise number of days ┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:40.22-29: @@ -62,6 +94,38 @@ $ catala Interpret -s Ge ```catala-test-inline $ catala Interpret -s Gt +[WARNING] In scope "Lt", the variable "d" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:7.10-11: +└─┐ +7 │ context d content boolean + │ ‾ + └┬ `UncomparableDurations` exception management + └─ `<` operator +[WARNING] In scope "Le", the variable "d" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:17.10-11: +└──┐ +17 │ context d content boolean + │ ‾ + └┬ `UncomparableDurations` exception management + └─ `<=` operator +[WARNING] In scope "Gt", the variable "d" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:27.10-11: +└──┐ +27 │ context d content boolean + │ ‾ + └┬ `UncomparableDurations` exception management + └─ `<=` operator +[WARNING] In scope "Ge", the variable "d" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:37.10-11: +└──┐ +37 │ context d content boolean + │ ‾ + └┬ `UncomparableDurations` exception management + └─ `>=` operator [ERROR] Cannot compare together durations that cannot be converted to a precise number of days ┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:30.22-29: @@ -82,6 +146,38 @@ $ catala Interpret -s Gt ```catala-test-inline $ catala Interpret -s Le +[WARNING] In scope "Lt", the variable "d" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:7.10-11: +└─┐ +7 │ context d content boolean + │ ‾ + └┬ `UncomparableDurations` exception management + └─ `<` operator +[WARNING] In scope "Le", the variable "d" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:17.10-11: +└──┐ +17 │ context d content boolean + │ ‾ + └┬ `UncomparableDurations` exception management + └─ `<=` operator +[WARNING] In scope "Gt", the variable "d" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:27.10-11: +└──┐ +27 │ context d content boolean + │ ‾ + └┬ `UncomparableDurations` exception management + └─ `<=` operator +[WARNING] In scope "Ge", the variable "d" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:37.10-11: +└──┐ +37 │ context d content boolean + │ ‾ + └┬ `UncomparableDurations` exception management + └─ `>=` operator [ERROR] Cannot compare together durations that cannot be converted to a precise number of days ┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:20.22-29: @@ -102,6 +198,38 @@ $ catala Interpret -s Le ```catala-test-inline $ catala Interpret -s Lt +[WARNING] In scope "Lt", the variable "d" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:7.10-11: +└─┐ +7 │ context d content boolean + │ ‾ + └┬ `UncomparableDurations` exception management + └─ `<` operator +[WARNING] In scope "Le", the variable "d" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:17.10-11: +└──┐ +17 │ context d content boolean + │ ‾ + └┬ `UncomparableDurations` exception management + └─ `<=` operator +[WARNING] In scope "Gt", the variable "d" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:27.10-11: +└──┐ +27 │ context d content boolean + │ ‾ + └┬ `UncomparableDurations` exception management + └─ `<=` operator +[WARNING] In scope "Ge", the variable "d" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:37.10-11: +└──┐ +37 │ context d content boolean + │ ‾ + └┬ `UncomparableDurations` exception management + └─ `>=` operator [ERROR] Cannot compare together durations that cannot be converted to a precise number of days ┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:10.22-29: diff --git a/tests/test_default/bad/conflict.catala_en b/tests/test_default/bad/conflict.catala_en index 34b58e05..0d3ca38b 100644 --- a/tests/test_default/bad/conflict.catala_en +++ b/tests/test_default/bad/conflict.catala_en @@ -11,6 +11,13 @@ scope A: ```catala-test-inline $ catala Interpret -s A +[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_default/bad/conflict.catala_en:5.10-11: +└─┐ +5 │ context x content integer + │ ‾ + └─ Article [ERROR] There is a conflict between multiple valid consequences for assigning the same variable. This consequence has a valid justification: diff --git a/tests/test_default/bad/empty.catala_en b/tests/test_default/bad/empty.catala_en index a28b68cb..8161d2b8 100644 --- a/tests/test_default/bad/empty.catala_en +++ b/tests/test_default/bad/empty.catala_en @@ -11,6 +11,20 @@ scope A: ```catala-test-inline $ catala Interpret -s A +[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_default/bad/empty.catala_en:5.10-11: +└─┐ +5 │ context x content integer + │ ‾ + └─ Article +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_default/bad/empty.catala_en:6.10-11: +└─┐ +6 │ context y content boolean + │ ‾ + └─ Article [ERROR] This variable evaluated to an empty term (no rule that defined it applied in this situation) ┌─⯈ tests/test_default/bad/empty.catala_en:6.10-11: diff --git a/tests/test_default/bad/empty_with_rules.catala_en b/tests/test_default/bad/empty_with_rules.catala_en index be602163..7094bea9 100644 --- a/tests/test_default/bad/empty_with_rules.catala_en +++ b/tests/test_default/bad/empty_with_rules.catala_en @@ -14,6 +14,13 @@ scope A: ```catala-test-inline $ catala Interpret -s A +[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_default/bad/empty_with_rules.catala_en:5.10-11: +└─┐ +5 │ context x content integer + │ ‾ + └─ Article [ERROR] This variable evaluated to an empty term (no rule that defined it applied in this situation) ┌─⯈ tests/test_default/bad/empty_with_rules.catala_en:5.10-11: diff --git a/tests/test_enum/bad/missing_case.catala_en b/tests/test_enum/bad/missing_case.catala_en index 4f98ef14..08198a63 100644 --- a/tests/test_enum/bad/missing_case.catala_en +++ b/tests/test_enum/bad/missing_case.catala_en @@ -18,6 +18,20 @@ scope A: ```catala-test-inline $ catala Interpret -s A +[WARNING] In scope "A", the variable "out" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_enum/bad/missing_case.catala_en:11.10-13: +└──┐ +11 │ context out content boolean + │ ‾‾‾ + └─ Article +[WARNING] The constructor "Case3" of enumeration "E" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_enum/bad/missing_case.catala_en:7.5-10: +└─┐ +7 │ -- Case3 + │ ‾‾‾‾‾ + └─ Article [ERROR] The constructor Case3 of enum E is missing from this pattern matching ┌─⯈ tests/test_enum/bad/missing_case.catala_en:14.24-16.21: diff --git a/tests/test_exception/bad/exceptions_cycle.catala_en b/tests/test_exception/bad/exceptions_cycle.catala_en index 0aaf4378..1376fd54 100644 --- a/tests/test_exception/bad/exceptions_cycle.catala_en +++ b/tests/test_exception/bad/exceptions_cycle.catala_en @@ -20,6 +20,13 @@ scope A: ```catala-test-inline $ catala Interpret -s A +[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_exception/bad/exceptions_cycle.catala_en:5.10-11: +└─┐ +5 │ context x content integer + │ ‾ + └─ Test [ERROR] Exception cycle detected when defining x: each of these 3 exceptions applies over the previous one, and the first applies over the last ┌─⯈ tests/test_exception/bad/exceptions_cycle.catala_en:8.2-10.14: diff --git a/tests/test_exception/bad/self_exception.catala_en b/tests/test_exception/bad/self_exception.catala_en index 2455e9d3..93be5ea4 100644 --- a/tests/test_exception/bad/self_exception.catala_en +++ b/tests/test_exception/bad/self_exception.catala_en @@ -12,6 +12,13 @@ scope A: ```catala-test-inline $ catala Interpret -s A +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_exception/bad/self_exception.catala_en:5.10-11: +└─┐ +5 │ context y content integer + │ ‾ + └─ Test [ERROR] Cannot define rule as an exception to itself ┌─⯈ tests/test_exception/bad/self_exception.catala_en:9.12-18: diff --git a/tests/test_exception/bad/two_exceptions.catala_en b/tests/test_exception/bad/two_exceptions.catala_en index 49f0fe30..e5ffd953 100644 --- a/tests/test_exception/bad/two_exceptions.catala_en +++ b/tests/test_exception/bad/two_exceptions.catala_en @@ -17,6 +17,13 @@ scope A: ```catala-test-inline $ catala Interpret -s A +[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_exception/bad/two_exceptions.catala_en:5.10-11: +└─┐ +5 │ context x content integer + │ ‾ + └─ Test [ERROR] There is a conflict between multiple valid consequences for assigning the same variable. This consequence has a valid justification: diff --git a/tests/test_func/good/context_func.catala_en b/tests/test_func/good/context_func.catala_en index 00c085e5..23b6e85f 100644 --- a/tests/test_func/good/context_func.catala_en +++ b/tests/test_func/good/context_func.catala_en @@ -17,6 +17,13 @@ scope B: ```catala-test-inline $ catala Scopelang -s B +[WARNING] In scope "A", the variable "f" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_func/good/context_func.catala_en:5.10-11: +└─┐ +5 │ context f content integer depends on x content integer + │ ‾ + └─ Test let scope B (b: bool|input) = let a.f : integer → integer = λ (x: integer) → ⟨b && x >! 0 ⊢ x -! 1⟩; @@ -25,6 +32,13 @@ let scope B (b: bool|input) = ```catala-test-inline $ catala Dcalc -s A +[WARNING] In scope "A", the variable "f" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_func/good/context_func.catala_en:5.10-11: +└─┐ +5 │ context f content integer depends on x content integer + │ ‾ + └─ Test let A = λ (A_in: A_in {"f_in": integer → integer}) → let f : integer → integer = A_in."f_in" in @@ -36,6 +50,13 @@ let A = ```catala-test-inline $ catala Dcalc -s B +[WARNING] In scope "A", the variable "f" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_func/good/context_func.catala_en:5.10-11: +└─┐ +5 │ context f content integer depends on x content integer + │ ‾ + └─ Test let B = λ (B_in: B_in {"b_in": bool}) → let b : bool = B_in."b_in" in diff --git a/tests/test_io/bad/redefining_input.catala_en b/tests/test_io/bad/redefining_input.catala_en index 11dd155f..07dc743c 100644 --- a/tests/test_io/bad/redefining_input.catala_en +++ b/tests/test_io/bad/redefining_input.catala_en @@ -9,6 +9,13 @@ scope A: ``` ```catala-test-inline $ catala Typecheck +[WARNING] In scope "A", the variable "a" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_io/bad/redefining_input.catala_en:5.8-9: +└─┐ +5 │ input a content integer + │ ‾ + └─ Test [ERROR] It is impossible to give a definition to a scope variable tagged as input. Incriminated variable: diff --git a/tests/test_io/bad/using_non_output.catala_en b/tests/test_io/bad/using_non_output.catala_en index 66d88046..2b3114b8 100644 --- a/tests/test_io/bad/using_non_output.catala_en +++ b/tests/test_io/bad/using_non_output.catala_en @@ -15,6 +15,13 @@ scope B: ``` ```catala-test-inline $ catala Typecheck +[WARNING] In scope "A", the variable "a" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_io/bad/using_non_output.catala_en:5.11-12: +└─┐ +5 │ internal a content integer + │ ‾ + └─ Test [ERROR] The variable a.a cannot be used here, as it is not part of subscope a's results. Maybe you forgot to qualify it as an output? Incriminated variable usage: diff --git a/tests/test_proof/bad/array_length-empty.catala_en b/tests/test_proof/bad/array_length-empty.catala_en index 34f5fe28..109bfc0b 100644 --- a/tests/test_proof/bad/array_length-empty.catala_en +++ b/tests/test_proof/bad/array_length-empty.catala_en @@ -12,6 +12,13 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/array_length-empty.catala_en:6.10-11: +└─┐ +6 │ context y content boolean + │ ‾ + └─ Test [ERROR] [A.y] This variable might return an empty error: ┌─⯈ tests/test_proof/bad/array_length-empty.catala_en:6.10-11: └─┐ diff --git a/tests/test_proof/bad/array_length-overlap.catala_en b/tests/test_proof/bad/array_length-overlap.catala_en index 7a1b2df1..79d00a3b 100644 --- a/tests/test_proof/bad/array_length-overlap.catala_en +++ b/tests/test_proof/bad/array_length-overlap.catala_en @@ -13,6 +13,13 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/array_length-overlap.catala_en:6.10-11: +└─┐ +6 │ context y content boolean + │ ‾ + └─ Test [ERROR] [A.y] At least two exceptions overlap for this variable: ┌─⯈ tests/test_proof/bad/array_length-overlap.catala_en:6.10-11: └─┐ diff --git a/tests/test_proof/bad/dates_get_year-empty.catala_en b/tests/test_proof/bad/dates_get_year-empty.catala_en index 4c112ba1..39f33a8b 100644 --- a/tests/test_proof/bad/dates_get_year-empty.catala_en +++ b/tests/test_proof/bad/dates_get_year-empty.catala_en @@ -15,6 +15,13 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/dates_get_year-empty.catala_en:6.10-11: +└─┐ +6 │ context y content boolean + │ ‾ + └─ Test [ERROR] [A.y] This variable might return an empty error: ┌─⯈ tests/test_proof/bad/dates_get_year-empty.catala_en:6.10-11: └─┐ diff --git a/tests/test_proof/bad/dates_get_year-overlap.catala_en b/tests/test_proof/bad/dates_get_year-overlap.catala_en index 3495d748..52783c32 100644 --- a/tests/test_proof/bad/dates_get_year-overlap.catala_en +++ b/tests/test_proof/bad/dates_get_year-overlap.catala_en @@ -15,6 +15,13 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/dates_get_year-overlap.catala_en:6.10-11: +└─┐ +6 │ context y content boolean + │ ‾ + └─ Test [ERROR] [A.y] At least two exceptions overlap for this variable: ┌─⯈ tests/test_proof/bad/dates_get_year-overlap.catala_en:6.10-11: └─┐ diff --git a/tests/test_proof/bad/dates_simple-empty.catala_en b/tests/test_proof/bad/dates_simple-empty.catala_en index e9a83840..e038a7fc 100644 --- a/tests/test_proof/bad/dates_simple-empty.catala_en +++ b/tests/test_proof/bad/dates_simple-empty.catala_en @@ -14,6 +14,13 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/dates_simple-empty.catala_en:6.10-11: +└─┐ +6 │ context y content boolean + │ ‾ + └─ Test [ERROR] [A.y] This variable might return an empty error: ┌─⯈ tests/test_proof/bad/dates_simple-empty.catala_en:6.10-11: └─┐ diff --git a/tests/test_proof/bad/dates_simple-overlap.catala_en b/tests/test_proof/bad/dates_simple-overlap.catala_en index 845755ba..fb3298d9 100644 --- a/tests/test_proof/bad/dates_simple-overlap.catala_en +++ b/tests/test_proof/bad/dates_simple-overlap.catala_en @@ -15,6 +15,13 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/dates_simple-overlap.catala_en:6.10-11: +└─┐ +6 │ context y content boolean + │ ‾ + └─ Test [ERROR] [A.y] At least two exceptions overlap for this variable: ┌─⯈ tests/test_proof/bad/dates_simple-overlap.catala_en:6.10-11: └─┐ diff --git a/tests/test_proof/bad/duration-empty.catala_en b/tests/test_proof/bad/duration-empty.catala_en index 47586493..af3c2456 100644 --- a/tests/test_proof/bad/duration-empty.catala_en +++ b/tests/test_proof/bad/duration-empty.catala_en @@ -12,6 +12,13 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/duration-empty.catala_en:6.10-11: +└─┐ +6 │ context y content boolean + │ ‾ + └─ Test [ERROR] [A.y] This variable might return an empty error: ┌─⯈ tests/test_proof/bad/duration-empty.catala_en:6.10-11: └─┐ diff --git a/tests/test_proof/bad/duration-overlap.catala_en b/tests/test_proof/bad/duration-overlap.catala_en index 4ba31115..f46405ff 100644 --- a/tests/test_proof/bad/duration-overlap.catala_en +++ b/tests/test_proof/bad/duration-overlap.catala_en @@ -13,6 +13,13 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/duration-overlap.catala_en:6.10-11: +└─┐ +6 │ context y content boolean + │ ‾ + └─ Test [ERROR] [A.y] At least two exceptions overlap for this variable: ┌─⯈ tests/test_proof/bad/duration-overlap.catala_en:6.10-11: └─┐ diff --git a/tests/test_proof/bad/enums-empty.catala_en b/tests/test_proof/bad/enums-empty.catala_en index 36b39796..f6c679e7 100644 --- a/tests/test_proof/bad/enums-empty.catala_en +++ b/tests/test_proof/bad/enums-empty.catala_en @@ -23,6 +23,20 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/enums-empty.catala_en:15.10-11: +└──┐ +15 │ context x content integer + │ ‾ + └─ Test +[WARNING] The constructor "C" of enumeration "T" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/enums-empty.catala_en:7.6-7: +└─┐ +7 │ -- C content boolean + │ ‾ + └─ Test [ERROR] [A.x] This variable might return an empty error: ┌─⯈ tests/test_proof/bad/enums-empty.catala_en:15.10-11: └──┐ diff --git a/tests/test_proof/bad/enums-nonbool-empty.catala_en b/tests/test_proof/bad/enums-nonbool-empty.catala_en index 6b8fd5ad..3dce3679 100644 --- a/tests/test_proof/bad/enums-nonbool-empty.catala_en +++ b/tests/test_proof/bad/enums-nonbool-empty.catala_en @@ -21,6 +21,20 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/enums-nonbool-empty.catala_en:13.10-11: +└──┐ +13 │ context x content integer + │ ‾ + └─ Test +[WARNING] The constructor "C" of enumeration "T" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/enums-nonbool-empty.catala_en:5.6-7: +└─┐ +5 │ -- C content boolean + │ ‾ + └─ Test [ERROR] [A.x] This variable might return an empty error: ┌─⯈ tests/test_proof/bad/enums-nonbool-empty.catala_en:13.10-11: └──┐ diff --git a/tests/test_proof/bad/enums-nonbool-overlap.catala_en b/tests/test_proof/bad/enums-nonbool-overlap.catala_en index bb19c9b9..a1ea7a44 100644 --- a/tests/test_proof/bad/enums-nonbool-overlap.catala_en +++ b/tests/test_proof/bad/enums-nonbool-overlap.catala_en @@ -21,6 +21,20 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/enums-nonbool-overlap.catala_en:13.10-11: +└──┐ +13 │ context x content integer + │ ‾ + └─ Test +[WARNING] The constructor "C" of enumeration "T" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/enums-nonbool-overlap.catala_en:5.6-7: +└─┐ +5 │ -- C content boolean + │ ‾ + └─ Test [ERROR] [A.x] At least two exceptions overlap for this variable: ┌─⯈ tests/test_proof/bad/enums-nonbool-overlap.catala_en:13.10-11: └──┐ diff --git a/tests/test_proof/bad/enums-overlap.catala_en b/tests/test_proof/bad/enums-overlap.catala_en index e241f823..22facd10 100644 --- a/tests/test_proof/bad/enums-overlap.catala_en +++ b/tests/test_proof/bad/enums-overlap.catala_en @@ -23,6 +23,20 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/enums-overlap.catala_en:15.10-11: +└──┐ +15 │ context x content integer + │ ‾ + └─ Test +[WARNING] The constructor "C" of enumeration "T" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/enums-overlap.catala_en:7.6-7: +└─┐ +7 │ -- C content boolean + │ ‾ + └─ Test [ERROR] [A.x] At least two exceptions overlap for this variable: ┌─⯈ tests/test_proof/bad/enums-overlap.catala_en:15.10-11: └──┐ diff --git a/tests/test_proof/bad/enums_inj-empty.catala_en b/tests/test_proof/bad/enums_inj-empty.catala_en index 57382389..fa935e10 100644 --- a/tests/test_proof/bad/enums_inj-empty.catala_en +++ b/tests/test_proof/bad/enums_inj-empty.catala_en @@ -16,6 +16,20 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/enums_inj-empty.catala_en:10.10-11: +└──┐ +10 │ context y content integer + │ ‾ + └─ Article +[WARNING] The constructor "C2" of enumeration "E" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/enums_inj-empty.catala_en:6.5-7: +└─┐ +6 │ -- C2 + │ ‾‾ + └─ Article [ERROR] [A.y] This variable might return an empty error: ┌─⯈ tests/test_proof/bad/enums_inj-empty.catala_en:10.10-11: └──┐ diff --git a/tests/test_proof/bad/enums_inj-overlap.catala_en b/tests/test_proof/bad/enums_inj-overlap.catala_en index 334f6725..7edd3a2d 100644 --- a/tests/test_proof/bad/enums_inj-overlap.catala_en +++ b/tests/test_proof/bad/enums_inj-overlap.catala_en @@ -18,6 +18,13 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/enums_inj-overlap.catala_en:10.10-11: +└──┐ +10 │ context y content integer + │ ‾ + └─ Article [ERROR] [A.y] At least two exceptions overlap for this variable: ┌─⯈ tests/test_proof/bad/enums_inj-overlap.catala_en:10.10-11: └──┐ diff --git a/tests/test_proof/bad/enums_unit-empty.catala_en b/tests/test_proof/bad/enums_unit-empty.catala_en index 91a2250b..17ff5e07 100644 --- a/tests/test_proof/bad/enums_unit-empty.catala_en +++ b/tests/test_proof/bad/enums_unit-empty.catala_en @@ -21,6 +21,13 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/enums_unit-empty.catala_en:10.10-11: +└──┐ +10 │ context y content integer + │ ‾ + └─ Article [ERROR] [A.y] This variable might return an empty error: ┌─⯈ tests/test_proof/bad/enums_unit-empty.catala_en:10.10-11: └──┐ diff --git a/tests/test_proof/bad/enums_unit-overlap.catala_en b/tests/test_proof/bad/enums_unit-overlap.catala_en index 9fe1baad..9d24d237 100644 --- a/tests/test_proof/bad/enums_unit-overlap.catala_en +++ b/tests/test_proof/bad/enums_unit-overlap.catala_en @@ -21,6 +21,13 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/enums_unit-overlap.catala_en:10.10-11: +└──┐ +10 │ context y content integer + │ ‾ + └─ Article [ERROR] [A.y] At least two exceptions overlap for this variable: ┌─⯈ tests/test_proof/bad/enums_unit-overlap.catala_en:10.10-11: └──┐ diff --git a/tests/test_proof/bad/let_in_condition-empty.catala_en b/tests/test_proof/bad/let_in_condition-empty.catala_en index bf215066..7ab21603 100644 --- a/tests/test_proof/bad/let_in_condition-empty.catala_en +++ b/tests/test_proof/bad/let_in_condition-empty.catala_en @@ -13,6 +13,13 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/let_in_condition-empty.catala_en:5.10-11: +└─┐ +5 │ context x content boolean + │ ‾ + └─ Test [ERROR] [A.x] This variable might return an empty error: ┌─⯈ tests/test_proof/bad/let_in_condition-empty.catala_en:5.10-11: └─┐ diff --git a/tests/test_proof/bad/money-empty.catala_en b/tests/test_proof/bad/money-empty.catala_en index b5251271..604fc278 100644 --- a/tests/test_proof/bad/money-empty.catala_en +++ b/tests/test_proof/bad/money-empty.catala_en @@ -16,6 +16,13 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/money-empty.catala_en:8.10-11: +└─┐ +8 │ context y content boolean + │ ‾ + └─ Test [ERROR] [A.y] This variable might return an empty error: ┌─⯈ tests/test_proof/bad/money-empty.catala_en:8.10-11: └─┐ diff --git a/tests/test_proof/bad/money-overlap.catala_en b/tests/test_proof/bad/money-overlap.catala_en index 9dbf678c..62d93850 100644 --- a/tests/test_proof/bad/money-overlap.catala_en +++ b/tests/test_proof/bad/money-overlap.catala_en @@ -17,6 +17,13 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/money-overlap.catala_en:8.10-11: +└─┐ +8 │ context y content boolean + │ ‾ + └─ Test [ERROR] [A.y] At least two exceptions overlap for this variable: ┌─⯈ tests/test_proof/bad/money-overlap.catala_en:8.10-11: └─┐ diff --git a/tests/test_proof/bad/no_vars-conflict.catala_en b/tests/test_proof/bad/no_vars-conflict.catala_en index 6dc334c1..9500bd28 100644 --- a/tests/test_proof/bad/no_vars-conflict.catala_en +++ b/tests/test_proof/bad/no_vars-conflict.catala_en @@ -17,6 +17,13 @@ scope A: ``` ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/no_vars-conflict.catala_en:8.10-11: +└─┐ +8 │ context y content integer + │ ‾ + └─ Test [ERROR] [A.y] At least two exceptions overlap for this variable: ┌─⯈ tests/test_proof/bad/no_vars-conflict.catala_en:8.10-11: └─┐ diff --git a/tests/test_proof/bad/no_vars-empty.catala_en b/tests/test_proof/bad/no_vars-empty.catala_en index 421728a1..93e193aa 100644 --- a/tests/test_proof/bad/no_vars-empty.catala_en +++ b/tests/test_proof/bad/no_vars-empty.catala_en @@ -16,6 +16,13 @@ scope A: ``` ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/no_vars-empty.catala_en:7.10-11: +└─┐ +7 │ context y content integer + │ ‾ + └─ Test [ERROR] [A.y] This variable might return an empty error: ┌─⯈ tests/test_proof/bad/no_vars-empty.catala_en:7.10-11: └─┐ diff --git a/tests/test_proof/bad/prolala_motivating_example.catala_en b/tests/test_proof/bad/prolala_motivating_example.catala_en index bd7b9244..544bb9af 100644 --- a/tests/test_proof/bad/prolala_motivating_example.catala_en +++ b/tests/test_proof/bad/prolala_motivating_example.catala_en @@ -123,6 +123,22 @@ scope Amount: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "Amount", the variable "amount" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/prolala_motivating_example.catala_en:60.10-16: +└──┐ +60 │ context amount content integer + │ ‾‾‾‾‾‾ + └┬ ProLaLa 2022 Super Cash Bonus + └─ Amount +[WARNING] In scope "Amount", the variable "correct_amount" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/prolala_motivating_example.catala_en:61.10-24: +└──┐ +61 │ context correct_amount content integer + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + └┬ ProLaLa 2022 Super Cash Bonus + └─ Amount [ERROR] [Amount.amount] This variable might return an empty error: ┌─⯈ tests/test_proof/bad/prolala_motivating_example.catala_en:60.10-16: └──┐ diff --git a/tests/test_proof/bad/rationals-empty.catala_en b/tests/test_proof/bad/rationals-empty.catala_en index 1f6416f2..8ad8f085 100644 --- a/tests/test_proof/bad/rationals-empty.catala_en +++ b/tests/test_proof/bad/rationals-empty.catala_en @@ -12,6 +12,13 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/rationals-empty.catala_en:6.10-11: +└─┐ +6 │ context y content boolean + │ ‾ + └─ Test [ERROR] [A.y] This variable might return an empty error: ┌─⯈ tests/test_proof/bad/rationals-empty.catala_en:6.10-11: └─┐ diff --git a/tests/test_proof/bad/rationals-overlap.catala_en b/tests/test_proof/bad/rationals-overlap.catala_en index 3e51333f..8ab7df7b 100644 --- a/tests/test_proof/bad/rationals-overlap.catala_en +++ b/tests/test_proof/bad/rationals-overlap.catala_en @@ -13,6 +13,13 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/rationals-overlap.catala_en:6.10-11: +└─┐ +6 │ context y content boolean + │ ‾ + └─ Test [ERROR] [A.y] At least two exceptions overlap for this variable: ┌─⯈ tests/test_proof/bad/rationals-overlap.catala_en:6.10-11: └─┐ diff --git a/tests/test_proof/bad/sat_solving.catala_en b/tests/test_proof/bad/sat_solving.catala_en index 4a345966..40774f40 100644 --- a/tests/test_proof/bad/sat_solving.catala_en +++ b/tests/test_proof/bad/sat_solving.catala_en @@ -40,6 +40,13 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "x10" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/sat_solving.catala_en:15.10-13: +└──┐ +15 │ context x10 content boolean + │ ‾‾‾ + └─ Test [ERROR] [A.x10] This variable might return an empty error: ┌─⯈ tests/test_proof/bad/sat_solving.catala_en:15.10-13: └──┐ diff --git a/tests/test_proof/bad/structs-empty.catala_en b/tests/test_proof/bad/structs-empty.catala_en index ae85a698..bdcc0c31 100644 --- a/tests/test_proof/bad/structs-empty.catala_en +++ b/tests/test_proof/bad/structs-empty.catala_en @@ -21,6 +21,13 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/structs-empty.catala_en:13.10-11: +└──┐ +13 │ context x content integer + │ ‾ + └─ Test [ERROR] [A.x] This variable might return an empty error: ┌─⯈ tests/test_proof/bad/structs-empty.catala_en:13.10-11: └──┐ diff --git a/tests/test_proof/bad/structs-overlap.catala_en b/tests/test_proof/bad/structs-overlap.catala_en index b535e1e0..ca52ae1d 100644 --- a/tests/test_proof/bad/structs-overlap.catala_en +++ b/tests/test_proof/bad/structs-overlap.catala_en @@ -21,6 +21,13 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/bad/structs-overlap.catala_en:13.10-11: +└──┐ +13 │ context x content integer + │ ‾ + └─ Test [ERROR] [A.x] At least two exceptions overlap for this variable: ┌─⯈ tests/test_proof/bad/structs-overlap.catala_en:13.10-11: └──┐ diff --git a/tests/test_proof/good/array_length.catala_en b/tests/test_proof/good/array_length.catala_en index 8931429a..669b6222 100644 --- a/tests/test_proof/good/array_length.catala_en +++ b/tests/test_proof/good/array_length.catala_en @@ -13,5 +13,12 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/good/array_length.catala_en:6.10-11: +└─┐ +6 │ context y content boolean + │ ‾ + └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/dates_get_year.catala_en b/tests/test_proof/good/dates_get_year.catala_en index bcdb0dbe..40ab8c71 100644 --- a/tests/test_proof/good/dates_get_year.catala_en +++ b/tests/test_proof/good/dates_get_year.catala_en @@ -15,5 +15,12 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/good/dates_get_year.catala_en:6.10-11: +└─┐ +6 │ context y content boolean + │ ‾ + └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/dates_simple.catala_en b/tests/test_proof/good/dates_simple.catala_en index 22eaf46b..96c4e837 100644 --- a/tests/test_proof/good/dates_simple.catala_en +++ b/tests/test_proof/good/dates_simple.catala_en @@ -15,5 +15,12 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/good/dates_simple.catala_en:6.10-11: +└─┐ +6 │ context y content boolean + │ ‾ + └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/duration.catala_en b/tests/test_proof/good/duration.catala_en index 9d0785b0..092f11b6 100644 --- a/tests/test_proof/good/duration.catala_en +++ b/tests/test_proof/good/duration.catala_en @@ -13,5 +13,12 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/good/duration.catala_en:6.10-11: +└─┐ +6 │ context y content boolean + │ ‾ + └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/enums-arith.catala_en b/tests/test_proof/good/enums-arith.catala_en index c69c2138..032cd1ee 100644 --- a/tests/test_proof/good/enums-arith.catala_en +++ b/tests/test_proof/good/enums-arith.catala_en @@ -21,5 +21,19 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/good/enums-arith.catala_en:13.10-11: +└──┐ +13 │ context x content integer + │ ‾ + └─ Test +[WARNING] The constructor "C" of enumeration "T" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_proof/good/enums-arith.catala_en:5.6-7: +└─┐ +5 │ -- C content boolean + │ ‾ + └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/enums-nonbool.catala_en b/tests/test_proof/good/enums-nonbool.catala_en index 2c89b7e4..e8d6d82a 100644 --- a/tests/test_proof/good/enums-nonbool.catala_en +++ b/tests/test_proof/good/enums-nonbool.catala_en @@ -21,5 +21,19 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/good/enums-nonbool.catala_en:13.10-11: +└──┐ +13 │ context x content integer + │ ‾ + └─ Test +[WARNING] The constructor "C" of enumeration "T" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_proof/good/enums-nonbool.catala_en:5.6-7: +└─┐ +5 │ -- C content boolean + │ ‾ + └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/enums.catala_en b/tests/test_proof/good/enums.catala_en index 64d53462..c7a75a48 100644 --- a/tests/test_proof/good/enums.catala_en +++ b/tests/test_proof/good/enums.catala_en @@ -20,5 +20,19 @@ scope A: ``` ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/good/enums.catala_en:13.10-11: +└──┐ +13 │ context x content integer + │ ‾ + └─ Test +[WARNING] The constructor "C" of enumeration "T" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_proof/good/enums.catala_en:5.6-7: +└─┐ +5 │ -- C content boolean + │ ‾ + └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/enums_inj.catala_en b/tests/test_proof/good/enums_inj.catala_en index 018214a6..2577a07a 100644 --- a/tests/test_proof/good/enums_inj.catala_en +++ b/tests/test_proof/good/enums_inj.catala_en @@ -17,5 +17,12 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/good/enums_inj.catala_en:10.10-11: +└──┐ +10 │ context y content integer + │ ‾ + └─ Article [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/enums_unit.catala_en b/tests/test_proof/good/enums_unit.catala_en index dd374d9c..609e59e3 100644 --- a/tests/test_proof/good/enums_unit.catala_en +++ b/tests/test_proof/good/enums_unit.catala_en @@ -21,5 +21,12 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/good/enums_unit.catala_en:10.10-11: +└──┐ +10 │ context y content integer + │ ‾ + └─ Article [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/functions.catala_en b/tests/test_proof/good/functions.catala_en index e7b393d4..b6aaae8c 100644 --- a/tests/test_proof/good/functions.catala_en +++ b/tests/test_proof/good/functions.catala_en @@ -14,5 +14,12 @@ scope A: ``` ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "z" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/good/functions.catala_en:6.10-11: +└─┐ +6 │ context z content integer + │ ‾ + └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/let_in_condition.catala_en b/tests/test_proof/good/let_in_condition.catala_en index c3a702ec..6a68a0e2 100644 --- a/tests/test_proof/good/let_in_condition.catala_en +++ b/tests/test_proof/good/let_in_condition.catala_en @@ -13,5 +13,12 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/good/let_in_condition.catala_en:5.10-11: +└─┐ +5 │ context x content boolean + │ ‾ + └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/money.catala_en b/tests/test_proof/good/money.catala_en index d6b16220..d956f989 100644 --- a/tests/test_proof/good/money.catala_en +++ b/tests/test_proof/good/money.catala_en @@ -15,5 +15,12 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/good/money.catala_en:6.10-11: +└─┐ +6 │ context y content boolean + │ ‾ + └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/no_vars.catala_en b/tests/test_proof/good/no_vars.catala_en index a2c65e4d..fce54a27 100644 --- a/tests/test_proof/good/no_vars.catala_en +++ b/tests/test_proof/good/no_vars.catala_en @@ -10,5 +10,12 @@ scope A: ``` ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/good/no_vars.catala_en:5.10-11: +└─┐ +5 │ context x content integer + │ ‾ + └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/rationals.catala_en b/tests/test_proof/good/rationals.catala_en index ebc77c44..9f9f4825 100644 --- a/tests/test_proof/good/rationals.catala_en +++ b/tests/test_proof/good/rationals.catala_en @@ -13,5 +13,12 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/good/rationals.catala_en:6.10-11: +└─┐ +6 │ context y content boolean + │ ‾ + └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/simple_vars.catala_en b/tests/test_proof/good/simple_vars.catala_en index f4ac47a7..7e465a44 100644 --- a/tests/test_proof/good/simple_vars.catala_en +++ b/tests/test_proof/good/simple_vars.catala_en @@ -16,5 +16,12 @@ scope A: ``` ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "z" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/good/simple_vars.catala_en:7.10-11: +└─┐ +7 │ context z content integer + │ ‾ + └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/structs.catala_en b/tests/test_proof/good/structs.catala_en index c7debb07..c183a703 100644 --- a/tests/test_proof/good/structs.catala_en +++ b/tests/test_proof/good/structs.catala_en @@ -20,5 +20,12 @@ scope A: ``` ```catala-test-inline $ catala Proof --disable_counterexamples +[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_proof/good/structs.catala_en:13.10-11: +└──┐ +13 │ context x content integer + │ ‾ + └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_scope/bad/scope.catala_en b/tests/test_scope/bad/scope.catala_en index fdce38b8..8b486f77 100644 --- a/tests/test_scope/bad/scope.catala_en +++ b/tests/test_scope/bad/scope.catala_en @@ -16,6 +16,20 @@ scope A: ```catala-test-inline $ catala Interpret -s A +[WARNING] In scope "A", the variable "a" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_scope/bad/scope.catala_en:5.10-11: +└─┐ +5 │ context a content integer + │ ‾ + └─ Article +[WARNING] In scope "A", the variable "b" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_scope/bad/scope.catala_en:6.10-11: +└─┐ +6 │ context b content integer + │ ‾ + └─ Article [ERROR] There is a conflict between multiple valid consequences for assigning the same variable. This consequence has a valid justification: diff --git a/tests/test_scope/bad/scope_call_missing.catala_en b/tests/test_scope/bad/scope_call_missing.catala_en index b857f0e8..f5a0b907 100644 --- a/tests/test_scope/bad/scope_call_missing.catala_en +++ b/tests/test_scope/bad/scope_call_missing.catala_en @@ -16,6 +16,13 @@ scope Titi: ```catala-test-inline $ catala dcalc -s Titi +[WARNING] In scope "Toto", the variable "baz" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_scope/bad/scope_call_missing.catala_en:4.8-11: +└─┐ +4 │ input baz content decimal + │ ‾‾‾ + [ERROR] Definition of input variable 'baz' missing in this scope call ┌─⯈ tests/test_scope/bad/scope_call_missing.catala_en:14.25-55: diff --git a/tests/test_scope/good/191_fix_record_name_confusion.catala_en b/tests/test_scope/good/191_fix_record_name_confusion.catala_en index ed6d2456..c2ce62fe 100644 --- a/tests/test_scope/good/191_fix_record_name_confusion.catala_en +++ b/tests/test_scope/good/191_fix_record_name_confusion.catala_en @@ -17,6 +17,13 @@ scope ScopeB: ```catala-test-inline $ catala OCaml +[WARNING] In scope "ScopeB", the variable "a" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_scope/good/191_fix_record_name_confusion.catala_en:8.10-11: +└─┐ +8 │ context a content boolean + │ ‾ + └─ Article (** This file has been generated by the Catala compiler, do not edit! *) open Runtime_ocaml.Runtime diff --git a/tests/test_scope/good/nothing.catala_en b/tests/test_scope/good/nothing.catala_en index 05410a23..401371bc 100644 --- a/tests/test_scope/good/nothing.catala_en +++ b/tests/test_scope/good/nothing.catala_en @@ -7,6 +7,13 @@ declaration scope Foo2: ```catala-test-inline $ catala Scalc -s Foo2 -O -t +[WARNING] In scope "Foo2", the variable "bar" is declared but never defined; did you forget something? + +┌─⯈ tests/test_scope/good/nothing.catala_en:5.9-12: +└─┐ +5 │ output bar content integer + │ ‾‾‾ + └─ Test let Foo2_3 (Foo2_in_2: Foo2_in {}) = decl temp_bar_4 : any; temp_bar_4 = dead_value_1; diff --git a/tests/test_scope/good/scope_call.catala_en b/tests/test_scope/good/scope_call.catala_en index 8fe9b35f..b3734bf1 100644 --- a/tests/test_scope/good/scope_call.catala_en +++ b/tests/test_scope/good/scope_call.catala_en @@ -26,6 +26,13 @@ scope Foo: ```catala-test-inline $ catala interpret -s Foo +[WARNING] The structure "Test" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_scope/good/scope_call.catala_en:2.22-26: +└─┐ +2 │ declaration structure Test: + │ ‾‾‾‾ + [RESULT] Computation successful! Results: [RESULT] example = -7 ``` diff --git a/tests/test_struct/bad/nested.catala_en b/tests/test_struct/bad/nested.catala_en index d354d270..89897403 100644 --- a/tests/test_struct/bad/nested.catala_en +++ b/tests/test_struct/bad/nested.catala_en @@ -14,6 +14,20 @@ scope A: ```catala-test-inline $ catala Interpret -s A +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_struct/bad/nested.catala_en:9.10-11: +└─┐ +9 │ context y content E + │ ‾ + └─ Article +[WARNING] The constructor "Rec" of enumeration "E" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_struct/bad/nested.catala_en:6.5-8: +└─┐ +6 │ -- Rec content E + │ ‾‾‾ + └─ Article [ERROR] The type E is defined using itself, which is forbidden since Catala does not provide recursive types ┌─⯈ tests/test_struct/bad/nested.catala_en:6.17-18: diff --git a/tests/test_struct/bad/nested2.catala_en b/tests/test_struct/bad/nested2.catala_en index 21d07694..1adcff9b 100644 --- a/tests/test_struct/bad/nested2.catala_en +++ b/tests/test_struct/bad/nested2.catala_en @@ -15,6 +15,27 @@ declaration scope A: ```catala-test-inline $ catala Interpret -s A +[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_struct/bad/nested2.catala_en:13.10-11: +└──┐ +13 │ context x content E + │ ‾ + └─ Article +[WARNING] The structure "S" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_struct/bad/nested2.catala_en:4.22-23: +└─┐ +4 │ declaration structure S: + │ ‾ + └─ Article +[WARNING] The enumeration "E" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_struct/bad/nested2.catala_en:8.24-25: +└─┐ +8 │ declaration enumeration E: + │ ‾ + └─ Article [ERROR] Cyclic dependency detected between types! Cycle type S, declared: diff --git a/tests/test_struct/bad/wrong_qualified_field.catala_en b/tests/test_struct/bad/wrong_qualified_field.catala_en index df65d2a6..4b9d592f 100644 --- a/tests/test_struct/bad/wrong_qualified_field.catala_en +++ b/tests/test_struct/bad/wrong_qualified_field.catala_en @@ -19,7 +19,7 @@ scope A: ```catala-test-inline $ catala Interpret -s A -[ERROR] Field g does not belong to structure Foo, but to Bar +[ERROR] Field "g" does not belong to structure "Foo", but to "Bar" ┌─⯈ tests/test_struct/bad/wrong_qualified_field.catala_en:17.22-29: └──┐ diff --git a/tests/test_struct/good/ambiguous_fields.catala_en b/tests/test_struct/good/ambiguous_fields.catala_en index ee8a81fe..8b321338 100644 --- a/tests/test_struct/good/ambiguous_fields.catala_en +++ b/tests/test_struct/good/ambiguous_fields.catala_en @@ -18,5 +18,19 @@ scope A: ```catala-test-inline $ catala Interpret -s A +[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? + +┌─⯈ tests/test_struct/good/ambiguous_fields.catala_en:12.10-11: +└──┐ +12 │ context y content integer + │ ‾ + └─ Article +[WARNING] The structure "Bar" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_struct/good/ambiguous_fields.catala_en:7.22-25: +└─┐ +7 │ declaration structure Bar: + │ ‾‾‾ + └─ Article [RESULT] Computation successful! ``` diff --git a/tests/test_struct/good/same_name_fields.catala_en b/tests/test_struct/good/same_name_fields.catala_en index 4a23c955..63610b2b 100644 --- a/tests/test_struct/good/same_name_fields.catala_en +++ b/tests/test_struct/good/same_name_fields.catala_en @@ -18,6 +18,13 @@ scope A: ```catala-test-inline $ catala Interpret -s A +[WARNING] The structure "Bar" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_struct/good/same_name_fields.catala_en:7.22-25: +└─┐ +7 │ declaration structure Bar: + │ ‾‾‾ + └─ Article [RESULT] Computation successful! Results: [RESULT] x = Foo { "f"= 1 } [RESULT] y = 1 diff --git a/tests/test_typing/bad/err3.catala_en b/tests/test_typing/bad/err3.catala_en index 04cdd814..c152b64a 100644 --- a/tests/test_typing/bad/err3.catala_en +++ b/tests/test_typing/bad/err3.catala_en @@ -12,6 +12,13 @@ scope S: ```catala-test-inline $ catala Typecheck +[WARNING] The constructor "Dec" of enumeration "Enum" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_typing/bad/common.catala_en:4.5-8: +└─┐ +4 │ -- Dec content decimal + │ ‾‾‾ + [ERROR] Error during typechecking, incompatible types: --> integer --> decimal @@ -43,6 +50,13 @@ Re-putting the same check again, to ensure that the `Typecheck` and `ocaml` subc ```catala-test-inline $ catala ocaml +[WARNING] The constructor "Dec" of enumeration "Enum" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_typing/bad/common.catala_en:4.5-8: +└─┐ +4 │ -- Dec content decimal + │ ‾‾‾ + [ERROR] Error during typechecking, incompatible types: --> integer --> decimal diff --git a/tests/test_typing/bad/err4.catala_en b/tests/test_typing/bad/err4.catala_en index ec25f415..698e5c0f 100644 --- a/tests/test_typing/bad/err4.catala_en +++ b/tests/test_typing/bad/err4.catala_en @@ -10,6 +10,27 @@ Should be "catala Typecheck", see test err3 ```catala-test-inline $ catala ocaml +[WARNING] The structure "Structure" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_typing/bad/common.catala_en:7.22-31: +└─┐ +7 │ declaration structure Structure: + │ ‾‾‾‾‾‾‾‾‾ + +[WARNING] The constructor "Dec" of enumeration "Enum" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_typing/bad/common.catala_en:4.5-8: +└─┐ +4 │ -- Dec content decimal + │ ‾‾‾ + +[WARNING] The constructor "Dat" of enumeration "Enum" is never used; maybe it's unnecessary? + +┌─⯈ tests/test_typing/bad/common.catala_en:5.5-8: +└─┐ +5 │ -- Dat content date + │ ‾‾‾ + [ERROR] Error during typechecking, incompatible types: --> Enum --> Structure