From a415355a398409a351447534e0e2d9f90159f14c Mon Sep 17 00:00:00 2001 From: Louis Gesbert Date: Thu, 30 Mar 2023 15:30:08 +0200 Subject: [PATCH] Rework the AST Gadt to allow merging of different ASTs The phantom polymorphic variant qualifying AST nodes is reversed: - previously, we were explicitely restricting each AST node to the passes where it belonged using a closed type (e.g. `[< dcalc | lcalc]`) - now, each node instead declares the "feature" it provides using an open type (e.g. `[> 'Exceptions ]`) - then the AST for a specific pass limits the features it allows with a closed type The result is that you can mix and match all features if you wish, even if the result is not a valid AST for any given pass. More interestingly, it's now easier to write a function that works on different ASTs at once (it's the inferred default if you don't write a type restriction). The opportunity was also taken to simplify the encoding of the operators, which don't need a second type parameter anymore. --- compiler/dcalc/interpreter.ml | 336 +- compiler/scalc/ast.ml | 4 +- compiler/scalc/from_lcalc.ml | 2 +- compiler/scalc/to_python.ml | 5 +- compiler/shared_ast/definitions.ml | 326 +- compiler/shared_ast/expr.ml | 8 +- compiler/shared_ast/expr.mli | 77 +- compiler/shared_ast/operator.ml | 138 +- compiler/shared_ast/operator.mli | 33 +- compiler/shared_ast/print.ml | 8 +- compiler/shared_ast/print.mli | 2 +- compiler/shared_ast/program.mli | 9 +- compiler/shared_ast/typing.ml | 6 +- compiler/shared_ast/var.ml | 3 +- compiler/shared_ast/var.mli | 5 +- compiler/surface/dune | 2 +- compiler/verification/z3backend.real.ml | 3 +- french_law/js/french_law.js | 26779 ++++++++++++---------- 18 files changed, 14574 insertions(+), 13172 deletions(-) diff --git a/compiler/dcalc/interpreter.ml b/compiler/dcalc/interpreter.ml index daa07571..11de6426 100644 --- a/compiler/dcalc/interpreter.ml +++ b/compiler/dcalc/interpreter.ml @@ -113,12 +113,8 @@ let rec handle_eq ctx pos e1 e2 = (* Call-by-value: the arguments are expected to be already evaluated here *) and evaluate_operator : - type k. - decl_ctx -> - (dcalc, k) operator -> - Pos.t -> - 'm Ast.expr list -> - 'm Ast.naked_expr = + decl_ctx -> dcalc operator -> Pos.t -> 'm Ast.expr list -> 'm Ast.naked_expr + = fun ctx op pos args -> let protect f x y = let get_binop_args_pos = function @@ -157,159 +153,181 @@ and evaluate_operator : if List.exists (function ELit LEmptyError, _ -> true | _ -> false) args then ELit LEmptyError else - Operator.kind_dispatch op - ~polymorphic:(fun op -> - match op, args with - | Length, [(EArray es, _)] -> - ELit (LInt (Runtime.integer_of_int (List.length es))) - | Log (entry, infos), [e'] -> - print_log ctx entry infos pos e'; - Marked.unmark e' - | Eq, [(e1, _); (e2, _)] -> ELit (LBool (handle_eq ctx pos e1 e2)) - | Map, [f; (EArray es, _)] -> - EArray - (List.map - (fun e' -> - evaluate_expr ctx - (Marked.same_mark_as (EApp { f; args = [e'] }) e')) - es) - | Reduce, [_; default; (EArray [], _)] -> Marked.unmark default - | Reduce, [f; _; (EArray (x0 :: xn), _)] -> - Marked.unmark - (List.fold_left - (fun acc x -> - evaluate_expr ctx - (Marked.same_mark_as (EApp { f; args = [acc; x] }) f)) - x0 xn) - | Concat, [(EArray es1, _); (EArray es2, _)] -> EArray (es1 @ es2) - | Filter, [f; (EArray es, _)] -> - EArray - (List.filter - (fun e' -> - match - evaluate_expr ctx - (Marked.same_mark_as (EApp { f; args = [e'] }) e') - with - | ELit (LBool b), _ -> b - | _ -> - Errors.raise_spanned_error - (Expr.pos (List.nth args 0)) - "This predicate evaluated to something else than a \ - boolean (should not happen if the term was well-typed)") - es) - | Fold, [f; init; (EArray es, _)] -> - Marked.unmark - (List.fold_left - (fun acc e' -> - evaluate_expr ctx - (Marked.same_mark_as (EApp { f; args = [acc; e'] }) e')) - init es) - | (Length | Log _ | Eq | Map | Concat | Filter | Fold | Reduce), _ -> - err ()) - ~monomorphic:(fun op -> - let rlit = - match op, List.map (function ELit l, _ -> l | _ -> err ()) args with - | Not, [LBool b] -> LBool (o_not b) - | GetDay, [LDate d] -> LInt (o_getDay d) - | GetMonth, [LDate d] -> LInt (o_getMonth d) - | GetYear, [LDate d] -> LInt (o_getYear d) - | FirstDayOfMonth, [LDate d] -> LDate (o_firstDayOfMonth d) - | LastDayOfMonth, [LDate d] -> LDate (o_lastDayOfMonth d) - | And, [LBool b1; LBool b2] -> LBool (o_and b1 b2) - | Or, [LBool b1; LBool b2] -> LBool (o_or b1 b2) - | Xor, [LBool b1; LBool b2] -> LBool (o_xor b1 b2) - | ( ( Not | GetDay | GetMonth | GetYear | FirstDayOfMonth - | LastDayOfMonth | And | Or | Xor ), - _ ) -> - err () - in - ELit rlit) - ~resolved:(fun op -> - let rlit = - match op, List.map (function ELit l, _ -> l | _ -> err ()) args with - | Minus_int, [LInt x] -> LInt (o_minus_int x) - | Minus_rat, [LRat x] -> LRat (o_minus_rat x) - | Minus_mon, [LMoney x] -> LMoney (o_minus_mon x) - | Minus_dur, [LDuration x] -> LDuration (o_minus_dur x) - | ToRat_int, [LInt i] -> LRat (o_torat_int i) - | ToRat_mon, [LMoney i] -> LRat (o_torat_mon i) - | ToMoney_rat, [LRat i] -> LMoney (o_tomoney_rat i) - | Round_mon, [LMoney m] -> LMoney (o_round_mon m) - | Round_rat, [LRat m] -> LRat (o_round_rat m) - | Add_int_int, [LInt x; LInt y] -> LInt (o_add_int_int x y) - | Add_rat_rat, [LRat x; LRat y] -> LRat (o_add_rat_rat x y) - | Add_mon_mon, [LMoney x; LMoney y] -> LMoney (o_add_mon_mon x y) - | Add_dat_dur r, [LDate x; LDuration y] -> LDate (o_add_dat_dur r x y) - | Add_dur_dur, [LDuration x; LDuration y] -> - LDuration (o_add_dur_dur x y) - | Sub_int_int, [LInt x; LInt y] -> LInt (o_sub_int_int x y) - | Sub_rat_rat, [LRat x; LRat y] -> LRat (o_sub_rat_rat x y) - | Sub_mon_mon, [LMoney x; LMoney y] -> LMoney (o_sub_mon_mon x y) - | Sub_dat_dat, [LDate x; LDate y] -> LDuration (o_sub_dat_dat x y) - | Sub_dat_dur, [LDate x; LDuration y] -> LDate (o_sub_dat_dur x y) - | Sub_dur_dur, [LDuration x; LDuration y] -> - LDuration (o_sub_dur_dur x y) - | Mult_int_int, [LInt x; LInt y] -> LInt (o_mult_int_int x y) - | Mult_rat_rat, [LRat x; LRat y] -> LRat (o_mult_rat_rat x y) - | Mult_mon_rat, [LMoney x; LRat y] -> LMoney (o_mult_mon_rat x y) - | Mult_dur_int, [LDuration x; LInt y] -> - LDuration (o_mult_dur_int x y) - | Div_int_int, [LInt x; LInt y] -> LRat (protect o_div_int_int x y) - | Div_rat_rat, [LRat x; LRat y] -> LRat (protect o_div_rat_rat x y) - | Div_mon_mon, [LMoney x; LMoney y] -> - LRat (protect o_div_mon_mon x y) - | Div_mon_rat, [LMoney x; LRat y] -> - LMoney (protect o_div_mon_rat x y) - | Div_dur_dur, [LDuration x; LDuration y] -> - LRat (protect o_div_dur_dur x y) - | Lt_int_int, [LInt x; LInt y] -> LBool (o_lt_int_int x y) - | Lt_rat_rat, [LRat x; LRat y] -> LBool (o_lt_rat_rat x y) - | Lt_mon_mon, [LMoney x; LMoney y] -> LBool (o_lt_mon_mon x y) - | Lt_dat_dat, [LDate x; LDate y] -> LBool (o_lt_dat_dat x y) - | Lt_dur_dur, [LDuration x; LDuration y] -> - LBool (protect o_lt_dur_dur x y) - | Lte_int_int, [LInt x; LInt y] -> LBool (o_lte_int_int x y) - | Lte_rat_rat, [LRat x; LRat y] -> LBool (o_lte_rat_rat x y) - | Lte_mon_mon, [LMoney x; LMoney y] -> LBool (o_lte_mon_mon x y) - | Lte_dat_dat, [LDate x; LDate y] -> LBool (o_lte_dat_dat x y) - | Lte_dur_dur, [LDuration x; LDuration y] -> - LBool (protect o_lte_dur_dur x y) - | Gt_int_int, [LInt x; LInt y] -> LBool (o_gt_int_int x y) - | Gt_rat_rat, [LRat x; LRat y] -> LBool (o_gt_rat_rat x y) - | Gt_mon_mon, [LMoney x; LMoney y] -> LBool (o_gt_mon_mon x y) - | Gt_dat_dat, [LDate x; LDate y] -> LBool (o_gt_dat_dat x y) - | Gt_dur_dur, [LDuration x; LDuration y] -> - LBool (protect o_gt_dur_dur x y) - | Gte_int_int, [LInt x; LInt y] -> LBool (o_gte_int_int x y) - | Gte_rat_rat, [LRat x; LRat y] -> LBool (o_gte_rat_rat x y) - | Gte_mon_mon, [LMoney x; LMoney y] -> LBool (o_gte_mon_mon x y) - | Gte_dat_dat, [LDate x; LDate y] -> LBool (o_gte_dat_dat x y) - | Gte_dur_dur, [LDuration x; LDuration y] -> - LBool (protect o_gte_dur_dur x y) - | Eq_int_int, [LInt x; LInt y] -> LBool (o_eq_int_int x y) - | Eq_rat_rat, [LRat x; LRat y] -> LBool (o_eq_rat_rat x y) - | Eq_mon_mon, [LMoney x; LMoney y] -> LBool (o_eq_mon_mon x y) - | Eq_dat_dat, [LDate x; LDate y] -> LBool (o_eq_dat_dat x y) - | Eq_dur_dur, [LDuration x; LDuration y] -> - LBool (protect o_eq_dur_dur x y) - | ( ( Minus_int | Minus_rat | Minus_mon | Minus_dur | ToRat_int - | ToRat_mon | ToMoney_rat | Round_rat | Round_mon | Add_int_int - | Add_rat_rat | Add_mon_mon | Add_dat_dur _ | Add_dur_dur - | Sub_int_int | Sub_rat_rat | Sub_mon_mon | Sub_dat_dat - | Sub_dat_dur | Sub_dur_dur | Mult_int_int | Mult_rat_rat - | Mult_mon_rat | Mult_dur_int | Div_int_int | Div_rat_rat - | Div_mon_mon | Div_mon_rat | Div_dur_dur | Lt_int_int - | Lt_rat_rat | Lt_mon_mon | Lt_dat_dat | Lt_dur_dur | Lte_int_int - | Lte_rat_rat | Lte_mon_mon | Lte_dat_dat | Lte_dur_dur - | Gt_int_int | Gt_rat_rat | Gt_mon_mon | Gt_dat_dat | Gt_dur_dur - | Gte_int_int | Gte_rat_rat | Gte_mon_mon | Gte_dat_dat - | Gte_dur_dur | Eq_int_int | Eq_rat_rat | Eq_mon_mon | Eq_dat_dat - | Eq_dur_dur ), - _ ) -> - err () - in - ELit rlit) - ~overloaded:(fun _ -> assert false) + match op, args with + | Length, [(EArray es, _)] -> + ELit (LInt (Runtime.integer_of_int (List.length es))) + | Log (entry, infos), [e'] -> + print_log ctx entry infos pos e'; + Marked.unmark e' + | Eq, [(e1, _); (e2, _)] -> ELit (LBool (handle_eq ctx pos e1 e2)) + | Map, [f; (EArray es, _)] -> + EArray + (List.map + (fun e' -> + evaluate_expr ctx + (Marked.same_mark_as (EApp { f; args = [e'] }) e')) + es) + | Reduce, [_; default; (EArray [], _)] -> Marked.unmark default + | Reduce, [f; _; (EArray (x0 :: xn), _)] -> + Marked.unmark + (List.fold_left + (fun acc x -> + evaluate_expr ctx + (Marked.same_mark_as (EApp { f; args = [acc; x] }) f)) + x0 xn) + | Concat, [(EArray es1, _); (EArray es2, _)] -> EArray (es1 @ es2) + | Filter, [f; (EArray es, _)] -> + EArray + (List.filter + (fun e' -> + match + evaluate_expr ctx + (Marked.same_mark_as (EApp { f; args = [e'] }) e') + with + | ELit (LBool b), _ -> b + | _ -> + Errors.raise_spanned_error + (Expr.pos (List.nth args 0)) + "This predicate evaluated to something else than a boolean \ + (should not happen if the term was well-typed)") + es) + | Fold, [f; init; (EArray es, _)] -> + Marked.unmark + (List.fold_left + (fun acc e' -> + evaluate_expr ctx + (Marked.same_mark_as (EApp { f; args = [acc; e'] }) e')) + init es) + | (Length | Log _ | Eq | Map | Concat | Filter | Fold | Reduce), _ -> err () + | Not, [(ELit (LBool b), _)] -> ELit (LBool (o_not b)) + | GetDay, [(ELit (LDate d), _)] -> ELit (LInt (o_getDay d)) + | GetMonth, [(ELit (LDate d), _)] -> ELit (LInt (o_getMonth d)) + | GetYear, [(ELit (LDate d), _)] -> ELit (LInt (o_getYear d)) + | FirstDayOfMonth, [(ELit (LDate d), _)] -> + ELit (LDate (o_firstDayOfMonth d)) + | LastDayOfMonth, [(ELit (LDate d), _)] -> ELit (LDate (o_lastDayOfMonth d)) + | And, [(ELit (LBool b1), _); (ELit (LBool b2), _)] -> + ELit (LBool (o_and b1 b2)) + | Or, [(ELit (LBool b1), _); (ELit (LBool b2), _)] -> + ELit (LBool (o_or b1 b2)) + | Xor, [(ELit (LBool b1), _); (ELit (LBool b2), _)] -> + ELit (LBool (o_xor b1 b2)) + | ( ( Not | GetDay | GetMonth | GetYear | FirstDayOfMonth | LastDayOfMonth + | And | Or | Xor ), + _ ) -> + err () + | Minus_int, [(ELit (LInt x), _)] -> ELit (LInt (o_minus_int x)) + | Minus_rat, [(ELit (LRat x), _)] -> ELit (LRat (o_minus_rat x)) + | Minus_mon, [(ELit (LMoney x), _)] -> ELit (LMoney (o_minus_mon x)) + | Minus_dur, [(ELit (LDuration x), _)] -> ELit (LDuration (o_minus_dur x)) + | ToRat_int, [(ELit (LInt i), _)] -> ELit (LRat (o_torat_int i)) + | ToRat_mon, [(ELit (LMoney i), _)] -> ELit (LRat (o_torat_mon i)) + | ToMoney_rat, [(ELit (LRat i), _)] -> ELit (LMoney (o_tomoney_rat i)) + | Round_mon, [(ELit (LMoney m), _)] -> ELit (LMoney (o_round_mon m)) + | Round_rat, [(ELit (LRat m), _)] -> ELit (LRat (o_round_rat m)) + | Add_int_int, [(ELit (LInt x), _); (ELit (LInt y), _)] -> + ELit (LInt (o_add_int_int x y)) + | Add_rat_rat, [(ELit (LRat x), _); (ELit (LRat y), _)] -> + ELit (LRat (o_add_rat_rat x y)) + | Add_mon_mon, [(ELit (LMoney x), _); (ELit (LMoney y), _)] -> + ELit (LMoney (o_add_mon_mon x y)) + | Add_dat_dur r, [(ELit (LDate x), _); (ELit (LDuration y), _)] -> + ELit (LDate (o_add_dat_dur r x y)) + | Add_dur_dur, [(ELit (LDuration x), _); (ELit (LDuration y), _)] -> + ELit (LDuration (o_add_dur_dur x y)) + | Sub_int_int, [(ELit (LInt x), _); (ELit (LInt y), _)] -> + ELit (LInt (o_sub_int_int x y)) + | Sub_rat_rat, [(ELit (LRat x), _); (ELit (LRat y), _)] -> + ELit (LRat (o_sub_rat_rat x y)) + | Sub_mon_mon, [(ELit (LMoney x), _); (ELit (LMoney y), _)] -> + ELit (LMoney (o_sub_mon_mon x y)) + | Sub_dat_dat, [(ELit (LDate x), _); (ELit (LDate y), _)] -> + ELit (LDuration (o_sub_dat_dat x y)) + | Sub_dat_dur, [(ELit (LDate x), _); (ELit (LDuration y), _)] -> + ELit (LDate (o_sub_dat_dur x y)) + | Sub_dur_dur, [(ELit (LDuration x), _); (ELit (LDuration y), _)] -> + ELit (LDuration (o_sub_dur_dur x y)) + | Mult_int_int, [(ELit (LInt x), _); (ELit (LInt y), _)] -> + ELit (LInt (o_mult_int_int x y)) + | Mult_rat_rat, [(ELit (LRat x), _); (ELit (LRat y), _)] -> + ELit (LRat (o_mult_rat_rat x y)) + | Mult_mon_rat, [(ELit (LMoney x), _); (ELit (LRat y), _)] -> + ELit (LMoney (o_mult_mon_rat x y)) + | Mult_dur_int, [(ELit (LDuration x), _); (ELit (LInt y), _)] -> + ELit (LDuration (o_mult_dur_int x y)) + | Div_int_int, [(ELit (LInt x), _); (ELit (LInt y), _)] -> + ELit (LRat (protect o_div_int_int x y)) + | Div_rat_rat, [(ELit (LRat x), _); (ELit (LRat y), _)] -> + ELit (LRat (protect o_div_rat_rat x y)) + | Div_mon_mon, [(ELit (LMoney x), _); (ELit (LMoney y), _)] -> + ELit (LRat (protect o_div_mon_mon x y)) + | Div_mon_rat, [(ELit (LMoney x), _); (ELit (LRat y), _)] -> + ELit (LMoney (protect o_div_mon_rat x y)) + | Div_dur_dur, [(ELit (LDuration x), _); (ELit (LDuration y), _)] -> + ELit (LRat (protect o_div_dur_dur x y)) + | Lt_int_int, [(ELit (LInt x), _); (ELit (LInt y), _)] -> + ELit (LBool (o_lt_int_int x y)) + | Lt_rat_rat, [(ELit (LRat x), _); (ELit (LRat y), _)] -> + ELit (LBool (o_lt_rat_rat x y)) + | Lt_mon_mon, [(ELit (LMoney x), _); (ELit (LMoney y), _)] -> + ELit (LBool (o_lt_mon_mon x y)) + | Lt_dat_dat, [(ELit (LDate x), _); (ELit (LDate y), _)] -> + ELit (LBool (o_lt_dat_dat x y)) + | Lt_dur_dur, [(ELit (LDuration x), _); (ELit (LDuration y), _)] -> + ELit (LBool (protect o_lt_dur_dur x y)) + | Lte_int_int, [(ELit (LInt x), _); (ELit (LInt y), _)] -> + ELit (LBool (o_lte_int_int x y)) + | Lte_rat_rat, [(ELit (LRat x), _); (ELit (LRat y), _)] -> + ELit (LBool (o_lte_rat_rat x y)) + | Lte_mon_mon, [(ELit (LMoney x), _); (ELit (LMoney y), _)] -> + ELit (LBool (o_lte_mon_mon x y)) + | Lte_dat_dat, [(ELit (LDate x), _); (ELit (LDate y), _)] -> + ELit (LBool (o_lte_dat_dat x y)) + | Lte_dur_dur, [(ELit (LDuration x), _); (ELit (LDuration y), _)] -> + ELit (LBool (protect o_lte_dur_dur x y)) + | Gt_int_int, [(ELit (LInt x), _); (ELit (LInt y), _)] -> + ELit (LBool (o_gt_int_int x y)) + | Gt_rat_rat, [(ELit (LRat x), _); (ELit (LRat y), _)] -> + ELit (LBool (o_gt_rat_rat x y)) + | Gt_mon_mon, [(ELit (LMoney x), _); (ELit (LMoney y), _)] -> + ELit (LBool (o_gt_mon_mon x y)) + | Gt_dat_dat, [(ELit (LDate x), _); (ELit (LDate y), _)] -> + ELit (LBool (o_gt_dat_dat x y)) + | Gt_dur_dur, [(ELit (LDuration x), _); (ELit (LDuration y), _)] -> + ELit (LBool (protect o_gt_dur_dur x y)) + | Gte_int_int, [(ELit (LInt x), _); (ELit (LInt y), _)] -> + ELit (LBool (o_gte_int_int x y)) + | Gte_rat_rat, [(ELit (LRat x), _); (ELit (LRat y), _)] -> + ELit (LBool (o_gte_rat_rat x y)) + | Gte_mon_mon, [(ELit (LMoney x), _); (ELit (LMoney y), _)] -> + ELit (LBool (o_gte_mon_mon x y)) + | Gte_dat_dat, [(ELit (LDate x), _); (ELit (LDate y), _)] -> + ELit (LBool (o_gte_dat_dat x y)) + | Gte_dur_dur, [(ELit (LDuration x), _); (ELit (LDuration y), _)] -> + ELit (LBool (protect o_gte_dur_dur x y)) + | Eq_int_int, [(ELit (LInt x), _); (ELit (LInt y), _)] -> + ELit (LBool (o_eq_int_int x y)) + | Eq_rat_rat, [(ELit (LRat x), _); (ELit (LRat y), _)] -> + ELit (LBool (o_eq_rat_rat x y)) + | Eq_mon_mon, [(ELit (LMoney x), _); (ELit (LMoney y), _)] -> + ELit (LBool (o_eq_mon_mon x y)) + | Eq_dat_dat, [(ELit (LDate x), _); (ELit (LDate y), _)] -> + ELit (LBool (o_eq_dat_dat x y)) + | Eq_dur_dur, [(ELit (LDuration x), _); (ELit (LDuration y), _)] -> + ELit (LBool (protect o_eq_dur_dur x y)) + | ( ( Minus_int | Minus_rat | Minus_mon | Minus_dur | ToRat_int | ToRat_mon + | ToMoney_rat | Round_rat | Round_mon | Add_int_int | Add_rat_rat + | Add_mon_mon | Add_dat_dur _ | Add_dur_dur | Sub_int_int | Sub_rat_rat + | Sub_mon_mon | Sub_dat_dat | Sub_dat_dur | Sub_dur_dur | Mult_int_int + | Mult_rat_rat | Mult_mon_rat | Mult_dur_int | Div_int_int | Div_rat_rat + | Div_mon_mon | Div_mon_rat | Div_dur_dur | Lt_int_int | Lt_rat_rat + | Lt_mon_mon | Lt_dat_dat | Lt_dur_dur | Lte_int_int | Lte_rat_rat + | Lte_mon_mon | Lte_dat_dat | Lte_dur_dur | Gt_int_int | Gt_rat_rat + | Gt_mon_mon | Gt_dat_dat | Gt_dur_dur | Gte_int_int | Gte_rat_rat + | Gte_mon_mon | Gte_dat_dat | Gte_dur_dur | Eq_int_int | Eq_rat_rat + | Eq_mon_mon | Eq_dat_dat | Eq_dur_dur ), + _ ) -> + err () and evaluate_expr (ctx : decl_ctx) (e : 'm Ast.expr) : 'm Ast.expr = match Marked.unmark e with diff --git a/compiler/scalc/ast.ml b/compiler/scalc/ast.ml index bd1e6f2b..938721ff 100644 --- a/compiler/scalc/ast.ml +++ b/compiler/scalc/ast.ml @@ -25,6 +25,8 @@ let dead_value = VarName.fresh ("dead_value", Pos.no_pos) let handle_default = FuncName.fresh ("handle_default", Pos.no_pos) let handle_default_opt = FuncName.fresh ("handle_default_opt", Pos.no_pos) +type operator = [ `Monomorphic | `Polymorphic | `Resolved ] Shared_ast.operator + type expr = naked_expr Marked.pos and naked_expr = @@ -36,7 +38,7 @@ and naked_expr = | EArray : expr list -> naked_expr | ELit : L.lit -> naked_expr | EApp : expr * expr list -> naked_expr - | EOp : (lcalc, _) operator -> naked_expr + | EOp : operator -> naked_expr type stmt = | SInnerFuncDef of VarName.t Marked.pos * func diff --git a/compiler/scalc/from_lcalc.ml b/compiler/scalc/from_lcalc.ml index 9d6b6f5c..1df023cd 100644 --- a/compiler/scalc/from_lcalc.ml +++ b/compiler/scalc/from_lcalc.ml @@ -86,7 +86,7 @@ let rec translate_expr (ctxt : 'm ctxt) (expr : 'm L.expr) : A.block * A.expr = in let new_args = List.rev new_args in args_stmts, (A.EArray new_args, Expr.pos expr) - | EOp { op; _ } -> [], (A.EOp op, Expr.pos expr) + | EOp { op; _ } -> [], (A.EOp (Operator.translate None op), Expr.pos expr) | ELit l -> [], (A.ELit l, Expr.pos expr) | _ -> let tmp_var = diff --git a/compiler/scalc/to_python.ml b/compiler/scalc/to_python.ml index 50fb5eb6..70d3ba5f 100644 --- a/compiler/scalc/to_python.ml +++ b/compiler/scalc/to_python.ml @@ -49,10 +49,7 @@ let format_log_entry (fmt : Format.formatter) (entry : log_entry) : unit = | EndCall -> Format.fprintf fmt "%s" "← " | PosRecordIfTrueBool -> Format.pp_print_string fmt "☛ " -let format_op - (type k) - (fmt : Format.formatter) - (op : (lcalc, k) operator Marked.pos) : unit = +let format_op (fmt : Format.formatter) (op : operator Marked.pos) : unit = match Marked.unmark op with | Log (entry, infos) -> assert false | Minus_int | Minus_rat | Minus_mon | Minus_dur -> diff --git a/compiler/shared_ast/definitions.ml b/compiler/shared_ast/definitions.ml index 71ebdabe..6cb6c7f9 100644 --- a/compiler/shared_ast/definitions.ml +++ b/compiler/shared_ast/definitions.ml @@ -48,17 +48,63 @@ module StateName = Uid.Gen () (** Define a common base type for the expressions in most passes of the compiler *) -type desugared = [ `Desugared ] (** {2 Phantom types used to select relevant cases on the generic AST} we instantiate them with a polymorphic variant to take advantage of sub-typing. The values aren't actually used. *) -type scopelang = [ `Scopelang ] -type dcalc = [ `Dcalc ] -type lcalc = [ `Lcalc ] +(** These types allow to select the features present in any given expression + type *) -type 'a any = [< desugared | scopelang | dcalc | lcalc ] as 'a +type op_kind = [ `Monomorphic | `Polymorphic | `Overloaded | `Resolved ] + +type all_ast_features = + [ `SyntacticNames + | `ResolvedNames + | `ScopeVarStates + | `ScopeVarSimpl + | `ExplicitScopes + | `Assertions + | `DefaultTerms + | `Exceptions ] + +type all = [ all_ast_features | op_kind ] + +type desugared = + [ `Monomorphic + | `Polymorphic + | `Overloaded + | `SyntacticNames + | `ExplicitScopes + | `ScopeVarStates + | `DefaultTerms ] + +type scopelang = + [ `Monomorphic + | `Polymorphic + | `Resolved + | `ResolvedNames + | `ExplicitScopes + | `ScopeVarSimpl + | `DefaultTerms ] + +type dcalc = + [ `Monomorphic + | `Polymorphic + | `Resolved + | `ResolvedNames + | `Assertions + | `DefaultTerms ] + +type lcalc = + [ `Monomorphic + | `Polymorphic + | `Resolved + | `ResolvedNames + | `Assertions + | `Exceptions ] + +type 'a any = [< all ] as 'a (** ['a any] is 'a, but adds the constraint that it should be restricted to valid AST kinds *) @@ -95,134 +141,124 @@ type log_entry = module Op = struct (** Classification of operators on how they should be typed *) - type monomorphic = - | Monomorphic (** Operands and return types of the operator are fixed *) + type 'a any = [> op_kind ] as 'a - type polymorphic = - | Polymorphic - (** The operator is truly polymorphic: it's the same runtime function - that may work on multiple types. We require that resolving the - argument types from right to left trivially resolves all type - variables declared in the operator type. *) + type monomorphic = [ `Monomorphic ] + (** Operands and return types of the operator are fixed *) - type overloaded = - | Overloaded - (** The operator is ambiguous and requires the types of its arguments to - be known before it can be typed, using a pre-defined table *) + type polymorphic = [ `Polymorphic ] + (** The operator is truly polymorphic: it's the same runtime function that may + work on multiple types. We require that resolving the argument types from + right to left trivially resolves all type variables declared in the + operator type. *) - type resolved = - | Resolved (** Explicit monomorphic versions of the overloaded operators *) + type overloaded = [ `Overloaded ] + (** The operator is ambiguous and requires the types of its arguments to be + known before it can be typed, using a pre-defined table *) - (** Classification of operators. This could be inlined in the definition of - [t] but is more concise this way *) - type (_, _) kind = - | Monomorphic : ('a any, monomorphic) kind - | Polymorphic : ('a any, polymorphic) kind - | Overloaded : ([< desugared ], overloaded) kind - | Resolved : ([< scopelang | dcalc | lcalc ], resolved) kind + type resolved = [ `Resolved ] + (** Explicit monomorphic versions of the overloaded operators *) - type (_, _) t = + type _ t = (* unary *) (* * monomorphic *) - | Not : ('a any, monomorphic) t - | GetDay : ('a any, monomorphic) t - | GetMonth : ('a any, monomorphic) t - | GetYear : ('a any, monomorphic) t - | FirstDayOfMonth : ('a any, monomorphic) t - | LastDayOfMonth : ('a any, monomorphic) t + | Not : [> `Monomorphic ] t + | GetDay : [> `Monomorphic ] t + | GetMonth : [> `Monomorphic ] t + | GetYear : [> `Monomorphic ] t + | FirstDayOfMonth : [> `Monomorphic ] t + | LastDayOfMonth : [> `Monomorphic ] t (* * polymorphic *) - | Length : ('a any, polymorphic) t - | Log : log_entry * Uid.MarkedString.info list -> ('a any, polymorphic) t + | Length : [> `Polymorphic ] t + | Log : log_entry * Uid.MarkedString.info list -> [> `Polymorphic ] t (* * overloaded *) - | Minus : (desugared, overloaded) t - | Minus_int : ([< scopelang | dcalc | lcalc ], resolved) t - | Minus_rat : ([< scopelang | dcalc | lcalc ], resolved) t - | Minus_mon : ([< scopelang | dcalc | lcalc ], resolved) t - | Minus_dur : ([< scopelang | dcalc | lcalc ], resolved) t - | ToRat : (desugared, overloaded) t - | ToRat_int : ([< scopelang | dcalc | lcalc ], resolved) t - | ToRat_mon : ([< scopelang | dcalc | lcalc ], resolved) t - | ToMoney : (desugared, overloaded) t - | ToMoney_rat : ([< scopelang | dcalc | lcalc ], resolved) t - | Round : (desugared, overloaded) t - | Round_rat : ([< scopelang | dcalc | lcalc ], resolved) t - | Round_mon : ([< scopelang | dcalc | lcalc ], resolved) t + | Minus : [> `Overloaded ] t + | Minus_int : [> `Resolved ] t + | Minus_rat : [> `Resolved ] t + | Minus_mon : [> `Resolved ] t + | Minus_dur : [> `Resolved ] t + | ToRat : [> `Overloaded ] t + | ToRat_int : [> `Resolved ] t + | ToRat_mon : [> `Resolved ] t + | ToMoney : [> `Overloaded ] t + | ToMoney_rat : [> `Resolved ] t + | Round : [> `Overloaded ] t + | Round_rat : [> `Resolved ] t + | Round_mon : [> `Resolved ] t (* binary *) (* * monomorphic *) - | And : ('a any, monomorphic) t - | Or : ('a any, monomorphic) t - | Xor : ('a any, monomorphic) t + | And : [> `Monomorphic ] t + | Or : [> `Monomorphic ] t + | Xor : [> `Monomorphic ] t (* * polymorphic *) - | Eq : ('a any, polymorphic) t - | Map : ('a any, polymorphic) t - | Concat : ('a any, polymorphic) t - | Filter : ('a any, polymorphic) t - | Reduce : ('a any, polymorphic) t + | Eq : [> `Polymorphic ] t + | Map : [> `Polymorphic ] t + | Concat : [> `Polymorphic ] t + | Filter : [> `Polymorphic ] t + | Reduce : [> `Polymorphic ] t (* * overloaded *) - | Add : (desugared, overloaded) t - | Add_int_int : ([< scopelang | dcalc | lcalc ], resolved) t - | Add_rat_rat : ([< scopelang | dcalc | lcalc ], resolved) t - | Add_mon_mon : ([< scopelang | dcalc | lcalc ], resolved) t - | Add_dat_dur : - date_rounding - -> ([< scopelang | dcalc | lcalc ], resolved) t - | Add_dur_dur : ([< scopelang | dcalc | lcalc ], resolved) t - | Sub : (desugared, overloaded) t - | Sub_int_int : ([< scopelang | dcalc | lcalc ], resolved) t - | Sub_rat_rat : ([< scopelang | dcalc | lcalc ], resolved) t - | Sub_mon_mon : ([< scopelang | dcalc | lcalc ], resolved) t - | Sub_dat_dat : ([< scopelang | dcalc | lcalc ], resolved) t - | Sub_dat_dur : ([< scopelang | dcalc | lcalc ], resolved) t - | Sub_dur_dur : ([< scopelang | dcalc | lcalc ], resolved) t - | Mult : (desugared, overloaded) t - | Mult_int_int : ([< scopelang | dcalc | lcalc ], resolved) t - | Mult_rat_rat : ([< scopelang | dcalc | lcalc ], resolved) t - | Mult_mon_rat : ([< scopelang | dcalc | lcalc ], resolved) t - | Mult_dur_int : ([< scopelang | dcalc | lcalc ], resolved) t - | Div : (desugared, overloaded) t - | Div_int_int : ([< scopelang | dcalc | lcalc ], resolved) t - | Div_rat_rat : ([< scopelang | dcalc | lcalc ], resolved) t - | Div_mon_rat : ([< scopelang | dcalc | lcalc ], resolved) t - | Div_mon_mon : ([< scopelang | dcalc | lcalc ], resolved) t - | Div_dur_dur : ([< scopelang | dcalc | lcalc ], resolved) t - | Lt : (desugared, overloaded) t - | Lt_int_int : ([< scopelang | dcalc | lcalc ], resolved) t - | Lt_rat_rat : ([< scopelang | dcalc | lcalc ], resolved) t - | Lt_mon_mon : ([< scopelang | dcalc | lcalc ], resolved) t - | Lt_dat_dat : ([< scopelang | dcalc | lcalc ], resolved) t - | Lt_dur_dur : ([< scopelang | dcalc | lcalc ], resolved) t - | Lte : (desugared, overloaded) t - | Lte_int_int : ([< scopelang | dcalc | lcalc ], resolved) t - | Lte_rat_rat : ([< scopelang | dcalc | lcalc ], resolved) t - | Lte_mon_mon : ([< scopelang | dcalc | lcalc ], resolved) t - | Lte_dat_dat : ([< scopelang | dcalc | lcalc ], resolved) t - | Lte_dur_dur : ([< scopelang | dcalc | lcalc ], resolved) t - | Gt : (desugared, overloaded) t - | Gt_int_int : ([< scopelang | dcalc | lcalc ], resolved) t - | Gt_rat_rat : ([< scopelang | dcalc | lcalc ], resolved) t - | Gt_mon_mon : ([< scopelang | dcalc | lcalc ], resolved) t - | Gt_dat_dat : ([< scopelang | dcalc | lcalc ], resolved) t - | Gt_dur_dur : ([< scopelang | dcalc | lcalc ], resolved) t - | Gte : (desugared, overloaded) t - | Gte_int_int : ([< scopelang | dcalc | lcalc ], resolved) t - | Gte_rat_rat : ([< scopelang | dcalc | lcalc ], resolved) t - | Gte_mon_mon : ([< scopelang | dcalc | lcalc ], resolved) t - | Gte_dat_dat : ([< scopelang | dcalc | lcalc ], resolved) t - | Gte_dur_dur : ([< scopelang | dcalc | lcalc ], resolved) t + | Add : [> `Overloaded ] t + | Add_int_int : [> `Resolved ] t + | Add_rat_rat : [> `Resolved ] t + | Add_mon_mon : [> `Resolved ] t + | Add_dat_dur : date_rounding -> [> `Resolved ] t + | Add_dur_dur : [> `Resolved ] t + | Sub : [> `Overloaded ] t + | Sub_int_int : [> `Resolved ] t + | Sub_rat_rat : [> `Resolved ] t + | Sub_mon_mon : [> `Resolved ] t + | Sub_dat_dat : [> `Resolved ] t + | Sub_dat_dur : [> `Resolved ] t + | Sub_dur_dur : [> `Resolved ] t + | Mult : [> `Overloaded ] t + | Mult_int_int : [> `Resolved ] t + | Mult_rat_rat : [> `Resolved ] t + | Mult_mon_rat : [> `Resolved ] t + | Mult_dur_int : [> `Resolved ] t + | Div : [> `Overloaded ] t + | Div_int_int : [> `Resolved ] t + | Div_rat_rat : [> `Resolved ] t + | Div_mon_rat : [> `Resolved ] t + | Div_mon_mon : [> `Resolved ] t + | Div_dur_dur : [> `Resolved ] t + | Lt : [> `Overloaded ] t + | Lt_int_int : [> `Resolved ] t + | Lt_rat_rat : [> `Resolved ] t + | Lt_mon_mon : [> `Resolved ] t + | Lt_dat_dat : [> `Resolved ] t + | Lt_dur_dur : [> `Resolved ] t + | Lte : [> `Overloaded ] t + | Lte_int_int : [> `Resolved ] t + | Lte_rat_rat : [> `Resolved ] t + | Lte_mon_mon : [> `Resolved ] t + | Lte_dat_dat : [> `Resolved ] t + | Lte_dur_dur : [> `Resolved ] t + | Gt : [> `Overloaded ] t + | Gt_int_int : [> `Resolved ] t + | Gt_rat_rat : [> `Resolved ] t + | Gt_mon_mon : [> `Resolved ] t + | Gt_dat_dat : [> `Resolved ] t + | Gt_dur_dur : [> `Resolved ] t + | Gte : [> `Overloaded ] t + | Gte_int_int : [> `Resolved ] t + | Gte_rat_rat : [> `Resolved ] t + | Gte_mon_mon : [> `Resolved ] t + | Gte_dat_dat : [> `Resolved ] t + | Gte_dur_dur : [> `Resolved ] t (* Todo: Eq is not an overload at the moment, but it should be one. The trick is that it needs generation of specific code for arrays, every struct and enum: operators [Eq_structs of StructName.t], etc. *) - | Eq_int_int : ([< scopelang | dcalc | lcalc ], resolved) t - | Eq_rat_rat : ([< scopelang | dcalc | lcalc ], resolved) t - | Eq_mon_mon : ([< scopelang | dcalc | lcalc ], resolved) t - | Eq_dur_dur : ([< scopelang | dcalc | lcalc ], resolved) t - | Eq_dat_dat : ([< scopelang | dcalc | lcalc ], resolved) t + | Eq_int_int : [> `Resolved ] t + | Eq_rat_rat : [> `Resolved ] t + | Eq_mon_mon : [> `Resolved ] t + | Eq_dur_dur : [> `Resolved ] t + | Eq_dat_dat : [> `Resolved ] t (* ternary *) (* * polymorphic *) - | Fold : ('a any, polymorphic) t + | Fold : [> `Polymorphic ] t end -type ('a, 'k) operator = ('a any, 'k) Op.t +type 'a operator = 'a Op.t type except = ConflictError | EmptyError | NoValueProvided | Crash (** {2 Generic expressions} *) @@ -231,33 +267,31 @@ type except = ConflictError | EmptyError | NoValueProvided | Crash (** Literals are the same throughout compilation except for the [LEmptyError] case which is eliminated midway through. *) -type 'a glit = +type _ glit = | LBool : bool -> 'a glit - | LEmptyError : [< desugared | scopelang | dcalc ] glit | LInt : Runtime.integer -> 'a glit | LRat : Runtime.decimal -> 'a glit | LMoney : Runtime.money -> 'a glit | LUnit : 'a glit | LDate : date -> 'a glit | LDuration : duration -> 'a glit + | LEmptyError : [> `DefaultTerms ] glit (** Locations are handled differently in [desugared] and [scopelang] *) type 'a glocation = | DesugaredScopeVar : ScopeVar.t Marked.pos * StateName.t option - -> desugared glocation - | ScopelangScopeVar : ScopeVar.t Marked.pos -> scopelang glocation + -> [> `ScopeVarStates ] glocation + | ScopelangScopeVar : ScopeVar.t Marked.pos -> [> `ScopeVarSimpl ] glocation | SubScopeVar : ScopeName.t * SubScopeName.t Marked.pos * ScopeVar.t Marked.pos - -> [< desugared | scopelang ] glocation - | ToplevelVar : - TopdefName.t Marked.pos - -> [< desugared | scopelang ] glocation + -> [> `ExplicitScopes ] glocation + | ToplevelVar : TopdefName.t Marked.pos -> [> `ExplicitScopes ] glocation type ('a, 't) gexpr = (('a, 't) naked_gexpr, 't) Marked.t (** General expressions: groups all expression cases of the different ASTs, and uses a GADT to eliminate irrelevant cases for each one. The ['t] annotations - are also totally unconstrained at this point. The dcalc exprs, for example, + are also totally unconstrained at this point. The dcalc exprs, for ex ample, are then defined with [type naked_expr = dcalc naked_gexpr] plus the annotations. @@ -272,93 +306,99 @@ type ('a, 't) gexpr = (('a, 't) naked_gexpr, 't) Marked.t and ('a, 't) naked_gexpr = (* Constructors common to all ASTs *) - | ELit : 'a glit -> ('a any, 't) naked_gexpr + | ELit : 'a glit -> (([< all ] as 'a), 't) naked_gexpr | EApp : { f : ('a, 't) gexpr; args : ('a, 't) gexpr list; } - -> ('a any, 't) naked_gexpr - | EOp : { op : ('a, _) operator; tys : typ list } -> ('a any, 't) naked_gexpr - | EArray : ('a, 't) gexpr list -> ('a any, 't) naked_gexpr - | EVar : ('a, 't) naked_gexpr Bindlib.var -> ('a any, 't) naked_gexpr + -> (([< all ] as 'a), 't) naked_gexpr + | EOp : { + op : 'a operator; + tys : typ list; + } + -> (([< all ] as 'a), 't) naked_gexpr + | EArray : ('a, 't) gexpr list -> (([< all ] as 'a), 't) naked_gexpr + | EVar : + ('a, 't) naked_gexpr Bindlib.var + -> (([< all ] as 'a), 't) naked_gexpr | EAbs : { binder : (('a, 't) naked_gexpr, ('a, 't) gexpr) Bindlib.mbinder; tys : typ list; } - -> ('a any, 't) naked_gexpr + -> (([< all ] as 'a), 't) naked_gexpr | EIfThenElse : { cond : ('a, 't) gexpr; etrue : ('a, 't) gexpr; efalse : ('a, 't) gexpr; } - -> ('a any, 't) naked_gexpr + -> (([< all ] as 'a), 't) naked_gexpr | EStruct : { name : StructName.t; fields : ('a, 't) gexpr StructField.Map.t; } - -> ('a any, 't) naked_gexpr + -> (([< all ] as 'a), 't) naked_gexpr | EInj : { name : EnumName.t; e : ('a, 't) gexpr; cons : EnumConstructor.t; } - -> ('a any, 't) naked_gexpr + -> (([< all ] as 'a), 't) naked_gexpr | EMatch : { name : EnumName.t; e : ('a, 't) gexpr; cases : ('a, 't) gexpr EnumConstructor.Map.t; } - -> ('a any, 't) naked_gexpr - | ETuple : ('a, 't) gexpr list -> ('a any, 't) naked_gexpr + -> (([< all ] as 'a), 't) naked_gexpr + | ETuple : ('a, 't) gexpr list -> (([< all ] as 'a), 't) naked_gexpr | ETupleAccess : { e : ('a, 't) gexpr; index : int; size : int; } - -> ('a any, 't) naked_gexpr + -> (([< all ] as 'a), 't) naked_gexpr (* Early stages *) | ELocation : 'a glocation - -> (([< desugared | scopelang ] as 'a), 't) naked_gexpr + -> (([< all > `ExplicitScopes ] as 'a), 't) naked_gexpr | EScopeCall : { scope : ScopeName.t; args : ('a, 't) gexpr ScopeVar.Map.t; } - -> (([< desugared | scopelang ] as 'a), 't) naked_gexpr + -> (([< all > `ExplicitScopes ] as 'a), 't) naked_gexpr | EDStructAccess : { name_opt : StructName.t option; e : ('a, 't) gexpr; field : IdentName.t; } - -> ((desugared as 'a), 't) naked_gexpr + -> (([< all > `SyntacticNames ] as 'a), 't) naked_gexpr (** [desugared] has ambiguous struct fields *) | EStructAccess : { name : StructName.t; e : ('a, 't) gexpr; field : StructField.t; } - -> (([< scopelang | dcalc | lcalc ] as 'a), 't) naked_gexpr + -> (([< all > `ResolvedNames ] as 'a), 't) naked_gexpr (** Resolved struct/enums, after [desugared] *) (* Lambda-like *) - | EAssert : ('a, 't) gexpr -> (([< dcalc | lcalc ] as 'a), 't) naked_gexpr + | EAssert : ('a, 't) gexpr -> (([< all > `Assertions ] as 'a), 't) naked_gexpr (* Default terms *) | EDefault : { excepts : ('a, 't) gexpr list; just : ('a, 't) gexpr; cons : ('a, 't) gexpr; } - -> (([< desugared | scopelang | dcalc ] as 'a), 't) naked_gexpr + -> (([< all > `DefaultTerms ] as 'a), 't) naked_gexpr | EErrorOnEmpty : ('a, 't) gexpr - -> (([< desugared | scopelang | dcalc ] as 'a), 't) naked_gexpr + -> (([< all > `DefaultTerms ] as 'a), 't) naked_gexpr (* Lambda calculus with exceptions *) - | ERaise : except -> ((lcalc as 'a), 't) naked_gexpr + | ERaise : except -> (([< all > `Exceptions ] as 'a), 't) naked_gexpr | ECatch : { body : ('a, 't) gexpr; exn : except; handler : ('a, 't) gexpr; } - -> ((lcalc as 'a), 't) naked_gexpr + -> (([< all > `Exceptions ] as 'a), 't) naked_gexpr type ('a, 't) boxed_gexpr = (('a, 't) naked_gexpr Bindlib.box, 't) Marked.t (** The annotation is lifted outside of the box for expressions *) diff --git a/compiler/shared_ast/expr.ml b/compiler/shared_ast/expr.ml index c6d843f5..8e508ab8 100644 --- a/compiler/shared_ast/expr.ml +++ b/compiler/shared_ast/expr.ml @@ -214,7 +214,7 @@ let map | EApp { f = e1; args } -> eapp (f e1) (List.map f args) m | EOp { op; tys } -> eop op tys m | EArray args -> earray (List.map f args) m - | EVar v -> evar (Var.translate v) m + | EVar v -> evar (Var.translate_mark v) m | EAbs { binder; tys } -> let vars, body = Bindlib.unmbind binder in let body = f body in @@ -383,7 +383,7 @@ let map_gather (* - *) (** See [Bindlib.box_term] documentation for why we are doing that. *) -let rec rebox e = map ~f:rebox e +let rec rebox (e : ('a any, 't) gexpr) = map ~f:rebox e let box e = Marked.same_mark_as (Bindlib.box (Marked.unmark e)) e let unbox (e, m) = Bindlib.unbox e, m @@ -650,11 +650,11 @@ let rec compare : type a. (a, _) gexpr -> (a, _) gexpr -> int = | EInj _, _ -> -1 | _, EInj _ -> 1 | EAssert _, _ -> -1 | _, EAssert _ -> 1 | EDefault _, _ -> -1 | _, EDefault _ -> 1 - | EErrorOnEmpty _, _ -> . | _, EErrorOnEmpty _ -> . + | EErrorOnEmpty _, _ -> -1 | _, EErrorOnEmpty _ -> 1 | ERaise _, _ -> -1 | _, ERaise _ -> 1 | ECatch _, _ -> . | _, ECatch _ -> . -let rec free_vars : type a. (a, 't) gexpr -> (a, 't) gexpr Var.Set.t = function +let rec free_vars : ('a, 't) gexpr -> ('a, 't) gexpr Var.Set.t = function | EVar v, _ -> Var.Set.singleton v | EAbs { binder; _ }, _ -> let vs, body = Bindlib.unmbind binder in diff --git a/compiler/shared_ast/expr.mli b/compiler/shared_ast/expr.mli index 086dfd4b..3ebff562 100644 --- a/compiler/shared_ast/expr.mli +++ b/compiler/shared_ast/expr.mli @@ -28,7 +28,7 @@ val box : ('a, 't) gexpr -> ('a, 't) boxed_gexpr val unbox : ('a, 't) boxed_gexpr -> ('a, 't) gexpr (** For closed expressions, similar to [Bindlib.unbox] *) -val rebox : ('a, 't) gexpr -> ('a, 't) boxed_gexpr +val rebox : ('a any, 't) gexpr -> ('a, 't) boxed_gexpr (** Rebuild the whole term, re-binding all variables and exposing free variables *) val evar : ('a, 't) gexpr Var.t -> 't -> ('a, 't) boxed_gexpr @@ -43,101 +43,101 @@ val subst : ('a, 't) gexpr list -> ('a, 't) gexpr -val etuple : ('a any, 't) boxed_gexpr list -> 't -> ('a, 't) boxed_gexpr +val etuple : ('a, 't) boxed_gexpr list -> 't -> ('a any, 't) boxed_gexpr val etupleaccess : - ('a any, 't) boxed_gexpr -> int -> int -> 't -> ('a, 't) boxed_gexpr + ('a, 't) boxed_gexpr -> int -> int -> 't -> ('a any, 't) boxed_gexpr -val earray : ('a any, 't) boxed_gexpr list -> 't -> ('a, 't) boxed_gexpr -val elit : 'a any glit -> 't -> ('a, 't) boxed_gexpr +val earray : ('a, 't) boxed_gexpr list -> 't -> ('a any, 't) boxed_gexpr +val elit : 'a glit -> 't -> ('a any, 't) boxed_gexpr val eabs : - (('a any, 't) naked_gexpr, ('a, 't) gexpr) Bindlib.mbinder Bindlib.box -> + (('a, 't) naked_gexpr, ('a, 't) gexpr) Bindlib.mbinder Bindlib.box -> typ list -> 't -> - ('a, 't) boxed_gexpr + ('a any, 't) boxed_gexpr val eapp : - ('a any, 't) boxed_gexpr -> + ('a, 't) boxed_gexpr -> ('a, 't) boxed_gexpr list -> 't -> - ('a, 't) boxed_gexpr + ('a any, 't) boxed_gexpr val eassert : - (([< dcalc | lcalc ] as 'a), 't) boxed_gexpr -> 't -> ('a, 't) boxed_gexpr + ('a, 't) boxed_gexpr -> 't -> (([< all > `Assertions ] as 'a), 't) boxed_gexpr -val eop : ('a any, 'k) operator -> typ list -> 't -> ('a, 't) boxed_gexpr +val eop : 'a operator -> typ list -> 't -> (([< all ] as 'a), 't) boxed_gexpr val edefault : - (([< desugared | scopelang | dcalc ] as 'a), 't) boxed_gexpr list -> + ('a, 't) boxed_gexpr list -> ('a, 't) boxed_gexpr -> ('a, 't) boxed_gexpr -> 't -> - ('a, 't) boxed_gexpr + (([< all > `DefaultTerms ] as 'a), 't) boxed_gexpr val eifthenelse : - ('a any, 't) boxed_gexpr -> + ('a, 't) boxed_gexpr -> ('a, 't) boxed_gexpr -> ('a, 't) boxed_gexpr -> 't -> - ('a, 't) boxed_gexpr + ('a any, 't) boxed_gexpr val eerroronempty : - (([< desugared | scopelang | dcalc ] as 'a), 't) boxed_gexpr -> + ('a, 't) boxed_gexpr -> 't -> - ('a, 't) boxed_gexpr + (([< all > `DefaultTerms ] as 'a), 't) boxed_gexpr val ecatch : - (lcalc, 't) boxed_gexpr -> + ('a, 't) boxed_gexpr -> except -> - (lcalc, 't) boxed_gexpr -> + ('a, 't) boxed_gexpr -> 't -> - (lcalc, 't) boxed_gexpr + (([< all > `Exceptions ] as 'a), 't) boxed_gexpr -val eraise : except -> 't -> (lcalc, 't) boxed_gexpr +val eraise : except -> 't -> ([< all > `Exceptions ], 't) boxed_gexpr val elocation : - ([< desugared | scopelang ] as 'a) glocation -> 't -> ('a, 't) boxed_gexpr + 'a glocation -> 't -> (([< all > `ExplicitScopes ] as 'a), 't) boxed_gexpr val estruct : StructName.t -> - ('a any, 't) boxed_gexpr StructField.Map.t -> + ('a, 't) boxed_gexpr StructField.Map.t -> 't -> - ('a, 't) boxed_gexpr + ('a any, 't) boxed_gexpr val edstructaccess : - (desugared, 't) boxed_gexpr -> + ('a, 't) boxed_gexpr -> IdentName.t -> StructName.t option -> 't -> - (desugared, 't) boxed_gexpr + (([< all > `SyntacticNames ] as 'a), 't) boxed_gexpr val estructaccess : - (([< scopelang | dcalc | lcalc ] as 'a), 't) boxed_gexpr -> + ('a, 't) boxed_gexpr -> StructField.t -> StructName.t -> 't -> - ('a, 't) boxed_gexpr + (([< all > `ResolvedNames ] as 'a), 't) boxed_gexpr val einj : - ('a any, 't) boxed_gexpr -> + ('a, 't) boxed_gexpr -> EnumConstructor.t -> EnumName.t -> 't -> - ('a, 't) boxed_gexpr + ('a any, 't) boxed_gexpr val ematch : - ('a any, 't) boxed_gexpr -> + ('a, 't) boxed_gexpr -> EnumName.t -> ('a, 't) boxed_gexpr EnumConstructor.Map.t -> 't -> - ('a, 't) boxed_gexpr + ('a any, 't) boxed_gexpr val escopecall : ScopeName.t -> - (([< desugared | scopelang ] as 'a), 't) boxed_gexpr ScopeVar.Map.t -> + ('a, 't) boxed_gexpr ScopeVar.Map.t -> 't -> - ('a, 't) boxed_gexpr + (([< all > `ExplicitScopes ] as 'a), 't) boxed_gexpr (** Manipulation of marks *) @@ -266,7 +266,7 @@ val make_app : ('a, 'm mark) boxed_gexpr val empty_thunked_term : - 'm mark -> ([< dcalc | desugared | scopelang ], 'm mark) boxed_gexpr + 'm mark -> ([< all > `DefaultTerms ], 'm mark) boxed_gexpr val make_let_in : ('a, 'm mark) gexpr Var.t -> @@ -285,11 +285,11 @@ val make_multiple_let_in : ('a, 'm mark) boxed_gexpr val make_default : - (([< desugared | scopelang | dcalc ] as 'a), 't) boxed_gexpr list -> + ('a, 't) boxed_gexpr list -> ('a, 't) boxed_gexpr -> ('a, 't) boxed_gexpr -> 't -> - ('a, 't) boxed_gexpr + (([< all > `Polymorphic `DefaultTerms ] as 'a), 't) boxed_gexpr (** [make_default ?pos exceptions just cons] builds a term semantically equivalent to [] (the [EDefault] constructor) while avoiding redundant nested constructions. The position is extracted @@ -310,7 +310,8 @@ val make_tuple : (** {2 Transformations} *) -val remove_logging_calls : ('a any, 't) gexpr -> ('a, 't) boxed_gexpr +val remove_logging_calls : + (([< all > `Polymorphic ] as 'a), 't) gexpr -> ('a, 't) boxed_gexpr (** Removes all calls to [Log] unary operators in the AST, replacing them by their argument. *) diff --git a/compiler/shared_ast/operator.ml b/compiler/shared_ast/operator.ml index c979e0f5..613ac4f7 100644 --- a/compiler/shared_ast/operator.ml +++ b/compiler/shared_ast/operator.ml @@ -18,7 +18,7 @@ open Catala_utils open Definitions include Definitions.Op -let name : type a k. (a, k) t -> string = function +let name : type a. a t -> string = function | Not -> "o_not" | Length -> "o_length" | GetDay -> "o_getDay" @@ -124,7 +124,7 @@ let compare_log_entries l1 l2 = | PosRecordIfTrueBool, _ -> . | _, PosRecordIfTrueBool -> . -let compare (type a k a2 k2) (t1 : (a, k) t) (t2 : (a2, k2) t) = +let compare (type a1 a2) (t1 : a1 t) (t2 : a2 t) = match[@ocamlformat "disable"] t1, t2 with | Log (l1, info1), Log (l2, info2) -> ( match compare_log_entries l1 l2 with @@ -296,18 +296,18 @@ let compare (type a k a2 k2) (t1 : (a, k) t) (t2 : (a2, k2) t) = | Eq_dur_dur, _ -> -1 | _, Eq_dur_dur -> 1 | Fold, _ | _, Fold -> . -let equal (type a k a2 k2) (t1 : (a, k) t) (t2 : (a2, k2) t) = compare t1 t2 = 0 +let equal t1 t2 = compare t1 t2 = 0 (* Classification of operators *) let kind_dispatch : - type a b k. - polymorphic:((_, polymorphic) t -> b) -> - monomorphic:((_, monomorphic) t -> b) -> - ?overloaded:((_, overloaded) t -> b) -> - ?resolved:((_, resolved) t -> b) -> - (a, k) t -> - b = + type a. + polymorphic:([> polymorphic ] t -> 'b) -> + monomorphic:([> monomorphic ] t -> 'b) -> + ?overloaded:([> overloaded ] t -> 'b) -> + ?resolved:([> resolved ] t -> 'b) -> + a t -> + 'b = fun ~polymorphic ~monomorphic ?(overloaded = fun _ -> assert false) ?(resolved = fun _ -> assert false) op -> match op with @@ -332,88 +332,30 @@ let kind_dispatch : | Eq_mon_mon | Eq_dat_dat | Eq_dur_dur ) as op -> resolved op -(* Glorified identity... allowed operators are the same in scopelang, dcalc, - lcalc *) -let translate : - type k. - date_rounding option -> - ([< scopelang | dcalc | lcalc ], k) t -> - ([< scopelang | dcalc | lcalc ], k) t = - fun r op -> - match op with - | Length -> Length - | Log (i, l) -> Log (i, l) - | Eq -> Eq - | Map -> Map - | Concat -> Concat - | Filter -> Filter - | Reduce -> Reduce - | Fold -> Fold - | Not -> Not - | GetDay -> GetDay - | GetMonth -> GetMonth - | GetYear -> GetYear - | FirstDayOfMonth -> FirstDayOfMonth - | LastDayOfMonth -> LastDayOfMonth - | And -> And - | Or -> Or - | Xor -> Xor - | Minus_int -> Minus_int - | Minus_rat -> Minus_rat - | Minus_mon -> Minus_mon - | Minus_dur -> Minus_dur - | ToRat_int -> ToRat_int - | ToRat_mon -> ToRat_mon - | ToMoney_rat -> ToMoney_rat - | Round_rat -> Round_rat - | Round_mon -> Round_mon - | Add_int_int -> Add_int_int - | Add_rat_rat -> Add_rat_rat - | Add_mon_mon -> Add_mon_mon +let translate + (r : date_rounding option) + (t : [< scopelang | dcalc | lcalc > `Monomorphic `Polymorphic `Resolved ] t) + = + match t with | Add_dat_dur rmode -> Add_dat_dur (Option.value r ~default:rmode) - | Add_dur_dur -> Add_dur_dur - | Sub_int_int -> Sub_int_int - | Sub_rat_rat -> Sub_rat_rat - | Sub_mon_mon -> Sub_mon_mon - | Sub_dat_dat -> Sub_dat_dat - | Sub_dat_dur -> Sub_dat_dur - | Sub_dur_dur -> Sub_dur_dur - | Mult_int_int -> Mult_int_int - | Mult_rat_rat -> Mult_rat_rat - | Mult_mon_rat -> Mult_mon_rat - | Mult_dur_int -> Mult_dur_int - | Div_int_int -> Div_int_int - | Div_rat_rat -> Div_rat_rat - | Div_mon_mon -> Div_mon_mon - | Div_mon_rat -> Div_mon_rat - | Div_dur_dur -> Div_dur_dur - | Lt_int_int -> Lt_int_int - | Lt_rat_rat -> Lt_rat_rat - | Lt_mon_mon -> Lt_mon_mon - | Lt_dat_dat -> Lt_dat_dat - | Lt_dur_dur -> Lt_dur_dur - | Lte_int_int -> Lte_int_int - | Lte_rat_rat -> Lte_rat_rat - | Lte_mon_mon -> Lte_mon_mon - | Lte_dat_dat -> Lte_dat_dat - | Lte_dur_dur -> Lte_dur_dur - | Gt_int_int -> Gt_int_int - | Gt_rat_rat -> Gt_rat_rat - | Gt_mon_mon -> Gt_mon_mon - | Gt_dat_dat -> Gt_dat_dat - | Gt_dur_dur -> Gt_dur_dur - | Gte_int_int -> Gte_int_int - | Gte_rat_rat -> Gte_rat_rat - | Gte_mon_mon -> Gte_mon_mon - | Gte_dat_dat -> Gte_dat_dat - | Gte_dur_dur -> Gte_dur_dur - | Eq_int_int -> Eq_int_int - | Eq_rat_rat -> Eq_rat_rat - | Eq_mon_mon -> Eq_mon_mon - | Eq_dat_dat -> Eq_dat_dat - | Eq_dur_dur -> Eq_dur_dur + | ( Not | GetDay | GetMonth | GetYear | FirstDayOfMonth | LastDayOfMonth | And + | Or | Xor ) as op -> + op + | (Log _ | Length | Eq | Map | Concat | Filter | Reduce | Fold) as op -> op + | ( Minus_int | Minus_rat | Minus_mon | Minus_dur | ToRat_int | ToRat_mon + | ToMoney_rat | Round_rat | Round_mon | Add_int_int | Add_rat_rat + | Add_mon_mon | Add_dur_dur | Sub_int_int | Sub_rat_rat | Sub_mon_mon + | Sub_dat_dat | Sub_dat_dur | Sub_dur_dur | Mult_int_int | Mult_rat_rat + | Mult_mon_rat | Mult_dur_int | Div_int_int | Div_rat_rat | Div_mon_mon + | Div_mon_rat | Div_dur_dur | Lt_int_int | Lt_rat_rat | Lt_mon_mon + | Lt_dat_dat | Lt_dur_dur | Lte_int_int | Lte_rat_rat | Lte_mon_mon + | Lte_dat_dat | Lte_dur_dur | Gt_int_int | Gt_rat_rat | Gt_mon_mon + | Gt_dat_dat | Gt_dur_dur | Gte_int_int | Gte_rat_rat | Gte_mon_mon + | Gte_dat_dat | Gte_dur_dur | Eq_int_int | Eq_rat_rat | Eq_mon_mon + | Eq_dat_dat | Eq_dur_dur ) as op -> + op -let monomorphic_type (op, pos) = +let monomorphic_type ((op : monomorphic t), pos) = let args, ret = match op with | Not -> [TBool], TBool @@ -441,7 +383,7 @@ let monomorphic_type (op, pos) = considering an operator with type ['a -> 'b -> 'c], for any given two among ['a], ['b] and ['c], there should be a unique solution for the third. *) -let resolved_type (op, pos) = +let resolved_type ((op : resolved t), pos) = let args, ret = match op with | Minus_int -> [TInt], TInt @@ -501,8 +443,8 @@ let resolved_type (op, pos) = in TArrow (List.map (fun tau -> TLit tau, pos) args, (TLit ret, pos)), pos -let resolve_overload_aux (op : ('a, overloaded) t) (operands : typ_lit list) : - ('b, resolved) t * [ `Straight | `Reversed ] = +let resolve_overload_aux (op : [< overloaded ] t) (operands : typ_lit list) : + [> resolved ] t * [ `Straight | `Reversed ] = match op, operands with | Minus, [TInt] -> Minus_int, `Straight | Minus, [TRat] -> Minus_rat, `Straight @@ -561,10 +503,8 @@ let resolve_overload_aux (op : ('a, overloaded) t) (operands : typ_lit list) : _ ) -> raise Not_found -let resolve_overload - ctx - (op : ('a, overloaded) t Marked.pos) - (operands : typ list) : ('b, resolved) t * [ `Straight | `Reversed ] = +let resolve_overload ctx (op : overloaded t Marked.pos) (operands : typ list) : + [> resolved ] t * [ `Straight | `Reversed ] = try let operands = List.map @@ -590,7 +530,7 @@ let resolve_overload (Print.typ ctx)) operands -let overload_type ctx (op : ('a, overloaded) t Marked.pos) (operands : typ list) - : typ = +let overload_type ctx (op : overloaded t Marked.pos) (operands : typ list) : typ + = let rop = fst (resolve_overload ctx op operands) in resolved_type (Marked.same_mark_as rop op) diff --git a/compiler/shared_ast/operator.mli b/compiler/shared_ast/operator.mli index 51034d19..ae6dbb2f 100644 --- a/compiler/shared_ast/operator.mli +++ b/compiler/shared_ast/operator.mli @@ -33,39 +33,36 @@ open Catala_utils open Definitions include module type of Definitions.Op -val equal : ('a1, 'k1) t -> ('a2, 'k2) t -> bool -val compare : ('a1, 'k1) t -> ('a2, 'k2) t -> int +val equal : 'a1 t -> 'a2 t -> bool +val compare : 'a1 t -> 'a2 t -> int -val name : ('a, 'k) t -> string +val name : 'a t -> string (** Returns the operator name as a valid ident starting with a lowercase character. This is different from Print.operator which returns operator symbols, e.g. [+$]. *) val kind_dispatch : - polymorphic:((_ any, polymorphic) t -> 'b) -> - monomorphic:((_ any, monomorphic) t -> 'b) -> - ?overloaded:((desugared, overloaded) t -> 'b) -> - ?resolved:(([< scopelang | dcalc | lcalc ], resolved) t -> 'b) -> - ('a, 'k) t -> + polymorphic:([> polymorphic ] t -> 'b) -> + monomorphic:([> monomorphic ] t -> 'b) -> + ?overloaded:([> overloaded ] t -> 'b) -> + ?resolved:([> resolved ] t -> 'b) -> + 'a t -> 'b (** Calls one of the supplied functions depending on the kind of the operator *) val translate : date_rounding option -> - ([< scopelang | dcalc | lcalc ], 'k) t -> - ([< scopelang | dcalc | lcalc ], 'k) t + [< scopelang | dcalc | lcalc > `Monomorphic `Polymorphic `Resolved ] t -> + [> `Monomorphic | `Polymorphic | `Resolved ] t (** An identity function that allows translating an operator between different passes that don't change operator types *) (** {2 Getting the types of operators} *) -val monomorphic_type : ('a any, monomorphic) t Marked.pos -> typ +val monomorphic_type : monomorphic t Marked.pos -> typ +val resolved_type : resolved t Marked.pos -> typ -val resolved_type : - ([< scopelang | dcalc | lcalc ], resolved) t Marked.pos -> typ - -val overload_type : - decl_ctx -> (desugared, overloaded) t Marked.pos -> typ list -> typ +val overload_type : decl_ctx -> overloaded t Marked.pos -> typ list -> typ (** The type for typing overloads is different since the types of the operands are required in advance. @@ -78,9 +75,9 @@ val overload_type : val resolve_overload : decl_ctx -> - (desugared, overloaded) t Marked.pos -> + overloaded t Marked.pos -> typ list -> - ([< scopelang | dcalc | lcalc ], resolved) t * [ `Straight | `Reversed ] + [> resolved ] t * [ `Straight | `Reversed ] (** Some overloads are sugar for an operation with reversed operands, e.g. [TRat * TMoney] is using [mult_mon_rat]. [`Reversed] is returned to signify this case. *) diff --git a/compiler/shared_ast/print.ml b/compiler/shared_ast/print.ml index 52542c90..8166d291 100644 --- a/compiler/shared_ast/print.ml +++ b/compiler/shared_ast/print.ml @@ -154,7 +154,9 @@ let log_entry (fmt : Format.formatter) (entry : log_entry) : unit = Cli.format_with_style [ANSITerminal.green] fmt "☛ ") entry -let operator_to_string : type a k. (a, k) Op.t -> string = function +let operator_to_string : type a. a Op.t -> string = + let open Op in + function | Not -> "~" | Length -> "length" | GetDay -> "get_day" @@ -241,7 +243,9 @@ let operator_to_string : type a k. (a, k) Op.t -> string = function | Eq_dat_dat -> "=@" | Fold -> "fold" -let operator (type k) (fmt : Format.formatter) (op : ('a, k) operator) : unit = +let operator : type a. Format.formatter -> a Op.t -> unit = + fun fmt op -> + let open Op in match op with | Log (entry, infos) -> Format.fprintf fmt "%a@[[%a|%a]@]" op_style "log" log_entry entry diff --git a/compiler/shared_ast/print.mli b/compiler/shared_ast/print.mli index d490ee90..3b0babd1 100644 --- a/compiler/shared_ast/print.mli +++ b/compiler/shared_ast/print.mli @@ -35,7 +35,7 @@ val tlit : Format.formatter -> typ_lit -> unit val location : Format.formatter -> 'a glocation -> unit val typ : decl_ctx -> Format.formatter -> typ -> unit val lit : Format.formatter -> 'a glit -> unit -val operator : Format.formatter -> ('a any, 'k) operator -> unit +val operator : Format.formatter -> 'a operator -> unit val log_entry : Format.formatter -> log_entry -> unit val except : Format.formatter -> except -> unit val var : Format.formatter -> 'e Var.t -> unit diff --git a/compiler/shared_ast/program.mli b/compiler/shared_ast/program.mli index f92f14a3..2c23c4a8 100644 --- a/compiler/shared_ast/program.mli +++ b/compiler/shared_ast/program.mli @@ -26,14 +26,11 @@ val map_exprs : 'expr2 program Bindlib.box val get_scope_body : - (([< dcalc | lcalc ], _) gexpr as 'e) program -> ScopeName.t -> 'e scope_body + ((_ any, 't) gexpr as 'e) program -> ScopeName.t -> 'e scope_body -val untype : - (([< dcalc | lcalc ] as 'a), 'm mark) gexpr program -> - ('a, untyped mark) gexpr program +val untype : ('a any, _ mark) gexpr program -> ('a, untyped mark) gexpr program -val to_expr : - (([< dcalc | lcalc ], _) gexpr as 'e) program -> ScopeName.t -> 'e boxed +val to_expr : ((_ any, _) gexpr as 'e) program -> ScopeName.t -> 'e boxed (** Usage: [build_whole_program_expr program main_scope] builds an expression corresponding to the main program and returning the main scope as a function. *) diff --git a/compiler/shared_ast/typing.ml b/compiler/shared_ast/typing.ml index 16b066c8..d197612e 100644 --- a/compiler/shared_ast/typing.ml +++ b/compiler/shared_ast/typing.ml @@ -237,8 +237,8 @@ let lit_type (type a) (lit : a A.glit) : naked_typ = functions separate. In particular [resolve_overloads] requires its argument types to be known in advance. *) -let polymorphic_op_type (op : ('a, Operator.polymorphic) A.operator Marked.pos) - : unionfind_typ = +let polymorphic_op_type (op : Operator.polymorphic A.operator Marked.pos) : + unionfind_typ = let open Operator in let pos = Marked.get_mark op in let any = lazy (UnionFind.make (TAny (Any.fresh ()), pos)) in @@ -267,7 +267,7 @@ let resolve_overload_ret_type ~leave_unresolved (ctx : A.decl_ctx) e - (op : ('a A.any, Operator.overloaded) A.operator) + (op : Operator.overloaded A.operator) tys : unionfind_typ = let op_ty = Operator.overload_type ctx diff --git a/compiler/shared_ast/var.ml b/compiler/shared_ast/var.ml index 1583bd8b..9f4c0f72 100644 --- a/compiler/shared_ast/var.ml +++ b/compiler/shared_ast/var.ml @@ -21,7 +21,7 @@ open Definitions (** This module provides types and helpers for Bindlib variables on the [gexpr] type *) -type 'e t = ('a, 't) naked_gexpr Bindlib.var constraint 'e = ('a any, 't) gexpr +type 'e t = ('a any, 't) naked_gexpr Bindlib.var constraint 'e = ('a, 't) gexpr type 'e vars = ('a, 't) naked_gexpr Bindlib.mvar constraint 'e = ('a any, 't) gexpr @@ -29,6 +29,7 @@ type 'e vars = ('a, 't) naked_gexpr Bindlib.mvar let make (name : string) : 'e t = Bindlib.new_var (fun x -> EVar x) name let compare = Bindlib.compare_vars let eq = Bindlib.eq_vars +let translate_mark v = Bindlib.copy_var v (fun x -> EVar x) (Bindlib.name_of v) let translate (v : 'e1 t) : 'e2 t = Bindlib.copy_var v (fun x -> EVar x) (Bindlib.name_of v) diff --git a/compiler/shared_ast/var.mli b/compiler/shared_ast/var.mli index 67708ef4..4d172482 100644 --- a/compiler/shared_ast/var.mli +++ b/compiler/shared_ast/var.mli @@ -21,7 +21,7 @@ open Definitions (** This module provides types and helpers for Bindlib variables on the [gexpr] type *) -type 'e t = ('a, 't) naked_gexpr Bindlib.var constraint 'e = ('a any, 't) gexpr +type 'e t = ('a any, 't) naked_gexpr Bindlib.var constraint 'e = ('a, 't) gexpr type 'e vars = ('a, 't) naked_gexpr Bindlib.mvar constraint 'e = ('a any, 't) gexpr @@ -30,6 +30,9 @@ val make : string -> 'e t val compare : 'e t -> 'e t -> int val eq : 'e t -> 'e t -> bool +val translate_mark : + ('a any, 't1) naked_gexpr Bindlib.var -> ('a any, 't2) naked_gexpr Bindlib.var + val translate : 'e1 t -> 'e2 t (** Needed when converting from one AST type to another. See the note of caution on [Bindlib.copy_var]. *) diff --git a/compiler/surface/dune b/compiler/surface/dune index 7f39f538..ed6a89d9 100644 --- a/compiler/surface/dune +++ b/compiler/surface/dune @@ -40,7 +40,7 @@ (rule (target grammar.html) (action - (run obelisk html -o %{target} %{dep:parser.mly}))) + (run obelisk html -i -o %{target} %{dep:parser.mly}))) (documentation (package catala) diff --git a/compiler/verification/z3backend.real.ml b/compiler/verification/z3backend.real.ml index 1d8e5771..606bfe40 100644 --- a/compiler/verification/z3backend.real.ml +++ b/compiler/verification/z3backend.real.ml @@ -430,8 +430,7 @@ let is_leap_year = Runtime.is_leap_year (** [translate_op] returns the Z3 expression corresponding to the application of [op] to the arguments [args] **) let rec translate_op : - type k. - context -> (dcalc, k) operator -> 'm expr list -> context * Expr.expr = + context -> dcalc operator -> 'm expr list -> context * Expr.expr = fun ctx op args -> let ill_formed () = Format.kasprintf failwith diff --git a/french_law/js/french_law.js b/french_law/js/french_law.js index 0ae25fe1..ab6c3cf7 100644 --- a/french_law/js/french_law.js +++ b/french_law/js/french_law.js @@ -1,5 +1,5 @@ //# 1 "api_web.bc.runtime.js" -// Generated by js_of_ocaml 4.1.0 +// Generated by js_of_ocaml 4.0.0 (function(Object) {typeof globalThis !== @@ -432,7 +432,7 @@ else if(f.signstyle != "-")buffer += f.signstyle; if(f.alternate && f.base == 8)buffer += "0"; - if(f.alternate && f.base == 16)buffer += f.uppercase?"0X":"0x"; + if(f.alternate && f.base == 16)buffer += "0x"; if(f.justify == "+" && f.filler == "0") for(var i=len;i < f.width;i++)buffer += "0"; buffer += rawbuffer; @@ -458,7 +458,6 @@ 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 @@ -509,7 +508,6 @@ 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; @@ -656,27 +654,37 @@ 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) - {if(! (a instanceof Uint8Array))a = new Uint8Array(a); - return new MlBytes(4,a,a.length)} + function caml_bytes_of_array(a){return new MlBytes(4,a,a.length)} function caml_bytes_of_string(s){return s} function caml_raise_sys_error(msg) {caml_raise_with_string(caml_global_data.Sys_error,msg)} function caml_raise_no_such_file(name) {caml_raise_sys_error(name + ": No such file or directory")} + function caml_bytes_bound_error() + {caml_invalid_argument("index out of bounds")} + function caml_bytes_unsafe_get(s,i) + {switch(s.t & 6) + {default:if(i >= s.c.length)return 0;case 0:return s.c.charCodeAt(i); + case 4:return s.c[i] + }} + function caml_bytes_get(s,i) + {if(i >>> 0 >= s.l)caml_bytes_bound_error(); + return caml_bytes_unsafe_get(s,i)} + function caml_create_bytes(len) + {if(len < 0)caml_invalid_argument("Bytes.create"); + return new MlBytes(len?2:9,"",len)} + function caml_ml_bytes_length(s){return s.l} function caml_convert_bytes_to_array(s) - {var a=new Uint8Array(s.l),b=s.c,l=b.length,i=0; + {if(globalThis.Uint8Array) + var a=new (globalThis.Uint8Array)(s.l); + else + var a=new Array(s.l); + var b=s.c,l=b.length,i=0; for(;i < l;i++)a[i] = b.charCodeAt(i); for(l = s.l;i < l;i++)a[i] = 0; s.c = a; s.t = 4; return a} - function caml_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)) @@ -707,10 +715,11 @@ 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) @@ -728,38 +737,19 @@ {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_bytes(caml_bytes_of_array(buf),pos,this.data,offset,len); + caml_blit_string(buf,pos,this.data,offset,len); return 0}; MlFakeFile.prototype.read = function(offset,buf,pos,len) {var clen=this.length(); - 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 + caml_blit_bytes(this.data,offset,buf,pos,len); + return 0}; + MlFakeFile.prototype.read_one = - 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(offset){return caml_bytes_get(this.data,offset)}; + MlFakeFile.prototype.close = function(){}; + MlFakeFile.prototype.constructor = MlFakeFile; function MlFakeDevice(root,f) {this.content = {};this.root = root;this.lookupFun = f} MlFakeDevice.prototype.nm = function(name){return this.root + name}; @@ -857,38 +847,6 @@ {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) @@ -904,8 +862,7 @@ MlFakeDevice.prototype.open = function(name,f) - {var file; - if(f.rdonly && f.wronly) + {if(f.rdonly && f.wronly) caml_raise_sys_error (this.nm(name) + @@ -921,46 +878,16 @@ 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()} + var file=this.content[name]; + if(f.truncate)file.truncate(); + return file} else if(f.create) {this.create_dir_if_needed(name); this.content[name] = new MlFakeFile(caml_create_bytes(0)); - file = this.content[name]} + return this.content[name]} else - 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)}; + caml_raise_no_such_file(this.nm(name))}; MlFakeDevice.prototype.register = function(name,content) @@ -989,18 +916,13 @@ (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_uint8_array_of_string(s) + function caml_array_of_string(s) {var l=caml_ml_string_length(s),a=new Array(l),i=0; for(;i < l;i++)a[i] = caml_string_unsafe_get(s,i); return a} - function caml_bytes_bound_error() - {caml_invalid_argument("index out of bounds")} + function caml_array_of_bytes(s) + {if(s.t != 4)caml_convert_bytes_to_array(s);return s.c} function caml_bytes_unsafe_set(s,i,c) {c &= 0xff; if(s.t != 4) @@ -1012,48 +934,59 @@ 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 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 MlNodeFile(fd){this.fs = require("fs");this.fd = fd} + MlNodeFile.prototype = new MlFile(); + MlNodeFile.prototype.truncate = function(len) {try {this.fs.ftruncateSync(this.fd,len | 0)} catch(err){caml_raise_sys_error(err.toString())}}; - MlNodeFd.prototype.length + MlNodeFile.prototype.length = function() {try {return this.fs.fstatSync(this.fd).size} catch(err){caml_raise_sys_error(err.toString())}}; - MlNodeFd.prototype.write + MlNodeFile.prototype.write = function(offset,buf,buf_offset,len) - {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)} + {var a=caml_array_of_string(buf); + if(! (a instanceof globalThis.Uint8Array)) + a = new (globalThis.Uint8Array)(a); + var buffer=globalThis.Buffer.from(a); + try + {this.fs.writeSync(this.fd,buffer,buf_offset,len,offset)} catch(err){caml_raise_sys_error(err.toString())} return 0}; - MlNodeFd.prototype.read + MlNodeFile.prototype.read = - 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(offset,buf,buf_offset,len) + {var a=caml_array_of_bytes(buf); + if(! (a instanceof globalThis.Uint8Array)) + a = new (globalThis.Uint8Array)(a); + var buffer=globalThis.Buffer.from(a); + try + {this.fs.readSync(this.fd,buffer,buf_offset,len,offset)} + catch(err){caml_raise_sys_error(err.toString())} + for(var i=0;i < len;i++) + caml_bytes_set(buf,buf_offset + i,buffer[buf_offset + i]); + return 0}; + MlNodeFile.prototype.read_one + = + function(offset) + {var a=new (globalThis.Uint8Array)(1),buffer=globalThis.Buffer.from(a); + try + {this.fs.readSync(this.fd,buffer,0,1,offset)} + catch(err){caml_raise_sys_error(err.toString())} + return buffer[0]}; + MlNodeFile.prototype.close = function() {try - {this.fs.closeSync(this.fd);return 0} + {this.fs.closeSync(this.fd)} catch(err){caml_raise_sys_error(err.toString())}}; + MlNodeFile.prototype.constructor = MlNodeFile; function MlNodeDevice(root){this.fs = require("fs");this.root = root} MlNodeDevice.prototype.nm = function(name){return this.root + name}; MlNodeDevice.prototype.exists @@ -1109,12 +1042,7 @@ case "nonblock":res |= consts.O_NONBLOCK;break } try - {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)} + {var fd=this.fs.openSync(this.nm(name),res);return new MlNodeFile(fd)} catch(err){this.raise_nodejs_error(err,raise_unix)}}; MlNodeDevice.prototype.rename = @@ -1150,12 +1078,6 @@ {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) @@ -1259,9 +1181,9 @@ function caml_raise_not_found() {caml_raise_constant(caml_global_data.Not_found)} function caml_sys_getenv(name) - {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]); + {var g=globalThis,n=caml_jsstring_of_string(name); + if(g.process && g.process.env && g.process.env[n] != undefined) + return caml_string_of_jsstring(g.process.env[n]); if(globalThis.jsoo_static_env && globalThis.jsoo_static_env[n]) return caml_string_of_jsstring(globalThis.jsoo_static_env[n]); caml_raise_not_found()} @@ -1321,6 +1243,10 @@ 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} @@ -1330,50 +1256,33 @@ 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_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_ml_may_refill_input(chanid) + {var chan=caml_ml_channels[chanid]; + if(chan.refill == null)return; + if(chan.file.length() != chan.offset)return; + caml_ml_refill_input(chan)} function caml_array_bound_error() {caml_invalid_argument("index out of bounds")} function caml_ml_input_scan_line(chanid) - {var chan=caml_ml_channels[chanid],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 chan=caml_ml_channels[chanid]; + caml_ml_may_refill_input(chanid); + var p=chan.offset,len=chan.file.length(); + if(p >= len)return 0; + while(true) + {if(p >= len)return - (p - chan.offset); + if(chan.file.read_one(p) == 10)return p - chan.offset + 1; + p++}} + function caml_gc_minor(){return 0} var bigInt= function(undefined) @@ -2702,7 +2611,6 @@ 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 @@ -2771,13 +2679,12 @@ globalThis.jsoo_create_file = jsoo_create_file; globalThis.caml_fs_tmp = []; 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_set_parser_trace(){return 0} function caml_list_of_js_array(a) {var l=0; for(var i=a.length - 1;i >= 0;i--){var e=a[i];l = [0,e,l]} return l} + function unix_gettimeofday(){return new Date().getTime() / 1000} function caml_mul(a,b){return Math.imul(a,b)} function caml_hash_mix_int(h,d) {d = caml_mul(d,0xcc9e2d51 | 0); @@ -2828,37 +2735,6 @@ 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); @@ -2875,46 +2751,7 @@ return ml_z_div(z1,z2)} function caml_gr_synchronize() {caml_failwith("caml_gr_synchronize not Implemented")} - 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 unix_has_symlink(unit){return fs_node_supported()?1:0} var log2_ok=Math.log2 && Math.log2(1.1235582092889474E+307) == 1020; function jsoo_floor_log2(x) {if(log2_ok)return Math.floor(Math.log2(x)); @@ -2923,9 +2760,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 Float32Array(1); + {var float32a=new (globalThis.Float32Array)(1); float32a[0] = x; - var int32a=new Int32Array(float32a.buffer); + var int32a=new (globalThis.Int32Array)(float32a.buffer); return int32a[0] | 0} function caml_int64_create_lo_mi_hi(lo,mi,hi) {return new MlInt64(lo,mi,hi)} @@ -3014,29 +2851,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 view; + {var g=globalThis,view; switch(kind) - {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 + {case 0:view = g.Float32Array;break; + case 1:view = g.Float64Array;break; + case 2:view = g.Int8Array;break; + case 3:view = g.Uint8Array;break; + case 4:view = g.Int16Array;break; + case 5:view = g.Uint16Array;break; + case 6:view = g.Int32Array;break; + case 7:view = g.Int32Array;break; + case 8:view = g.Int32Array;break; + case 9:view = g.Int32Array;break; + case 10:view = g.Float32Array;break; + case 11:view = g.Float64Array;break; + case 12:view = g.Uint8Array;break } if(! view)caml_invalid_argument("Bigarray.create: unsupported kind"); var data=new view(size * caml_ba_get_size_per_element(kind)); return data} function caml_int32_float_of_bits(x) - {var int32a=new Int32Array(1); + {var int32a=new (globalThis.Int32Array)(1); int32a[0] = x; - var float32a=new Float32Array(int32a.buffer); + var float32a=new (globalThis.Float32Array)(int32a.buffer); return float32a[0]} function caml_int64_float_of_bits(x) {var lo=x.lo,mi=x.mi,hi=x.hi,exp=(hi & 0x7fff) >> 4; @@ -3574,7 +3411,8 @@ nat2.data[ofs2] = wrap; return 0} function MlNat(x) - {this.data = new Int32Array(x);this.length = this.data.length + 2} + {this.data = new (globalThis.Int32Array)(x); + this.length = this.data.length + 2} MlNat.prototype.caml_custom = "_nat"; function create_nat(size) {var arr=new MlNat(size); @@ -3725,9 +3563,9 @@ var caml_argv= function() - {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 g=globalThis,main="a.out",args=[]; + if(g.process && g.process.argv && g.process.argv.length > 1) + {var argv=g.process.argv;main = argv[1];args = argv.slice(2)} var p=caml_string_of_jsstring(main),args2=[0,p]; for(var i=0;i < args.length;i++) args2.push(caml_string_of_jsstring(args[i])); @@ -3744,9 +3582,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) - {if(globalThis.quit)globalThis.quit(code); - if(globalThis.process && globalThis.process.exit) - globalThis.process.exit(code); + {var g=globalThis; + if(g.quit)g.quit(code); + if(g.process && g.process.exit)g.process.exit(code); caml_invalid_argument("Function 'exit' not implemented")} function caml_channel_descriptor(chanid) {var chan=caml_ml_channels[chanid];return chan.fd} @@ -3780,7 +3618,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_uint8_array_of_string(str1).slice(pos1,pos1 + len); + var slice=caml_array_of_string(str1).slice(pos1,pos1 + len); ba2.data.set(slice,ofs2); return 0} function caml_gr_set_window_title(name) @@ -3799,105 +3637,6 @@ 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))} @@ -3942,7 +3681,6 @@ 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; @@ -3997,8 +3735,19 @@ 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_gc_major(unit) - {if(typeof globalThis.gc == "function")globalThis.gc();return 0} + function caml_fill_bytes(s,i,l,c) + {if(l > 0) + if(i == 0 && (l >= s.l || s.t == 2 && l >= s.c.length)) + if(c == 0) + {s.c = "";s.t = 2} + else + {s.c = caml_str_repeat(l,String.fromCharCode(c));s.t = l == s.l?0:2} + else + {if(s.t != 4)caml_convert_bytes_to_array(s); + for(l += i;i < l;i++)s.c[i] = c} + return 0} + var caml_fill_string=caml_fill_bytes; + function caml_gc_major(){return 0} function ml_z_shift_left(z1,amt) {return ml_z_normalize(bigInt(z1).shiftLeft(amt))} function caml_lex_array(s) @@ -4033,10 +3782,7 @@ 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_uint8_array_of_bytes(lexbuf[lex_buffer]); + var c,state=start_state,buffer=caml_array_of_bytes(lexbuf[lex_buffer]); if(state >= 0) {lexbuf[lex_last_pos] = lexbuf[lex_start_pos] = lexbuf[lex_curr_pos]; lexbuf[lex_last_action] = - 1} @@ -4065,6 +3811,10 @@ 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() @@ -4081,8 +3831,6 @@ 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 @@ -4096,14 +3844,18 @@ :"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_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_weak_check(x,i) + {return x[caml_ephe_key_offset + i] + !== + undefined + && + x[caml_ephe_key_offset + i] + !== + 0 + ?1 + :0} + var caml_ephe_check_key=caml_weak_check; function caml_hash_mix_final(h) {h ^= h >>> 16; h = caml_mul(h,0x85ebca6b | 0); @@ -4170,10 +3922,7 @@ 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_uint8_array_of_bytes(lexbuf[lex_buffer]); + var c,state=start_state,buffer=caml_array_of_bytes(lexbuf[lex_buffer]); if(state >= 0) {lexbuf[lex_last_pos] = lexbuf[lex_start_pos] = lexbuf[lex_curr_pos]; lexbuf[lex_last_action] = - 1} @@ -4233,80 +3982,38 @@ 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_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; + if(! chan.buffer || chan.buffer == "")return 0; + if + (chan.fd + && + caml_global_data.fds[chan.fd] + && + caml_global_data.fds[chan.fd].output) + {var output=caml_global_data.fds[chan.fd].output; + switch(output.length) + {case 2:output(chanid,chan.buffer);break;default:output(chan.buffer)}} + chan.buffer = ""; return 0} function caml_ml_seek_out_64(chanid,pos) - {var pos=caml_int64_to_float(pos);return caml_seek_out(chanid,pos)} + {caml_ml_flush(chanid); + caml_ml_channels[chanid].offset = caml_int64_to_float(pos); + return 0} function compare_nat_real(nat1,nat2) {return compare_nat(nat1,0,nat1.data.length,nat2,0,nat2.data.length)} function caml_gc_set(_control){return 0} function caml_js_get(o,f){return o[f]} - function caml_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_ml_set_buffered(c,v){return 0} function caml_gc_compaction(){return 0} - function caml_ephe_get_key(x,i) + function caml_weak_get(x,i) {if(i < 0 || caml_ephe_key_offset + i >= x.length) caml_invalid_argument("Weak.get_key"); - 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]} + return x[caml_ephe_key_offset + i] === undefined + ?0 + :x[caml_ephe_key_offset + i]} + var caml_ephe_get_key=caml_weak_get; function jsoo_z_of_js_string_base(base,s) {if(base == 0) {base = 10; @@ -4357,18 +4064,16 @@ 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_uint8_array_of_bytes(str1).slice(pos1,pos1 + len); + var slice=caml_array_of_bytes(str1).slice(pos1,pos1 + len); ba2.data.set(slice,ofs2); 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 win_cleanup(){} + function caml_sys_close(fd){delete caml_global_data.fds[fd];return 0} function caml_ml_close_channel(chanid) {var chan=caml_ml_channels[chanid]; + caml_ml_flush(chanid); chan.opened = false; + chan.file.close(); caml_sys_close(chan.fd); return 0} function caml_exn_with_js_backtrace(exn,force) @@ -4377,16 +4082,9 @@ = 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 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 unix_inet_addr_of_string(){return 0} function caml_js_set(o,f,v){o[f] = v;return 0} function ml_z_gcdext_intern(z1,z2) {z1 = bigInt(z1); @@ -4422,11 +4120,6 @@ function caml_array_get(array,index) {if(index < 0 || index >= array.length - 1)caml_array_bound_error(); return array[index + 1]} - 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) @@ -4439,42 +4132,11 @@ 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_seek_in(chanid,pos) + function caml_ml_seek_in_64(chanid,pos) {var chan=caml_ml_channels[chanid]; if(chan.refill != null)caml_raise_sys_error("Illegal seek"); - 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} + chan.offset = caml_int64_to_float(pos); 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; - 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())} @@ -4486,8 +4148,6 @@ for(var i=0;i < len;i++)args[i + 1] = arguments[i]; return caml_call_gen(f,args)}} function caml_is_js(){return 1} - function caml_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]} @@ -4497,6 +4157,26 @@ 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) @@ -4506,61 +4186,38 @@ 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} - function caml_ephe_create(n){var x=caml_weak_create(n);return x} + var caml_ephe_create=caml_weak_create; function caml_js_to_byte_string(s){return caml_string_of_jsbytes(s)} function ml_z_probab_prime(z,i){return bigInt(z).isProbablePrime(i)?1:0} + function unix_mktime(tm) + {var + d=new Date(tm[6] + 1900,tm[5],tm[4],tm[3],tm[2],tm[1]).getTime(), + t=Math.floor(d / 1000), + tm2=unix_localtime(t); + return [0,t,tm2]} function caml_trampoline(res) {var c=1; while(res && res.joo_tramp) {res = res.joo_tramp.apply(null,res.joo_args);c++} return res} - function caml_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_ephe_set_key(x,i,v) - {if(i < 0 || caml_ephe_key_offset + i >= x.length) - caml_invalid_argument("Weak.set"); - 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]); + {if(i < 0 || caml_ephe_key_offset + i >= x.length) + caml_invalid_argument("Weak.set"); + x[caml_ephe_key_offset + i] = v; return 0} function caml_sys_remove(name) {var root=resolve_fs_device(name),ok=root.device.unlink(root.rest); @@ -4576,9 +4233,6 @@ 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) @@ -4591,7 +4245,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_unix_inet_addr_of_string(){return 0} + function caml_ephe_unset_key(x,i){return caml_weak_set(x,i,0)} function ml_z_mul_overflows(x,y){var z=x * y;return z != (z | 0)} function ml_z_to_int(z1) {if(z1 == (z1 | 0))return z1 | 0; @@ -4664,18 +4318,30 @@ function ml_z_fac(i) {if(i <= 0)caml_invalid_argument("Z.fact: negative arguments"); return ml_z_facM(i,1)} - 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_raise_end_of_file() + {caml_raise_constant(caml_global_data.End_of_file)} function caml_ml_input_int(chanid) - {var chan=caml_ml_channels[chanid],res=0; - for(var i=0;i < 4;i++)res = (res << 8) + caml_ml_input_char(chanid); - return res} + {var chan=caml_ml_channels[chanid],file=chan.file; + while(chan.offset + 3 >= file.length()) + {var l=caml_ml_refill_input(chan);if(l == 0)caml_raise_end_of_file()} + var + o=chan.offset, + r= + file.read_one(o) + << + 24 + | + file.read_one(o + 1) + << + 16 + | + file.read_one(o + 2) + << + 8 + | + file.read_one(o + 3); + chan.offset += 4; + return r} function caml_gr_display_mode() {caml_failwith("caml_gr_display_mode not Implemented")} function ml_z_divisible(a,b) @@ -4713,96 +4379,6 @@ 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} @@ -4858,7 +4434,7 @@ no_sharing=flags.indexOf(0) !== - 1, closures=flags.indexOf(1) !== - 1; if(closures) - console.warn + globalThis.console.warn ("in caml_output_val: flag Marshal.Closures is not supported."); var writer=new Writer(), @@ -4988,20 +4564,26 @@ {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") - {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}} + if + (typeof require + != + "undefined" + && + require("child_process") + && + require("child_process").execSync) + try + {require("child_process").execSync(cmd,{stdio:"inherit"});return 0} + catch(e){return 1} else return 127} + function unix_isatty(fileDescriptor) + {if(fs_node_supported()) + {var tty=require("tty");return tty.isatty(fileDescriptor)?1:0} + else + return 0} function caml_js_error_of_exception(exn) {if(exn.js_error)return exn.js_error;return null} - function 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(); @@ -5014,24 +4596,264 @@ 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 caml_marshal_data_size(s,ofs) - {function get32(s,i) - {return caml_bytes_unsafe_get(s,i) - << - 24 + 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) | - caml_bytes_unsafe_get(s,i + 1) - << - 16 - | - caml_bytes_unsafe_get(s,i + 2) + b.charCodeAt(j + 1) << 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)} + b.charCodeAt(j + 2) + << + 16 + | + b.charCodeAt(j + 3) + << + 24} + for(;i < len;i++) + buf[i >> 2] |= b.charCodeAt(i + ofs) << 8 * (i & 3)} + else + {var a=content; + for(var i=0;i < len;i += 4) + {var j=i + ofs; + buf[i >> 2] + = + a[j] + | + a[j + 1] + << + 8 + | + a[j + 2] + << + 16 + | + a[j + 3] + << + 24} + for(;i < len;i++)buf[i >> 2] |= a[i + ofs] << 8 * (i & 3)} + return caml_string_of_array(md5(buf,len))}} + (); + function caml_ba_set_generic(ba,i,v) + {ba.set(ba.offset(caml_js_from_array(i)),v);return 0} + function caml_ephe_set_key(x,i,v){return caml_weak_set(x,i,[0,v])} + function caml_bytes_lessequal(s1,s2) + {s1.t & 6 && caml_convert_string_to_bytes(s1); + s2.t & 6 && caml_convert_string_to_bytes(s2); + return s1.c <= s2.c?1:0} + function caml_string_lessequal(s1,s2){return caml_bytes_lessequal(s1,s2)} + function caml_string_greaterequal(s1,s2) + {return caml_string_lessequal(s2,s1)} + function caml_int64_add(x,y){return x.add(y)} + function caml_nextafter_float(x,y) + {if(isNaN(x) || isNaN(y))return NaN; + if(x == y)return y; + if(x == 0)return y < 0?- Math.pow(2,- 1074):Math.pow(2,- 1074); + var bits=caml_int64_bits_of_float(x),one=caml_int64_of_int32(1); + if(x < y == x > 0) + bits = caml_int64_add(bits,one); + else + bits = caml_int64_sub(bits,one); + return caml_int64_float_of_bits(bits)} + function caml_gr_size_y(){var s=caml_gr_state_get();return s.height} + function ml_z_fac2(i) + {if(i <= 0)caml_invalid_argument("Z.fact2: negative arguments"); + return ml_z_facM(i,2)} + function caml_ml_pos_in(chanid){return caml_ml_channels[chanid].offset} + function caml_int64_and(x,y){return x.and(y)} + function caml_sys_const_word_size(){return 32} + function ml_z_bin(n,k) + {var n=bigInt(n),k=bigInt(k),coeff=bigInt(1); + for(var x=n.minus(k).add(bigInt(1));x.leq(n);x = x.add(bigInt(1))) + coeff = coeff.multiply(x); + for(x = bigInt(1);x.leq(k);x = x.add(bigInt(1)))coeff = coeff.divide(x); + return ml_z_normalize(coeff)} + function caml_std_output(chanid,s) + {var + chan=caml_ml_channels[chanid], + str=caml_string_of_jsbytes(s), + slen=caml_ml_string_length(str); + chan.file.write(chan.offset,str,0,slen); + chan.offset += slen; + return 0} + function js_print_stderr(s) + {var s=caml_utf16_of_utf8(s),g=globalThis; + if(g.process && g.process.stdout && g.process.stdout.write) + g.process.stderr.write(s); + else + {if(s.charCodeAt(s.length - 1) == 10)s = s.substr(0,s.length - 1); + var v=g.console; + v && v.error && v.error(s)}} + function caml_sys_open_internal(idx,output,file,flags) + {if(caml_global_data.fds === undefined) + caml_global_data.fds = new Array(); + flags = flags?flags:{}; + var info={}; + info.file = file; + info.offset = flags.append?file.length():0; + info.flags = flags; + info.output = output; + caml_global_data.fds[idx] = info; + if(! caml_global_data.fd_last_idx || idx > caml_global_data.fd_last_idx) + caml_global_data.fd_last_idx = idx; + return idx} + function caml_sys_open(name,flags,_perms) + {var f={}; + while(flags) + {switch(flags[1]) + {case 0:f.rdonly = 1;break; + case 1:f.wronly = 1;break; + case 2:f.append = 1;break; + case 3:f.create = 1;break; + case 4:f.truncate = 1;break; + case 5:f.excl = 1;break; + case 6:f.binary = 1;break; + case 7:f.text = 1;break; + case 8:f.nonblock = 1;break + } + flags = flags[2]} + if(f.rdonly && f.wronly) + caml_raise_sys_error + (caml_jsbytes_of_string(name) + + + " : flags Open_rdonly and Open_wronly are not compatible"); + if(f.text && f.binary) + caml_raise_sys_error + (caml_jsbytes_of_string(name) + + + " : flags Open_text and Open_binary are not compatible"); + var + root=resolve_fs_device(name), + file=root.device.open(root.rest,f), + idx=caml_global_data.fd_last_idx?caml_global_data.fd_last_idx:0; + return caml_sys_open_internal(idx + 1,caml_std_output,file,f)} + caml_sys_open_internal + (0,caml_std_output,new MlFakeFile(caml_create_bytes(0))); + caml_sys_open_internal + (1,js_print_stdout,new MlFakeFile(caml_create_bytes(0))); + caml_sys_open_internal + (2,js_print_stderr,new MlFakeFile(caml_create_bytes(0))); + function ml_z_gcd(z1,z2) + {return ml_z_normalize(bigInt.gcd(bigInt(z1),bigInt(z2)).abs())} function MlStringReader(s,i) {this.s = caml_jsbytes_of_string(s);this.i = i} MlStringReader.prototype @@ -5246,205 +5068,6 @@ 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) @@ -5528,7 +5151,7 @@ numgroups=re[4] | 0, numregisters=re[5] | 0, startchars=re[6] | 0, - s=caml_uint8_array_of_string(s), + s=caml_array_of_string(s), pc=0, quit=false, stack=[], @@ -5688,10 +5311,7 @@ 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(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_gc_full_major(){return 0} function caml_bytes_set32(s,i,i32) {if(i >>> 0 >= s.l - 3)caml_bytes_bound_error(); var @@ -5715,22 +5335,6 @@ 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(); @@ -5774,29 +5378,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 kind; - if(ta instanceof Float32Array) + {var g=globalThis,kind; + if(ta instanceof g.Float32Array) kind = 0; else - if(ta instanceof Float64Array) + if(ta instanceof g.Float64Array) kind = 1; else - if(ta instanceof Int8Array) + if(ta instanceof g.Int8Array) kind = 2; else - if(ta instanceof Uint8Array) + if(ta instanceof g.Uint8Array) kind = 3; else - if(ta instanceof Int16Array) + if(ta instanceof g.Int16Array) kind = 4; else - if(ta instanceof Uint16Array) + if(ta instanceof g.Uint16Array) kind = 5; else - if(ta instanceof Int32Array) + if(ta instanceof g.Int32Array) kind = 6; else - if(ta instanceof Uint32Array) + if(ta instanceof g.Uint32Array) kind = 6; else caml_invalid_argument @@ -5805,13 +5409,9 @@ 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){return caml_seek_out(chanid,pos)} + function caml_ml_seek_out(chanid,pos) + {caml_ml_flush(chanid);caml_ml_channels[chanid].offset = pos;return 0} function caml_js_typeof(o){return typeof o} - function caml_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(); @@ -5876,9 +5476,10 @@ msg=caml_format_exception(err), at_exit=caml_named_value("Pervasives.do_at_exit"); if(at_exit)at_exit(0); - console.error("Fatal error: exception " + msg + "\n")}} + globalThis.console.error("Fatal error: exception " + msg + "\n")}} else throw err} + var caml_ephe_data_offset=2; function caml_ephe_check_data(x) {return x[caml_ephe_data_offset] === undefined?0:1} function caml_bytes_get16(s,i) @@ -5887,124 +5488,78 @@ 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(chanid,name) - {var chan=caml_ml_channels[chanid];chan.name = name;return 0} + function caml_ml_set_channel_name(){return 0} function caml_exp2_float(x){return Math.pow(2,x)} function caml_gr_close_graph() {var s=caml_gr_state_get(); s.canvas.width = 0; s.canvas.height = 0; return 0} - function caml_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_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_md5_string(s,ofs,len) + {return caml_md5_bytes(caml_bytes_of_string(s),ofs,len)} + function caml_md5_chan(chanid,len) + {var chan=caml_ml_channels[chanid],chan_len=chan.file.length(); + if(len < 0)len = chan_len - chan.offset; + if(chan.offset + len > chan_len)caml_raise_end_of_file(); + var buf=caml_create_bytes(len); + chan.file.read(chan.offset,buf,0,len); + return caml_md5_string(caml_string_of_bytes(buf),0,len)} + function caml_obj_dup(x) + {var l=x.length,a=new Array(l); + for(var i=0;i < l;i++)a[i] = x[i]; + return a} + function caml_weak_get_copy(x,i) + {if(i < 0 || caml_ephe_key_offset + i >= x.length) + caml_invalid_argument("Weak.get_copy"); + var y=caml_weak_get(x,i); + if(y === 0)return y; + var z=y[1]; + if(z instanceof Array)return [0,caml_obj_dup(z)]; + return y} function caml_atanh_float(x){return Math.atanh(x)} - function caml_ml_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 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 - } + var bytes; + if(offset == 0 && caml_ml_bytes_length(buffer) == len) + bytes = buffer; + else + {bytes = caml_create_bytes(len); + caml_blit_bytes(buffer,offset,bytes,0,len)} + var + string=caml_string_of_bytes(bytes), + jsstring=caml_jsbytes_of_string(string), + id=jsstring.lastIndexOf("\n"); + if(id < 0) + chan.buffer += jsstring; + else + {chan.buffer += jsstring.substr(0,id + 1); + caml_ml_flush(chanid); + chan.buffer += jsstring.substr(id + 1)} return 0} function caml_ml_output(chanid,buffer,offset,len) {return caml_ml_output_bytes (chanid,caml_bytes_of_string(buffer),offset,len)} - function caml_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) - {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){}} + {var g=globalThis; + if(typeof g.XMLHttpRequest !== "undefined") + try {return new (g.XMLHttpRequest)()}catch(e){} + if(typeof g.activeXObject !== "undefined") + {try {return new (g.activeXObject)("Msxml2.XMLHTTP")}catch(e){} + try {return new (g.activeXObject)("Msxml3.XMLHTTP")}catch(e){} + try {return new (g.activeXObject)("Microsoft.XMLHTTP")}catch(e){}} caml_failwith("Cannot create a XMLHttpRequest")} function caml_trampoline_return(f,args) {return {joo_tramp:f,joo_args:args}} - function caml_ml_is_buffered(chanid) - {return caml_ml_channels[chanid].buffered?1:0} + function caml_ml_is_buffered(c){return 1} function caml_array_append(a1,a2) {var l1=a1.length,l2=a2.length,l=l1 + l2 - 1,a=new Array(l); a[0] = 0; @@ -6012,8 +5567,6 @@ 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) @@ -6026,20 +5579,10 @@ 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) - {console.error("caml_js_expr: fallback to runtime evaluation\n"); + {js_print_stderr("caml_js_expr: fallback to runtime evaluation\n"); return eval(caml_jsstring_of_string(s))} + function caml_int64_mul(x,y){return x.mul(y)} function caml_ml_runtime_warnings_enabled(_unit) {return caml_runtime_warnings} function ml_z_sub(z1,z2) @@ -6111,10 +5654,7 @@ 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 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); @@ -6164,13 +5704,13 @@ default:res += "\\" + cur}}} return caml_string_of_jsbytes(res)} function caml_pure_js_expr(s) - {console.error("caml_pure_js_expr: fallback to runtime evaluation\n"); + {js_print_stderr("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 @@ -6182,10 +5722,6 @@ 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) @@ -6195,15 +5731,57 @@ {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_ml_mutex_lock(t) - {if(t.locked) - caml_failwith("Mutex.lock: mutex already locked. Cannot wait."); - else - t.locked = true; - return 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 re_search_forward(re,s,pos) {if(pos < 0 || pos > caml_ml_string_length(s)) caml_invalid_argument("Str.search_forward"); @@ -6217,7 +5795,11 @@ b[0] = 0; for(var i=1;i < len;i++)b[i] = init; return b} - function caml_ml_seek_in(chanid,pos){return caml_seek_in(chanid,pos)} + function caml_ml_seek_in(chanid,pos) + {var chan=caml_ml_channels[chanid]; + if(chan.refill != null)caml_raise_sys_error("Illegal seek"); + chan.offset = pos; + return 0} function caml_sys_read_directory(name) {var root=resolve_fs_device(name), @@ -6232,11 +5814,18 @@ 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]*)*$/)) - console.error + js_print_stderr ('caml_js_var: "' + x @@ -6257,38 +5846,9 @@ 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) - {var n=src[caml_ephe_data_offset]; - if(n === undefined) - caml_ephe_unset_data(dst); - else - caml_ephe_set_data(dst,n); - return 0} + {dst[caml_ephe_data_offset] = src[caml_ephe_data_offset];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)) @@ -6298,35 +5858,27 @@ function caml_sys_random_seed() {if(globalThis.crypto) if(typeof globalThis.crypto.getRandomValues === "function") - {var a=new Uint32Array(1); + {var a=new (globalThis.Uint32Array)(1); globalThis.crypto.getRandomValues(a); return [0,a[0]]} else if(globalThis.crypto.randomBytes === "function") - {var buff=globalThis.crypto.randomBytes(4),a=new Uint32Array(buff); + {var + buff=globalThis.crypto.randomBytes(4), + a=new (globalThis.Uint32Array)(buff); return [0,a[0]]} var now=new Date().getTime(),x=now ^ 0xffffffff * Math.random(); return [0,x]} - 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_final_register_called_without_value(){return 0} function caml_ba_get_2(ba,i0,i1){return ba.get(ba.offset([i0,i1]))} + function win_handle_fd(x){return x} function caml_ba_uint8_set16(ba,i0,v) {var ofs=ba.offset(i0); if(ofs + 1 >= ba.data.length)caml_array_bound_error(); ba.set(ofs + 0,v & 0xff); ba.set(ofs + 1,v >>> 8 & 0xff); return 0} - function caml_lazy_reset_to_lazy(o) - {caml_obj_update_tag(o,244,246);return 0} + var win_filedescr_of_channel=caml_channel_descriptor; function caml_js_delete(o,f){delete o[f];return 0} function caml_int_of_string(s) {var @@ -6386,8 +5938,6 @@ 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) @@ -6474,6 +6024,32 @@ (ofs * size_per_element,(ofs + size) * size_per_element); return caml_ba_create_unsafe(ba.kind,ba.layout,sub_dims,new_data)} function ml_z_of_nativeint(i){return i | 0} + function caml_marshal_data_size(s,ofs) + {function get32(s,i) + {return caml_bytes_unsafe_get(s,i) + << + 24 + | + caml_bytes_unsafe_get(s,i + 1) + << + 16 + | + caml_bytes_unsafe_get(s,i + 2) + << + 8 + | + caml_bytes_unsafe_get(s,i + 3)} + if(get32(s,ofs) != (0x8495A6BE | 0)) + caml_failwith("Marshal.data_size: bad object"); + return get32(s,ofs + 4)} + function caml_input_value(chanid) + {var chan=caml_ml_channels[chanid],buf=caml_create_bytes(8); + chan.file.read(chan.offset,buf,0,8); + var len=caml_marshal_data_size(buf,0) + 20,buf=caml_create_bytes(len); + chan.file.read(chan.offset,buf,0,len); + var offset=[0],res=caml_input_value_from_bytes(buf,offset); + chan.offset = chan.offset + offset[0]; + return res} function caml_ba_kind(ba){return ba.kind} function caml_js_fun_call(f,a) {switch(a.length) @@ -6532,9 +6108,13 @@ {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,b,i,l) - {var ba=caml_uint8_array_of_bytes(b); - return caml_ml_input_block(chanid,ba,i,l)} + function caml_ml_input(chanid,s,i,l) + {var chan=caml_ml_channels[chanid],l2=chan.file.length() - chan.offset; + if(l2 == 0 && chan.refill != null)l2 = caml_ml_refill_input(chan); + if(l2 < l)l = l2; + chan.file.read(chan.offset,s,i,l); + chan.offset += l; + return l} function caml_gr_wait_event(_evl) {caml_failwith ("caml_gr_wait_event not Implemented: use Graphics_js instead")} @@ -6542,12 +6122,27 @@ function caml_hash_mix_bigstring(h,bs) {return caml_hash_mix_bytes_arr(h,bs.data)} function caml_record_backtrace(){return 0} - function caml_unix_cleanup(){} + function unix_gmtime(t) + {var + d=new Date(t * 1000), + d_num=d.getTime(), + januaryfirst=new Date(Date.UTC(d.getUTCFullYear(),0,1)).getTime(), + doy=Math.floor((d_num - januaryfirst) / 86400000); + return [0, + d.getUTCSeconds(), + d.getUTCMinutes(), + d.getUTCHours(), + d.getUTCDate(), + d.getUTCMonth(), + d.getUTCFullYear() - 1900, + d.getUTCDay(), + doy, + false | 0]} function caml_sys_const_backend_type() {return [0,caml_string_of_jsbytes("js_of_ocaml")]} function caml_sys_get_config() {return [0,caml_string_of_jsbytes(os_type),32,0]} - function caml_obj_is_shared(x){return 1} + function unix_time(){return Math.floor(unix_gettimeofday())} function caml_ml_out_channels_list() {var l=0; for(var c=0;c < caml_ml_channels.length;c++) @@ -6567,14 +6162,11 @@ 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 Uint8Array(ab); + {var ta=new (globalThis.Uint8Array)(ab); return caml_ba_create_unsafe(12,0,[ta.length],ta)} function caml_mod(x,y){if(y == 0)caml_raise_zero_divide();return x % y} function caml_ba_init(){return 0} - function 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"); @@ -6651,7 +6243,6 @@ 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) @@ -6753,10 +6344,6 @@ {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 @@ -6768,18 +6355,10 @@ 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)} - 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} + var caml_ephe_get_key_copy=caml_weak_get_copy; function caml_lessthan(x,y){return + (caml_compare_val(x,y,false) < 0)} function caml_raw_backtrace_next_slot(){return 0} function ml_z_to_nativeint(z1){return ml_z_to_int(z1)} @@ -6825,7 +6404,7 @@ return tag == meths[li + 1]?meths[li]:0} function caml_js_get_console() {var - c=console, + c=globalThis.console?globalThis.console:{}, m= ["log", "debug", @@ -6846,19 +6425,21 @@ return c} function caml_sys_unsafe_getenv(name){return caml_sys_getenv(name)} function caml_ml_open_descriptor_in(fd) - {var file=caml_sys_fds[fd]; - if(file.flags.wronly)caml_raise_sys_error("fd " + fd + " is writeonly"); + {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 - refill=null, channel= - {file:file, - offset:file.flags.append?file.length():0, + {file:data.file, + offset:data.offset, 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} @@ -6866,7 +6447,7 @@ {var ta= new - Uint8Array + (globalThis.Uint8Array) (ba.buffer,ba.byteOffset,ba.length * ba.BYTES_PER_ELEMENT); return caml_ba_create_unsafe(12,0,[ta.length],ta)} function caml_round_float(x){return Math.round(x)} @@ -6877,6 +6458,11 @@ 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(); @@ -6896,9 +6482,6 @@ 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) @@ -7041,6 +6631,13 @@ {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 @@ -7085,7 +6682,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_pos_in(chanid))} + {return caml_int64_of_float(caml_ml_channels[chanid].offset)} function caml_gr_draw_image(im,x,y) {var s=caml_gr_state_get(); if(! im.image) @@ -7109,15 +6706,8 @@ 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_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_ml_pos_out(chanid) + {caml_ml_flush(chanid);return caml_ml_channels[chanid].offset} function caml_spacetime_enabled(_unit){return 0} function caml_bytes_notequal(s1,s2){return 1 - caml_bytes_equal(s1,s2)} function caml_runtime_parameters(_unit){return caml_string_of_jsbytes("")} @@ -7131,6 +6721,10 @@ 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) @@ -7218,12 +6812,11 @@ 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]; - chan.file.flags.text = ! mode; - chan.file.flags.binary = mode; + {var chan=caml_ml_channels[chanid],data=caml_global_data.fds[chan.fd]; + data.flags.text = ! mode; + data.flags.binary = mode; return 0} function caml_final_register(){return 0} function caml_gr_draw_rect(x,y,w,h) @@ -7234,15 +6827,14 @@ {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]))} - 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} + var caml_ephe_blit_key=caml_weak_blit; function ml_z_to_int32(z1){return ml_z_to_int(z1)} var caml_initial_time=new Date().getTime() * 0.001; function caml_sys_time() @@ -7251,8 +6843,10 @@ function caml_check_bound(array,index) {if(index >>> 0 >= array.length - 1)caml_array_bound_error(); return array} - function caml_unix_getpwuid(unit){caml_raise_not_found()} + function unix_getpwuid(unit){caml_raise_not_found()} function ml_z_compare(z1,z2){return bigInt(z1).compare(bigInt(z2))} + function caml_hash_mix_string(h,v) + {return caml_hash_mix_jsbytes(h,caml_jsbytes_of_string(v))} function caml_hash(count,limit,seed,obj) {var queue,rd,wr,sz,num,h,v,i,len; sz = limit; @@ -7299,8 +6893,21 @@ 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 @@ -7328,7 +6935,8 @@ 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) - {return caml_int64_of_float(caml_pos_out(chanid))} + {caml_ml_flush(chanid); + return caml_int64_of_float(caml_ml_channels[chanid].offset)} function ml_z_extract(z1,pos,len) {z1 = bigInt(z1); return ml_z_normalize @@ -7347,8 +6955,6 @@ 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) @@ -7382,6 +6988,10 @@ 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") @@ -7402,19 +7012,16 @@ 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 file=caml_sys_fds[fd]; - if(file.flags.rdonly)caml_raise_sys_error("fd " + fd + " is readonly"); + {var data=caml_global_data.fds[fd]; + if(data.flags.rdonly)caml_raise_sys_error("fd " + fd + " is readonly"); var - buffered=file.flags.buffered !== undefined?file.flags.buffered:1, channel= - {file:file, - offset:file.flags.append?file.length():0, + {file:data.file, + offset:data.offset, fd:fd, opened:true, out:true, - buffer_curr:0, - buffer:new Uint8Array(65536), - buffered:buffered}; + buffer:""}; caml_ml_channels[channel.fd] = channel; return channel.fd} function caml_array_concat(l) @@ -7423,7 +7030,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 info=caml_jsstring_of_string(info); + {var g=globalThis,info=caml_jsstring_of_string(info); function get(name) {var res=info.match("(^|,) *" + name + " *= *([a-zA-Z0-9_]+) *(,|$)"); if(res)return res[2]} @@ -7439,7 +7046,7 @@ var h=get("height"); h = h?parseInt(h):200; specs.push("height=" + h); - var win=globalThis.open("about:blank",target,specs.join(",")); + var win=g.open("about:blank",target,specs.join(",")); if(! win)caml_failwith("Graphics.open_graph: cannot open the window"); var doc=win.document,canvas=doc.createElement("canvas"); canvas.width = w; @@ -7451,6 +7058,8 @@ 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); @@ -7469,6 +7078,7 @@ 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} @@ -7495,7 +7105,6 @@ {if(index < 0 || index >= array.length - 1)caml_array_bound_error(); array[index + 1] = newval; return 0} - function caml_alloc_stack(ret,exn,h){return {ret:ret,exn:exn,h:h}} function caml_bytes_greaterequal(s1,s2) {return caml_bytes_lessequal(s2,s1)} function ml_z_perfect_power(z) @@ -7643,11 +7252,6 @@ 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} @@ -7713,34 +7317,7 @@ tbl_gindex=10, tbl_tablesize=11, tbl_table=12, - 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)}} + tbl_check=13; if(! tables.dgoto) {tables.defred = caml_lex_array(tables[tbl_defred]); tables.sindex = caml_lex_array(tables[tbl_sindex]); @@ -7762,7 +7339,6 @@ errflag=env[env_errflag]; exit: for(;;) - next: switch(cmd) {case 0:state = 0;errflag = 0; case 6: @@ -7778,7 +7354,6 @@ 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]; @@ -7842,25 +7417,16 @@ tables.check[n2] == ERRCODE) - {if(caml_parser_trace)log("Recovering in state " + state1); - cmd = shift_recover; - break next} + {cmd = shift_recover;break} else - {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--}}} + {if(sp <= env[env_stackbase])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} @@ -7872,8 +7438,6 @@ 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; @@ -7956,7 +7520,7 @@ return im} function caml_ml_set_channel_output(chanid,f) {var chan=caml_ml_channels[chanid]; - chan.output = function(s){f(s)}; + caml_global_data.fds[chan.fd].output = f; return 0} function caml_read_file_content(name) {var @@ -7972,15 +7536,15 @@ 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 process=globalThis.process; - if(process && process.on) - process.on + {var g=globalThis; + if(g.process && g.process.on) + g.process.on ("uncaughtException", function(err,origin) - {caml_fatal_uncaught_exception(err);process.exit(2)}); + {caml_fatal_uncaught_exception(err);g.process.exit(2)}); else - if(globalThis.addEventListener) - globalThis.addEventListener + if(g.addEventListener) + g.addEventListener ("error", function(event) {if(event.error)caml_fatal_uncaught_exception(event.error)})} @@ -8068,85 +7632,55 @@ ml_z_primorial:ml_z_primorial, ml_z_bin:ml_z_bin, bigInt:bigInt, - caml_alloc_stack:caml_alloc_stack, - 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, - 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_blit_key:caml_ephe_blit_key, + caml_ephe_set_key:caml_ephe_set_key, + caml_ephe_unset_key:caml_ephe_unset_key, caml_ephe_blit_data:caml_ephe_blit_data, caml_ephe_get_data:caml_ephe_get_data, caml_ephe_get_data_copy:caml_ephe_get_data_copy, caml_ephe_set_data:caml_ephe_set_data, caml_ephe_unset_data:caml_ephe_unset_data, caml_ephe_check_data:caml_ephe_check_data, - 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, + unix_gettimeofday:unix_gettimeofday, + unix_time:unix_time, + unix_gmtime:unix_gmtime, + unix_localtime:unix_localtime, + unix_mktime:unix_mktime, + win_startup:win_startup, + win_cleanup:win_cleanup, + win_handle_fd:win_handle_fd, + unix_isatty:unix_isatty, make_unix_err_args:make_unix_err_args, - 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, + unix_stat:unix_stat, + unix_stat_64:unix_stat_64, + unix_lstat:unix_lstat, + unix_lstat_64:unix_lstat_64, + unix_mkdir:unix_mkdir, + unix_rmdir:unix_rmdir, + unix_symlink:unix_symlink, + unix_readlink:unix_readlink, + unix_unlink:unix_unlink, + unix_getuid:unix_getuid, + unix_getpwuid:unix_getpwuid, + unix_has_symlink:unix_has_symlink, re_match:re_match, re_search_forward:re_search_forward, re_search_backward:re_search_backward, re_string_match:re_string_match, re_partial_match:re_partial_match, re_replacement_text:re_replacement_text, - caml_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, @@ -8179,6 +7713,7 @@ 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, @@ -8196,8 +7731,6 @@ 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, @@ -8209,8 +7742,6 @@ 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, @@ -8220,11 +7751,6 @@ 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, initialize_nat:initialize_nat, MlNat:MlNat, caml_hash_nat:caml_hash_nat, @@ -8291,8 +7817,8 @@ MlBytes:MlBytes, caml_convert_string_to_bytes:caml_convert_string_to_bytes, caml_convert_bytes_to_array:caml_convert_bytes_to_array, - caml_uint8_array_of_bytes:caml_uint8_array_of_bytes, - caml_uint8_array_of_string:caml_uint8_array_of_string, + caml_array_of_bytes:caml_array_of_bytes, + caml_array_of_string:caml_array_of_string, caml_create_string:caml_create_string, caml_create_bytes:caml_create_bytes, caml_string_of_array:caml_string_of_array, @@ -8308,6 +7834,7 @@ 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, @@ -8333,14 +7860,8 @@ 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, @@ -8378,6 +7899,8 @@ caml_js_typeof:caml_js_typeof, caml_trampoline:caml_trampoline, caml_trampoline_return:caml_trampoline_return, + js_print_stdout:js_print_stdout, + js_print_stderr:js_print_stderr, caml_is_js:caml_is_js, caml_wrap_exception:caml_wrap_exception, caml_exn_with_js_backtrace:caml_exn_with_js_backtrace, @@ -8408,8 +7931,8 @@ 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, @@ -8417,23 +7940,21 @@ 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_refill:caml_refill, + caml_ml_refill_input:caml_ml_refill_input, + caml_ml_may_refill_input:caml_ml_may_refill_input, caml_ml_input:caml_ml_input, - caml_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, @@ -8442,10 +7963,8 @@ 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, @@ -8536,7 +8055,6 @@ 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, @@ -8610,12 +8128,9 @@ caml_get_major_credit:caml_get_major_credit, fs_node_supported:fs_node_supported, MlNodeDevice:MlNodeDevice, - MlNodeFd:MlNodeFd, - caml_sys_open_for_node:caml_sys_open_for_node, + MlNodeFile:MlNodeFile, 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, @@ -8826,10 +8341,6 @@ 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, @@ -9566,74 +9077,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], - _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_= + _r_=[0,caml_string_of_jsbytes("seq.ml"),596,4], + _x_=[0,caml_string_of_jsbytes("uchar.ml"),88,18], + _w_=[0,caml_string_of_jsbytes("uchar.ml"),91,7], + _v_=[0,caml_string_of_jsbytes("uchar.ml"),80,18], + _u_=[0,caml_string_of_jsbytes("uchar.ml"),85,7], + _A_=[0,0,0], + _G_=[0,caml_string_of_jsbytes("bytes.ml"),808,20], + _F_=[0,caml_string_of_jsbytes("bytes.ml"),819,9], + _E_=[0,caml_string_of_jsbytes("bytes.ml"),754,20], + _D_=[0,caml_string_of_jsbytes("bytes.ml"),765,9], + _C_=[0,caml_string_of_jsbytes("bytes.ml"),642,20], + _B_=[0,caml_string_of_jsbytes("bytes.ml"),667,9], + _H_=[0,caml_string_of_jsbytes("array.ml"),322,4], + _J_=[0,caml_string_of_jsbytes("float.ml"),395,6], + _I_=[0,caml_string_of_jsbytes("float.ml"),222,14], + _U_=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,65535), + _T_=runtime.caml_int64_create_lo_mi_hi(0,0,0), + _S_=runtime.caml_int64_create_lo_mi_hi(1,0,0), + _R_=runtime.caml_int64_create_lo_mi_hi(1,0,0), + _V_=[0,0,0,0], + _W_=[0,0,0], + _X_=[0,caml_string_of_jsbytes("set.ml"),570,18], + _Y_=[0,0,0,0], + _Z_=[0,caml_string_of_jsbytes("map.ml"),400,10], + ___=[0,0,0], + _$_=[0,caml_string_of_jsbytes("stream.ml"),53,12], + _aa_=[0,0], + _ab_=[0,caml_string_of_jsbytes("stream.ml"),82,12], + _af_=[0,caml_string_of_jsbytes("buffer.ml"),231,9], + _ae_=[0,caml_string_of_jsbytes("buffer.ml"),212,2], + _ad_=[0,caml_string_of_jsbytes("buffer.ml"),93,2], + _ac_=[0,caml_string_of_jsbytes("buffer.ml"),94,2], + _ah_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),850,23], + _as_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),814,21], + _ak_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),815,21], + _at_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),818,21], + _al_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),819,21], + _au_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),822,19], + _am_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),823,19], + _av_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),826,22], + _an_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),827,22], + _aw_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),831,30], + _ao_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),832,30], + _aq_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),836,26], + _ai_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),837,26], + _ar_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),846,28], + _aj_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),847,28], + _ap_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),851,23], + _ay_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1558,4], + _az_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1626,39], + _aA_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1649,31], + _aB_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1650,31], + _aC_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1830,8], + _a6_= [0, [11, caml_string_of_jsbytes("bad input: format type mismatch between "), [3,0,[11,caml_string_of_jsbytes(" and "),[3,0,0]]]], caml_string_of_jsbytes ("bad input: format type mismatch between %S and %S")], - _a3_= + _a5_= [0, [11, caml_string_of_jsbytes("bad input: format type mismatch between "), [3,0,[11,caml_string_of_jsbytes(" and "),[3,0,0]]]], caml_string_of_jsbytes ("bad input: format type mismatch between %S and %S")], - _aG_= + _aI_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9644,13 +9155,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")], - _aH_=[0,1,0], - _aI_=[0,0], - _aJ_=[1,0], - _aK_=[1,1], + _aJ_=[0,1,0], + _aK_=[0,0], + _aL_=[1,0], _aM_=[1,1], - _aL_=[1,1], - _aQ_= + _aO_=[1,1], + _aN_=[1,1], + _aS_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9674,7 +9185,7 @@ 0]]]]]]]]], caml_string_of_jsbytes ("invalid format %S: at character number %d, flag %C is only allowed after the '%%', before padding and precision")], - _aN_= + _aP_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9691,13 +9202,13 @@ [12,37,[0,[12,34,0]]]]]]]], caml_string_of_jsbytes ('invalid format %S: at character number %d, invalid conversion "%%%c"')], - _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_= + _aQ_=[0,0], + _aR_=[0,0], + _aT_=[0,[12,64,0]], + _aU_=[0,caml_string_of_jsbytes("@ "),1,0], + _aV_=[0,caml_string_of_jsbytes("@,"),0,0], + _aW_=[2,60], + _aX_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9719,7 +9230,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.")], - _aW_= + _aY_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9736,8 +9247,8 @@ [4,0,0,0,0]]]]]], caml_string_of_jsbytes ("invalid format %S: integer %d is greater than the limit %d")], - _aX_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2837,11], - _aY_= + _aZ_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2837,11], + _a0_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9751,10 +9262,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')], - _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_= + _a1_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2899,34], + _a2_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2935,28], + _a3_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2957,11], + _a4_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9775,7 +9286,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")], - _aF_= + _aH_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9792,7 +9303,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")], - _aE_= + _aG_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9809,7 +9320,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")], - _aD_= + _aF_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9819,21 +9330,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")], - _aC_= + _aE_= [0, [11,caml_string_of_jsbytes("invalid box description "),[3,0,0]], caml_string_of_jsbytes("invalid box description %S")], - _aB_=[0,0,4], - _av_=[0,103], - _ae_=[0,0,0], - _bo_=[0,[2,0,[0,0]],caml_string_of_jsbytes("%s%c")], + _aD_=[0,0,4], + _ax_=[0,103], + _ag_=[0,0,0], + _bq_=[0,[2,0,[0,0]],caml_string_of_jsbytes("%s%c")], + _bk_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _bl_=[0,[2,0,0],caml_string_of_jsbytes("%s")], _bi_=[0,[2,0,0],caml_string_of_jsbytes("%s")], _bj_=[0,[2,0,0],caml_string_of_jsbytes("%s")], _bg_=[0,[2,0,0],caml_string_of_jsbytes("%s")], _bh_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _be_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _bf_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _a__= + _ba_= [0, [2, 0, @@ -9841,7 +9352,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")], - _bb_= + _bd_= [0, [2, 0, @@ -9858,7 +9369,7 @@ [2,0,[11,caml_string_of_jsbytes(".\n"),0]]]]]]]], caml_string_of_jsbytes ("%s: wrong argument '%s'; option '%s' expects %s.\n")], - _bc_= + _be_= [0, [2, 0, @@ -9866,7 +9377,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")], - _bd_= + _bf_= [0, [2, 0, @@ -9874,28 +9385,28 @@ caml_string_of_jsbytes(": "), [2,0,[11,caml_string_of_jsbytes(".\n"),0]]]], caml_string_of_jsbytes("%s: %s.\n")], - _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_= + _bb_=[0,caml_string_of_jsbytes("-help")], + _bc_=[0,caml_string_of_jsbytes("--help")], + _a$_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _a__=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], + _a9_=[0,caml_string_of_jsbytes("-help")], + _a7_= [0, [11,caml_string_of_jsbytes(" "),[2,0,[12,32,[2,0,[12,10,0]]]]], caml_string_of_jsbytes(" %s %s\n")], - _a6_= + _a8_= [0, [11,caml_string_of_jsbytes(" "),[2,0,[12,32,[2,0,[2,0,[12,10,0]]]]]], caml_string_of_jsbytes(" %s %s%s\n")], - _bt_= + _bv_= [0, [11,caml_string_of_jsbytes(", "),[2,0,[2,0,0]]], caml_string_of_jsbytes(", %s%s")], - _bF_= + _bH_= [0, [11,caml_string_of_jsbytes("Fatal error: exception "),[2,0,[12,10,0]]], caml_string_of_jsbytes("Fatal error: exception %s\n")], - _bG_= + _bI_= [0, [11, caml_string_of_jsbytes @@ -9903,13 +9414,13 @@ [2,0,[12,10,0]]], caml_string_of_jsbytes ("Fatal error in uncaught exception handler: exception %s\n")], - _bE_= + _bG_= [0, [11,caml_string_of_jsbytes("Fatal error: exception "),[2,0,[12,10,0]]], caml_string_of_jsbytes("Fatal error: exception %s\n")], + _bE_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], _bC_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], - _bA_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], - _bB_= + _bD_= [0, [11, caml_string_of_jsbytes @@ -9917,7 +9428,7 @@ 0], caml_string_of_jsbytes ("(Program not linked with -g, cannot print stack backtrace)\n")], - _by_= + _bA_= [0, [2, 0, @@ -9938,23 +9449,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')], - _bz_= + _bB_= [0, [2,0,[11,caml_string_of_jsbytes(" unknown location"),0]], caml_string_of_jsbytes("%s unknown location")], - _bx_= + _bz_= [0, [11,caml_string_of_jsbytes("Uncaught exception: "),[2,0,[12,10,0]]], caml_string_of_jsbytes("Uncaught exception: %s\n")], - _bw_= + _by_= [0, [11,caml_string_of_jsbytes("Uncaught exception: "),[2,0,[12,10,0]]], caml_string_of_jsbytes("Uncaught exception: %s\n")], - _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_= + _bw_=[0,[12,40,[2,0,[2,0,[12,41,0]]]],caml_string_of_jsbytes("(%s%s)")], + _bx_=[0,[12,40,[2,0,[12,41,0]]],caml_string_of_jsbytes("(%s)")], + _bu_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _bt_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _bF_= [0, caml_string_of_jsbytes(""), caml_string_of_jsbytes @@ -9965,92 +9476,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)")], - _bN_= + _bP_= [0, [11, caml_string_of_jsbytes("minor_collections: "), [4,0,0,0,[12,10,0]]], caml_string_of_jsbytes("minor_collections: %d\n")], - _bO_= + _bQ_= [0, [11, caml_string_of_jsbytes("major_collections: "), [4,0,0,0,[12,10,0]]], caml_string_of_jsbytes("major_collections: %d\n")], - _bP_= + _bR_= [0, [11, caml_string_of_jsbytes("compactions: "), [4,0,0,0,[12,10,0]]], caml_string_of_jsbytes("compactions: %d\n")], - _bQ_= + _bS_= [0, [11, caml_string_of_jsbytes("forced_major_collections: "), [4,0,0,0,[12,10,0]]], caml_string_of_jsbytes("forced_major_collections: %d\n")], - _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_= + _bT_=[0,[12,10,0],caml_string_of_jsbytes("\n")], + _bU_=[0,[8,[0,0,0],0,[0,0],0],caml_string_of_jsbytes("%.0f")], + _bV_= [0, [11, caml_string_of_jsbytes("minor_words: "), [8,[0,0,0],[1,1],[0,0],[12,10,0]]], caml_string_of_jsbytes("minor_words: %*.0f\n")], - _bU_= + _bW_= [0, [11, caml_string_of_jsbytes("promoted_words: "), [8,[0,0,0],[1,1],[0,0],[12,10,0]]], caml_string_of_jsbytes("promoted_words: %*.0f\n")], - _bV_= + _bX_= [0, [11, caml_string_of_jsbytes("major_words: "), [8,[0,0,0],[1,1],[0,0],[12,10,0]]], caml_string_of_jsbytes("major_words: %*.0f\n")], - _bW_=[0,[12,10,0],caml_string_of_jsbytes("\n")], - _bX_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], - _bY_= + _bY_=[0,[12,10,0],caml_string_of_jsbytes("\n")], + _bZ_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _b0_= [0, [11,caml_string_of_jsbytes("top_heap_words: "),[4,0,[1,1],0,[12,10,0]]], caml_string_of_jsbytes("top_heap_words: %*d\n")], - _bZ_= + _b1_= [0, [11,caml_string_of_jsbytes("heap_words: "),[4,0,[1,1],0,[12,10,0]]], caml_string_of_jsbytes("heap_words: %*d\n")], - _b0_= + _b2_= [0, [11,caml_string_of_jsbytes("live_words: "),[4,0,[1,1],0,[12,10,0]]], caml_string_of_jsbytes("live_words: %*d\n")], - _b1_= + _b3_= [0, [11,caml_string_of_jsbytes("free_words: "),[4,0,[1,1],0,[12,10,0]]], caml_string_of_jsbytes("free_words: %*d\n")], - _b2_= + _b4_= [0, [11,caml_string_of_jsbytes("largest_free: "),[4,0,[1,1],0,[12,10,0]]], caml_string_of_jsbytes("largest_free: %*d\n")], - _b3_= + _b5_= [0, [11,caml_string_of_jsbytes("fragments: "),[4,0,[1,1],0,[12,10,0]]], caml_string_of_jsbytes("fragments: %*d\n")], - _b4_=[0,[12,10,0],caml_string_of_jsbytes("\n")], - _b5_= + _b6_=[0,[12,10,0],caml_string_of_jsbytes("\n")], + _b7_= [0, [11,caml_string_of_jsbytes("live_blocks: "),[4,0,0,0,[12,10,0]]], caml_string_of_jsbytes("live_blocks: %d\n")], - _b6_= + _b8_= [0, [11,caml_string_of_jsbytes("free_blocks: "),[4,0,0,0,[12,10,0]]], caml_string_of_jsbytes("free_blocks: %d\n")], - _b7_= + _b9_= [0, [11,caml_string_of_jsbytes("heap_chunks: "),[4,0,0,0,[12,10,0]]], caml_string_of_jsbytes("heap_chunks: %d\n")], - _cd_=runtime.caml_int64_create_lo_mi_hi(1,0,0), - _ce_=runtime.caml_int64_create_lo_mi_hi(0,0,0), - _cf_= + _cf_=runtime.caml_int64_create_lo_mi_hi(1,0,0), + _cg_=runtime.caml_int64_create_lo_mi_hi(0,0,0), + _ch_= [0, 987910699, 495797812, @@ -10107,43 +9618,43 @@ 652377910, 409934019, 801085050], - _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_= + _ck_=[0,0], + _cq_=[3,0,3], + _cp_=[1,caml_string_of_jsbytes("max_indent < 2")], + _cn_=[1,caml_string_of_jsbytes("margin <= max_indent")], + _co_=[0,0], + _cm_=[0,caml_string_of_jsbytes("")], + _cl_=[0,caml_string_of_jsbytes(""),0,caml_string_of_jsbytes("")], + _cG_=[0,91], + _cF_=[0,123], + _cH_=[0,caml_string_of_jsbytes("scanf.ml"),1453,13], + _cI_=[0,[3,0,[10,0]],caml_string_of_jsbytes("%S%!")], + _cE_=[0,37,caml_string_of_jsbytes("")], + _cD_= [0, [11, caml_string_of_jsbytes("scanf: bad input at char number "), [4,3,0,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]], caml_string_of_jsbytes("scanf: bad input at char number %i: %s")], - _cA_= + _cC_= [0, [11, caml_string_of_jsbytes("the character "), [1,[11,caml_string_of_jsbytes(" cannot start a boolean"),0]]], caml_string_of_jsbytes("the character %C cannot start a boolean")], - _cz_= + _cB_= [0, [11, caml_string_of_jsbytes("bad character hexadecimal encoding \\"), [0,[0,0]]], caml_string_of_jsbytes("bad character hexadecimal encoding \\%c%c")], - _cy_= + _cA_= [0, [11, caml_string_of_jsbytes("bad character decimal encoding \\"), [0,[0,[0,0]]]], caml_string_of_jsbytes("bad character decimal encoding \\%c%c%c")], - _cx_= + _cz_= [0, [11, caml_string_of_jsbytes("character "), @@ -10152,24 +9663,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")], - _cw_= + _cy_= [0, [11, caml_string_of_jsbytes("character "), [1,[11,caml_string_of_jsbytes(" is not a decimal digit"),0]]], caml_string_of_jsbytes("character %C is not a decimal digit")], - _cv_=[0,caml_string_of_jsbytes("scanf.ml"),555,9], - _cu_= + _cx_=[0,caml_string_of_jsbytes("scanf.ml"),555,9], + _cw_= [0, [11,caml_string_of_jsbytes("invalid boolean '"),[2,0,[12,39,0]]], caml_string_of_jsbytes("invalid boolean '%s'")], - _ct_= + _cv_= [0, [11, caml_string_of_jsbytes("looking for "), [1,[11,caml_string_of_jsbytes(", found "),[1,0]]]], caml_string_of_jsbytes("looking for %C, found %C")], - _cs_= + _cu_= [0, [11, caml_string_of_jsbytes("scanning of "), @@ -10181,7 +9692,7 @@ 0]]], caml_string_of_jsbytes ("scanning of %s failed: premature end of file occurred before end of token")], - _cr_= + _ct_= [0, [11, caml_string_of_jsbytes("scanning of "), @@ -10193,28 +9704,28 @@ 0]]], caml_string_of_jsbytes ("scanning of %s failed: the specified length was too short for token")], - _cq_= + _cs_= [0, [11,caml_string_of_jsbytes("illegal escape character "),[1,0]], caml_string_of_jsbytes("illegal escape character %C")], - _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], + _cP_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),439,17], + _cO_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),421,13], + _cN_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),418,13], + _cM_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),415,13], + _cL_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),412,13], + _cK_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),409,13], + _cJ_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),281,50], + _cQ_=[0,caml_string_of_jsbytes("camlinternalMod.ml"),72,5], + _cR_=[0,caml_string_of_jsbytes("camlinternalMod.ml"),81,2], + _cU_=[0,0], + _cT_=[0,0], _cS_=[0,0], - _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]; + _cZ_=[0,7,0], + _cY_=[0,1,[0,3,[0,5,0]]], + _cX_=[0,[2,0,[4,6,[0,2,6],0,[2,0,0]]],caml_string_of_jsbytes("%s%06x%s")], + _cW_=[0,caml_string_of_jsbytes('"'),0], + _c0_=[254,0.,0.], + _c1_=[0,0]; function erase_rel(param) {if(typeof param === "number") return 0; @@ -10388,11 +9899,11 @@ function string_of_int(n){return caml_string_of_jsbytes("" + n)} function int_of_string_opt(s) {try - {var _Ey_=[0,caml_int_of_string(s)];return _Ey_} - catch(_Ez_) - {_Ez_ = caml_wrap_exception(_Ez_); - if(_Ez_[1] === Failure)return 0; - throw _Ez_}} + {var _EE_=[0,caml_int_of_string(s)];return _EE_} + catch(_EF_) + {_EF_ = caml_wrap_exception(_EF_); + if(_EF_[1] === Failure)return 0; + throw _EF_}} function valid_float_lexem(s) {var l=caml_ml_string_length(s),i=0; for(;;) @@ -10408,11 +9919,11 @@ {return valid_float_lexem(caml_format_float(cst_12g,f))} function of_string_opt(s) {try - {var _Ew_=[0,caml_float_of_string(s)];return _Ew_} - catch(_Ex_) - {_Ex_ = caml_wrap_exception(_Ex_); - if(_Ex_[1] === Failure)return 0; - throw _Ex_}} + {var _EC_=[0,caml_float_of_string(s)];return _EC_} + catch(_ED_) + {_ED_ = caml_wrap_exception(_ED_); + if(_ED_[1] === Failure)return 0; + throw _ED_}} function append(l1,l2) {if(l1){var tl=l1[2],hd=l1[1];return [0,hd,append(tl,l2)]}return l2} var @@ -10433,10 +9944,10 @@ {var l=param$0[2],a=param$0[1]; try {caml_ml_flush(a)} - catch(_Ev_) - {_Ev_ = caml_wrap_exception(_Ev_); - if(_Ev_[1] !== Sys_error)throw _Ev_; - var _Eu_=_Ev_} + catch(_EB_) + {_EB_ = caml_wrap_exception(_EB_); + if(_EB_[1] !== Sys_error)throw _EB_; + var _EA_=_EB_} var param$0=l; continue} return 0}} @@ -10467,10 +9978,10 @@ 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(_Et_){} + {try {caml_ml_flush(oc)}catch(_Ez_){} try - {var _Er_=caml_ml_close_channel(oc);return _Er_} - catch(_Es_){return 0}} + {var _Ex_=caml_ml_close_channel(oc);return _Ex_} + catch(_Ey_){return 0}} function open_gen$0(mode,perm,name) {var c=caml_ml_open_descriptor_in(caml_sys_open(name,mode,perm)); caml_ml_set_channel_name(c,name); @@ -10515,7 +10026,7 @@ {var n=runtime.caml_ml_input_scan_line(chan); if(0 === n) {if(! accu)throw End_of_file; - var _Eq_=build_result(caml_create_bytes(len),len,accu)} + var _Ew_=build_result(caml_create_bytes(len),len,accu)} else {if(! (0 < n)) {var beg=caml_create_bytes(- n | 0); @@ -10528,14 +10039,14 @@ if(accu) var len$0=(len + n | 0) - 1 | 0, - _Eq_=build_result(caml_create_bytes(len$0),len$0,[0,res,accu]); + _Ew_=build_result(caml_create_bytes(len$0),len$0,[0,res,accu]); else - var _Eq_=res} - return caml_string_of_bytes(_Eq_)}} + var _Ew_=res} + return caml_string_of_bytes(_Ew_)}} function close_noerr$0(ic) {try - {var _Eo_=caml_ml_close_channel(ic);return _Eo_} - catch(_Ep_){return 0}} + {var _Eu_=caml_ml_close_channel(ic);return _Eu_} + catch(_Ev_){return 0}} function print_char(c){return caml_ml_output_char(stdout,c)} function print_string(s){return output_string(stdout,s)} function print_bytes(s){return output_bytes(stdout,s)} @@ -10566,14 +10077,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,_Em_) + function symbol(param,_Es_) {var - str2=_Em_[2], - fmt2=_Em_[1], + str2=_Es_[2], + fmt2=_Es_[1], str1=param[2], fmt1=param[1], - _En_=cat(str1,cat(cst$0,str2)); - return [0,concat_fmt(fmt1,fmt2),_En_]} + _Et_=cat(str1,cat(cst$0,str2)); + return [0,concat_fmt(fmt1,fmt2),_Et_]} var exit_function=[0,flush_all]; function at_exit(f) {for(;;) @@ -10588,9 +10099,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), - _El_=1 - success; - if(_El_)continue; - return _El_}} + _Er_=1 - success; + if(_Er_)continue; + return _Er_}} function do_at_exit(param){return caml_call1(exit_function[1],0)} function exit(retcode) {do_at_exit(0);return runtime.caml_sys_exit(retcode)} @@ -10844,21 +10355,21 @@ return caml_call1(right,v$0)} function equal(left,right,e1,e2) {if(0 === e1[0]) - {var _Ej_=e1[1]; - if(0 === e2[0]){var v2=e2[1];return caml_call2(left,_Ej_,v2)}} + {var _Ep_=e1[1]; + if(0 === e2[0]){var v2=e2[1];return caml_call2(left,_Ep_,v2)}} else - {var _Ek_=e1[1]; - if(0 !== e2[0]){var v2$0=e2[1];return caml_call2(right,_Ek_,v2$0)}} + {var _Eq_=e1[1]; + if(0 !== e2[0]){var v2$0=e2[1];return caml_call2(right,_Eq_,v2$0)}} return 0} function compare(left,right,e1,e2) {if(0 === e1[0]) - {var _Eh_=e1[1]; - if(0 === e2[0]){var v2=e2[1];return caml_call2(left,_Eh_,v2)} + {var _En_=e1[1]; + if(0 === e2[0]){var v2=e2[1];return caml_call2(left,_En_,v2)} return -1} - var _Ei_=e1[1]; + var _Eo_=e1[1]; if(0 === e2[0])return 1; var v2$0=e2[1]; - return caml_call2(right,_Ei_,v2$0)} + return caml_call2(right,_Eo_,v2$0)} var Stdlib_Either= [0, @@ -10893,11 +10404,11 @@ int_size=32; function getenv_opt(s) {try - {var _Ef_=[0,caml_sys_getenv(s)];return _Ef_} - catch(_Eg_) - {_Eg_ = caml_wrap_exception(_Eg_); - if(_Eg_ === Not_found)return 0; - throw _Eg_}} + {var _El_=[0,caml_sys_getenv(s)];return _El_} + catch(_Em_) + {_Em_ = caml_wrap_exception(_Em_); + if(_Em_ === Not_found)return 0; + throw _Em_}} var interactive=[0,0]; function set_signal(sig_num,sig_beh){return 0} var @@ -10932,7 +10443,7 @@ sigxfsz=-28; function catch_break(on){return on?0:0} var development_version=0; - function Make(_Ee_,_Ed_){return [0,1]} + function Make(_Ek_,_Ej_){return [0,1]} var Immediate64=[0,Make], Stdlib_Sys= @@ -11038,19 +10549,19 @@ extension_id=Extension_constructor[3], max_ephe_length=max_array_length - 2 | 0; function create(l) - {var _Eb_=0 <= l?1:0,_Ec_=_Eb_?l <= max_ephe_length?1:0:_Eb_; - if(1 - _Ec_)invalid_arg(cst_Obj_Ephemeron_create); + {var _Eh_=0 <= l?1:0,_Ei_=_Eh_?l <= max_ephe_length?1:0:_Eh_; + if(1 - _Ei_)invalid_arg(cst_Obj_Ephemeron_create); return runtime.caml_ephe_create(l)} function length(x){return x.length - 1 - 2 | 0} function raise_if_invalid_offset(e,o,msg) - {var _D__=0 <= o?1:0,_D$_=_D__?o < length(e)?1:0:_D__,_Ea_=1 - _D$_; - return _Ea_?invalid_arg(msg):_Ea_} + {var _Ee_=0 <= o?1:0,_Ef_=_Ee_?o < length(e)?1:0:_Ee_,_Eg_=1 - _Ef_; + return _Eg_?invalid_arg(msg):_Eg_} function get_key(e,o) {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_get_key); - return caml_ephe_get_key(e,o)} + return runtime.caml_ephe_get_key(e,o)} function get_key_copy(e,o) {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_get_key_copy); - return caml_ephe_get_key_copy(e,o)} + return runtime.caml_ephe_get_key_copy(e,o)} function set_key(e,o,x) {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_set_key); return caml_ephe_set_key(e,o,x)} @@ -11059,7 +10570,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 caml_ephe_check_key(e,o)} + return runtime.caml_ephe_check_key(e,o)} function blit_key(e1,o1,e2,o2,l) {if (0 @@ -11079,11 +10590,15 @@ && ! ((length(e2) - l | 0) < o2)) - {var _D8_=0 !== l?1:0,_D9_=_D8_?caml_ephe_blit_key(e1,o1,e2,o2,l):_D8_; - return _D9_} + {var + _Ec_=0 !== l?1:0, + _Ed_=_Ec_?runtime.caml_ephe_blit_key(e1,o1,e2,o2,l):_Ec_; + return _Ed_} return invalid_arg(cst_Obj_Ephemeron_blit_key)} var - _o_= + _o_=runtime.caml_ephe_blit_data, + _p_=runtime.caml_ephe_check_data, + _q_= [0, create, length, @@ -11096,9 +10611,9 @@ runtime.caml_ephe_get_data, runtime.caml_ephe_get_data_copy, runtime.caml_ephe_set_data, - runtime.caml_ephe_unset_data, - runtime.caml_ephe_check_data, - runtime.caml_ephe_blit_data, + function(_Eb_){return runtime.caml_ephe_unset_data(_Eb_)}, + _p_, + _o_, max_ephe_length], Stdlib_Obj= [0, @@ -11127,7 +10642,7 @@ extension_constructor, extension_name, extension_id, - _o_]; + _q_]; caml_register_global(779,Stdlib_Obj,"Stdlib__Obj"); var Undefined=[248,cst_CamlinternalLazy_Undefined,caml_fresh_oo_id(0)]; function raise_undefined(param){throw Undefined} @@ -11164,23 +10679,23 @@ function is_val(l){return caml_obj_tag(l) !== 246?1:0} function map$0(f,x) {return [246, - function(_D5_) + function(_D__) {var - _D6_=caml_obj_tag(x), - _D7_=250 === _D6_?x[1]:246 === _D6_?force_lazy_block(x):x; - return caml_call1(f,_D7_)}]} + _D$_=caml_obj_tag(x), + _Ea_=250 === _D$_?x[1]:246 === _D$_?force_lazy_block(x):x; + return caml_call1(f,_Ea_)}]} function map_val(f,x) {if(is_val(x)) {var - _D0_=caml_obj_tag(x), - _D1_=250 === _D0_?x[1]:246 === _D0_?force_lazy_block(x):x; - return from_val(caml_call1(f,_D1_))} + _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(_D2_) + function(_D7_) {var - _D3_=caml_obj_tag(x), - _D4_=250 === _D3_?x[1]:246 === _D3_?force_lazy_block(x):x; - return caml_call1(f,_D4_)}]} + _D8_=caml_obj_tag(x), + _D9_=250 === _D8_?x[1]:246 === _D8_?force_lazy_block(x):x; + return caml_call1(f,_D9_)}]} var Stdlib_Lazy= [0, @@ -11202,7 +10717,7 @@ {var match=caml_call1(seq1,0); if(match) {var next=match[2],x=match[1]; - return [0,x,function(_DZ_){return append$0(next,seq2,_DZ_)}]} + return [0,x,function(_D4_){return append$0(next,seq2,_D4_)}]} return caml_call1(seq2,0)} function map$1(f,seq,param) {var match=caml_call1(seq,0); @@ -11210,8 +10725,8 @@ {var next=match[2], x=match[1], - _DX_=function(_DY_){return map$1(f,next,_DY_)}; - return [0,caml_call1(f,x),_DX_]} + _D2_=function(_D3_){return map$1(f,next,_D3_)}; + return [0,caml_call1(f,x),_D2_]} return 0} function filter_map(f,seq,param) {var seq$0=seq; @@ -11221,7 +10736,7 @@ {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(_DW_){return filter_map(f,next,_DW_)}]} + return [0,y,function(_D1_){return filter_map(f,next,_D1_)}]} var seq$0=next; continue} return 0}} @@ -11232,15 +10747,15 @@ if(match) {var next=match[2],x=match[1]; if(caml_call1(f,x)) - return [0,x,function(_DV_){return filter(f,next,_DV_)}]; + return [0,x,function(_D0_){return filter(f,next,_D0_)}]; var seq$0=next; continue} return 0}} function concat(seq,param) {var match=caml_call1(seq,0); if(match) - {var next=match[2],x=match[1],_DT_=0; - return append$0(x,function(_DU_){return concat(next,_DU_)},_DT_)} + {var next=match[2],x=match[1],_DY_=0; + return append$0(x,function(_DZ_){return concat(next,_DZ_)},_DY_)} return 0} function flat_map(f,seq,param) {var match=caml_call1(seq,0); @@ -11248,9 +10763,9 @@ {var next=match[2], x=match[1], - _DQ_=0, - _DR_=function(_DS_){return flat_map(f,next,_DS_)}; - return append$0(caml_call1(f,x),_DR_,_DQ_)} + _DV_=0, + _DW_=function(_DX_){return flat_map(f,next,_DX_)}; + return append$0(caml_call1(f,x),_DW_,_DV_)} return 0} function fold_left(f,acc,seq) {var acc$0=acc,seq$0=seq; @@ -11279,7 +10794,7 @@ {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(_DP_){return unfold(f,u$0,_DP_)}]} + return [0,x,function(_DU_){return unfold(f,u$0,_DU_)}]} return 0} function is_empty(xs){var match=caml_call1(xs,0);return match?0:1} function uncons(xs) @@ -11323,17 +10838,17 @@ for(;;) {var match=caml_call1(xs$0,0); if(match) - {var xs$1=match[2],x=match[1],_DO_=caml_call1(p,x); - if(_DO_){var xs$0=xs$1;continue} - return _DO_} + {var xs$1=match[2],x=match[1],_DT_=caml_call1(p,x); + if(_DT_){var xs$0=xs$1;continue} + return _DT_} return 1}} function exists(p,xs) {var xs$0=xs; for(;;) {var match=caml_call1(xs$0,0); if(match) - {var xs$1=match[2],x=match[1],_DN_=caml_call1(p,x); - if(_DN_)return _DN_; + {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}} @@ -11394,9 +10909,9 @@ 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],_DM_=caml_call2(f,x,y); - if(_DM_){var xs$0=xs$1,ys$0=ys$1;continue} - return _DM_} + {var ys$1=match$0[2],y=match$0[1],_DR_=caml_call2(f,x,y); + if(_DR_){var xs$0=xs$1,ys$0=ys$1;continue} + return _DR_} return 1} return 1}} function exists2(f,xs,ys) @@ -11406,8 +10921,8 @@ 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],_DL_=caml_call2(f,x,y); - if(_DL_)return _DL_; + {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} @@ -11423,9 +10938,9 @@ y=match$0[1], xs$1=match[2], x=match[1], - _DK_=caml_call2(eq,x,y); - if(_DK_){var xs$0=xs$1,ys$0=ys$1;continue} - return _DK_}} + _DP_=caml_call2(eq,x,y); + if(_DP_){var xs$0=xs$1,ys$0=ys$1;continue} + return _DP_}} else if(! match$0)return 1; return 0}} @@ -11434,68 +10949,68 @@ for(;;) {var match=caml_call1(xs$0,0),match$0=caml_call1(ys$0,0); if(match) - {var _DI_=match[2],_DJ_=match[1]; + {var _DN_=match[2],_DO_=match[1]; if(match$0) - {var ys$1=match$0[2],y=match$0[1],c=caml_call2(cmp,_DJ_,y); - if(0 === c){var xs$0=_DI_,ys$0=ys$1;continue} + {var ys$1=match$0[2],y=match$0[1],c=caml_call2(cmp,_DO_,y); + if(0 === c){var xs$0=_DN_,ys$0=ys$1;continue} return c} return 1} return match$0?-1:0}} function init_aux(f,i,j,param) {if(i < j) {var - _DF_=i + 1 | 0, - _DG_=function(_DH_){return init_aux(f,_DF_,j,_DH_)}; - return [0,caml_call1(f,i),_DG_]} + _DK_=i + 1 | 0, + _DL_=function(_DM_){return init_aux(f,_DK_,j,_DM_)}; + return [0,caml_call1(f,i),_DL_]} return 0} function init(n,f) {if(0 <= n) - {var _DD_=0;return function(_DE_){return init_aux(f,_DD_,n,_DE_)}} + {var _DI_=0;return function(_DJ_){return init_aux(f,_DI_,n,_DJ_)}} return invalid_arg(cst_Seq_init)} function repeat(x,param) - {return [0,x,function(_DC_){return repeat(x,_DC_)}]} + {return [0,x,function(_DH_){return repeat(x,_DH_)}]} function forever(f,param) - {function _DA_(_DB_){return forever(f,_DB_)} - return [0,caml_call1(f,0),_DA_]} + {function _DF_(_DG_){return forever(f,_DG_)} + return [0,caml_call1(f,0),_DF_]} function cycle_nonempty(xs,param) - {var _Dy_=0; - return append$0(xs,function(_Dz_){return cycle_nonempty(xs,_Dz_)},_Dy_)} + {var _DD_=0; + return append$0(xs,function(_DE_){return cycle_nonempty(xs,_DE_)},_DD_)} function cycle(xs,param) {var match=caml_call1(xs,0); if(match) {var xs$0=match[2], x=match[1], - _Dv_=function(_Dx_){return cycle_nonempty(xs,_Dx_)}; - return [0,x,function(_Dw_){return append$0(xs$0,_Dv_,_Dw_)}]} + _DA_=function(_DC_){return cycle_nonempty(xs,_DC_)}; + return [0,x,function(_DB_){return append$0(xs$0,_DA_,_DB_)}]} return 0} function iterate1(f,x,param) {var y=caml_call1(f,x); - return [0,y,function(_Du_){return iterate1(f,y,_Du_)}]} + return [0,y,function(_Dz_){return iterate1(f,y,_Dz_)}]} function iterate(f,x) - {function _Dr_(_Dt_){return iterate1(f,x,_Dt_)} - return function(_Ds_){return [0,x,_Dr_]}} + {function _Dw_(_Dy_){return iterate1(f,x,_Dy_)} + return function(_Dx_){return [0,x,_Dw_]}} function mapi_aux(f,i,xs,param) {var match=caml_call1(xs,0); if(match) {var xs$0=match[2], x=match[1], - _Do_=i + 1 | 0, - _Dp_=function(_Dq_){return mapi_aux(f,_Do_,xs$0,_Dq_)}; - return [0,caml_call2(f,i,x),_Dp_]} + _Dt_=i + 1 | 0, + _Du_=function(_Dv_){return mapi_aux(f,_Dt_,xs$0,_Dv_)}; + return [0,caml_call2(f,i,x),_Du_]} return 0} function mapi(f,xs) - {var _Dm_=0;return function(_Dn_){return mapi_aux(f,_Dm_,xs,_Dn_)}} + {var _Dr_=0;return function(_Ds_){return mapi_aux(f,_Dr_,xs,_Ds_)}} function tail_scan(f,s,xs,param) {var match=caml_call1(xs,0); if(match) {var xs$0=match[2],x=match[1],s$0=caml_call2(f,s,x); - return [0,s$0,function(_Dl_){return tail_scan(f,s$0,xs$0,_Dl_)}]} + return [0,s$0,function(_Dq_){return tail_scan(f,s$0,xs$0,_Dq_)}]} return 0} function scan(f,s,xs) - {function _Di_(_Dk_){return tail_scan(f,s,xs,_Dk_)} - return function(_Dj_){return [0,s,_Di_]}} + {function _Dn_(_Dp_){return tail_scan(f,s,xs,_Dp_)} + return function(_Do_){return [0,s,_Dn_]}} function take_aux(n,xs) {return 0 === n ?empty @@ -11527,7 +11042,7 @@ if(match) {var xs$0=match[2],x=match[1]; return caml_call1(p,x) - ?[0,x,function(_Dh_){return take_while(p,xs$0,_Dh_)}] + ?[0,x,function(_Dm_){return take_while(p,xs$0,_Dm_)}] :0} return 0} function drop_while(p,xs,param) @@ -11545,12 +11060,12 @@ {var xs$0=match[2], x=match[1], - _C__=caml_call1(eq,x), - _C$_=function(_Dg_){return drop_while(_C__,xs$0,_Dg_)}, - _Da_=function(_Df_){return group(eq,_C$_,_Df_)}, - _Db_=caml_call1(eq,x), - _Dc_=function(_De_){return take_while(_Db_,xs$0,_De_)}; - return [0,function(_Dd_){return [0,x,_Dc_]},_Da_]} + _Dd_=caml_call1(eq,x), + _De_=function(_Dl_){return drop_while(_Dd_,xs$0,_Dl_)}, + _Df_=function(_Dk_){return group(eq,_De_,_Dk_)}, + _Dg_=caml_call1(eq,x), + _Dh_=function(_Dj_){return take_while(_Dg_,xs$0,_Dj_)}; + return [0,function(_Di_){return [0,x,_Dh_]},_Df_]} return 0} var Forced_twice=[248,cst_Stdlib_Seq_Forced_twice,caml_fresh_oo_id(0)]; function failure(param){throw Forced_twice} @@ -11560,9 +11075,9 @@ if(match){var xs$0=match[2],x=match[1];return [0,x,memoize(xs$0)]} return 0} var s=to_lazy(s$0); - return function(_C9_) - {var _C8_=caml_obj_tag(s); - return 250 === _C8_?s[1]:246 === _C8_?force_lazy_block(s):s}} + return function(_Dc_) + {var _Db_=caml_obj_tag(s); + return 250 === _Db_?s[1]:246 === _Db_?force_lazy_block(s):s}} function once(xs) {function f(param) {var match=caml_call1(xs,0); @@ -11577,7 +11092,7 @@ {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(_C7_){return zip(xs$0,ys$0,_C7_)}]} + return [0,[0,x,y],function(_Da_){return zip(xs$0,ys$0,_Da_)}]} return 0} return 0} function map2(f,xs,ys,param) @@ -11588,21 +11103,21 @@ {var ys$0=match$0[2], y=match$0[1], - _C5_=function(_C6_){return map2(f,xs$0,ys$0,_C6_)}; - return [0,caml_call2(f,x,y),_C5_]} + _C__=function(_C$_){return map2(f,xs$0,ys$0,_C$_)}; + return [0,caml_call2(f,x,y),_C__]} return 0} return 0} function interleave(xs,ys,param) {var match=caml_call1(xs,0); if(match) {var xs$0=match[2],x=match[1]; - return [0,x,function(_C4_){return interleave(ys,xs$0,_C4_)}]} + return [0,x,function(_C9_){return interleave(ys,xs$0,_C9_)}]} return caml_call1(ys,0)} function sorted_merge1(cmp,x,xs,y,ys) {return 0 < caml_call2(cmp,x,y) ?[0, y, - function(_C2_) + function(_C7_) {var match=caml_call1(ys,0); if(match) {var ys$0=match[2],y=match[1]; @@ -11610,7 +11125,7 @@ return [0,x,xs]}] :[0, x, - function(_C3_) + function(_C8_) {var match=caml_call1(xs,0); if(match) {var xs$0=match[2],x=match[1]; @@ -11630,17 +11145,17 @@ {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(_C1_){return map_fst(xys$0,_C1_)}]} + return [0,x,function(_C6_){return map_fst(xys$0,_C6_)}]} return 0} function map_snd(xys,param) {var match=caml_call1(xys,0); if(match) {var xys$0=match[2],match$0=match[1],y=match$0[2]; - return [0,y,function(_C0_){return map_snd(xys$0,_C0_)}]} + return [0,y,function(_C5_){return map_snd(xys$0,_C5_)}]} return 0} function unzip(xys) - {function _CX_(_CZ_){return map_snd(xys,_CZ_)} - return [0,function(_CY_){return map_fst(xys,_CY_)},_CX_]} + {function _C2_(_C4_){return map_snd(xys,_C4_)} + return [0,function(_C3_){return map_fst(xys,_C3_)},_C2_]} function filter_map_find_left_map(f,xs,param) {var xs$0=xs; for(;;) @@ -11651,7 +11166,7 @@ {var y=match$0[1]; return [0, y, - function(_CW_){return filter_map_find_left_map(f,xs$1,_CW_)}]} + function(_C1_){return filter_map_find_left_map(f,xs$1,_C1_)}]} var xs$0=xs$1; continue} return 0}} @@ -11665,26 +11180,26 @@ var z=match$0[1]; return [0, z, - function(_CV_) - {return filter_map_find_right_map(f,xs$1,_CV_)}]} + function(_C0_) + {return filter_map_find_right_map(f,xs$1,_C0_)}]} return 0}} function partition_map(f,xs) - {function _CS_(_CU_){return filter_map_find_right_map(f,xs,_CU_)} + {function _CX_(_CZ_){return filter_map_find_right_map(f,xs,_CZ_)} return [0, - function(_CT_){return filter_map_find_left_map(f,xs,_CT_)}, - _CS_]} + function(_CY_){return filter_map_find_left_map(f,xs,_CY_)}, + _CX_]} function partition(p,xs) - {function _CO_(x){return 1 - caml_call1(p,x)} - function _CP_(_CR_){return filter(_CO_,xs,_CR_)} - return [0,function(_CQ_){return filter(p,xs,_CQ_)},_CP_]} + {function _CT_(x){return 1 - caml_call1(p,x)} + function _CU_(_CW_){return filter(_CT_,xs,_CW_)} + return [0,function(_CV_){return filter(p,xs,_CV_)},_CU_]} function peel(xss) - {return unzip(function(_CN_){return filter_map(uncons,xss,_CN_)})} + {return unzip(function(_CS_){return filter_map(uncons,xss,_CS_)})} function transpose(xss,param) {var match=peel(xss),tails=match[2],heads=match[1]; if(is_empty(heads)) - {if(is_empty(tails))return 0;throw [0,Assert_failure,_p_]} - return [0,heads,function(_CM_){return transpose(tails,_CM_)}]} - function _q_(remainders,xss,param) + {if(is_empty(tails))return 0;throw [0,Assert_failure,_r_]} + return [0,heads,function(_CR_){return transpose(tails,_CR_)}]} + function _s_(remainders,xss,param) {var match=caml_call1(xss,0); if(match) {var xss$0=match[2],xs=match[1],match$0=caml_call1(xs,0); @@ -11695,19 +11210,19 @@ match$1=peel(remainders), tails=match$1[2], heads=match$1[1], - _CG_=function(_CL_){return [0,xs$0,tails]}, - _CH_=function(_CK_){return _q_(_CG_,xss$0,_CK_)}; - return [0,function(_CJ_){return [0,x,heads]},_CH_]} + _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(_CI_){return _q_(tails$0,xss$0,_CI_)}]} + return [0,heads$0,function(_CN_){return _s_(tails$0,xss$0,_CN_)}]} return transpose(remainders,0)} function map_product(f,xs,ys) - {function _CA_(x) - {function _CE_(y){return caml_call2(f,x,y)} - return function(_CF_){return map$1(_CE_,ys,_CF_)}} - function xss(_CD_){return map$1(_CA_,xs,_CD_)} - function _Cz_(_CC_){return _q_(empty,xss,_CC_)} - return function(_CB_){return concat(_Cz_,_CB_)}} + {function _CF_(x) + {function _CJ_(y){return caml_call2(f,x,y)} + return function(_CK_){return map$1(_CJ_,ys,_CK_)}} + function xss(_CI_){return map$1(_CF_,xs,_CI_)} + function _CE_(_CH_){return _s_(empty,xss,_CH_)} + return function(_CG_){return concat(_CE_,_CG_)}} function product(xs,ys) {return map_product(function(x,y){return [0,x,y]},xs,ys)} function of_dispenser(it) @@ -11723,7 +11238,7 @@ if(match){var xs=match[2],x=match[1];s[1] = xs;return [0,x]} return 0}} function ints(i,param) - {var _Cx_=i + 1 | 0;return [0,i,function(_Cy_){return ints(_Cx_,_Cy_)}]} + {var _CC_=i + 1 | 0;return [0,i,function(_CD_){return ints(_CC_,_CD_)}]} var Stdlib_Seq= [0, @@ -11808,15 +11323,15 @@ return 0} function compare$1(cmp,o0,o1) {if(o0) - {var _Cw_=o0[1]; - if(o1){var v1=o1[1];return caml_call2(cmp,_Cw_,v1)} + {var _CB_=o0[1]; + if(o1){var v1=o1[1];return caml_call2(cmp,_CB_,v1)} return 1} return o1?-1:0} function to_result(none,param) {if(param){var v=param[1];return [0,v]}return [1,none]} function to_list(param){if(param){var v=param[1];return [0,v,0]}return 0} function to_seq(param) - {if(param){var v=param[1];return function(_Cv_){return return$0(v,_Cv_)}} + {if(param){var v=param[1];return function(_CA_){return return$0(v,_CA_)}} return empty} var Stdlib_Option= @@ -11868,28 +11383,28 @@ function is_error(param){return 0 === param[0]?0:1} function equal$2(ok,error,r0,r1) {if(0 === r0[0]) - {var _Ct_=r0[1]; - if(0 === r1[0]){var v1=r1[1];return caml_call2(ok,_Ct_,v1)}} + {var _Cy_=r0[1]; + if(0 === r1[0]){var v1=r1[1];return caml_call2(ok,_Cy_,v1)}} else - {var _Cu_=r0[1]; - if(0 !== r1[0]){var e1=r1[1];return caml_call2(error,_Cu_,e1)}} + {var _Cz_=r0[1]; + if(0 !== r1[0]){var e1=r1[1];return caml_call2(error,_Cz_,e1)}} return 0} function compare$2(ok,error,r0,r1) {if(0 === r0[0]) - {var _Cr_=r0[1]; - if(0 === r1[0]){var v1=r1[1];return caml_call2(ok,_Cr_,v1)} + {var _Cw_=r0[1]; + if(0 === r1[0]){var v1=r1[1];return caml_call2(ok,_Cw_,v1)} return -1} - var _Cs_=r0[1]; + var _Cx_=r0[1]; if(0 === r1[0])return 1; var e1=r1[1]; - return caml_call2(error,_Cs_,e1)} + return caml_call2(error,_Cx_,e1)} function to_option(param) {if(0 === param[0]){var v=param[1];return [0,v]}return 0} function to_list$0(param) {if(0 === param[0]){var v=param[1];return [0,v,0]}return 0} function to_seq$0(param) {if(0 === param[0]) - {var v=param[1];return function(_Cq_){return return$0(v,_Cq_)}} + {var v=param[1];return function(_Cv_){return return$0(v,_Cv_)}} return empty} var Stdlib_Result= @@ -11914,18 +11429,18 @@ to_list$0, to_seq$0]; caml_register_global(784,Stdlib_Result,"Stdlib__Result"); - function equal$3(_Cp_,_Co_){return _Cp_ === _Co_?1:0} + function equal$3(_Cu_,_Ct_){return _Cu_ === _Ct_?1:0} var compare$3=caml_int_compare; function to_float(param){return param?1.:0.} function to_string$0(param){return param?cst_true$2:cst_false$2} - function _r_(_Cn_){return _Cn_} + function _t_(_Cs_){return _Cs_} var Stdlib_Bool= [0, - function(_Cm_){return 1 - _Cm_}, + function(_Cr_){return 1 - _Cr_}, equal$3, compare$3, - _r_, + _t_, to_float, to_string$0]; caml_register_global(785,Stdlib_Bool,"Stdlib__Bool"); @@ -11957,18 +11472,18 @@ caml_bytes_unsafe_set(s,3,48 + (c % 10 | 0) | 0); return caml_string_of_bytes(s)} function lowercase(c) - {var _Cl_=c - 192 | 0,switch$0=0; - if(30 < _Cl_ >>> 0) - {if(! (25 < _Cl_ + 127 >>> 0))switch$0 = 1} + {var _Cq_=c - 192 | 0,switch$0=0; + if(30 < _Cq_ >>> 0) + {if(! (25 < _Cq_ + 127 >>> 0))switch$0 = 1} else - if(23 !== _Cl_)switch$0 = 1; + if(23 !== _Cq_)switch$0 = 1; return switch$0?c + 32 | 0:c} function uppercase(c) - {var _Ck_=c - 224 | 0,switch$0=0; - if(30 < _Ck_ >>> 0) - {if(! (25 < _Ck_ + 127 >>> 0))switch$0 = 1} + {var _Cp_=c - 224 | 0,switch$0=0; + if(30 < _Cp_ >>> 0) + {if(! (25 < _Cp_ + 127 >>> 0))switch$0 = 1} else - if(23 !== _Ck_)switch$0 = 1; + if(23 !== _Cp_)switch$0 = 1; return switch$0?c - 32 | 0:c} function lowercase_ascii(c){return 25 < c - 65 >>> 0?c:c + 32 | 0} function uppercase_ascii(c){return 25 < c - 97 >>> 0?c:c - 32 | 0} @@ -12000,12 +11515,12 @@ function pred(u) {return u === 57344?lo_bound:u === 0?invalid_arg(err_no_pred):u - 1 | 0} function is_valid(i) - {var _Cg_=0 <= i?1:0,_Ch_=_Cg_?i <= 55295?1:0:_Cg_; - if(_Ch_) - var _Ci_=_Ch_; + {var _Cl_=0 <= i?1:0,_Cm_=_Cl_?i <= 55295?1:0:_Cl_; + if(_Cm_) + var _Cn_=_Cm_; else - var _Cj_=57344 <= i?1:0,_Ci_=_Cj_?i <= 1114111?1:0:_Cj_; - return _Ci_} + var _Co_=57344 <= i?1:0,_Cn_=_Co_?i <= 1114111?1:0:_Co_; + return _Cn_} function of_int(i) {return is_valid(i) ?i @@ -12021,10 +11536,10 @@ cat (caml_format_int(cst_04X,u),cst_is_not_a_latin1_character))) :u} - function unsafe_to_char(_Cf_){return _Cf_} - function equal$5(_Ce_,_Cd_){return _Ce_ === _Cd_?1:0} + function unsafe_to_char(_Ck_){return _Ck_} + function equal$5(_Cj_,_Ci_){return _Cj_ === _Ci_?1:0} var compare$5=caml_int_compare; - function hash(_Cc_){return _Cc_} + function hash(_Ch_){return _Ch_} function utf_decode_is_valid(d){return 1 === (d >>> 27 | 0)?1:0} function utf_decode_length(d){return (d >>> 24 | 0) & 7} function utf_decode_uchar(d){return d & 16777215} @@ -12035,17 +11550,17 @@ {if(127 < u) {if(2047 < u) {if(65535 < u) - {if(1114111 < u)throw [0,Assert_failure,_s_];return 4} + {if(1114111 < u)throw [0,Assert_failure,_u_];return 4} return 3} return 2} return 1} - throw [0,Assert_failure,_t_]} + throw [0,Assert_failure,_v_]} function utf_16_byte_length(u) {if(0 <= u) - {if(65535 < u){if(1114111 < u)throw [0,Assert_failure,_u_];return 4} + {if(65535 < u){if(1114111 < u)throw [0,Assert_failure,_w_];return 4} return 2} - throw [0,Assert_failure,_v_]} - function _w_(_Cb_){return _Cb_} + throw [0,Assert_failure,_x_]} + function _y_(_Cg_){return _Cg_} var Stdlib_Uchar= [0, @@ -12057,8 +11572,8 @@ pred, is_valid, of_int, - function(_Ca_){return _Ca_}, - _w_, + function(_Cf_){return _Cf_}, + _y_, is_char, of_char, to_char, @@ -12137,12 +11652,12 @@ {if(param) {var l=param[2],a=param[1],r=caml_call1(f,a);return [0,r,map$4(f,l)]} return 0} - function _x_(i,f,param) + function _z_(i,f,param) {if(param) {var l=param[2],a=param[1],r=caml_call2(f,i,a); - return [0,r,_x_(i + 1 | 0,f,l)]} + return [0,r,_z_(i + 1 | 0,f,l)]} return 0} - function mapi$0(f,l){return _x_(0,f,l)} + function mapi$0(f,l){return _z_(0,f,l)} function rev_map(f,param) {var accu=0,param$0=param; for(;;) @@ -12256,16 +11771,16 @@ {var param$0=param; for(;;) {if(param$0) - {var l=param$0[2],a=param$0[1],_B$_=caml_call1(p,a); - if(_B$_){var param$0=l;continue} - return _B$_} + {var l=param$0[2],a=param$0[1],_Ce_=caml_call1(p,a); + if(_Ce_){var param$0=l;continue} + return _Ce_} return 1}} function exists$0(p,param) {var param$0=param; for(;;) {if(param$0) - {var l=param$0[2],a=param$0[1],_B__=caml_call1(p,a); - if(_B__)return _B__; + {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}} @@ -12279,9 +11794,9 @@ a2=l2$0[1], l1$1=l1$0[2], a1=l1$0[1], - _B9_=caml_call2(p,a1,a2); - if(_B9_){var l1$0=l1$1,l2$0=l2$1;continue} - return _B9_}} + _Cc_=caml_call2(p,a1,a2); + if(_Cc_){var l1$0=l1$1,l2$0=l2$1;continue} + return _Cc_}} else if(! l2$0)return 1; return invalid_arg(cst_List_for_all2)}} @@ -12295,8 +11810,8 @@ a2=l2$0[1], l1$1=l1$0[2], a1=l1$0[1], - _B8_=caml_call2(p,a1,a2); - if(_B8_)return _B8_; + _Cb_=caml_call2(p,a1,a2); + if(_Cb_)return _Cb_; var l1$0=l1$1,l2$0=l2$1; continue}} else @@ -12306,8 +11821,8 @@ {var param$0=param; for(;;) {if(param$0) - {var l=param$0[2],a=param$0[1],_B7_=0 === caml_compare(a,x)?1:0; - if(_B7_)return _B7_; + {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}} @@ -12315,8 +11830,8 @@ {var param$0=param; for(;;) {if(param$0) - {var l=param$0[2],a=param$0[1],_B6_=a === x?1:0; - if(_B6_)return _B6_; + {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}} @@ -12364,8 +11879,8 @@ l=param$0[2], match=param$0[1], a=match[1], - _B5_=0 === caml_compare(a,x)?1:0; - if(_B5_)return _B5_; + _B__=0 === caml_compare(a,x)?1:0; + if(_B__)return _B__; var param$0=l; continue} return 0}} @@ -12373,8 +11888,8 @@ {var param$0=param; for(;;) {if(param$0) - {var l=param$0[2],match=param$0[1],a=match[1],_B4_=a === x?1:0; - if(_B4_)return _B4_; + {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}} @@ -12492,8 +12007,8 @@ {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 _B3_=rev(no); - return [0,rev(yes),_B3_]}} + var _B8_=rev(no); + return [0,rev(yes),_B8_]}} function partition_map$0(p,param) {var left=0,right=0,param$0=param; for(;;) @@ -12503,8 +12018,8 @@ {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 _B2_=rev(right); - return [0,rev(left),_B2_]}} + var _B7_=rev(right); + return [0,rev(left),_B7_]}} function split(param) {if(param) {var @@ -12516,7 +12031,7 @@ ry=match$0[2], rx=match$0[1]; return [0,[0,x,rx],[0,y,ry]]} - return _y_} + return _A_} function combine(l1,l2) {if(l1) {if(l2) @@ -12535,86 +12050,27 @@ return l1} return l2} function fast_sort(cmp,l) - {function sort(n,l) + {function rev_sort(n,l) {if(2 === n) {if(l) - {var _BY_=l[2]; - if(_BY_) + {var _B3_=l[2]; + if(_B3_) {var - tl=_BY_[2], - x2=_BY_[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 _B0_=l[2]; - if(_B0_) - {var _B1_=_B0_[2]; - if(_B1_) - {var - tl$1=_B1_[2], - x3=_B1_[1], - x2$0=_B0_[1], - x1$0=l[1], - s$0= - 0 < caml_call2(cmp,x1$0,x2$0) - ?0 < caml_call2(cmp,x1$0,x3) - ?0 < caml_call2(cmp,x2$0,x3) - ?[0,x3,[0,x2$0,[0,x1$0,0]]] - :[0,x2$0,[0,x3,[0,x1$0,0]]] - :[0,x2$0,[0,x1$0,[0,x3,0]]] - :0 < caml_call2(cmp,x2$0,x3) - ?0 < caml_call2(cmp,x1$0,x3) - ?[0,x3,[0,x1$0,[0,x2$0,0]]] - :[0,x1$0,[0,x3,[0,x2$0,0]]] - :[0,x1$0,[0,x2$0,[0,x3,0]]]; - return [0,s$0,tl$1]}}} - var - n1=n >> 1, - n2=n - n1 | 0, - match=rev_sort(n1,l), - l2$0=match[2], - s1=match[1], - match$0=rev_sort(n2,l2$0), - tl$0=match$0[2], - s2=match$0[1], - l1=s1, - l2=s2, - accu=0; - for(;;) - {if(l1) - {if(l2) - {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1]; - if(0 < caml_call2(cmp,h1,h2)) - {var accu$0=[0,h1,accu],l1=t1,accu=accu$0;continue} - var accu$1=[0,h2,accu],l2=t2,accu=accu$1; - continue} - var _BZ_=rev_append(l1,accu)} - else - var _BZ_=rev_append(l2,accu); - return [0,_BZ_,tl$0]}} - function rev_sort(n,l) - {if(2 === n) - {if(l) - {var _BU_=l[2]; - if(_BU_) - {var - tl=_BU_[2], - x2=_BU_[1], + 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 _BW_=l[2]; - if(_BW_) - {var _BX_=_BW_[2]; - if(_BX_) + {var _B5_=l[2]; + if(_B5_) + {var _B6_=_B5_[2]; + if(_B6_) {var - tl$1=_BX_[2], - x3=_BX_[1], - x2$0=_BW_[1], + 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) @@ -12649,82 +12105,44 @@ {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 _BV_=rev_append(l1,accu)} + var _B4_=rev_append(l1,accu)} else - var _BV_=rev_append(l2,accu); - return [0,_BV_,tl$0]}} - var len=length$1(l); - return 2 <= len?sort(len,l)[1]:l} - function sort_uniq(cmp,l) - {function sort(n,l) + var _B4_=rev_append(l2,accu); + return [0,_B4_,tl$0]}} + function sort(n,l) {if(2 === n) {if(l) - {var _BL_=l[2]; - if(_BL_) + {var _BZ_=l[2]; + if(_BZ_) {var - tl=_BL_[2], - x2=_BL_[1], + tl=_BZ_[2], + x2=_BZ_[1], x1=l[1], - c$0=caml_call2(cmp,x1,x2), - s=0 === c$0?[0,x1,0]:0 <= c$0?[0,x2,[0,x1,0]]:[0,x1,[0,x2,0]]; + 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 _BN_=l[2]; - if(_BN_) - {var _BO_=_BN_[2]; - if(_BO_) + {var _B1_=l[2]; + if(_B1_) + {var _B2_=_B1_[2]; + if(_B2_) {var - tl$1=_BO_[2], - x3=_BO_[1], - x2$0=_BN_[1], + tl$1=_B2_[2], + x3=_B2_[1], + x2$0=_B1_[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), - _BP_= - 0 === c$2 - ?[0,x2$0,0] - :0 <= c$2?[0,x3,[0,x2$0,0]]:[0,x2$0,[0,x3,0]], - s$0=_BP_; - else - if(0 <= c$1) - {var c$3=caml_call2(cmp,x1$0,x3); - if(0 === c$3) - var _BQ_=[0,x2$0,[0,x1$0,0]]; - else - if(0 <= c$3) - var - c$4=caml_call2(cmp,x2$0,x3), - _BR_= - 0 === c$4 - ?[0,x2$0,[0,x1$0,0]] - :0 <= c$4 - ?[0,x3,[0,x2$0,[0,x1$0,0]]] - :[0,x2$0,[0,x3,[0,x1$0,0]]], - _BQ_=_BR_; - else - var _BQ_=[0,x2$0,[0,x1$0,[0,x3,0]]]; - var s$0=_BQ_} - else - {var c$5=caml_call2(cmp,x2$0,x3); - if(0 === c$5) - var _BS_=[0,x1$0,[0,x2$0,0]]; - else - if(0 <= c$5) - var - c$6=caml_call2(cmp,x1$0,x3), - _BT_= - 0 === c$6 - ?[0,x1$0,[0,x2$0,0]] - :0 <= c$6 - ?[0,x3,[0,x1$0,[0,x2$0,0]]] - :[0,x1$0,[0,x3,[0,x2$0,0]]], - _BS_=_BT_; - else - var _BS_=[0,x1$0,[0,x2$0,[0,x3,0]]]; - var s$0=_BS_} + s$0= + 0 < caml_call2(cmp,x1$0,x2$0) + ?0 < caml_call2(cmp,x1$0,x3) + ?0 < caml_call2(cmp,x2$0,x3) + ?[0,x3,[0,x2$0,[0,x1$0,0]]] + :[0,x2$0,[0,x3,[0,x1$0,0]]] + :[0,x2$0,[0,x1$0,[0,x3,0]]] + :0 < caml_call2(cmp,x2$0,x3) + ?0 < caml_call2(cmp,x1$0,x3) + ?[0,x3,[0,x1$0,[0,x2$0,0]]] + :[0,x1$0,[0,x3,[0,x2$0,0]]] + :[0,x1$0,[0,x2$0,[0,x3,0]]]; return [0,s$0,tl$1]}}} var n1=n >> 1, @@ -12741,85 +12159,87 @@ for(;;) {if(l1) {if(l2) - {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1],c=caml_call2(cmp,h1,h2); - if(0 === c) - {var accu$0=[0,h1,accu],l1=t1,l2=t2,accu=accu$0;continue} - if(0 < c){var accu$1=[0,h1,accu],l1=t1,accu=accu$1;continue} - var accu$2=[0,h2,accu],l2=t2,accu=accu$2; + {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1]; + if(0 < caml_call2(cmp,h1,h2)) + {var accu$0=[0,h1,accu],l1=t1,accu=accu$0;continue} + var accu$1=[0,h2,accu],l2=t2,accu=accu$1; continue} - var _BM_=rev_append(l1,accu)} + var _B0_=rev_append(l1,accu)} else - var _BM_=rev_append(l2,accu); - return [0,_BM_,tl$0]}} - function rev_sort(n,l) + var _B0_=rev_append(l2,accu); + return [0,_B0_,tl$0]}} + var len=length$1(l); + return 2 <= len?sort(len,l)[1]:l} + function sort_uniq(cmp,l) + {function rev_sort(n,l) {if(2 === n) {if(l) - {var _BC_=l[2]; - if(_BC_) + {var _BQ_=l[2]; + if(_BQ_) {var - tl=_BC_[2], - x2=_BC_[1], + tl=_BQ_[2], + x2=_BQ_[1], x1=l[1], c$0=caml_call2(cmp,x1,x2), s=0 === c$0?[0,x1,0]:0 < c$0?[0,x1,[0,x2,0]]:[0,x2,[0,x1,0]]; return [0,s,tl]}}} else if(3 === n && l) - {var _BE_=l[2]; - if(_BE_) - {var _BF_=_BE_[2]; - if(_BF_) + {var _BS_=l[2]; + if(_BS_) + {var _BT_=_BS_[2]; + if(_BT_) {var - tl$1=_BF_[2], - x3=_BF_[1], - x2$0=_BE_[1], + tl$1=_BT_[2], + x3=_BT_[1], + x2$0=_BS_[1], x1$0=l[1], c$1=caml_call2(cmp,x1$0,x2$0); if(0 === c$1) var c$2=caml_call2(cmp,x2$0,x3), - _BG_= + _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=_BG_; + s$0=_BU_; else if(0 < c$1) {var c$3=caml_call2(cmp,x2$0,x3); if(0 === c$3) - var _BH_=[0,x1$0,[0,x2$0,0]]; + var _BV_=[0,x1$0,[0,x2$0,0]]; else if(0 < c$3) - var _BH_=[0,x1$0,[0,x2$0,[0,x3,0]]]; + var _BV_=[0,x1$0,[0,x2$0,[0,x3,0]]]; else var c$4=caml_call2(cmp,x1$0,x3), - _BI_= + _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]]], - _BH_=_BI_; - var s$0=_BH_} + _BV_=_BW_; + var s$0=_BV_} else {var c$5=caml_call2(cmp,x1$0,x3); if(0 === c$5) - var _BJ_=[0,x2$0,[0,x1$0,0]]; + var _BX_=[0,x2$0,[0,x1$0,0]]; else if(0 < c$5) - var _BJ_=[0,x2$0,[0,x1$0,[0,x3,0]]]; + var _BX_=[0,x2$0,[0,x1$0,[0,x3,0]]]; else var c$6=caml_call2(cmp,x2$0,x3), - _BK_= + _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]]], - _BJ_=_BK_; - var s$0=_BJ_} + _BX_=_BY_; + var s$0=_BX_} return [0,s$0,tl$1]}}} var n1=n >> 1, @@ -12842,10 +12262,105 @@ 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 _BD_=rev_append(l1,accu)} + var _BR_=rev_append(l1,accu)} else - var _BD_=rev_append(l2,accu); - return [0,_BD_,tl$0]}} + var _BR_=rev_append(l2,accu); + return [0,_BR_,tl$0]}} + function sort(n,l) + {if(2 === n) + {if(l) + {var _BH_=l[2]; + if(_BH_) + {var + tl=_BH_[2], + x2=_BH_[1], + x1=l[1], + c$0=caml_call2(cmp,x1,x2), + s=0 === c$0?[0,x1,0]:0 <= c$0?[0,x2,[0,x1,0]]:[0,x1,[0,x2,0]]; + return [0,s,tl]}}} + else + if(3 === n && l) + {var _BJ_=l[2]; + if(_BJ_) + {var _BK_=_BJ_[2]; + if(_BK_) + {var + tl$1=_BK_[2], + x3=_BK_[1], + x2$0=_BJ_[1], + x1$0=l[1], + c$1=caml_call2(cmp,x1$0,x2$0); + if(0 === c$1) + var + c$2=caml_call2(cmp,x2$0,x3), + _BL_= + 0 === c$2 + ?[0,x2$0,0] + :0 <= c$2?[0,x3,[0,x2$0,0]]:[0,x2$0,[0,x3,0]], + s$0=_BL_; + else + if(0 <= c$1) + {var c$3=caml_call2(cmp,x1$0,x3); + if(0 === c$3) + var _BM_=[0,x2$0,[0,x1$0,0]]; + else + if(0 <= c$3) + var + c$4=caml_call2(cmp,x2$0,x3), + _BN_= + 0 === c$4 + ?[0,x2$0,[0,x1$0,0]] + :0 <= c$4 + ?[0,x3,[0,x2$0,[0,x1$0,0]]] + :[0,x2$0,[0,x3,[0,x1$0,0]]], + _BM_=_BN_; + else + var _BM_=[0,x2$0,[0,x1$0,[0,x3,0]]]; + var s$0=_BM_} + else + {var c$5=caml_call2(cmp,x2$0,x3); + if(0 === c$5) + var _BO_=[0,x1$0,[0,x2$0,0]]; + else + if(0 <= c$5) + var + c$6=caml_call2(cmp,x1$0,x3), + _BP_= + 0 === c$6 + ?[0,x1$0,[0,x2$0,0]] + :0 <= c$6 + ?[0,x3,[0,x1$0,[0,x2$0,0]]] + :[0,x1$0,[0,x3,[0,x2$0,0]]], + _BO_=_BP_; + else + var _BO_=[0,x1$0,[0,x2$0,[0,x3,0]]]; + var s$0=_BO_} + return [0,s$0,tl$1]}}} + var + n1=n >> 1, + n2=n - n1 | 0, + match=rev_sort(n1,l), + l2$0=match[2], + s1=match[1], + match$0=rev_sort(n2,l2$0), + tl$0=match$0[2], + s2=match$0[1], + l1=s1, + l2=s2, + accu=0; + for(;;) + {if(l1) + {if(l2) + {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1],c=caml_call2(cmp,h1,h2); + if(0 === c) + {var accu$0=[0,h1,accu],l1=t1,l2=t2,accu=accu$0;continue} + if(0 < c){var accu$1=[0,h1,accu],l1=t1,accu=accu$1;continue} + var accu$2=[0,h2,accu],l2=t2,accu=accu$2; + continue} + var _BI_=rev_append(l1,accu)} + else + var _BI_=rev_append(l2,accu); + return [0,_BI_,tl$0]}} var len=length$1(l); return 2 <= len?sort(len,l)[1]:l} function compare_lengths(l1,l2) @@ -12873,9 +12388,9 @@ a2=l2$0[1], l1$1=l1$0[2], a1=l1$0[1], - _BB_=caml_call2(eq,a1,a2); - if(_BB_){var l1$0=l1$1,l2$0=l2$1;continue} - return _BB_}} + _BG_=caml_call2(eq,a1,a2); + if(_BG_){var l1$0=l1$1,l2$0=l2$1;continue} + return _BG_}} else if(! l2$0)return 1; return 0}} @@ -12883,10 +12398,10 @@ {var l1$0=l1,l2$0=l2; for(;;) {if(l1$0) - {var _Bz_=l1$0[2],_BA_=l1$0[1]; + {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,_BA_,a2); - if(0 === c){var l1$0=_Bz_,l2$0=l2$1;continue} + {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}} @@ -12894,14 +12409,14 @@ {function aux(l,param) {if(l) {var tail=l[2],x=l[1]; - return [0,x,function(_By_){return aux(tail,_By_)}]} + return [0,x,function(_BD_){return aux(tail,_BD_)}]} return 0} - return function(_Bx_){return aux(l,_Bx_)}} + return function(_BC_){return aux(l,_BC_)}} function of_seq(seq) {function direct(depth,seq) {if(0 === depth) - {var _Bw_=0; - return rev(fold_left(function(acc,x){return [0,x,acc]},_Bw_,seq))} + {var _BB_=0; + return rev(fold_left(function(acc,x){return [0,x,acc]},_BB_,seq))} var match=caml_call1(seq,0); if(match) {var next=match[2],x=match[1]; @@ -12978,7 +12493,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(_Bv_,_Bu_){return _Bv_ === _Bu_?1:0} + function equal$7(_BA_,_Bz_){return _BA_ === _Bz_?1:0} var compare$7=caml_int_compare; function min$1(x,y){return x <= y?x:y} function max$1(x,y){return y <= x?x:y} @@ -13002,13 +12517,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),_Bs_=n - 1 | 0,_Br_=0; - if(! (_Bs_ < 0)) - {var i=_Br_; + {var s=caml_create_bytes(n),_Bx_=n - 1 | 0,_Bw_=0; + if(! (_Bx_ < 0)) + {var i=_Bw_; for(;;) {caml_bytes_unsafe_set(s,i,caml_call1(f,i)); - var _Bt_=i + 1 | 0; - if(_Bs_ !== i){var i=_Bt_;continue} + var _By_=i + 1 | 0; + if(_Bx_ !== i){var i=_By_;continue} break}} return s} var empty$0=caml_create_bytes(0); @@ -13026,11 +12541,11 @@ 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,_Bq_=b < 0?1:0,match=c < 0?1:0,switch$0=0; + {var c=a + b | 0,_Bv_=b < 0?1:0,match=c < 0?1:0,switch$0=0; if(a < 0) - {if(_Bq_ && ! match)switch$0 = 1} + {if(_Bv_ && ! match)switch$0 = 1} else - if(! _Bq_ && match)switch$0 = 1; + if(! _Bv_ && match)switch$0 = 1; return switch$0?invalid_arg(cst_Bytes_extend):c} function extend(s,left,right) {var @@ -13091,23 +12606,23 @@ return caml_blit_string(s1,ofs1,s2,ofs2,len); return invalid_arg(cst_String_blit_Bytes_blit_str)} function iter$3(f,a) - {var _Bo_=caml_ml_bytes_length(a) - 1 | 0,_Bn_=0; - if(! (_Bo_ < 0)) - {var i=_Bn_; + {var _Bt_=caml_ml_bytes_length(a) - 1 | 0,_Bs_=0; + if(! (_Bt_ < 0)) + {var i=_Bs_; for(;;) {caml_call1(f,caml_bytes_unsafe_get(a,i)); - var _Bp_=i + 1 | 0; - if(_Bo_ !== i){var i=_Bp_;continue} + var _Bu_=i + 1 | 0; + if(_Bt_ !== i){var i=_Bu_;continue} break}} return 0} function iteri$1(f,a) - {var _Bl_=caml_ml_bytes_length(a) - 1 | 0,_Bk_=0; - if(! (_Bl_ < 0)) - {var i=_Bk_; + {var _Bq_=caml_ml_bytes_length(a) - 1 | 0,_Bp_=0; + if(! (_Bq_ < 0)) + {var i=_Bp_; for(;;) {caml_call2(f,i,caml_bytes_unsafe_get(a,i)); - var _Bm_=i + 1 | 0; - if(_Bl_ !== i){var i=_Bm_;continue} + var _Br_=i + 1 | 0; + if(_Bq_ !== i){var i=_Br_;continue} break}} return 0} function concat$0(sep,l) @@ -13115,33 +12630,33 @@ {var seplen=caml_ml_bytes_length(sep),acc=0,param=l,pos$1=0; for(;;) {if(param) - {var _Bh_=param[1]; + {var _Bm_=param[1]; if(param[2]) {var tl=param[2], - x=(caml_ml_bytes_length(_Bh_) + seplen | 0) + acc | 0, + 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 _Bj_=caml_ml_bytes_length(_Bh_) + acc | 0} + var _Bo_=caml_ml_bytes_length(_Bm_) + acc | 0} else - var _Bj_=acc; - var dst=caml_create_bytes(_Bj_),pos=pos$1,param$0=l; + var _Bo_=acc; + var dst=caml_create_bytes(_Bo_),pos=pos$1,param$0=l; for(;;) {if(param$0) - {var _Bi_=param$0[1]; + {var _Bn_=param$0[1]; if(param$0[2]) {var tl$0=param$0[2]; - caml_blit_bytes(_Bi_,0,dst,pos,caml_ml_bytes_length(_Bi_)); + caml_blit_bytes(_Bn_,0,dst,pos,caml_ml_bytes_length(_Bn_)); caml_blit_bytes - (sep,0,dst,pos + caml_ml_bytes_length(_Bi_) | 0,seplen); + (sep,0,dst,pos + caml_ml_bytes_length(_Bn_) | 0,seplen); var - pos$0=(pos + caml_ml_bytes_length(_Bi_) | 0) + seplen | 0, + pos$0=(pos + caml_ml_bytes_length(_Bn_) | 0) + seplen | 0, pos=pos$0, param$0=tl$0; continue} - caml_blit_bytes(_Bi_,0,dst,pos,caml_ml_bytes_length(_Bi_)); + caml_blit_bytes(_Bn_,0,dst,pos,caml_ml_bytes_length(_Bn_)); return dst} return dst}}} return empty$0} @@ -13154,11 +12669,11 @@ caml_blit_bytes(s2,0,r,l1,l2); return r} function is_space(param) - {var _Bg_=param - 9 | 0,switch$0=0; - if(4 < _Bg_ >>> 0) - {if(23 === _Bg_)switch$0 = 1} + {var _Bl_=param - 9 | 0,switch$0=0; + if(4 < _Bl_ >>> 0) + {if(23 === _Bl_)switch$0 = 1} else - if(2 !== _Bg_)switch$0 = 1; + if(2 !== _Bl_)switch$0 = 1; return switch$0?1:0} function trim(s) {var len=caml_ml_bytes_length(s),i=[0,0]; @@ -13171,34 +12686,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],_A$_=caml_ml_bytes_length(s) - 1 | 0,_A__=0; - if(! (_A$_ < 0)) - {var i$0=_A__; + {var n=[0,0],_Be_=caml_ml_bytes_length(s) - 1 | 0,_Bd_=0; + if(! (_Be_ < 0)) + {var i$0=_Bd_; for(;;) {var match=caml_bytes_unsafe_get(s,i$0),switch$0=0; if(32 <= match) - {var _Bd_=match - 34 | 0,switch$1=0; - if(58 < _Bd_ >>> 0) - {if(93 <= _Bd_)switch$1 = 1} + {var _Bi_=match - 34 | 0,switch$1=0; + if(58 < _Bi_ >>> 0) + {if(93 <= _Bi_)switch$1 = 1} else - if(56 < _Bd_ - 1 >>> 0){switch$0 = 1;switch$1 = 1} - if(! switch$1){var _Be_=1;switch$0 = 2}} + if(56 < _Bi_ - 1 >>> 0){switch$0 = 1;switch$1 = 1} + if(! switch$1){var _Bj_=1;switch$0 = 2}} else if(11 <= match) {if(13 === match)switch$0 = 1} else if(8 <= match)switch$0 = 1; - switch(switch$0){case 0:var _Be_=4;break;case 1:var _Be_=2;break} - n[1] = n[1] + _Be_ | 0; - var _Bf_=i$0 + 1 | 0; - if(_A$_ !== i$0){var i$0=_Bf_;continue} + switch(switch$0){case 0:var _Bj_=4;break;case 1:var _Bj_=2;break} + n[1] = n[1] + _Bj_ | 0; + var _Bk_=i$0 + 1 | 0; + if(_Be_ !== i$0){var i$0=_Bk_;continue} break}} if(n[1] === caml_ml_bytes_length(s))return copy(s); var s$0=caml_create_bytes(n[1]); n[1] = 0; - var _Bb_=caml_ml_bytes_length(s) - 1 | 0,_Ba_=0; - if(! (_Bb_ < 0)) - {var i=_Ba_; + var _Bg_=caml_ml_bytes_length(s) - 1 | 0,_Bf_=0; + if(! (_Bg_ < 0)) + {var i=_Bf_; for(;;) {var c=caml_bytes_unsafe_get(s,i),switch$2=0; if(35 <= c) @@ -13253,53 +12768,53 @@ case 3:caml_bytes_unsafe_set(s$0,n[1],c);break } n[1]++; - var _Bc_=i + 1 | 0; - if(_Bb_ !== i){var i=_Bc_;continue} + var _Bh_=i + 1 | 0; + if(_Bg_ !== i){var i=_Bh_;continue} break}} return s$0} function map$5(f,s) {var l=caml_ml_bytes_length(s); if(0 === l)return s; - var r=caml_create_bytes(l),_A8_=l - 1 | 0,_A7_=0; - if(! (_A8_ < 0)) - {var i=_A7_; + var r=caml_create_bytes(l),_Bb_=l - 1 | 0,_Ba_=0; + if(! (_Bb_ < 0)) + {var i=_Ba_; for(;;) {caml_bytes_unsafe_set(r,i,caml_call1(f,caml_bytes_unsafe_get(s,i))); - var _A9_=i + 1 | 0; - if(_A8_ !== i){var i=_A9_;continue} + var _Bc_=i + 1 | 0; + if(_Bb_ !== i){var i=_Bc_;continue} break}} return r} function mapi$1(f,s) {var l=caml_ml_bytes_length(s); if(0 === l)return s; - var r=caml_create_bytes(l),_A5_=l - 1 | 0,_A4_=0; - if(! (_A5_ < 0)) - {var i=_A4_; + var r=caml_create_bytes(l),_A__=l - 1 | 0,_A9_=0; + if(! (_A__ < 0)) + {var i=_A9_; for(;;) {caml_bytes_unsafe_set (r,i,caml_call2(f,i,caml_bytes_unsafe_get(s,i))); - var _A6_=i + 1 | 0; - if(_A5_ !== i){var i=_A6_;continue} + var _A$_=i + 1 | 0; + if(_A__ !== i){var i=_A$_;continue} break}} return r} function fold_left$1(f,x,a) - {var r=[0,x],_A2_=caml_ml_bytes_length(a) - 1 | 0,_A1_=0; - if(! (_A2_ < 0)) - {var i=_A1_; + {var r=[0,x],_A7_=caml_ml_bytes_length(a) - 1 | 0,_A6_=0; + if(! (_A7_ < 0)) + {var i=_A6_; for(;;) {r[1] = caml_call2(f,r[1],caml_bytes_unsafe_get(a,i)); - var _A3_=i + 1 | 0; - if(_A2_ !== i){var i=_A3_;continue} + var _A8_=i + 1 | 0; + if(_A7_ !== i){var i=_A8_;continue} break}} return r[1]} function fold_right$0(f,a,x) - {var r=[0,x],_AZ_=caml_ml_bytes_length(a) - 1 | 0; - if(! (_AZ_ < 0)) - {var i=_AZ_; + {var r=[0,x],_A4_=caml_ml_bytes_length(a) - 1 | 0; + if(! (_A4_ < 0)) + {var i=_A4_; for(;;) {r[1] = caml_call2(f,caml_bytes_unsafe_get(a,i),r[1]); - var _A0_=i - 1 | 0; - if(0 !== i){var i=_A0_;continue} + var _A5_=i - 1 | 0; + if(0 !== i){var i=_A5_;continue} break}} return r[1]} function exists$1(p,s) @@ -13329,8 +12844,8 @@ {var len_s=caml_ml_bytes_length(s), len_pre=caml_ml_bytes_length(prefix), - _AY_=len_pre <= len_s?1:0; - if(_AY_) + _A3_=len_pre <= len_s?1:0; + if(_A3_) {var i=0; for(;;) {if(i === len_pre)return 1; @@ -13338,14 +12853,14 @@ return 0; var i$0=i + 1 | 0,i=i$0; continue}} - return _AY_} + return _A3_} function ends_with(suffix,s) {var len_s=caml_ml_bytes_length(s), len_suf=caml_ml_bytes_length(suffix), diff=len_s - len_suf | 0, - _AX_=0 <= diff?1:0; - if(_AX_) + _A2_=0 <= diff?1:0; + if(_A2_) {var i=0; for(;;) {if(i === len_suf)return 1; @@ -13356,7 +12871,7 @@ return 0; var i$0=i + 1 | 0,i=i$0; continue}} - return _AX_} + return _A2_} function index_rec(s,lim,i,c) {var i$0=i; for(;;) @@ -13413,40 +12928,40 @@ {var l=caml_ml_bytes_length(s); if(0 <= i && ! (l < i)) try - {index_rec(s,l,i,c);var _AV_=1;return _AV_} - catch(_AW_) - {_AW_ = caml_wrap_exception(_AW_); - if(_AW_ === Not_found)return 0; - throw _AW_} + {index_rec(s,l,i,c);var _A0_=1;return _A0_} + catch(_A1_) + {_A1_ = caml_wrap_exception(_A1_); + if(_A1_ === Not_found)return 0; + throw _A1_} return invalid_arg(cst_String_contains_from_Bytes)} function contains(s,c){return contains_from(s,0,c)} function rcontains_from(s,i,c) {if(0 <= i && ! (caml_ml_bytes_length(s) <= i)) try - {rindex_rec(s,i,c);var _AT_=1;return _AT_} - catch(_AU_) - {_AU_ = caml_wrap_exception(_AU_); - if(_AU_ === Not_found)return 0; - throw _AU_} + {rindex_rec(s,i,c);var _AY_=1;return _AY_} + catch(_AZ_) + {_AZ_ = caml_wrap_exception(_AZ_); + if(_AZ_ === Not_found)return 0; + throw _AZ_} return invalid_arg(cst_String_rcontains_from_Byte)} function compare$8(x,y){return runtime.caml_bytes_compare(x,y)} function split_on_char(sep,s) {var r=[0,0], j=[0,caml_ml_bytes_length(s)], - _AP_=caml_ml_bytes_length(s) - 1 | 0; - if(! (_AP_ < 0)) - {var i=_AP_; + _AU_=caml_ml_bytes_length(s) - 1 | 0; + if(! (_AU_ < 0)) + {var i=_AU_; for(;;) {if(caml_bytes_unsafe_get(s,i) === sep) - {var _AR_=r[1]; - r[1] = [0,sub(s,i + 1 | 0,(j[1] - i | 0) - 1 | 0),_AR_]; + {var _AW_=r[1]; + r[1] = [0,sub(s,i + 1 | 0,(j[1] - i | 0) - 1 | 0),_AW_]; j[1] = i} - var _AS_=i - 1 | 0; - if(0 !== i){var i=_AS_;continue} + var _AX_=i - 1 | 0; + if(0 !== i){var i=_AX_;continue} break}} - var _AQ_=r[1]; - return [0,sub(s,0,j[1]),_AQ_]} + var _AV_=r[1]; + return [0,sub(s,0,j[1]),_AV_]} function uppercase$0(s){return map$5(uppercase,s)} function lowercase$0(s){return map$5(lowercase,s)} function capitalize(s){return apply1(uppercase,s)} @@ -13454,17 +12969,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),_AN_=i + 1 | 0; - return [0,x,function(_AO_){return aux(_AN_,_AO_)}]} - var _AL_=0; - return function(_AM_){return aux(_AL_,_AM_)}} + var x=caml_bytes_get(s,i),_AS_=i + 1 | 0; + return [0,x,function(_AT_){return aux(_AS_,_AT_)}]} + var _AQ_=0; + return function(_AR_){return aux(_AQ_,_AR_)}} function to_seqi(s) {function aux(i,param) {if(i === caml_ml_bytes_length(s))return 0; - var x=caml_bytes_get(s,i),_AJ_=i + 1 | 0; - return [0,[0,i,x],function(_AK_){return aux(_AJ_,_AK_)}]} - var _AH_=0; - return function(_AI_){return aux(_AH_,_AI_)}} + var x=caml_bytes_get(s,i),_AO_=i + 1 | 0; + return [0,[0,i,x],function(_AP_){return aux(_AO_,_AP_)}]} + var _AM_=0; + return function(_AN_){return aux(_AM_,_AN_)}} function of_seq$0(i) {var n=[0,0],buf=[0,make$0(256,0)]; iter @@ -13509,7 +13024,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 _AF_=b < 144?1:0,_AG_=_AF_ || (191 < b?1:0);return _AG_} + {var _AK_=b < 144?1:0,_AL_=_AK_ || (191 < b?1:0);return _AL_} function not_in_x80_to_x8F(b){return 8 !== (b >>> 4 | 0)?1:0} function utf_8_uchar_3(b0,b1,b2) {return (b0 & 15) << 12 | (b1 & 63) << 6 | b2 & 63} @@ -13615,14 +13130,14 @@ :dec_ret(2,(b0 & 31) << 6 | b1$5 & 63)}} return dec_invalid(1)} function set_utf_8_uchar(b,i,u) - {function set(_AE_,_AD_,_AC_) - {caml_bytes_unsafe_set(_AE_,_AD_,_AC_);return 0} + {function set(_AJ_,_AI_,_AH_) + {caml_bytes_unsafe_set(_AJ_,_AI_,_AH_);return 0} var max=caml_ml_bytes_length(b) - 1 | 0; if(0 <= u) {if(127 < u) {if(2047 < u) {if(65535 < u) - {if(1114111 < u)throw [0,Assert_failure,_z_]; + {if(1114111 < u)throw [0,Assert_failure,_B_]; var last=i + 3 | 0; return max < last ?0 @@ -13646,7 +13161,7 @@ 2)} caml_bytes_set(b,i,u); return 1} - throw [0,Assert_failure,_A_]} + throw [0,Assert_failure,_C_]} function is_valid_utf_8(b) {var max=caml_ml_bytes_length(b) - 1 | 0,i=0; for(;;) @@ -13782,7 +13297,7 @@ if(0 <= i && ! (max < i)) {if(0 <= u) {if(65535 < u) - {if(1114111 < u)throw [0,Assert_failure,_B_]; + {if(1114111 < u)throw [0,Assert_failure,_D_]; var last=i + 3 | 0; if(max < last)return 0; var @@ -13794,7 +13309,7 @@ return 4} var last$0=i + 1 | 0; return max < last$0?0:(set$0(b,i,u),2)} - throw [0,Assert_failure,_C_]} + throw [0,Assert_failure,_E_]} return invalid_arg(cst_index_out_of_bounds$0)} function is_valid_utf_16be(b) {var max=caml_ml_bytes_length(b) - 1 | 0,i=0; @@ -13833,7 +13348,7 @@ if(0 <= i && ! (max < i)) {if(0 <= u) {if(65535 < u) - {if(1114111 < u)throw [0,Assert_failure,_D_]; + {if(1114111 < u)throw [0,Assert_failure,_F_]; var last=i + 3 | 0; if(max < last)return 0; var @@ -13845,7 +13360,7 @@ return 4} var last$0=i + 1 | 0; return max < last$0?0:(caml_bytes_set16(b,i,u),2)} - throw [0,Assert_failure,_E_]} + throw [0,Assert_failure,_G_]} return invalid_arg(cst_index_out_of_bounds$2)} function is_valid_utf_16le(b) {var max=caml_ml_bytes_length(b) - 1 | 0,i=0; @@ -13979,53 +13494,53 @@ {var seplen=caml_ml_string_length(sep),acc=0,param=l,pos$1=0; for(;;) {if(param) - {var _Az_=param[1]; + {var _AE_=param[1]; if(param[2]) {var tl=param[2], - x=(caml_ml_string_length(_Az_) + seplen | 0) + acc | 0, + x=(caml_ml_string_length(_AE_) + seplen | 0) + acc | 0, acc$0=acc <= x?x:invalid_arg(cst_String_concat), acc=acc$0, param=tl; continue} - var _AB_=caml_ml_string_length(_Az_) + acc | 0} + var _AG_=caml_ml_string_length(_AE_) + acc | 0} else - var _AB_=acc; - var dst=caml_create_bytes(_AB_),pos=pos$1,param$0=l; + var _AG_=acc; + var dst=caml_create_bytes(_AG_),pos=pos$1,param$0=l; for(;;) {if(param$0) - {var _AA_=param$0[1]; + {var _AF_=param$0[1]; if(param$0[2]) {var tl$0=param$0[2]; - caml_blit_string(_AA_,0,dst,pos,caml_ml_string_length(_AA_)); + caml_blit_string(_AF_,0,dst,pos,caml_ml_string_length(_AF_)); caml_blit_string - (sep,0,dst,pos + caml_ml_string_length(_AA_) | 0,seplen); + (sep,0,dst,pos + caml_ml_string_length(_AF_) | 0,seplen); var - pos$0=(pos + caml_ml_string_length(_AA_) | 0) + seplen | 0, + pos$0=(pos + caml_ml_string_length(_AF_) | 0) + seplen | 0, pos=pos$0, param$0=tl$0; continue} - caml_blit_string(_AA_,0,dst,pos,caml_ml_string_length(_AA_))} + caml_blit_string(_AF_,0,dst,pos,caml_ml_string_length(_AF_))} return caml_string_of_bytes(dst)}}} return cst$3} function iter$4(f,s) - {var _Ax_=caml_ml_string_length(s) - 1 | 0,_Aw_=0; - if(! (_Ax_ < 0)) - {var i=_Aw_; + {var _AC_=caml_ml_string_length(s) - 1 | 0,_AB_=0; + if(! (_AC_ < 0)) + {var i=_AB_; for(;;) {caml_call1(f,caml_string_unsafe_get(s,i)); - var _Ay_=i + 1 | 0; - if(_Ax_ !== i){var i=_Ay_;continue} + var _AD_=i + 1 | 0; + if(_AC_ !== i){var i=_AD_;continue} break}} return 0} function iteri$2(f,s) - {var _Au_=caml_ml_string_length(s) - 1 | 0,_At_=0; - if(! (_Au_ < 0)) - {var i=_At_; + {var _Az_=caml_ml_string_length(s) - 1 | 0,_Ay_=0; + if(! (_Az_ < 0)) + {var i=_Ay_; for(;;) {caml_call2(f,i,caml_string_unsafe_get(s,i)); - var _Av_=i + 1 | 0; - if(_Au_ !== i){var i=_Av_;continue} + var _AA_=i + 1 | 0; + if(_Az_ !== i){var i=_AA_;continue} break}} return 0} function map$6(f,s) @@ -14039,11 +13554,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 _As_=param - 9 | 0,switch$0=0; - if(4 < _As_ >>> 0) - {if(23 === _As_)switch$0 = 1} + {var _Ax_=param - 9 | 0,switch$0=0; + if(4 < _Ax_ >>> 0) + {if(23 === _Ax_)switch$0 = 1} else - if(2 !== _As_)switch$0 = 1; + if(2 !== _Ax_)switch$0 = 1; return switch$0?1:0} function trim$0(s) {if(caml_string_equal(s,cst$4))return s; @@ -14059,11 +13574,11 @@ {var n=caml_ml_string_length(s),i=0; for(;;) {if(n <= i)return s; - var match=caml_string_unsafe_get(s,i),_Ar_=match - 32 | 0,switch$0=0; - if(59 < _Ar_ >>> 0) - {if(33 < _Ar_ - 61 >>> 0)switch$0 = 1} + var match=caml_string_unsafe_get(s,i),_Aw_=match - 32 | 0,switch$0=0; + if(59 < _Aw_ >>> 0) + {if(33 < _Aw_ - 61 >>> 0)switch$0 = 1} else - if(2 === _Ar_)switch$0 = 1; + if(2 === _Aw_)switch$0 = 1; if(switch$0) return caml_string_of_bytes(escaped$0(caml_bytes_of_string(s))); var i$0=i + 1 | 0,i=i$0; @@ -14125,21 +13640,21 @@ {var l=caml_ml_string_length(s); if(0 <= i && ! (l < i)) try - {index_rec$0(s,l,i,c);var _Ap_=1;return _Ap_} - catch(_Aq_) - {_Aq_ = caml_wrap_exception(_Aq_); - if(_Aq_ === Not_found)return 0; - throw _Aq_} + {index_rec$0(s,l,i,c);var _Au_=1;return _Au_} + catch(_Av_) + {_Av_ = caml_wrap_exception(_Av_); + if(_Av_ === Not_found)return 0; + throw _Av_} return invalid_arg(cst_String_contains_from_Bytes$0)} function contains$0(s,c){return contains_from$0(s,0,c)} function rcontains_from$0(s,i,c) {if(0 <= i && ! (caml_ml_string_length(s) <= i)) try - {rindex_rec$0(s,i,c);var _An_=1;return _An_} - catch(_Ao_) - {_Ao_ = caml_wrap_exception(_Ao_); - if(_Ao_ === Not_found)return 0; - throw _Ao_} + {rindex_rec$0(s,i,c);var _As_=1;return _As_} + catch(_At_) + {_At_ = caml_wrap_exception(_At_); + if(_At_ === Not_found)return 0; + throw _At_} return invalid_arg(cst_String_rcontains_from_Byte$0)} function uppercase_ascii$1(s) {return caml_string_of_bytes(uppercase_ascii$0(caml_bytes_of_string(s)))} @@ -14153,8 +13668,8 @@ {var len_s=caml_ml_string_length(s), len_pre=caml_ml_string_length(prefix), - _Am_=len_pre <= len_s?1:0; - if(_Am_) + _Ar_=len_pre <= len_s?1:0; + if(_Ar_) {var i=0; for(;;) {if(i === len_pre)return 1; @@ -14162,14 +13677,14 @@ return 0; var i$0=i + 1 | 0,i=i$0; continue}} - return _Am_} + return _Ar_} function ends_with$0(suffix,s) {var len_s=caml_ml_string_length(s), len_suf=caml_ml_string_length(suffix), diff=len_s - len_suf | 0, - _Al_=0 <= diff?1:0; - if(_Al_) + _Aq_=0 <= diff?1:0; + if(_Aq_) {var i=0; for(;;) {if(i === len_suf)return 1; @@ -14180,24 +13695,24 @@ return 0; var i$0=i + 1 | 0,i=i$0; continue}} - return _Al_} + return _Aq_} function split_on_char$0(sep,s) {var r=[0,0], j=[0,caml_ml_string_length(s)], - _Ah_=caml_ml_string_length(s) - 1 | 0; - if(! (_Ah_ < 0)) - {var i=_Ah_; + _Am_=caml_ml_string_length(s) - 1 | 0; + if(! (_Am_ < 0)) + {var i=_Am_; for(;;) {if(caml_string_unsafe_get(s,i) === sep) - {var _Aj_=r[1]; - r[1] = [0,sub$0(s,i + 1 | 0,(j[1] - i | 0) - 1 | 0),_Aj_]; + {var _Ao_=r[1]; + r[1] = [0,sub$0(s,i + 1 | 0,(j[1] - i | 0) - 1 | 0),_Ao_]; j[1] = i} - var _Ak_=i - 1 | 0; - if(0 !== i){var i=_Ak_;continue} + var _Ap_=i - 1 | 0; + if(0 !== i){var i=_Ap_;continue} break}} - var _Ai_=r[1]; - return [0,sub$0(s,0,j[1]),_Ai_]} + var _An_=r[1]; + return [0,sub$0(s,0,j[1]),_An_]} function uppercase$1(s) {return caml_string_of_bytes(uppercase$0(caml_bytes_of_string(s)))} function lowercase$1(s) @@ -14318,8 +13833,8 @@ get_int64_be$0, get_int64_le$0]; caml_register_global(791,include$2,"Stdlib__String"); - function equal$10(param,_Ag_){return 1} - function compare$10(param,_Af_){return 0} + function equal$10(param,_Al_){return 1} + function compare$10(param,_Ak_){return 0} function to_string$2(param){return cst$5} var Stdlib_Unit=[0,equal$10,compare$10,to_string$2]; caml_register_global(792,Stdlib_Unit,"Stdlib__Unit"); @@ -14368,24 +13883,24 @@ function init$3(l,f) {if(0 === l)return [0]; if(0 <= l) - {var res=caml_make_vect(l,caml_call1(f,0)),_Ad_=l - 1 | 0,_Ac_=1; - if(! (_Ad_ < 1)) - {var i=_Ac_; + {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 _Ae_=i + 1 | 0; - if(_Ad_ !== i){var i=_Ae_;continue} + var _Aj_=i + 1 | 0; + if(_Ai_ !== i){var i=_Aj_;continue} break}} return res} return invalid_arg(cst_Array_init)} function create_matrix(sx,sy,init) - {var res=caml_make_vect(sx,[0]),_Aa_=sx - 1 | 0,_z$_=0; - if(! (_Aa_ < 0)) - {var x=_z$_; + {var res=caml_make_vect(sx,[0]),_Af_=sx - 1 | 0,_Ae_=0; + if(! (_Af_ < 0)) + {var x=_Ae_; for(;;) {res[1 + x] = caml_make_vect(sy,init); - var _Ab_=x + 1 | 0; - if(_Aa_ !== x){var x=_Ab_;continue} + var _Ag_=x + 1 | 0; + if(_Af_ !== x){var x=_Ag_;continue} break}} return res} function copy$1(a) @@ -14427,72 +13942,72 @@ return runtime.caml_array_blit(a1,ofs1,a2,ofs2,len); return invalid_arg(cst_Array_blit)} function iter$5(f,a) - {var _z9_=a.length - 1 - 1 | 0,_z8_=0; - if(! (_z9_ < 0)) - {var i=_z8_; + {var _Ac_=a.length - 1 - 1 | 0,_Ab_=0; + if(! (_Ac_ < 0)) + {var i=_Ab_; for(;;) {caml_call1(f,a[1 + i]); - var _z__=i + 1 | 0; - if(_z9_ !== i){var i=_z__;continue} + var _Ad_=i + 1 | 0; + if(_Ac_ !== i){var i=_Ad_;continue} break}} return 0} function iter2$1(f,a,b) {if(a.length - 1 !== b.length - 1) return invalid_arg(cst_Array_iter2_arrays_must_ha); - var _z6_=a.length - 1 - 1 | 0,_z5_=0; - if(! (_z6_ < 0)) - {var i=_z5_; + var _z$_=a.length - 1 - 1 | 0,_z__=0; + if(! (_z$_ < 0)) + {var i=_z__; for(;;) {caml_call2(f,a[1 + i],b[1 + i]); - var _z7_=i + 1 | 0; - if(_z6_ !== i){var i=_z7_;continue} + var _Aa_=i + 1 | 0; + if(_z$_ !== i){var i=_Aa_;continue} break}} return 0} function map$7(f,a) {var l=a.length - 1; if(0 === l)return [0]; - var r=caml_make_vect(l,caml_call1(f,a[1])),_z3_=l - 1 | 0,_z2_=1; - if(! (_z3_ < 1)) - {var i=_z2_; + var r=caml_make_vect(l,caml_call1(f,a[1])),_z8_=l - 1 | 0,_z7_=1; + if(! (_z8_ < 1)) + {var i=_z7_; for(;;) {r[1 + i] = caml_call1(f,a[1 + i]); - var _z4_=i + 1 | 0; - if(_z3_ !== i){var i=_z4_;continue} + var _z9_=i + 1 | 0; + if(_z8_ !== i){var i=_z9_;continue} break}} return r} function map2$1(f,a,b) {var la=a.length - 1,lb=b.length - 1; if(la !== lb)return invalid_arg(cst_Array_map2_arrays_must_hav); if(0 === la)return [0]; - var r=caml_make_vect(la,caml_call2(f,a[1],b[1])),_z0_=la - 1 | 0,_zZ_=1; - if(! (_z0_ < 1)) - {var i=_zZ_; + var r=caml_make_vect(la,caml_call2(f,a[1],b[1])),_z5_=la - 1 | 0,_z4_=1; + if(! (_z5_ < 1)) + {var i=_z4_; for(;;) {r[1 + i] = caml_call2(f,a[1 + i],b[1 + i]); - var _z1_=i + 1 | 0; - if(_z0_ !== i){var i=_z1_;continue} + var _z6_=i + 1 | 0; + if(_z5_ !== i){var i=_z6_;continue} break}} return r} function iteri$3(f,a) - {var _zX_=a.length - 1 - 1 | 0,_zW_=0; - if(! (_zX_ < 0)) - {var i=_zW_; + {var _z2_=a.length - 1 - 1 | 0,_z1_=0; + if(! (_z2_ < 0)) + {var i=_z1_; for(;;) {caml_call2(f,i,a[1 + i]); - var _zY_=i + 1 | 0; - if(_zX_ !== i){var i=_zY_;continue} + var _z3_=i + 1 | 0; + if(_z2_ !== i){var i=_z3_;continue} break}} return 0} function mapi$3(f,a) {var l=a.length - 1; if(0 === l)return [0]; - var r=caml_make_vect(l,caml_call2(f,0,a[1])),_zU_=l - 1 | 0,_zT_=1; - if(! (_zU_ < 1)) - {var i=_zT_; + var r=caml_make_vect(l,caml_call2(f,0,a[1])),_zZ_=l - 1 | 0,_zY_=1; + if(! (_zZ_ < 1)) + {var i=_zY_; for(;;) {r[1 + i] = caml_call2(f,i,a[1 + i]); - var _zV_=i + 1 | 0; - if(_zU_ !== i){var i=_zV_;continue} + var _z0_=i + 1 | 0; + if(_zZ_ !== i){var i=_z0_;continue} break}} return r} function to_list$1(a) @@ -14529,13 +14044,13 @@ return a}} return [0]} function fold_left$3(f,x,a) - {var r=[0,x],_zR_=a.length - 1 - 1 | 0,_zQ_=0; - if(! (_zR_ < 0)) - {var i=_zQ_; + {var r=[0,x],_zW_=a.length - 1 - 1 | 0,_zV_=0; + if(! (_zW_ < 0)) + {var i=_zV_; for(;;) {r[1] = caml_call2(f,r[1],a[1 + i]); - var _zS_=i + 1 | 0; - if(_zR_ !== i){var i=_zS_;continue} + var _zX_=i + 1 | 0; + if(_zW_ !== i){var i=_zX_;continue} break}} return r[1]} function fold_left_map$0(f,acc,input_array) @@ -14547,10 +14062,10 @@ acc$0=match[1], output_array=caml_make_vect(len,elt), acc$1=[0,acc$0], - _zO_=len - 1 | 0, - _zN_=1; - if(! (_zO_ < 1)) - {var i=_zN_; + _zT_=len - 1 | 0, + _zS_=1; + if(! (_zT_ < 1)) + {var i=_zS_; for(;;) {var match$0=caml_call2(f,acc$1[1],input_array[1 + i]), @@ -14558,18 +14073,18 @@ acc$2=match$0[1]; acc$1[1] = acc$2; output_array[1 + i] = elt$0; - var _zP_=i + 1 | 0; - if(_zO_ !== i){var i=_zP_;continue} + var _zU_=i + 1 | 0; + if(_zT_ !== i){var i=_zU_;continue} break}} return [0,acc$1[1],output_array]} function fold_right$2(f,a,x) - {var r=[0,x],_zL_=a.length - 1 - 1 | 0; - if(! (_zL_ < 0)) - {var i=_zL_; + {var r=[0,x],_zQ_=a.length - 1 - 1 | 0; + if(! (_zQ_ < 0)) + {var i=_zQ_; for(;;) {r[1] = caml_call2(f,a[1 + i],r[1]); - var _zM_=i - 1 | 0; - if(0 !== i){var i=_zM_;continue} + var _zR_=i - 1 | 0; + if(0 !== i){var i=_zR_;continue} break}} return r[1]} function exists$3(p,a) @@ -14642,29 +14157,29 @@ n=x.length - 1, a=caml_make_vect(n,a0), b=caml_make_vect(n,b0), - _zJ_=n - 1 | 0, - _zI_=1; - if(! (_zJ_ < 1)) - {var i=_zI_; + _zO_=n - 1 | 0, + _zN_=1; + if(! (_zO_ < 1)) + {var i=_zN_; for(;;) {var match$0=x[1 + i],bi=match$0[2],ai=match$0[1]; a[1 + i] = ai; b[1 + i] = bi; - var _zK_=i + 1 | 0; - if(_zJ_ !== i){var i=_zK_;continue} + var _zP_=i + 1 | 0; + if(_zO_ !== i){var i=_zP_;continue} break}} return [0,a,b]} function combine$0(a,b) {var na=a.length - 1,nb=b.length - 1; if(na !== nb)invalid_arg(cst_Array_combine); if(0 === na)return [0]; - var x=caml_make_vect(na,[0,a[1],b[1]]),_zG_=na - 1 | 0,_zF_=1; - if(! (_zG_ < 1)) - {var i=_zF_; + var x=caml_make_vect(na,[0,a[1],b[1]]),_zL_=na - 1 | 0,_zK_=1; + if(! (_zL_ < 1)) + {var i=_zK_; for(;;) {x[1 + i] = [0,a[1 + i],b[1 + i]]; - var _zH_=i + 1 | 0; - if(_zG_ !== i){var i=_zH_;continue} + var _zM_=i + 1 | 0; + if(_zL_ !== i){var i=_zM_;continue} break}} return x} var Bottom=[248,cst_Stdlib_Array_Bottom,caml_fresh_oo_id(0)]; @@ -14672,19 +14187,19 @@ {function maxson(l,i) {var i31=((i + i | 0) + i | 0) + 1 | 0,x=[0,i31]; if((i31 + 2 | 0) < l) - {var _zy_=i31 + 1 | 0,_zz_=caml_check_bound(a,_zy_)[1 + _zy_]; - if(caml_call2(cmp,caml_check_bound(a,i31)[1 + i31],_zz_) < 0) + {var _zD_=i31 + 1 | 0,_zE_=caml_check_bound(a,_zD_)[1 + _zD_]; + if(caml_call2(cmp,caml_check_bound(a,i31)[1 + i31],_zE_) < 0) x[1] = i31 + 1 | 0; var - _zA_=i31 + 2 | 0, - _zB_=caml_check_bound(a,_zA_)[1 + _zA_], - _zC_=x[1]; - if(caml_call2(cmp,caml_check_bound(a,_zC_)[1 + _zC_],_zB_) < 0) + _zF_=i31 + 2 | 0, + _zG_=caml_check_bound(a,_zF_)[1 + _zF_], + _zH_=x[1]; + if(caml_call2(cmp,caml_check_bound(a,_zH_)[1 + _zH_],_zG_) < 0) x[1] = i31 + 2 | 0; return x[1]} if((i31 + 1 | 0) < l) - {var _zD_=i31 + 1 | 0,_zE_=caml_check_bound(a,_zD_)[1 + _zD_]; - if(! (0 <= caml_call2(cmp,caml_check_bound(a,i31)[1 + i31],_zE_))) + {var _zI_=i31 + 1 | 0,_zJ_=caml_check_bound(a,_zI_)[1 + _zI_]; + if(! (0 <= caml_call2(cmp,caml_check_bound(a,i31)[1 + i31],_zJ_))) return i31 + 1 | 0} if(i31 < l)return i31; throw [0,Bottom,i]} @@ -14693,15 +14208,15 @@ for(;;) {var j=maxson(l,i$0); if(0 < caml_call2(cmp,caml_check_bound(a,j)[1 + j],e)) - {var _zx_=caml_check_bound(a,j)[1 + j]; - caml_check_bound(a,i$0)[1 + i$0] = _zx_; + {var _zC_=caml_check_bound(a,j)[1 + j]; + caml_check_bound(a,i$0)[1 + i$0] = _zC_; var i$0=j; continue} caml_check_bound(a,i$0)[1 + i$0] = e; return 0}} function trickle(l,i,e) {try - {var _zw_=trickledown(l,i,e);return _zw_} + {var _zB_=trickledown(l,i,e);return _zB_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] === Bottom) @@ -14710,59 +14225,59 @@ function bubbledown(l,i) {var i$0=i; for(;;) - {var i$1=maxson(l,i$0),_zv_=caml_check_bound(a,i$1)[1 + i$1]; - caml_check_bound(a,i$0)[1 + i$0] = _zv_; + {var i$1=maxson(l,i$0),_zA_=caml_check_bound(a,i$1)[1 + i$1]; + caml_check_bound(a,i$0)[1 + i$0] = _zA_; var i$0=i$1; continue}} function bubble(l,i) {try - {var _zu_=bubbledown(l,i);return _zu_} + {var _zz_=bubbledown(l,i);return _zz_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] === Bottom){var i$0=exn[2];return i$0} throw exn}} - var l=a.length - 1,_zm_=((l + 1 | 0) / 3 | 0) - 1 | 0; - if(! (_zm_ < 0)) - {var i$2=_zm_; + var l=a.length - 1,_zr_=((l + 1 | 0) / 3 | 0) - 1 | 0; + if(! (_zr_ < 0)) + {var i$2=_zr_; for(;;) {trickle(l,i$2,caml_check_bound(a,i$2)[1 + i$2]); - var _zt_=i$2 - 1 | 0; - if(0 !== i$2){var i$2=_zt_;continue} + var _zy_=i$2 - 1 | 0; + if(0 !== i$2){var i$2=_zy_;continue} break}} - var _zn_=l - 1 | 0; - if(! (_zn_ < 2)) - {var i$0=_zn_; + var _zs_=l - 1 | 0; + if(! (_zs_ < 2)) + {var i$0=_zs_; a: for(;;) {var e$0=caml_check_bound(a,i$0)[1 + i$0], - _zr_=caml_check_bound(a,0)[1]; - caml_check_bound(a,i$0)[1 + i$0] = _zr_; + _zw_=caml_check_bound(a,0)[1]; + caml_check_bound(a,i$0)[1 + i$0] = _zw_; var i$1=bubble(i$0,0),i=i$1; for(;;) {var father=(i - 1 | 0) / 3 | 0; - if(i === father)throw [0,Assert_failure,_F_]; + if(i === father)throw [0,Assert_failure,_H_]; if (0 <= caml_call2(cmp,caml_check_bound(a,father)[1 + father],e$0)) caml_check_bound(a,i)[1 + i] = e$0; else - {var _zl_=caml_check_bound(a,father)[1 + father]; - caml_check_bound(a,i)[1 + i] = _zl_; + {var _zq_=caml_check_bound(a,father)[1 + father]; + caml_check_bound(a,i)[1 + i] = _zq_; if(0 < father){var i=father;continue} caml_check_bound(a,0)[1] = e$0} - var _zs_=i$0 - 1 | 0; - if(2 !== i$0){var i$0=_zs_;continue a} + var _zx_=i$0 - 1 | 0; + if(2 !== i$0){var i$0=_zx_;continue a} break} break}} - var _zo_=1 < l?1:0; - if(_zo_) - {var e=caml_check_bound(a,1)[2],_zp_=caml_check_bound(a,0)[1]; - caml_check_bound(a,1)[2] = _zp_; + var _zt_=1 < l?1:0; + if(_zt_) + {var e=caml_check_bound(a,1)[2],_zu_=caml_check_bound(a,0)[1]; + caml_check_bound(a,1)[2] = _zu_; caml_check_bound(a,0)[1] = e; - var _zq_=0} + var _zv_=0} else - var _zq_=_zo_; - return _zq_} + var _zv_=_zt_; + return _zv_} function fast_sort$0(cmp,a) {function merge(src1ofs,src1len,src2,src2ofs,src2len,dst,dstofs) {var @@ -14800,30 +14315,30 @@ continue} return blit$1(src2,i2,dst,d + 1 | 0,src2r - i2 | 0)}} function isortto(srcofs,dst,dstofs,len) - {var _zd_=len - 1 | 0,_zc_=0; - if(! (_zd_ < 0)) - {var i=_zc_; + {var _zi_=len - 1 | 0,_zh_=0; + if(! (_zi_ < 0)) + {var i=_zh_; a: for(;;) {var - _ze_=srcofs + i | 0, - e=caml_check_bound(a,_ze_)[1 + _ze_], + _zj_=srcofs + i | 0, + e=caml_check_bound(a,_zj_)[1 + _zj_], j=[0,(dstofs + i | 0) - 1 | 0]; for(;;) {if(dstofs <= j[1]) - {var _zf_=j[1]; - if(0 < caml_call2(cmp,caml_check_bound(dst,_zf_)[1 + _zf_],e)) + {var _zk_=j[1]; + if(0 < caml_call2(cmp,caml_check_bound(dst,_zk_)[1 + _zk_],e)) {var - _zg_=j[1], - _zh_=caml_check_bound(dst,_zg_)[1 + _zg_], - _zi_=j[1] + 1 | 0; - caml_check_bound(dst,_zi_)[1 + _zi_] = _zh_; + _zl_=j[1], + _zm_=caml_check_bound(dst,_zl_)[1 + _zl_], + _zn_=j[1] + 1 | 0; + caml_check_bound(dst,_zn_)[1 + _zn_] = _zm_; j[1] += -1; continue}} - var _zj_=j[1] + 1 | 0; - caml_check_bound(dst,_zj_)[1 + _zj_] = e; - var _zk_=i + 1 | 0; - if(_zd_ !== i){var i=_zk_;continue a} + var _zo_=j[1] + 1 | 0; + caml_check_bound(dst,_zo_)[1 + _zo_] = e; + var _zp_=i + 1 | 0; + if(_zi_ !== i){var i=_zp_;continue a} break} break}} return 0} @@ -14845,21 +14360,21 @@ function to_seq$4(a) {function aux(i,param) {if(i < a.length - 1) - {var x=a[1 + i],_za_=i + 1 | 0; - return [0,x,function(_zb_){return aux(_za_,_zb_)}]} + {var x=a[1 + i],_zf_=i + 1 | 0; + return [0,x,function(_zg_){return aux(_zf_,_zg_)}]} return 0} - var _y__=0; - return function(_y$_){return aux(_y__,_y$_)}} + var _zd_=0; + return function(_ze_){return aux(_zd_,_ze_)}} function to_seqi$1(a) {function aux(i,param) {if(i < a.length - 1) - {var x=a[1 + i],_y8_=i + 1 | 0; - return [0,[0,i,x],function(_y9_){return aux(_y8_,_y9_)}]} + {var x=a[1 + i],_zb_=i + 1 | 0; + return [0,[0,i,x],function(_zc_){return aux(_zb_,_zc_)}]} return 0} - var _y6_=0; - return function(_y7_){return aux(_y6_,_y7_)}} + var _y$_=0; + return function(_za_){return aux(_y$_,_za_)}} function of_seq$2(i$2) - {var _y5_=0,l=fold_left(function(acc,x){return [0,x,acc]},_y5_,i$2); + {var _y__=0,l=fold_left(function(acc,x){return [0,x,acc]},_y__,i$2); if(l) {var tl=l[2], @@ -14926,8 +14441,8 @@ function is_nan(x){return x != x?1:0} var pi=3.14159265358979312; function is_integer(x) - {var _y4_=x == runtime.caml_trunc_float(x)?1:0; - return _y4_?is_finite(x):_y4_} + {var _y9_=x == runtime.caml_trunc_float(x)?1:0; + return _y9_?is_finite(x):_y9_} function succ$0(x){return caml_nextafter_float(x,infinity)} function pred$0(x){return caml_nextafter_float(x,neg_infinity)} function equal$11(x,y){return 0 === caml_float_compare(x,y)?1:0} @@ -14973,41 +14488,41 @@ return [0,x,y]} function hash$0(x){return caml_hash(10,100,0,x)} function unsafe_fill(a,ofs,len,v) - {var _y2_=(ofs + len | 0) - 1 | 0; - if(! (_y2_ < ofs)) + {var _y7_=(ofs + len | 0) - 1 | 0; + if(! (_y7_ < ofs)) {var i=ofs; for(;;) {a[1 + i] = v; - var _y3_=i + 1 | 0; - if(_y2_ !== i){var i=_y3_;continue} + var _y8_=i + 1 | 0; + if(_y7_ !== i){var i=_y8_;continue} break}} return 0} function check(a,ofs,len,msg) - {var _yY_=ofs < 0?1:0; - if(_yY_) - var _yZ_=_yY_; + {var _y3_=ofs < 0?1:0; + if(_y3_) + var _y4_=_y3_; else - {var _y0_=len < 0?1:0; - if(_y0_) - var _yZ_=_y0_; + {var _y5_=len < 0?1:0; + if(_y5_) + var _y4_=_y5_; else var - _y1_=(ofs + len | 0) < 0?1:0, - _yZ_=_y1_ || (a.length - 1 < (ofs + len | 0)?1:0)} - return _yZ_?invalid_arg(msg):_yZ_} + _y6_=(ofs + len | 0) < 0?1:0, + _y4_=_y6_ || (a.length - 1 < (ofs + len | 0)?1:0)} + return _y4_?invalid_arg(msg):_y4_} function make$2(n,v) {var result=caml_floatarray_create(n); unsafe_fill(result,0,n,v); return result} function init$4(l,f) {if(0 <= l) - {var res=caml_floatarray_create(l),_yW_=l - 1 | 0,_yV_=0; - if(! (_yW_ < 0)) - {var i=_yV_; + {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 _yX_=i + 1 | 0; - if(_yW_ !== i){var i=_yX_;continue} + var _y2_=i + 1 | 0; + if(_y1_ !== i){var i=_y2_;continue} break}} return res} return invalid_arg(cst_Float_Array_init)} @@ -15039,7 +14554,7 @@ var i$0=i + hlen | 0,l$0=tl$0,i=i$0; continue} if(i === acc)return result; - throw [0,Assert_failure,_G_]}}} + throw [0,Assert_failure,_I_]}}} function sub$2(a,ofs,len) {check(a,ofs,len,cst_Float_Array_sub); var result=caml_floatarray_create(len); @@ -15056,7 +14571,7 @@ 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(_yU_){return a[1 + _yU_]})} + {return init$0(a.length - 1,function(_yZ_){return a[1 + _yZ_]})} function of_list$0(l) {var result=caml_floatarray_create(length$1(l)),i=0,l$0=l; for(;;) @@ -15067,87 +14582,87 @@ continue} return result}} function iter$6(f,a) - {var _yS_=a.length - 1 - 1 | 0,_yR_=0; - if(! (_yS_ < 0)) - {var i=_yR_; + {var _yX_=a.length - 1 - 1 | 0,_yW_=0; + if(! (_yX_ < 0)) + {var i=_yW_; for(;;) {caml_call1(f,a[1 + i]); - var _yT_=i + 1 | 0; - if(_yS_ !== i){var i=_yT_;continue} + var _yY_=i + 1 | 0; + if(_yX_ !== i){var i=_yY_;continue} break}} return 0} function iter2$2(f,a,b) {if(a.length - 1 !== b.length - 1) return invalid_arg(cst_Float_Array_iter2_arrays_m); - var _yP_=a.length - 1 - 1 | 0,_yO_=0; - if(! (_yP_ < 0)) - {var i=_yO_; + var _yU_=a.length - 1 - 1 | 0,_yT_=0; + if(! (_yU_ < 0)) + {var i=_yT_; for(;;) {caml_call2(f,a[1 + i],b[1 + i]); - var _yQ_=i + 1 | 0; - if(_yP_ !== i){var i=_yQ_;continue} + var _yV_=i + 1 | 0; + if(_yU_ !== i){var i=_yV_;continue} break}} return 0} function map$8(f,a) - {var l=a.length - 1,r=caml_floatarray_create(l),_yM_=l - 1 | 0,_yL_=0; - if(! (_yM_ < 0)) - {var i=_yL_; + {var l=a.length - 1,r=caml_floatarray_create(l),_yR_=l - 1 | 0,_yQ_=0; + if(! (_yR_ < 0)) + {var i=_yQ_; for(;;) {r[1 + i] = caml_call1(f,a[1 + i]); - var _yN_=i + 1 | 0; - if(_yM_ !== i){var i=_yN_;continue} + var _yS_=i + 1 | 0; + if(_yR_ !== i){var i=_yS_;continue} break}} return r} function map2$2(f,a,b) {var la=a.length - 1,lb=b.length - 1; if(la !== lb)return invalid_arg(cst_Float_Array_map2_arrays_mu); - var r=caml_floatarray_create(la),_yJ_=la - 1 | 0,_yI_=0; - if(! (_yJ_ < 0)) - {var i=_yI_; + 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 _yK_=i + 1 | 0; - if(_yJ_ !== i){var i=_yK_;continue} + var _yP_=i + 1 | 0; + if(_yO_ !== i){var i=_yP_;continue} break}} return r} function iteri$4(f,a) - {var _yG_=a.length - 1 - 1 | 0,_yF_=0; - if(! (_yG_ < 0)) - {var i=_yF_; + {var _yL_=a.length - 1 - 1 | 0,_yK_=0; + if(! (_yL_ < 0)) + {var i=_yK_; for(;;) {caml_call2(f,i,a[1 + i]); - var _yH_=i + 1 | 0; - if(_yG_ !== i){var i=_yH_;continue} + 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),_yD_=l - 1 | 0,_yC_=0; - if(! (_yD_ < 0)) - {var i=_yC_; + {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 _yE_=i + 1 | 0; - if(_yD_ !== i){var i=_yE_;continue} + 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],_yA_=a.length - 1 - 1 | 0,_yz_=0; - if(! (_yA_ < 0)) - {var i=_yz_; + {var r=[0,x],_yF_=a.length - 1 - 1 | 0,_yE_=0; + if(! (_yF_ < 0)) + {var i=_yE_; for(;;) {r[1] = caml_call2(f,r[1],a[1 + i]); - var _yB_=i + 1 | 0; - if(_yA_ !== i){var i=_yB_;continue} + var _yG_=i + 1 | 0; + if(_yF_ !== i){var i=_yG_;continue} break}} return r[1]} function fold_right$3(f,a,x) - {var r=[0,x],_yx_=a.length - 1 - 1 | 0; - if(! (_yx_ < 0)) - {var i=_yx_; + {var r=[0,x],_yC_=a.length - 1 - 1 | 0; + if(! (_yC_ < 0)) + {var i=_yC_; for(;;) {r[1] = caml_call2(f,a[1 + i],r[1]); - var _yy_=i - 1 | 0; - if(0 !== i){var i=_yy_;continue} + var _yD_=i - 1 | 0; + if(0 !== i){var i=_yD_;continue} break}} return r[1]} function exists$4(p,a) @@ -15216,7 +14731,7 @@ return caml_array_set(a,i$0,e)}} function trickle(l,i,e) {try - {var _yw_=trickledown(l,i,e);return _yw_} + {var _yB_=trickledown(l,i,e);return _yB_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] === Bottom$0) @@ -15231,22 +14746,22 @@ continue}} function bubble(l,i) {try - {var _yv_=bubbledown(l,i);return _yv_} + {var _yA_=bubbledown(l,i);return _yA_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] === Bottom$0){var i$0=exn[2];return i$0} throw exn}} - var l=a.length - 1,_yp_=((l + 1 | 0) / 3 | 0) - 1 | 0; - if(! (_yp_ < 0)) - {var i$2=_yp_; + var l=a.length - 1,_yu_=((l + 1 | 0) / 3 | 0) - 1 | 0; + if(! (_yu_ < 0)) + {var i$2=_yu_; for(;;) {trickle(l,i$2,caml_array_get(a,i$2)); - var _yu_=i$2 - 1 | 0; - if(0 !== i$2){var i$2=_yu_;continue} + var _yz_=i$2 - 1 | 0; + if(0 !== i$2){var i$2=_yz_;continue} break}} - var _yq_=l - 1 | 0; - if(! (_yq_ < 2)) - {var i$0=_yq_; + var _yv_=l - 1 | 0; + if(! (_yv_ < 2)) + {var i$0=_yv_; a: for(;;) {var e$0=caml_array_get(a,i$0); @@ -15254,25 +14769,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,_H_]; + if(i === father)throw [0,Assert_failure,_J_]; if(0 <= caml_call2(cmp,caml_array_get(a,father),e$0)) caml_array_set(a,i,e$0); else {caml_array_set(a,i,caml_array_get(a,father)); if(0 < father){var i=father;continue} caml_array_set(a,0,e$0)} - var _yt_=i$0 - 1 | 0; - if(2 !== i$0){var i$0=_yt_;continue a} + var _yy_=i$0 - 1 | 0; + if(2 !== i$0){var i$0=_yy_;continue a} break} break}} - var _yr_=1 < l?1:0; - if(_yr_) + var _yw_=1 < l?1:0; + if(_yw_) {var e=caml_array_get(a,1); caml_array_set(a,1,caml_array_get(a,0)); - var _ys_=caml_array_set(a,0,e)} + var _yx_=caml_array_set(a,0,e)} else - var _ys_=_yr_; - return _ys_} + var _yx_=_yw_; + return _yx_} function stable_sort(cmp,a) {function merge(src1ofs,src1len,src2,src2ofs,src2len,dst,dstofs) {var @@ -15310,9 +14825,9 @@ continue} return blit$2(src2,i2,dst,d + 1 | 0,src2r - i2 | 0)}} function isortto(srcofs,dst,dstofs,len) - {var _yn_=len - 1 | 0,_ym_=0; - if(! (_yn_ < 0)) - {var i=_ym_; + {var _ys_=len - 1 | 0,_yr_=0; + if(! (_ys_ < 0)) + {var i=_yr_; a: for(;;) {var @@ -15331,8 +14846,8 @@ j[1] += -1; continue} caml_array_set(dst,j[1] + 1 | 0,e); - var _yo_=i + 1 | 0; - if(_yn_ !== i){var i=_yo_;continue a} + var _yt_=i + 1 | 0; + if(_ys_ !== i){var i=_yt_;continue a} break} break}} return 0} @@ -15351,23 +14866,23 @@ function to_seq$5(a) {function aux(i,param) {if(i < a.length - 1) - {var x=a[1 + i],_yk_=i + 1 | 0; - return [0,x,function(_yl_){return aux(_yk_,_yl_)}]} + {var x=a[1 + i],_yp_=i + 1 | 0; + return [0,x,function(_yq_){return aux(_yp_,_yq_)}]} return 0} - var _yi_=0; - return function(_yj_){return aux(_yi_,_yj_)}} + var _yn_=0; + return function(_yo_){return aux(_yn_,_yo_)}} function to_seqi$2(a) {function aux(i,param) {if(i < a.length - 1) - {var x=a[1 + i],_yg_=i + 1 | 0; - return [0,[0,i,x],function(_yh_){return aux(_yg_,_yh_)}]} + {var x=a[1 + i],_yl_=i + 1 | 0; + return [0,[0,i,x],function(_ym_){return aux(_yl_,_ym_)}]} return 0} - var _ye_=0; - return function(_yf_){return aux(_ye_,_yf_)}} + var _yj_=0; + return function(_yk_){return aux(_yj_,_yk_)}} function of_seq$3(i$2) {var - _yd_=0, - param$0=fold_left(function(acc,x){return [0,x,acc]},_yd_,i$2), + _yi_=0, + param$0=fold_left(function(acc,x){return [0,x,acc]},_yi_,i$2), len=length$1(param$0), a=caml_floatarray_create(len), i$1=len - 1 | 0, @@ -15383,36 +14898,36 @@ 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])),_yb_=l - 1 | 0,_ya_=1; - if(! (_yb_ < 1)) - {var i=_ya_; + var r=caml_make_vect(l,caml_call1(f,a[1])),_yg_=l - 1 | 0,_yf_=1; + if(! (_yg_ < 1)) + {var i=_yf_; for(;;) {r[1 + i] = caml_call1(f,a[1 + i]); - var _yc_=i + 1 | 0; - if(_yb_ !== i){var i=_yc_;continue} + var _yh_=i + 1 | 0; + if(_yg_ !== i){var i=_yh_;continue} break}} return r} function map_from_array(f,a) - {var l=a.length - 1,r=caml_floatarray_create(l),_x__=l - 1 | 0,_x9_=0; - if(! (_x__ < 0)) - {var i=_x9_; + {var l=a.length - 1,r=caml_floatarray_create(l),_yd_=l - 1 | 0,_yc_=0; + if(! (_yd_ < 0)) + {var i=_yc_; for(;;) {r[1 + i] = caml_call1(f,a[1 + i]); - var _x$_=i + 1 | 0; - if(_x__ !== i){var i=_x$_;continue} + var _ye_=i + 1 | 0; + if(_yd_ !== i){var i=_ye_;continue} break}} return r} var - _I_=caml_floatarray_create, - _J_=caml_array_set, - _K_=caml_array_get, - _L_= + _K_=caml_floatarray_create, + _L_=caml_array_set, + _M_=caml_array_get, + _N_= [0, - function(_x8_){return _x8_.length - 1}, - _K_, - _J_, + function(_yb_){return _yb_.length - 1}, + _M_, + _L_, make$2, - _I_, + _K_, init$4, append$2, concat$3, @@ -15442,9 +14957,9 @@ of_seq$3, map_to_array, map_from_array], - _M_=caml_floatarray_create, - _N_=caml_array_set, - _O_=caml_array_get, + _O_=caml_floatarray_create, + _P_=caml_array_set, + _Q_=caml_array_get, Stdlib_Float= [0, zero$0, @@ -15475,11 +14990,11 @@ min_max_num, hash$0, [0, - function(_x7_){return _x7_.length - 1}, - _O_, - _N_, + function(_ya_){return _ya_.length - 1}, + _Q_, + _P_, make$2, - _M_, + _O_, init$4, append$2, concat$3, @@ -15509,7 +15024,7 @@ of_seq$3, map_to_array, map_from_array], - _L_]; + _N_]; caml_register_global(795,Stdlib_Float,"Stdlib__Float"); var zero$1=0,one$1=1,minus_one$1=-1; function succ$1(n){return n + 1 | 0} @@ -15529,11 +15044,11 @@ function to_string$3(n){return caml_format_int(cst_d,n)} function of_string_opt$0(s) {try - {var _x5_=[0,caml_int_of_string(s)];return _x5_} - catch(_x6_) - {_x6_ = caml_wrap_exception(_x6_); - if(_x6_[1] === Failure)return 0; - throw _x6_}} + {var _x__=[0,caml_int_of_string(s)];return _x__} + catch(_x$_) + {_x$_ = caml_wrap_exception(_x$_); + if(_x$_[1] === Failure)return 0; + throw _x$_}} function compare$11(x,y){return caml_int_compare(x,y)} function equal$12(x,y){return 0 === caml_int_compare(x,y)?1:0} function unsigned_compare(n,m) @@ -15568,11 +15083,11 @@ min$3, max$3]; caml_register_global(796,Stdlib_Int32,"Stdlib__Int32"); - function succ$2(n){return caml_int64_add(n,_P_)} - function pred$2(n){return caml_int64_sub(n,_Q_)} + function succ$2(n){return caml_int64_add(n,_R_)} + function pred$2(n){return caml_int64_sub(n,_S_)} function abs$2(n) - {return caml_greaterequal(n,_R_)?n:runtime.caml_int64_neg(n)} - function lognot$1(n){return runtime.caml_int64_xor(n,_S_)} + {return caml_greaterequal(n,_T_)?n:runtime.caml_int64_neg(n)} + function lognot$1(n){return runtime.caml_int64_xor(n,_U_)} var max_int$3=caml_int64_of_int32(2147483647); function unsigned_to_int$0(n) {if @@ -15586,11 +15101,11 @@ function to_string$4(n){return caml_int64_format(cst_d$0,n)} function of_string_opt$1(s) {try - {var _x3_=[0,caml_int64_of_string(s)];return _x3_} - catch(_x4_) - {_x4_ = caml_wrap_exception(_x4_); - if(_x4_[1] === Failure)return 0; - throw _x4_}} + {var _x8_=[0,caml_int64_of_string(s)];return _x8_} + catch(_x9_) + {_x9_ = caml_wrap_exception(_x9_); + if(_x9_[1] === Failure)return 0; + throw _x9_}} function compare$12(x,y){return caml_int64_compare(x,y)} function equal$13(x,y){return 0 === caml_int64_compare(x,y)?1:0} function unsigned_compare$0(n,m) @@ -15650,11 +15165,11 @@ function to_string$5(n){return caml_format_int(cst_d$1,n)} function of_string_opt$2(s) {try - {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_}} + {var _x6_=[0,caml_int_of_string(s)];return _x6_} + catch(_x7_) + {_x7_ = caml_wrap_exception(_x7_); + if(_x7_[1] === Failure)return 0; + throw _x7_}} function compare$13(x,y){return caml_int_compare(x,y)} function equal$14(x,y){return 0 === caml_int_compare(x,y)?1:0} function unsigned_compare$1(n,m) @@ -15694,38 +15209,38 @@ function engine(tbl,state,buf) {var result=runtime.caml_lex_engine(tbl,state,buf), - _xY_=0 <= result?1:0, - _xZ_=_xY_?buf[12] !== dummy_pos?1:0:_xY_; - if(_xZ_) + _x3_=0 <= result?1:0, + _x4_=_x3_?buf[12] !== dummy_pos?1:0:_x3_; + if(_x4_) {buf[11] = buf[12]; - var _x0_=buf[12]; - buf[12] = [0,_x0_[1],_x0_[2],_x0_[3],buf[4] + buf[6] | 0]} + var _x5_=buf[12]; + buf[12] = [0,_x5_[1],_x5_[2],_x5_[3],buf[4] + buf[6] | 0]} return result} function new_engine(tbl,state,buf) {var result=runtime.caml_new_lex_engine(tbl,state,buf), - _xV_=0 <= result?1:0, - _xW_=_xV_?buf[12] !== dummy_pos?1:0:_xV_; - if(_xW_) + _x0_=0 <= result?1:0, + _x1_=_x0_?buf[12] !== dummy_pos?1:0:_x0_; + if(_x1_) {buf[11] = buf[12]; - var _xX_=buf[12]; - buf[12] = [0,_xX_[1],_xX_[2],_xX_[3],buf[4] + buf[6] | 0]} + var _x2_=buf[12]; + buf[12] = [0,_x2_[1],_x2_[2],_x2_[3],buf[4] + buf[6] | 0]} return result} function from_function(opt,f) {if(opt)var sth=opt[1],with_positions=sth;else var with_positions=1; var - _xH_=with_positions?zero_pos:dummy_pos, - _xI_=with_positions?zero_pos:dummy_pos, + _xM_=with_positions?zero_pos:dummy_pos, + _xN_=with_positions?zero_pos:dummy_pos, aux_buffer=caml_create_bytes(512), - _xJ_=[0], - _xK_=0, - _xL_=0, - _xM_=0, - _xN_=0, - _xO_=0, + _xO_=[0], _xP_=0, _xQ_=0, - _xR_=caml_create_bytes(1024); + _xR_=0, + _xS_=0, + _xT_=0, + _xU_=0, + _xV_=0, + _xW_=caml_create_bytes(1024); return [0, function(lexbuf) {var @@ -15755,66 +15270,66 @@ lexbuf[5] = 0; lexbuf[7] = lexbuf[7] - s | 0; lexbuf[3] = lexbuf[3] - s | 0; - var t=lexbuf[10],_xT_=t.length - 1 - 1 | 0,_xS_=0; - if(! (_xT_ < 0)) - {var i=_xS_; + var t=lexbuf[10],_xY_=t.length - 1 - 1 | 0,_xX_=0; + if(! (_xY_ < 0)) + {var i=_xX_; for(;;) {var v=caml_check_bound(t,i)[1 + i]; if(0 <= v)caml_check_bound(t,i)[1 + i] = v - s | 0; - var _xU_=i + 1 | 0; - if(_xT_ !== i){var i=_xU_;continue} + var _xZ_=i + 1 | 0; + if(_xY_ !== i){var i=_xZ_;continue} break}}} blit(aux_buffer,0,lexbuf[2],lexbuf[3],n); lexbuf[3] = lexbuf[3] + n | 0; return 0}, + _xW_, + _xV_, + _xU_, + _xT_, + _xS_, _xR_, _xQ_, _xP_, _xO_, _xN_, - _xM_, - _xL_, - _xK_, - _xJ_, - _xI_, - _xH_]} + _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 - _xw_=with_positions?zero_pos:dummy_pos, - _xx_=with_positions?zero_pos:dummy_pos, - _xy_=[0], - _xz_=1, - _xA_=0, - _xB_=0, - _xC_=0, - _xD_=0, - _xE_=0, - _xF_=caml_ml_string_length(s), - _xG_=to_bytes(s); + _xB_=with_positions?zero_pos:dummy_pos, + _xC_=with_positions?zero_pos:dummy_pos, + _xD_=[0], + _xE_=1, + _xF_=0, + _xG_=0, + _xH_=0, + _xI_=0, + _xJ_=0, + _xK_=caml_ml_string_length(s), + _xL_=to_bytes(s); return [0, function(lexbuf){lexbuf[9] = 1;return 0}, + _xL_, + _xK_, + _xJ_, + _xI_, + _xH_, _xG_, _xF_, _xE_, _xD_, _xC_, - _xB_, - _xA_, - _xz_, - _xy_, - _xx_, - _xw_]} + _xB_]} function set_position(lexbuf,position) {lexbuf[12] = [0,lexbuf[12][1],position[2],position[3],position[4]]; lexbuf[4] = position[4]; return 0} function set_filename(lexbuf,fname) - {var _xv_=lexbuf[12]; - lexbuf[12] = [0,fname,_xv_[2],_xv_[3],_xv_[4]]; + {var _xA_=lexbuf[12]; + lexbuf[12] = [0,fname,_xA_[2],_xA_[3],_xA_[4]]; return 0} function with_positions(lexbuf){return lexbuf[12] !== dummy_pos?1:0} function lexeme(lexbuf) @@ -15837,9 +15352,9 @@ function new_line(lexbuf) {var lcp=lexbuf[12], - _xt_=lcp !== dummy_pos?1:0, - _xu_=_xt_?(lexbuf[12] = [0,lcp[1],lcp[2] + 1 | 0,lcp[4],lcp[4]],0):_xt_; - return _xu_} + _xy_=lcp !== dummy_pos?1:0, + _xz_=_xy_?(lexbuf[12] = [0,lcp[1],lcp[2] + 1 | 0,lcp[4],lcp[4]],0):_xy_; + return _xz_} function flush_input(lb) {lb[6] = 0; lb[4] = 0; @@ -15944,16 +15459,16 @@ case 4: try {var - _xn_=env[13], - _xo_= - caml_call1(caml_check_bound(tables[1],_xn_)[1 + _xn_],env), - _xp_=4, - arg$1=_xo_, - cmd$0=_xp_} - catch(_xs_) - {_xs_ = caml_wrap_exception(_xs_); - if(_xs_ !== Parse_error)throw _xs_; - var arg$1=0,cmd$0=5,_xq_=_xs_} + _xs_=env[13], + _xt_= + caml_call1(caml_check_bound(tables[1],_xs_)[1 + _xs_],env), + _xu_=4, + arg$1=_xt_, + cmd$0=_xu_} + catch(_xx_) + {_xx_ = caml_wrap_exception(_xx_); + if(_xx_ !== Parse_error)throw _xx_; + var arg$1=0,cmd$0=5,_xv_=_xx_} var cmd=cmd$0,arg=arg$1; continue; default: @@ -15973,36 +15488,36 @@ = function(tok) {if(is_block(tok)) - {var _xr_=caml_obj_tag(tok); - return caml_check_bound(tables[3],_xr_)[1 + _xr_] === curr_char + {var _xw_=caml_obj_tag(tok); + return caml_check_bound(tables[3],_xw_)[1 + _xw_] === curr_char ?1 :0} return caml_check_bound(tables[2],tok)[1 + tok] === curr_char?1:0}; throw exn}} function peek_val(env,n) - {var _xm_=env[11] - n | 0;return caml_check_bound(env[2],_xm_)[1 + _xm_]} + {var _xr_=env[11] - n | 0;return caml_check_bound(env[2],_xr_)[1 + _xr_]} function symbol_start_pos(param) {var i=env[12]; for(;;) {if(0 < i) {var - _xj_=(env[11] - i | 0) + 1 | 0, - st=caml_check_bound(env[3],_xj_)[1 + _xj_], - _xk_=(env[11] - i | 0) + 1 | 0, - en=caml_check_bound(env[4],_xk_)[1 + _xk_]; + _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 _xl_=env[11]; - return caml_check_bound(env[4],_xl_)[1 + _xl_]}} + var _xq_=env[11]; + return caml_check_bound(env[4],_xq_)[1 + _xq_]}} function symbol_end_pos(param) - {var _xi_=env[11];return caml_check_bound(env[4],_xi_)[1 + _xi_]} + {var _xn_=env[11];return caml_check_bound(env[4],_xn_)[1 + _xn_]} function rhs_start_pos(n) - {var _xh_=env[11] - (env[12] - n | 0) | 0; - return caml_check_bound(env[3],_xh_)[1 + _xh_]} + {var _xm_=env[11] - (env[12] - n | 0) | 0; + return caml_check_bound(env[3],_xm_)[1 + _xm_]} function rhs_end_pos(n) - {var _xg_=env[11] - (env[12] - n | 0) | 0; - return caml_check_bound(env[4],_xg_)[1 + _xg_]} + {var _xl_=env[11] - (env[12] - n | 0) | 0; + return caml_check_bound(env[4],_xl_)[1 + _xl_]} function symbol_start(param){return symbol_start_pos(0)[4]} function symbol_end(param){return symbol_end_pos(0)[4]} function rhs_start(n){return rhs_start_pos(n)[4]} @@ -16023,7 +15538,7 @@ rhs_end_pos, clear_parser, Parse_error, - runtime.caml_set_parser_trace, + function(_xk_){return runtime.caml_set_parser_trace(_xk_)}, YYexit, yyparse, peek_val, @@ -16038,31 +15553,31 @@ 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 _xf_=hr <= hl?hl + 1 | 0:hr + 1 | 0; - return [0,l,v,r,_xf_]} + var _xj_=hr <= hl?hl + 1 | 0:hr + 1 | 0; + return [0,l,v,r,_xj_]} function bal(l,v,r) {if(l)var h=l[4],hl=h;else var hl=0; if(r)var h$0=r[4],hr=h$0;else var hr=0; if((hr + 2 | 0) < hl) {if(l) - {var lr=l[3],lv=l[2],ll=l[1],_xa_=height(lr); - if(_xa_ <= height(ll))return create(ll,lv,create(lr,v,r)); + {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],_xb_=create(lrr,v,r); - return create(create(ll,lv,lrl),lrv,_xb_)} + {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],_xc_=height(rl); - if(_xc_ <= height(rr))return create(create(l,v,rl),rv,rr); + {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],_xd_=create(rlr,rv,rr); - return create(create(l,v,rll),rlv,_xd_)} + {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 _xe_=hr <= hl?hl + 1 | 0:hr + 1 | 0; - return [0,l,v,r,_xe_]} + var _xi_=hr <= hl?hl + 1 | 0:hr + 1 | 0; + return [0,l,v,r,_xi_]} function add(x,t) {if(t) {var r=t[3],v=t[2],l=t[1],c=caml_call2(Ord[1],x,v); @@ -16103,8 +15618,8 @@ {var param$0=param; for(;;) {if(param$0) - {var _w$_=param$0[1]; - if(_w$_){var param$0=_w$_;continue} + {var _xd_=param$0[1]; + if(_xd_){var param$0=_xd_;continue} var v=param$0[2]; return v} throw Not_found}} @@ -16112,8 +15627,8 @@ {var param$0=param; for(;;) {if(param$0) - {var _w__=param$0[1]; - if(_w__){var param$0=_w__;continue} + {var _xc_=param$0[1]; + if(_xc_){var param$0=_xc_;continue} var v=param$0[2]; return [0,v]} return 0}} @@ -16135,16 +15650,16 @@ return 0}} function remove_min_elt(param) {if(param) - {var _w9_=param[1]; - if(_w9_) - {var r=param[3],v=param[2];return bal(remove_min_elt(_w9_),v,r)} + {var _xb_=param[1]; + if(_xb_) + {var r=param[3],v=param[2];return bal(remove_min_elt(_xb_),v,r)} var r$0=param[3]; return r$0} return invalid_arg(cst_Set_remove_min_elt)} function concat(t1,t2) {if(t1) {if(t2) - {var _w8_=remove_min_elt(t2);return join(t1,min_elt(t2),_w8_)} + {var _xa_=remove_min_elt(t2);return join(t1,min_elt(t2),_xa_)} return t1} return t2} function split(x,param) @@ -16160,7 +15675,7 @@ pres$0=match$0[2], ll=match$0[1]; return [0,ll,pres$0,join(rl,v,r)]} - return _T_} + return _V_} var empty=0; function is_empty(param){return param?0:1} function mem(x,param) @@ -16172,8 +15687,8 @@ v=param$0[2], l=param$0[1], c=caml_call2(Ord[1],x,v), - _w7_=0 === c?1:0; - if(_w7_)return _w7_; + _w$_=0 === c?1:0; + if(_w$_)return _w$_; var param$1=0 <= c?r:l,param$0=param$1; continue} return 0}} @@ -16183,7 +15698,7 @@ if(0 === c) {if(l) {if(r) - {var _w6_=remove_min_elt(r);return bal(l,min_elt(r),_w6_)} + {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)} @@ -16208,26 +15723,26 @@ match=split(v1,s2), r2$0=match[3], l2$0=match[1], - _w4_=union(r1,r2$0); - return join(union(l1,l2$0),v1,_w4_)} + _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], - _w5_=union(r1$0,r2); - return join(union(l1$0,l2),v2,_w5_)} + _w9_=union(r1$0,r2); + return join(union(l1$0,l2),v2,_w9_)} return s1} return s2} function inter(s1,s2) {if(s1) {if(s2) - {var r1=s1[3],v1=s1[2],l1=s1[1],_w0_=split(v1,s2),_w1_=_w0_[1]; - if(_w0_[2]) - {var r2=_w0_[3],_w2_=inter(r1,r2); - return join(inter(l1,_w1_),v1,_w2_)} - var r2$0=_w0_[3],_w3_=inter(r1,r2$0); - return concat(inter(l1,_w1_),_w3_)} + {var r1=s1[3],v1=s1[2],l1=s1[1],_w4_=split(v1,s2),_w5_=_w4_[1]; + if(_w4_[2]) + {var r2=_w4_[3],_w6_=inter(r1,r2); + return join(inter(l1,_w5_),v1,_w6_)} + var r2$0=_w4_[3],_w7_=inter(r1,r2$0); + return concat(inter(l1,_w5_),_w7_)} return 0} return 0} function split_bis(x,param) @@ -16255,21 +15770,21 @@ if(s1$0 === s2$0)return 0; var match=split_bis(v1,s2$0); if(match) - {var r2=match[2],l2=match[1],_wZ_=disjoint(l1,l2); - if(_wZ_) + {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 _wZ_} + return _w3_} return 0} return 1}} function diff(s1,s2) {if(s1) {if(s2) - {var r1=s1[3],v1=s1[2],l1=s1[1],_wV_=split(v1,s2),_wW_=_wV_[1]; - if(_wV_[2]) - {var r2=_wV_[3],_wX_=diff(r1,r2); - return concat(diff(l1,_wW_),_wX_)} - var r2$0=_wV_[3],_wY_=diff(r1,r2$0); - return join(diff(l1,_wW_),v1,_wY_)} + {var r1=s1[3],v1=s1[2],l1=s1[1],_wZ_=split(v1,s2),_w0_=_wZ_[1]; + if(_wZ_[2]) + {var r2=_wZ_[3],_w1_=diff(r1,r2); + return concat(diff(l1,_w0_),_w1_)} + var r2$0=_wZ_[3],_w2_=diff(r1,r2$0); + return join(diff(l1,_w0_),v1,_w2_)} return s1} return 0} function cons_enum(s,e) @@ -16323,16 +15838,16 @@ l1=s1$0[1], c=caml_call2(Ord[1],v1,v2); if(0 === c) - {var _wS_=subset(l1,l2); - if(_wS_){var s1$0=r1,s2$0=r2;continue} - return _wS_} + {var _wW_=subset(l1,l2); + if(_wW_){var s1$0=r1,s2$0=r2;continue} + return _wW_} if(0 <= c) - {var _wT_=subset([0,0,v1,r1,0],r2); - if(_wT_){var s1$0=l1;continue} - return _wT_} - var _wU_=subset([0,l1,v1,0,0],l2); - if(_wU_){var s1$0=r1;continue} - return _wU_} + {var _wX_=subset([0,0,v1,r1,0],r2); + if(_wX_){var s1$0=l1;continue} + return _wX_} + var _wY_=subset([0,l1,v1,0,0],l2); + if(_wY_){var s1$0=r1;continue} + return _wY_} return 0} return 1}} function iter(f,param) @@ -16366,14 +15881,14 @@ r=param$0[3], v=param$0[2], l=param$0[1], - _wP_=caml_call1(p,v); - if(_wP_) - {var _wQ_=for_all(p,l); - if(_wQ_){var param$0=r;continue} - var _wR_=_wQ_} + _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 _wR_=_wP_; - return _wR_} + var _wV_=_wT_; + return _wV_} return 1}} function exists(p,param) {var param$0=param; @@ -16383,14 +15898,14 @@ r=param$0[3], v=param$0[2], l=param$0[1], - _wM_=caml_call1(p,v); - if(_wM_) - var _wN_=_wM_; + _wQ_=caml_call1(p,v); + if(_wQ_) + var _wR_=_wQ_; else - {var _wO_=exists(p,l); - if(! _wO_){var param$0=r;continue} - var _wN_=_wO_} - return _wN_} + {var _wS_=exists(p,l); + if(! _wS_){var param$0=r;continue} + var _wR_=_wS_} + return _wR_} return 0}} function filter(p,t) {if(t) @@ -16417,14 +15932,14 @@ match$0=partition(p,r), rf=match$0[2], rt=match$0[1]; - if(pv){var _wK_=concat(lf,rf);return [0,join(lt,v,rt),_wK_]} - var _wL_=join(lf,v,rf); - return [0,concat(lt,rt),_wL_]} - return _U_} + if(pv){var _wO_=concat(lf,rf);return [0,join(lt,v,rt),_wO_]} + var _wP_=join(lf,v,rf); + return [0,concat(lt,rt),_wP_]} + return _W_} function cardinal(param) {if(param) - {var r=param[3],l=param[1],_wJ_=cardinal(r); - return (cardinal(l) + 1 | 0) + _wJ_ | 0} + {var r=param[3],l=param[1],_wN_=cardinal(r); + return (cardinal(l) + 1 | 0) + _wN_ | 0} return 0} function elements_aux(accu,param) {var accu$0=accu,param$0=param; @@ -16537,13 +16052,13 @@ function try_join(l,v,r) {var switch$0=0; if(0 !== l) - {var _wI_=max_elt(l); - if(0 <= caml_call2(Ord[1],_wI_,v))switch$0 = 1} + {var _wM_=max_elt(l); + if(0 <= caml_call2(Ord[1],_wM_,v))switch$0 = 1} if(! switch$0) {var switch$1=0; if(0 !== r) - {var _wH_=min_elt(r); - if(0 <= caml_call2(Ord[1],v,_wH_))switch$1 = 1} + {var _wL_=min_elt(r); + if(0 <= caml_call2(Ord[1],v,_wL_))switch$1 = 1} if(! switch$1)return join(l,v,r)} return union(l,add(v,r))} function map(f,t) @@ -16573,22 +16088,22 @@ return try_join(t1,v$1,t2)} if(t1) {if(t2) - {var _wG_=remove_min_elt(t2); - return try_join(t1,min_elt(t2),_wG_)} + {var _wK_=remove_min_elt(t2); + return try_join(t1,min_elt(t2),_wK_)} return t1} return t2} return 0} function of_list(l) {if(l) - {var _wv_=l[2],_ww_=l[1]; - if(_wv_) - {var _wx_=_wv_[2],_wy_=_wv_[1]; - if(_wx_) - {var _wz_=_wx_[2],_wA_=_wx_[1]; - if(_wz_) - {var _wB_=_wz_[2],_wC_=_wz_[1]; - if(_wB_) - {if(_wB_[2]) + {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= @@ -16601,18 +16116,18 @@ break; case 2: if(l) - {var _wD_=l[2]; - if(_wD_) - {var l$4=_wD_[2],x1=_wD_[1],x0$0=l[1]; + {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 _wE_=l[2]; - if(_wE_) - {var _wF_=_wE_[2]; - if(_wF_) - {var l$5=_wF_[2],x2=_wF_[1],x1$0=_wE_[1],x0$1=l[1]; + {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) @@ -16623,26 +16138,26 @@ l$2=match$0[2], right=match$0[1]; return [0,create(left,mid,right),l$2]} - throw [0,Assert_failure,_V_]}; + throw [0,Assert_failure,_X_]}; return sub(length$1(l$0),l$0)[1]} - var x4=_wB_[1]; - return add(x4,add(_wC_,add(_wA_,add(_wy_,singleton(_ww_)))))} - return add(_wC_,add(_wA_,add(_wy_,singleton(_ww_))))} - return add(_wA_,add(_wy_,singleton(_ww_)))} - return add(_wy_,singleton(_ww_))} - return singleton(_ww_)} + var x4=_wF_[1]; + return add(x4,add(_wG_,add(_wE_,add(_wC_,singleton(_wA_)))))} + return add(_wG_,add(_wE_,add(_wC_,singleton(_wA_))))} + return add(_wE_,add(_wC_,singleton(_wA_)))} + return add(_wC_,singleton(_wA_))} + return singleton(_wA_)} return empty} function add_seq(i,m) {return fold_left(function(s,x){return add(x,s)},m,i)} function of_seq(i){return add_seq(i,empty)} function seq_of_enum(c,param) {if(c) - {var rest=c[3],t=c[2],x=c[1],_wt_=cons_enum(t,rest); - return [0,x,function(_wu_){return seq_of_enum(_wt_,_wu_)}]} + {var rest=c[3],t=c[2],x=c[1],_wx_=cons_enum(t,rest); + return [0,x,function(_wy_){return seq_of_enum(_wx_,_wy_)}]} return 0} function to_seq(c) - {var _wr_=cons_enum(c,0); - return function(_ws_){return seq_of_enum(_wr_,_ws_)}} + {var _wv_=cons_enum(c,0); + return function(_ww_){return seq_of_enum(_wv_,_ww_)}} function snoc_enum(s,e) {var s$0=s,e$0=e; for(;;) @@ -16658,12 +16173,12 @@ return e$0}} function rev_seq_of_enum(c,param) {if(c) - {var rest=c[3],t=c[2],x=c[1],_wp_=snoc_enum(t,rest); - return [0,x,function(_wq_){return rev_seq_of_enum(_wp_,_wq_)}]} + {var rest=c[3],t=c[2],x=c[1],_wt_=snoc_enum(t,rest); + return [0,x,function(_wu_){return rev_seq_of_enum(_wt_,_wu_)}]} return 0} function to_rev_seq(c) - {var _wn_=snoc_enum(c,0); - return function(_wo_){return rev_seq_of_enum(_wn_,_wo_)}} + {var _wr_=snoc_enum(c,0); + return function(_ws_){return rev_seq_of_enum(_wr_,_ws_)}} function to_seq_from(low,s) {var s$0=s,c=0; for(;;) @@ -16673,10 +16188,10 @@ {if(0 <= n){var c$0=[0,v,r,c],s$0=l,c=c$0;continue} var s$0=r; continue} - var _wl_=[0,v,r,c]} + var _wp_=[0,v,r,c]} else - var _wl_=c; - return function(_wm_){return seq_of_enum(_wl_,_wm_)}}} + var _wp_=c; + return function(_wq_){return seq_of_enum(_wp_,_wq_)}}} return [0, empty, is_empty, @@ -16727,42 +16242,42 @@ function(Ord) {function height(param){if(param){var h=param[5];return h}return 0} function create(l,x,d,r) - {var hl=height(l),hr=height(r),_wk_=hr <= hl?hl + 1 | 0:hr + 1 | 0; - return [0,l,x,d,r,_wk_]} + {var hl=height(l),hr=height(r),_wo_=hr <= hl?hl + 1 | 0:hr + 1 | 0; + return [0,l,x,d,r,_wo_]} function singleton(x,d){return [0,0,x,d,0,1]} function bal(l,x,d,r) {if(l)var h=l[5],hl=h;else var hl=0; if(r)var h$0=r[5],hr=h$0;else var hr=0; if((hr + 2 | 0) < hl) {if(l) - {var lr=l[4],ld=l[3],lv=l[2],ll=l[1],_wf_=height(lr); - if(_wf_ <= height(ll))return create(ll,lv,ld,create(lr,x,d,r)); + {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], - _wg_=create(lrr,x,d,r); - return create(create(ll,lv,ld,lrl),lrv,lrd,_wg_)} + _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],_wh_=height(rl); - if(_wh_ <= height(rr))return create(create(l,x,d,rl),rv,rd,rr); + {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], - _wi_=create(rlr,rv,rd,rr); - return create(create(l,x,d,rll),rlv,rld,_wi_)} + _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 _wj_=hr <= hl?hl + 1 | 0:hr + 1 | 0; - return [0,l,x,d,r,_wj_]} + var _wn_=hr <= hl?hl + 1 | 0:hr + 1 | 0; + return [0,l,x,d,r,_wn_]} var empty=0; function is_empty(param){return param?0:1} function add(x,data,m) @@ -16894,8 +16409,8 @@ v=param$0[2], l=param$0[1], c=caml_call2(Ord[1],x,v), - _we_=0 === c?1:0; - if(_we_)return _we_; + _wi_=0 === c?1:0; + if(_wi_)return _wi_; var param$1=0 <= c?r:l,param$0=param$1; continue} return 0}} @@ -16903,8 +16418,8 @@ {var param$0=param; for(;;) {if(param$0) - {var _wd_=param$0[1]; - if(_wd_){var param$0=_wd_;continue} + {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}} @@ -16912,8 +16427,8 @@ {var param$0=param; for(;;) {if(param$0) - {var _wc_=param$0[1]; - if(_wc_){var param$0=_wc_;continue} + {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}} @@ -16935,14 +16450,14 @@ return 0}} function remove_min_binding(param) {if(param) - {var _wb_=param[1]; - if(_wb_) + {var _wf_=param[1]; + if(_wf_) {var r=param[4],d=param[3],v=param[2]; - return bal(remove_min_binding(_wb_),v,d,r)} + 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 _vM_(t1,t2) + function _vQ_(t1,t2) {if(t1) {if(t2) {var match=min_binding(t2),d=match[2],x=match[1]; @@ -16952,7 +16467,7 @@ 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 _vM_(l,r); + 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)} @@ -16964,7 +16479,7 @@ {var match=caml_call1(f,[0,d]); if(match) {var data=match[1];return d === data?m:[0,l,x,data,r,h]} - return _vM_(l,r)} + 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)} @@ -17030,14 +16545,14 @@ d=param$0[3], v=param$0[2], l=param$0[1], - _v__=caml_call2(p,v,d); - if(_v__) - {var _v$_=for_all(p,l); - if(_v$_){var param$0=r;continue} - var _wa_=_v$_} + _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 _wa_=_v__; - return _wa_} + var _we_=_wc_; + return _we_} return 1}} function exists(p,param) {var param$0=param; @@ -17048,14 +16563,14 @@ d=param$0[3], v=param$0[2], l=param$0[1], - _v7_=caml_call2(p,v,d); - if(_v7_) - var _v8_=_v7_; + _v$_=caml_call2(p,v,d); + if(_v$_) + var _wa_=_v$_; else - {var _v9_=exists(p,l); - if(! _v9_){var param$0=r;continue} - var _v8_=_v9_} - return _v8_} + {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) @@ -17115,7 +16630,7 @@ pres$0=match$0[2], ll=match$0[1]; return [0,ll,pres$0,join(rl,v,d,r)]} - return _W_} + return _Y_} function merge(f,s1,s2) {if(s1) {var h1=s1[5],r1=s1[4],d1=s1[3],v1=s1[2],l1=s1[1]; @@ -17125,9 +16640,9 @@ r2=match[3], d2=match[2], l2=match[1], - _v3_=merge(f,r1,r2), - _v4_=caml_call3(f,v1,[0,d1],d2); - return concat_or_join(merge(f,l1,l2),v1,_v4_,_v3_)}} + _v7_=merge(f,r1,r2), + _v8_=caml_call3(f,v1,[0,d1],d2); + return concat_or_join(merge(f,l1,l2),v1,_v8_,_v7_)}} else if(! s2)return 0; if(s2) @@ -17140,10 +16655,10 @@ r1$0=match$0[3], d1$0=match$0[2], l1$0=match$0[1], - _v5_=merge(f,r1$0,r2$0), - _v6_=caml_call3(f,v2,d1$0,[0,d2$0]); - return concat_or_join(merge(f,l1$0,l2$0),v2,_v6_,_v5_)} - throw [0,Assert_failure,_X_]} + _v9_=merge(f,r1$0,r2$0), + _v__=caml_call3(f,v2,d1$0,[0,d2$0]); + return concat_or_join(merge(f,l1$0,l2$0),v2,_v__,_v9_)} + throw [0,Assert_failure,_Z_]} function union(f,s1,s2) {if(s1) {if(s2) @@ -17226,10 +16741,10 @@ match$0=partition(p,r), rf=match$0[2], rt=match$0[1]; - if(pvd){var _v1_=concat(lf,rf);return [0,join(lt,v,d,rt),_v1_]} - var _v2_=join(lf,v,d,rf); - return [0,concat(lt,rt),_v2_]} - return _Y_} + if(pvd){var _v5_=concat(lf,rf);return [0,join(lt,v,d,rt),_v5_]} + var _v6_=join(lf,v,d,rf); + return [0,concat(lt,rt),_v6_]} + return ___} function cons_enum(m,e) {var m$0=m,e$0=e; for(;;) @@ -17286,26 +16801,26 @@ r1=e1[3], d1=e1[2], v1=e1[1], - _vY_=0 === caml_call2(Ord[1],v1,v2)?1:0; - if(_vY_) - {var _vZ_=caml_call2(cmp,d1,d2); - if(_vZ_) + _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 _v0_=_vZ_} + var _v4_=_v3_} else - var _v0_=_vY_; - return _v0_} + var _v4_=_v2_; + return _v4_} return 0} return e2?0:1}} function cardinal(param) {if(param) - {var r=param[4],l=param[1],_vX_=cardinal(r); - return (cardinal(l) + 1 | 0) + _vX_ | 0} + {var r=param[4],l=param[1],_v1_=cardinal(r); + return (cardinal(l) + 1 | 0) + _v1_ | 0} return 0} function bindings_aux(accu,param) {var accu$0=accu,param$0=param; @@ -17331,12 +16846,12 @@ 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],_vV_=cons_enum(t,rest); - return [0,[0,k,v],function(_vW_){return seq_of_enum(_vV_,_vW_)}]} + {var rest=c[4],t=c[3],v=c[2],k=c[1],_vZ_=cons_enum(t,rest); + return [0,[0,k,v],function(_v0_){return seq_of_enum(_vZ_,_v0_)}]} return 0} function to_seq(m) - {var _vT_=cons_enum(m,0); - return function(_vU_){return seq_of_enum(_vT_,_vU_)}} + {var _vX_=cons_enum(m,0); + return function(_vY_){return seq_of_enum(_vX_,_vY_)}} function snoc_enum(s,e) {var s$0=s,e$0=e; for(;;) @@ -17353,14 +16868,14 @@ return e$0}} function rev_seq_of_enum(c,param) {if(c) - {var rest=c[4],t=c[3],v=c[2],k=c[1],_vR_=snoc_enum(t,rest); + {var rest=c[4],t=c[3],v=c[2],k=c[1],_vV_=snoc_enum(t,rest); return [0, [0,k,v], - function(_vS_){return rev_seq_of_enum(_vR_,_vS_)}]} + function(_vW_){return rev_seq_of_enum(_vV_,_vW_)}]} return 0} function to_rev_seq(c) - {var _vP_=snoc_enum(c,0); - return function(_vQ_){return rev_seq_of_enum(_vP_,_vQ_)}} + {var _vT_=snoc_enum(c,0); + return function(_vU_){return rev_seq_of_enum(_vT_,_vU_)}} function to_seq_from(low,m) {var m$0=m,c=0; for(;;) @@ -17375,10 +16890,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 _vN_=[0,v,d,r,c]} + var _vR_=[0,v,d,r,c]} else - var _vN_=c; - return function(_vO_){return seq_of_enum(_vN_,_vO_)}}} + var _vR_=c; + return function(_vS_){return seq_of_enum(_vR_,_vS_)}}} return [0, empty, is_empty, @@ -17427,19 +16942,19 @@ 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 _vL_=s[1]; - if(_vL_) - {var tl=_vL_[2],hd=_vL_[1];s[1] = tl;s[2] = s[2] - 1 | 0;return hd} + {var _vP_=s[1]; + if(_vP_) + {var tl=_vP_[2],hd=_vP_[1];s[1] = tl;s[2] = s[2] - 1 | 0;return hd} throw Empty} function pop_opt(s) - {var _vK_=s[1]; - if(_vK_) - {var tl=_vK_[2],hd=_vK_[1];s[1] = tl;s[2] = s[2] - 1 | 0;return [0,hd]} + {var _vO_=s[1]; + if(_vO_) + {var tl=_vO_[2],hd=_vO_[1];s[1] = tl;s[2] = s[2] - 1 | 0;return [0,hd]} return 0} function top(s) - {var _vJ_=s[1];if(_vJ_){var hd=_vJ_[1];return hd}throw Empty} + {var _vN_=s[1];if(_vN_){var hd=_vN_[1];return hd}throw Empty} function top_opt(s) - {var _vI_=s[1];if(_vI_){var hd=_vI_[1];return [0,hd]}return 0} + {var _vM_=s[1];if(_vM_){var hd=_vM_[1];return [0,hd]}return 0} function is_empty$0(s){return 0 === s[1]?1:0} function length$2(s){return s[2]} function iter$7(f,s){return iter$2(f,s[1])} @@ -17471,31 +16986,31 @@ 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],_vH_=q[3]; - return _vH_ - ?(q[1] = q[1] + 1 | 0,_vH_[2] = cell,q[3] = cell,0) + {var cell=[0,x,0],_vL_=q[3]; + return _vL_ + ?(q[1] = q[1] + 1 | 0,_vL_[2] = cell,q[3] = cell,0) :(q[1] = 1,q[2] = cell,q[3] = cell,0)} function peek(q) - {var _vG_=q[2];if(_vG_){var content=_vG_[1];return content}throw Empty$0} + {var _vK_=q[2];if(_vK_){var content=_vK_[1];return content}throw Empty$0} function peek_opt(q) - {var _vF_=q[2];if(_vF_){var content=_vF_[1];return [0,content]}return 0} + {var _vJ_=q[2];if(_vJ_){var content=_vJ_[1];return [0,content]}return 0} function take$0(q) - {var _vD_=q[2]; - if(_vD_) - {var _vE_=_vD_[1]; - if(_vD_[2]) - {var next=_vD_[2];q[1] = q[1] - 1 | 0;q[2] = next;return _vE_} + {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 _vE_} + return _vI_} throw Empty$0} function take_opt(q) - {var _vB_=q[2]; - if(_vB_) - {var _vC_=_vB_[1]; - if(_vB_[2]) - {var next=_vB_[2];q[1] = q[1] - 1 | 0;q[2] = next;return [0,_vC_]} + {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,_vC_]} + return [0,_vG_]} return 0} function copy$4(q) {var q_res=[0,q[1],0,0],prev=0,cell=q[2]; @@ -17531,10 +17046,10 @@ continue} return accu}} function transfer(q1,q2) - {var _vz_=0 < q1[1]?1:0; - if(_vz_) - {var _vA_=q2[3]; - return _vA_ + {var _vD_=0 < q1[1]?1:0; + if(_vD_) + {var _vE_=q2[3]; + return _vE_ ?(q2[1] = q2[1] @@ -17542,7 +17057,7 @@ q1[1] | 0, - _vA_[2] + _vE_[2] = q1[2], q2[3] @@ -17550,15 +17065,15 @@ q1[3], clear$0(q1)) :(q2[1] = q1[1],q2[2] = q1[2],q2[3] = q1[3],clear$0(q1))} - return _vz_} + return _vD_} function to_seq$7(q) {function aux(c,param) {if(c) {var x=c[1],next=c[2]; - return [0,x,function(_vy_){return aux(next,_vy_)}]} + return [0,x,function(_vC_){return aux(next,_vC_)}]} return 0} - var _vw_=q[2]; - return function(_vx_){return aux(_vw_,_vx_)}} + var _vA_=q[2]; + return function(_vB_){return aux(_vA_,_vB_)}} function add_seq$0(q,i){return iter(function(x){return add(x,q)},i)} function of_seq$5(g){var q=create$1(0);add_seq$0(q,g);return q} var @@ -17606,23 +17121,23 @@ else {if(0 === match[0]) {var d11=match[2],a=match[1];return [0,a,[1,d11,d2]]} - throw [0,Assert_failure,_Z_]} + throw [0,Assert_failure,_$_]} case 2: var f=d$0[1], - _vs_=caml_obj_tag(f), - d$1=250 === _vs_?f[1]:246 === _vs_?force_lazy_block(f):f, + _vw_=caml_obj_tag(f), + d$1=250 === _vw_?f[1]:246 === _vw_?force_lazy_block(f):f, d$0=d$1; continue; case 3: - var _vt_=d$0[1],_vu_=_vt_[1]; - if(_vu_) - {var _vv_=_vu_[1]; - if(_vv_){var a$0=_vv_[1];_vt_[1] = 0;return [0,a$0,d$0]} + 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(_vt_[2],count); + var match$0=caml_call1(_vx_[2],count); if(match$0){var a$1=match$0[1];return [0,a$1,d$0]} - _vt_[1] = ___; + _vx_[1] = _aa_; return 0; case 4: var b=d$0[1]; @@ -17635,34 +17150,34 @@ return d$0}} function peek_data(s) {for(;;) - {var _vn_=s[2]; - if(typeof _vn_ === "number") + {var _vr_=s[2]; + if(typeof _vr_ === "number") return 0; else - switch(_vn_[0]) - {case 0:var a=_vn_[1];return [0,a]; + 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,_$_]} + throw [0,Assert_failure,_ab_]} case 2: var - f=_vn_[1], - _vo_=caml_obj_tag(f), - _vp_=250 === _vo_?f[1]:246 === _vo_?force_lazy_block(f):f; - s[2] = _vp_; + 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 _vq_=_vn_[1],_vr_=_vq_[1]; - if(_vr_){var a$1=_vr_[1];return a$1} - var x=caml_call1(_vq_[2],s[1]); - _vq_[1] = [0,x]; + 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=_vn_[1]; + var b=_vr_[1]; if(b[3] <= b[4])fill_buff(b); return 0 === b[3] ?(s[2] = 0,0) @@ -17671,16 +17186,16 @@ {if(param){var s=param[1];return peek_data(s)}return 0} function junk_data(s) {for(;;) - {var _vl_=s[2]; - if(typeof _vl_ !== "number") - switch(_vl_[0]) - {case 0:var d=_vl_[2];s[1] = s[1] + 1 | 0;s[2] = d;return 0; + {var _vp_=s[2]; + if(typeof _vp_ !== "number") + switch(_vp_[0]) + {case 0:var d=_vp_[2];s[1] = s[1] + 1 | 0;s[2] = d;return 0; case 3: - var _vm_=_vl_[1]; - if(_vm_[1]){s[1] = s[1] + 1 | 0;_vm_[1] = 0;return 0} + var _vq_=_vp_[1]; + if(_vq_[1]){s[1] = s[1] + 1 | 0;_vq_[1] = 0;return 0} break; case 4: - var b=_vl_[1]; + var b=_vp_[1]; if(b[3] <= b[4])fill_buff(b); return 0 === b[3] ?(s[2] = 0,0) @@ -17729,8 +17244,8 @@ return 0}} function from(f){return [0,[0,0,[3,[0,0,f]]]]} function of_list$1(l) - {var _vk_=0; - return [0,[0,0,fold_right(function(x,l){return [0,x,l]},l,_vk_)]]} + {var _vo_=0; + return [0,[0,0,fold_right(function(x,l){return [0,x,l]},l,_vo_)]]} function of_string(s) {var count=[0,0]; return from @@ -17749,7 +17264,7 @@ :0})} function of_channel(ic) {return [0,[0,0,[4,[0,ic,caml_create_bytes(4096),0,0]]]]} - function iapp(i,s){var _vj_=data(s);return [0,[0,0,[1,data(i),_vj_]]]} + function iapp(i,s){var _vn_=data(s);return [0,[0,0,[1,data(i),_vn_]]]} function icons(i,s){return [0,[0,0,[0,i,data(s)]]]} function ising(i){return [0,[0,0,[0,i,0]]]} function lapp(f,s) @@ -17758,28 +17273,21 @@ 0, [2, [246, - function(_vh_) - {var _vi_=data(s);return [1,data(caml_call1(f,0)),_vi_]}]]]]} + function(_vl_) + {var _vm_=data(s);return [1,data(caml_call1(f,0)),_vm_]}]]]]} function lcons(f,s) {return [0, [0, 0, [2, [246, - function(_vf_) - {var _vg_=data(s);return [0,caml_call1(f,0),_vg_]}]]]]} + function(_vj_) + {var _vk_=data(s);return [0,caml_call1(f,0),_vk_]}]]]]} function lsing(f) - {return [0,[0,0,[2,[246,function(_ve_){return [0,caml_call1(f,0),0]}]]]]} + {return [0,[0,0,[2,[246,function(_vi_){return [0,caml_call1(f,0),0]}]]]]} var sempty=0; function slazy(f) - {return [0,[0,0,[2,[246,function(_vd_){return data(caml_call1(f,0))}]]]]} - function dump(f,s) - {print_string(cst_count); - print_int(count(s)); - print_string(cst_data); - dump_data(f,data(s)); - print_string(cst$6); - return print_newline(0)} + {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); @@ -17802,6 +17310,13 @@ case 2:return print_string(cst_Slazy); case 3:return print_string(cst_Sgen); default:return print_string(cst_Sbuffio)}} + function dump(f,s) + {print_string(cst_count); + print_int(count(s)); + print_string(cst_data); + dump_data(f,data(s)); + print_string(cst$6); + return print_newline(0)} var Stdlib_Stream= [0, @@ -17885,8 +17400,8 @@ 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,_aa_]} - throw [0,Assert_failure,_ab_]}} + throw [0,Assert_failure,_ac_]} + throw [0,Assert_failure,_ad_]}} function add_char(b,c) {var pos=b[2]; if(b[3] <= pos)resize(b,1); @@ -17919,14 +17434,14 @@ b[2] = pos + n | 0; return 0}} function add_substring(b,s,offset,len) - {var _va_=offset < 0?1:0; - if(_va_) - var _vb_=_va_; + {var _ve_=offset < 0?1:0; + if(_ve_) + var _vf_=_ve_; else var - _vc_=len < 0?1:0, - _vb_=_vc_ || ((caml_ml_string_length(s) - len | 0) < offset?1:0); - if(_vb_)invalid_arg(cst_Buffer_add_substring_add_s); + _vg_=len < 0?1:0, + _vf_=_vg_ || ((caml_ml_string_length(s) - len | 0) < offset?1:0); + if(_vf_)invalid_arg(cst_Buffer_add_substring_add_s); var new_position=b[2] + len | 0; if(b[3] < new_position)resize(b,len); caml_blit_string(s,offset,b[1],b[2],len); @@ -17943,13 +17458,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 _u__=len < 0?1:0,_u$_=_u__ || (max_string_length < len?1:0); - if(_u$_)invalid_arg(cst_Buffer_add_channel); + {var _vc_=len < 0?1:0,_vd_=_vc_ || (max_string_length < len?1:0); + if(_vd_)invalid_arg(cst_Buffer_add_channel); if(b[3] < (b[2] + len | 0))resize(b,len); - var already_read=0,ofs=b[2],to_read=len,_u9_=b[1]; + var already_read=0,ofs=b[2],to_read=len,_vb_=b[1]; for(;;) {if(0 !== to_read) - {var r=input(ic,_u9_,ofs,to_read); + {var r=input(ic,_vb_,ofs,to_read); if(0 !== r) {var already_read$0=already_read + r | 0, @@ -17963,7 +17478,7 @@ {b[2] = b[2] + already_read | 0; if(already_read < len)throw End_of_file; return 0} - throw [0,Assert_failure,_ac_]}} + throw [0,Assert_failure,_ae_]}} function output_buffer(oc,b){return output(oc,b[1],0,b[2])} function add_substitute(b,f,s) {var lim$1=caml_ml_string_length(s),previous=32,i$7=0; @@ -18003,15 +17518,15 @@ if(! switch$0) {var i$5=start + 1 | 0,k$2=0; if(40 === opening) - var _u7_=41; + var _u$_=41; else - {if(123 !== opening)throw [0,Assert_failure,_ad_];var _u7_=125} + {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) !== _u7_) + 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} @@ -18033,27 +17548,27 @@ add_char(b,current); var i$11=i$7 + 1 | 0,previous=current,i$7=i$11; continue} - var _u8_=92 === previous?1:0; - return _u8_?add_char(b,previous):_u8_}} + var _va_=92 === previous?1:0; + return _va_?add_char(b,previous):_va_}} function truncate(b,len) {if(0 <= len && ! (b[2] < len)){b[2] = len;return 0} return invalid_arg(cst_Buffer_truncate)} function to_seq$8(b) {function aux(i,param) {if(b[2] <= i)return 0; - var x=caml_bytes_unsafe_get(b[1],i),_u5_=i + 1 | 0; - return [0,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),_u9_=i + 1 | 0; + return [0,x,function(_u__){return aux(_u9_,_u__)}]} + var _u7_=0; + return function(_u8_){return aux(_u7_,_u8_)}} function to_seqi$3(b) {function aux(i,param) {if(b[2] <= i)return 0; - var x=caml_bytes_unsafe_get(b[1],i),_u1_=i + 1 | 0; - return [0,[0,i,x],function(_u2_){return aux(_u1_,_u2_)}]} - var _uZ_=0; - return function(_u0_){return aux(_uZ_,_u0_)}} + var x=caml_bytes_unsafe_get(b[1],i),_u5_=i + 1 | 0; + return [0,[0,i,x],function(_u6_){return aux(_u5_,_u6_)}]} + var _u3_=0; + return function(_u4_){return aux(_u3_,_u4_)}} function add_seq$1(b,seq) - {return iter(function(_uY_){return add_char(b,_uY_)},seq)} + {return iter(function(_u2_){return add_char(b,_u2_)},seq)} function of_seq$6(i){var b=create$2(32);add_seq$1(b,i);return b} function add_int8(b,x) {var new_position=b[2] + 1 | 0; @@ -18145,8 +17660,8 @@ for(;;) {caml_bytes_set (char_set$0,i,char_of_int(caml_string_get(char_set,i) ^ 255)); - var _uX_=i + 1 | 0; - if(31 !== i){var i=_uX_;continue} + var _u1_=i + 1 | 0; + if(31 !== i){var i=_u1_;continue} return caml_string_of_bytes(char_set$0)}} function is_in_char_set(char_set,c) {var str_ind=c >>> 3 | 0,mask=1 << (c & 7); @@ -18179,8 +17694,8 @@ 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],_uW_=[0,ndec];else var _uW_=0; - return [0,[8,_ae_,pad_of_pad_opt(pad_opt$5),_uW_,fmt]]; + 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: @@ -18200,17 +17715,17 @@ {var len=caml_ml_bytes_length(buf[2]), min_len=buf[1] + overhead | 0, - _uU_=len < min_len?1:0; - if(_uU_) + _uY_=len < min_len?1:0; + if(_uY_) {var new_len=max$1(len * 2 | 0,min_len), new_str=caml_create_bytes(new_len); blit(buf[2],0,new_str,0,len); buf[2] = new_str; - var _uV_=0} + var _uZ_=0} else - var _uV_=_uU_; - return _uV_} + var _uZ_=_uY_; + return _uZ_} function buffer_add_char(buf,c) {buffer_check_size(buf,1); caml_bytes_set(buf[2],buf[1],c); @@ -18323,13 +17838,13 @@ 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 _uS_=caml_ml_string_length(str) - 1 | 0,_uR_=0; - if(! (_uS_ < 0)) - {var i=_uR_; + {var _uW_=caml_ml_string_length(str) - 1 | 0,_uV_=0; + if(! (_uW_ < 0)) + {var i=_uV_; for(;;) {bprint_char_literal(buf,caml_string_get(str,i)); - var _uT_=i + 1 | 0; - if(_uS_ !== i){var i=_uT_;continue} + var _uX_=i + 1 | 0; + if(_uW_ !== i){var i=_uX_;continue} break}} return 0} function bprint_fmtty(buf,fmtty) @@ -18610,33 +18125,33 @@ :buffer_add_char(buf,c)}; buffer_add_char(buf,91); var - _uH_= + _uL_= is_in_char_set(char_set,0) ?(buffer_add_char(buf,94),rev_char_set(char_set)) :char_set, is_alone$0= - function(_uM_) + function(_uQ_) {function is_alone(c) {var after=chr(c + 1 | 0), before=chr(c - 1 | 0), - _uN_=is_in_char_set(_uM_,c); - if(_uN_) + _uR_=is_in_char_set(_uQ_,c); + if(_uR_) var - _uO_=is_in_char_set(_uM_,before), - _uP_=_uO_?is_in_char_set(_uM_,after):_uO_, - _uQ_=1 - _uP_; + _uS_=is_in_char_set(_uQ_,before), + _uT_=_uS_?is_in_char_set(_uQ_,after):_uS_, + _uU_=1 - _uT_; else - var _uQ_=_uN_; - return _uQ_} + var _uU_=_uR_; + return _uU_} return is_alone}, - is_alone=is_alone$0(_uH_); + is_alone=is_alone$0(_uL_); if(is_alone(93))buffer_add_char(buf,93); var i=1; b: for(;;) {if(i < 256) - {if(! is_in_char_set(_uH_,char_of_int(i))) + {if(! is_in_char_set(_uL_,char_of_int(i))) {var i$0=i + 1 | 0,i=i$0;continue} var match=char_of_int(i),switcher=match - 45 | 0,switch$0=0; if(48 < switcher >>> 0) @@ -18647,7 +18162,7 @@ switch$0 = 1} if(switch$0) {var i$1=i + 1 | 0; - if(! is_in_char_set(_uH_,char_of_int(i$1))) + if(! is_in_char_set(_uL_,char_of_int(i$1))) {print_char(buf,i$1 - 1 | 0); var i$6=i$1 + 1 | 0,i=i$6; continue} @@ -18662,7 +18177,7 @@ switch$1 = 1; else if(46 < switcher$0 - 1 >>> 0) - {if(! is_in_char_set(_uH_,char_of_int(i$1 + 1 | 0))) + {if(! is_in_char_set(_uL_,char_of_int(i$1 + 1 | 0))) {print_char(buf,i$1 - 1 | 0); var i$5=i$1 + 1 | 0,i=i$5; continue} @@ -18670,14 +18185,14 @@ else switch$1 = 1; if(switch$1) - {if(! is_in_char_set(_uH_,char_of_int(i$1 + 1 | 0))) + {if(! is_in_char_set(_uL_,char_of_int(i$1 + 1 | 0))) {print_char(buf,i$1 - 1 | 0); print_char(buf,i$1); var i$4=i$1 + 2 | 0,i=i$4; continue} var j=i$1 + 2 | 0,i$3=i$1 - 1 | 0,j$0=j; for(;;) - {if(256 !== j$0 && is_in_char_set(_uH_,char_of_int(j$0))) + {if(256 !== j$0 && is_in_char_set(_uL_,char_of_int(j$0))) {var j$1=j$0 + 1 | 0,j$0=j$1;continue} print_char(buf,i$3); print_char(buf,45); @@ -18693,10 +18208,10 @@ buffer_add_char(buf,37); bprint_ignored_flag(buf,ign_flag$0); switch(counter) - {case 0:var _uI_=108;break; - case 1:var _uI_=110;break; - default:var _uI_=78} - buffer_add_char(buf,_uI_); + {case 0:var _uM_=108;break; + case 1:var _uM_=110;break; + default:var _uM_=78} + buffer_add_char(buf,_uM_); var fmt$0=rest$20,ign_flag$0=0; continue; case 22: @@ -18719,16 +18234,16 @@ var rest$23=fmt$0[3], arity=fmt$0[1], - _uK_=int_of_custom_arity(arity), - _uJ_=1; - if(! (_uK_ < 1)) - {var i$8=_uJ_; + _uO_=int_of_custom_arity(arity), + _uN_=1; + if(! (_uO_ < 1)) + {var i$8=_uN_; for(;;) {buffer_add_char(buf,37); bprint_ignored_flag(buf,ign_flag$0); buffer_add_char(buf,63); - var _uL_=i$8 + 1 | 0; - if(_uK_ !== i$8){var i$8=_uL_;continue} + var _uP_=i$8 + 1 | 0; + if(_uO_ !== i$8){var i$8=_uP_;continue} break}} var fmt$0=rest$23,ign_flag$0=0; continue}} @@ -18756,13 +18271,269 @@ case 12:var rest$11=param[1];return [12,symm(rest$11)]; case 13:var rest$12=param[1];return [13,symm(rest$12)]; default:var rest$13=param[1];return [14,symm(rest$13)]}} + function trans(ty1,ty2) + {var switch$0=0; + if(typeof ty1 === "number") + if(typeof ty2 === "number") + return 0; + else + switch(ty2[0]) + {case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:switch$0 = 4;break; + case 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + default:throw [0,Assert_failure,_ah_]} + else + switch(ty1[0]) + {case 0: + var switch$1=0,_us_=ty1[1]; + if(typeof ty2 !== "number") + switch(ty2[0]) + {case 0:var rest2=ty2[1];return [0,trans(_us_,rest2)]; + case 8:switch$0 = 5;switch$1 = 1;break; + case 9:switch$0 = 6;switch$1 = 1;break; + case 10:switch$1 = 1;break; + case 11:switch$0 = 1;switch$1 = 1;break; + case 12:switch$0 = 2;switch$1 = 1;break; + case 13:switch$0 = 3;switch$1 = 1;break; + case 14:switch$0 = 4;switch$1 = 1;break + } + if(! switch$1)switch$0 = 7; + break; + case 1: + var switch$2=0,_ut_=ty1[1]; + if(typeof ty2 !== "number") + switch(ty2[0]) + {case 1:var rest2$0=ty2[1];return [1,trans(_ut_,rest2$0)]; + case 8:switch$0 = 5;switch$2 = 1;break; + case 9:switch$0 = 6;switch$2 = 1;break; + case 10:switch$2 = 1;break; + case 11:switch$0 = 1;switch$2 = 1;break; + case 12:switch$0 = 2;switch$2 = 1;break; + case 13:switch$0 = 3;switch$2 = 1;break; + case 14:switch$0 = 4;switch$2 = 1;break + } + if(! switch$2)switch$0 = 7; + break; + case 2: + var switch$3=0,_uu_=ty1[1]; + if(typeof ty2 === "number") + switch$3 = 1; + else + switch(ty2[0]) + {case 2:var rest2$1=ty2[1];return [2,trans(_uu_,rest2$1)]; + case 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:switch$0 = 4;break; + default:switch$3 = 1} + if(switch$3)switch$0 = 7; + break; + case 3: + var switch$4=0,_uv_=ty1[1]; + if(typeof ty2 === "number") + switch$4 = 1; + else + switch(ty2[0]) + {case 3:var rest2$2=ty2[1];return [3,trans(_uv_,rest2$2)]; + case 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:switch$0 = 4;break; + default:switch$4 = 1} + if(switch$4)switch$0 = 7; + break; + case 4: + var switch$5=0,_uw_=ty1[1]; + if(typeof ty2 === "number") + switch$5 = 1; + else + switch(ty2[0]) + {case 4:var rest2$3=ty2[1];return [4,trans(_uw_,rest2$3)]; + case 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:switch$0 = 4;break; + default:switch$5 = 1} + if(switch$5)switch$0 = 7; + break; + case 5: + var switch$6=0,_ux_=ty1[1]; + if(typeof ty2 === "number") + switch$6 = 1; + else + switch(ty2[0]) + {case 5:var rest2$4=ty2[1];return [5,trans(_ux_,rest2$4)]; + case 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:switch$0 = 4;break; + default:switch$6 = 1} + if(switch$6)switch$0 = 7; + break; + case 6: + var switch$7=0,_uy_=ty1[1]; + if(typeof ty2 === "number") + switch$7 = 1; + else + switch(ty2[0]) + {case 6:var rest2$5=ty2[1];return [6,trans(_uy_,rest2$5)]; + case 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:switch$0 = 4;break; + default:switch$7 = 1} + if(switch$7)switch$0 = 7; + break; + case 7: + var switch$8=0,_uz_=ty1[1]; + if(typeof ty2 === "number") + switch$8 = 1; + else + switch(ty2[0]) + {case 7:var rest2$6=ty2[1];return [7,trans(_uz_,rest2$6)]; + case 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:switch$0 = 4;break; + default:switch$8 = 1} + if(switch$8)switch$0 = 7; + break; + case 8: + var switch$9=0,_uA_=ty1[2],_uB_=ty1[1]; + if(typeof ty2 === "number") + switch$9 = 1; + else + switch(ty2[0]) + {case 8: + var rest2$7=ty2[2],ty2$0=ty2[1],_uC_=trans(_uA_,rest2$7); + return [8,trans(_uB_,ty2$0),_uC_]; + case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:switch$0 = 4;break; + default:switch$9 = 1} + if(switch$9)throw [0,Assert_failure,_aq_]; + break; + case 9: + var switch$10=0,_uD_=ty1[3],_uE_=ty1[2],_uF_=ty1[1]; + if(typeof ty2 === "number") + switch$10 = 1; + else + switch(ty2[0]) + {case 8:switch$0 = 5;break; + case 9: + var + rest2$8=ty2[3], + ty22=ty2[2], + ty21=ty2[1], + ty=trans(symm(_uE_),ty21), + match=fmtty_rel_det(ty), + f4=match[4], + f2=match[2]; + caml_call1(f2,0); + caml_call1(f4,0); + return [9,_uF_,ty22,trans(_uD_,rest2$8)]; + case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:switch$0 = 4;break; + default:switch$10 = 1} + if(switch$10)throw [0,Assert_failure,_ar_]; + break; + case 10: + var _uG_=ty1[1]; + if(typeof ty2 !== "number" && 10 === ty2[0]) + {var rest2$9=ty2[1];return [10,trans(_uG_,rest2$9)]} + throw [0,Assert_failure,_as_]; + case 11: + var switch$11=0,_uH_=ty1[1]; + if(typeof ty2 === "number") + switch$11 = 1; + else + switch(ty2[0]) + {case 10:break; + case 11:var rest2$10=ty2[1];return [11,trans(_uH_,rest2$10)]; + default:switch$11 = 1} + if(switch$11)throw [0,Assert_failure,_at_]; + break; + case 12: + var switch$12=0,_uI_=ty1[1]; + if(typeof ty2 === "number") + switch$12 = 1; + else + switch(ty2[0]) + {case 10:break; + case 11:switch$0 = 1;break; + case 12:var rest2$11=ty2[1];return [12,trans(_uI_,rest2$11)]; + default:switch$12 = 1} + if(switch$12)throw [0,Assert_failure,_au_]; + break; + case 13: + var switch$13=0,_uJ_=ty1[1]; + if(typeof ty2 === "number") + switch$13 = 1; + else + switch(ty2[0]) + {case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:var rest2$12=ty2[1];return [13,trans(_uJ_,rest2$12)]; + default:switch$13 = 1} + if(switch$13)throw [0,Assert_failure,_av_]; + break; + default: + var switch$14=0,_uK_=ty1[1]; + if(typeof ty2 === "number") + switch$14 = 1; + else + switch(ty2[0]) + {case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:var rest2$13=ty2[1];return [14,trans(_uK_,rest2$13)]; + default:switch$14 = 1} + if(switch$14)throw [0,Assert_failure,_aw_]} + switch(switch$0) + {case 0:throw [0,Assert_failure,_ak_]; + case 1:throw [0,Assert_failure,_al_]; + case 2:throw [0,Assert_failure,_am_]; + case 3:throw [0,Assert_failure,_an_]; + case 4:throw [0,Assert_failure,_ao_]; + case 5:throw [0,Assert_failure,_ai_]; + case 6:throw [0,Assert_failure,_aj_]; + default:throw [0,Assert_failure,_ap_]}} function fmtty_rel_det(param) {if(typeof param === "number") {var - _uj_=function(param){return 0}, - _uk_=function(param){return 0}, - _ul_=function(param){return 0}; - return [0,function(param){return 0},_ul_,_uk_,_uj_]} + _t6_=function(param){return 0}, + _t7_=function(param){return 0}, + _t8_=function(param){return 0}; + return [0,function(param){return 0},_t8_,_t7_,_t6_]} else switch(param[0]) {case 0: @@ -18773,8 +18544,8 @@ ed=match[3], af=match[2], fa=match[1], - _um_=function(param){caml_call1(af,0);return 0}; - return [0,function(param){caml_call1(fa,0);return 0},_um_,ed,de]; + _t9_=function(param){caml_call1(af,0);return 0}; + return [0,function(param){caml_call1(fa,0);return 0},_t9_,ed,de]; case 1: var rest$0=param[1], @@ -18783,10 +18554,10 @@ ed$0=match$0[3], af$0=match$0[2], fa$0=match$0[1], - _un_=function(param){caml_call1(af$0,0);return 0}; + _t__=function(param){caml_call1(af$0,0);return 0}; return [0, function(param){caml_call1(fa$0,0);return 0}, - _un_, + _t__, ed$0, de$0]; case 2: @@ -18797,10 +18568,10 @@ ed$1=match$1[3], af$1=match$1[2], fa$1=match$1[1], - _uo_=function(param){caml_call1(af$1,0);return 0}; + _t$_=function(param){caml_call1(af$1,0);return 0}; return [0, function(param){caml_call1(fa$1,0);return 0}, - _uo_, + _t$_, ed$1, de$1]; case 3: @@ -18811,10 +18582,10 @@ ed$2=match$2[3], af$2=match$2[2], fa$2=match$2[1], - _up_=function(param){caml_call1(af$2,0);return 0}; + _ua_=function(param){caml_call1(af$2,0);return 0}; return [0, function(param){caml_call1(fa$2,0);return 0}, - _up_, + _ua_, ed$2, de$2]; case 4: @@ -18825,10 +18596,10 @@ ed$3=match$3[3], af$3=match$3[2], fa$3=match$3[1], - _uq_=function(param){caml_call1(af$3,0);return 0}; + _ub_=function(param){caml_call1(af$3,0);return 0}; return [0, function(param){caml_call1(fa$3,0);return 0}, - _uq_, + _ub_, ed$3, de$3]; case 5: @@ -18839,10 +18610,10 @@ ed$4=match$4[3], af$4=match$4[2], fa$4=match$4[1], - _ur_=function(param){caml_call1(af$4,0);return 0}; + _uc_=function(param){caml_call1(af$4,0);return 0}; return [0, function(param){caml_call1(fa$4,0);return 0}, - _ur_, + _uc_, ed$4, de$4]; case 6: @@ -18853,10 +18624,10 @@ ed$5=match$5[3], af$5=match$5[2], fa$5=match$5[1], - _us_=function(param){caml_call1(af$5,0);return 0}; + _ud_=function(param){caml_call1(af$5,0);return 0}; return [0, function(param){caml_call1(fa$5,0);return 0}, - _us_, + _ud_, ed$5, de$5]; case 7: @@ -18867,10 +18638,10 @@ ed$6=match$6[3], af$6=match$6[2], fa$6=match$6[1], - _ut_=function(param){caml_call1(af$6,0);return 0}; + _ue_=function(param){caml_call1(af$6,0);return 0}; return [0, function(param){caml_call1(fa$6,0);return 0}, - _ut_, + _ue_, ed$6, de$6]; case 8: @@ -18881,10 +18652,10 @@ ed$7=match$7[3], af$7=match$7[2], fa$7=match$7[1], - _uu_=function(param){caml_call1(af$7,0);return 0}; + _uf_=function(param){caml_call1(af$7,0);return 0}; return [0, function(param){caml_call1(fa$7,0);return 0}, - _uu_, + _uf_, ed$7, de$7]; case 9: @@ -18903,15 +18674,15 @@ dj=match$9[3], ga=match$9[2], ag=match$9[1], - _uv_=function(param){caml_call1(jd,0);caml_call1(de$8,0);return 0}, - _uw_=function(param){caml_call1(ed$8,0);caml_call1(dj,0);return 0}, - _ux_=function(param){caml_call1(ga,0);caml_call1(af$8,0);return 0}; + _ug_=function(param){caml_call1(jd,0);caml_call1(de$8,0);return 0}, + _uh_=function(param){caml_call1(ed$8,0);caml_call1(dj,0);return 0}, + _ui_=function(param){caml_call1(ga,0);caml_call1(af$8,0);return 0}; return [0, function(param) {caml_call1(fa$8,0);caml_call1(ag,0);return 0}, - _ux_, - _uw_, - _uv_]; + _ui_, + _uh_, + _ug_]; case 10: var rest$9=param[1], @@ -18920,10 +18691,10 @@ ed$9=match$10[3], af$9=match$10[2], fa$9=match$10[1], - _uy_=function(param){caml_call1(af$9,0);return 0}; + _uj_=function(param){caml_call1(af$9,0);return 0}; return [0, function(param){caml_call1(fa$9,0);return 0}, - _uy_, + _uj_, ed$9, de$9]; case 11: @@ -18934,10 +18705,10 @@ ed$10=match$11[3], af$10=match$11[2], fa$10=match$11[1], - _uz_=function(param){caml_call1(af$10,0);return 0}; + _uk_=function(param){caml_call1(af$10,0);return 0}; return [0, function(param){caml_call1(fa$10,0);return 0}, - _uz_, + _uk_, ed$10, de$10]; case 12: @@ -18948,10 +18719,10 @@ ed$11=match$12[3], af$11=match$12[2], fa$11=match$12[1], - _uA_=function(param){caml_call1(af$11,0);return 0}; + _ul_=function(param){caml_call1(af$11,0);return 0}; return [0, function(param){caml_call1(fa$11,0);return 0}, - _uA_, + _ul_, ed$11, de$11]; case 13: @@ -18962,14 +18733,14 @@ ed$12=match$13[3], af$12=match$13[2], fa$12=match$13[1], - _uB_=function(param){caml_call1(de$12,0);return 0}, - _uC_=function(param){caml_call1(ed$12,0);return 0}, - _uD_=function(param){caml_call1(af$12,0);return 0}; + _um_=function(param){caml_call1(de$12,0);return 0}, + _un_=function(param){caml_call1(ed$12,0);return 0}, + _uo_=function(param){caml_call1(af$12,0);return 0}; return [0, function(param){caml_call1(fa$12,0);return 0}, - _uD_, - _uC_, - _uB_]; + _uo_, + _un_, + _um_]; default: var rest$13=param[1], @@ -18978,270 +18749,16 @@ ed$13=match$14[3], af$13=match$14[2], fa$13=match$14[1], - _uE_=function(param){caml_call1(de$13,0);return 0}, - _uF_=function(param){caml_call1(ed$13,0);return 0}, - _uG_=function(param){caml_call1(af$13,0);return 0}; + _up_=function(param){caml_call1(de$13,0);return 0}, + _uq_=function(param){caml_call1(ed$13,0);return 0}, + _ur_=function(param){caml_call1(af$13,0);return 0}; return [0, function(param){caml_call1(fa$13,0);return 0}, - _uG_, - _uF_, - _uE_]}} - 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,_af_]} - else - switch(ty1[0]) - {case 0: - var switch$1=0,_t2_=ty1[1]; - if(typeof ty2 !== "number") - switch(ty2[0]) - {case 0:var rest2=ty2[1];return [0,trans(_t2_,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,_t3_=ty1[1]; - if(typeof ty2 !== "number") - switch(ty2[0]) - {case 1:var rest2$0=ty2[1];return [1,trans(_t3_,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,_t4_=ty1[1]; - if(typeof ty2 === "number") - switch$3 = 1; - else - switch(ty2[0]) - {case 2:var rest2$1=ty2[1];return [2,trans(_t4_,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,_t5_=ty1[1]; - if(typeof ty2 === "number") - switch$4 = 1; - else - switch(ty2[0]) - {case 3:var rest2$2=ty2[1];return [3,trans(_t5_,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,_t6_=ty1[1]; - if(typeof ty2 === "number") - switch$5 = 1; - else - switch(ty2[0]) - {case 4:var rest2$3=ty2[1];return [4,trans(_t6_,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,_t7_=ty1[1]; - if(typeof ty2 === "number") - switch$6 = 1; - else - switch(ty2[0]) - {case 5:var rest2$4=ty2[1];return [5,trans(_t7_,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,_t8_=ty1[1]; - if(typeof ty2 === "number") - switch$7 = 1; - else - switch(ty2[0]) - {case 6:var rest2$5=ty2[1];return [6,trans(_t8_,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,_t9_=ty1[1]; - if(typeof ty2 === "number") - switch$8 = 1; - else - switch(ty2[0]) - {case 7:var rest2$6=ty2[1];return [7,trans(_t9_,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,_t__=ty1[2],_t$_=ty1[1]; - if(typeof ty2 === "number") - switch$9 = 1; - else - switch(ty2[0]) - {case 8: - var rest2$7=ty2[2],ty2$0=ty2[1],_ua_=trans(_t__,rest2$7); - return [8,trans(_t$_,ty2$0),_ua_]; - 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,_ub_=ty1[3],_uc_=ty1[2],_ud_=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(_uc_),ty21), - match=fmtty_rel_det(ty), - f4=match[4], - f2=match[2]; - caml_call1(f2,0); - caml_call1(f4,0); - return [9,_ud_,ty22,trans(_ub_,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 _ue_=ty1[1]; - if(typeof ty2 !== "number" && 10 === ty2[0]) - {var rest2$9=ty2[1];return [10,trans(_ue_,rest2$9)]} - throw [0,Assert_failure,_aq_]; - case 11: - var switch$11=0,_uf_=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(_uf_,rest2$10)]; - default:switch$11 = 1} - if(switch$11)throw [0,Assert_failure,_ar_]; - break; - case 12: - var switch$12=0,_ug_=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(_ug_,rest2$11)]; - default:switch$12 = 1} - if(switch$12)throw [0,Assert_failure,_as_]; - break; - case 13: - var switch$13=0,_uh_=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(_uh_,rest2$12)]; - default:switch$13 = 1} - if(switch$13)throw [0,Assert_failure,_at_]; - break; - default: - var switch$14=0,_ui_=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(_ui_,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_]}} + _ur_, + _uq_, + _up_]}} + function fmtty_of_precision_fmtty(prec,fmtty) + {return typeof prec === "number"?prec?[2,fmtty]:fmtty:fmtty} function fmtty_of_padding_fmtty(pad,fmtty) {return typeof pad === "number"?fmtty:0 === pad[0]?fmtty:[2,fmtty]} function fmtty_of_custom(arity,fmtty) @@ -19322,15 +18839,15 @@ var rest$13=fmtty$0[2], fmting_gen=fmtty$0[1], - _t0_=fmtty_of_fmt(rest$13); + _t4_=fmtty_of_fmt(rest$13); if(0 === fmting_gen[0]) - var match=fmting_gen[1],fmt=match[1],_t1_=fmtty_of_fmt(fmt); + var match=fmting_gen[1],fmt=match[1],_t5_=fmtty_of_fmt(fmt); else var match$0=fmting_gen[1], fmt$0=match$0[1], - _t1_=fmtty_of_fmt(fmt$0); - return concat_fmtty(_t1_,_t0_); + _t5_=fmtty_of_fmt(fmt$0); + return concat_fmtty(_t5_,_t4_); case 19:var rest$14=fmtty$0[1];return [13,fmtty_of_fmt(rest$14)]; case 20:var rest$15=fmtty$0[3];return [1,fmtty_of_fmt(rest$15)]; case 21:var rest$16=fmtty$0[2];return [2,fmtty_of_fmt(rest$16)]; @@ -19362,8 +18879,6 @@ default: var rest$19=fmtty$0[3],arity=fmtty$0[1]; 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)]; @@ -19380,21 +18895,213 @@ {var match=type_padding(pad,fmtty); if(typeof prec === "number") {if(prec) - {var _tZ_=match[2]; - if(typeof _tZ_ !== "number" && 2 === _tZ_[0]) - {var rest=_tZ_[1],pad$0=match[1];return [0,pad$0,1,rest]} + {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_format(fmt,fmtty) - {var _tY_=type_format_gen(fmt,fmtty); - if(typeof _tY_[2] === "number"){var fmt$0=_tY_[1];return fmt$0} + 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_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_gen(fmt,fmtty) {if(typeof fmt === "number") return [0,0,fmtty]; @@ -19425,30 +19132,30 @@ fmt_rest$1=fmt[2], pad=fmt[1], match$1=type_padding(pad,fmtty), - _tH_=match$1[2], - _tG_=match$1[1]; - if(typeof _tH_ !== "number" && 1 === _tH_[0]) + _tK_=match$1[2], + _tJ_=match$1[1]; + if(typeof _tK_ !== "number" && 1 === _tK_[0]) {var - fmtty_rest$1=_tH_[1], + 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,_tG_,fmt$2],fmtty$2]} + 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), - _tJ_=match$3[2], - _tI_=match$3[1]; - if(typeof _tJ_ !== "number" && 1 === _tJ_[0]) + _tM_=match$3[2], + _tL_=match$3[1]; + if(typeof _tM_ !== "number" && 1 === _tM_[0]) {var - fmtty_rest$2=_tJ_[1], + 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,_tI_,fmt$3],fmtty$3]} + return [0,[3,_tL_,fmt$3],fmtty$3]} throw Type_mismatch; case 4: var @@ -19457,16 +19164,16 @@ pad$1=fmt[2], iconv=fmt[1], match$5=type_padprec(pad$1,prec,fmtty), - _tL_=match$5[3], - _tK_=match$5[1]; - if(typeof _tL_ !== "number" && 2 === _tL_[0]) + _tO_=match$5[3], + _tN_=match$5[1]; + if(typeof _tO_ !== "number" && 2 === _tO_[0]) {var - fmtty_rest$3=_tL_[1], + 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,_tK_,prec$0,fmt$4],fmtty$4]} + return [0,[4,iconv,_tN_,prec$0,fmt$4],fmtty$4]} throw Type_mismatch; case 5: var @@ -19475,16 +19182,16 @@ pad$2=fmt[2], iconv$0=fmt[1], match$7=type_padprec(pad$2,prec$1,fmtty), - _tN_=match$7[3], - _tM_=match$7[1]; - if(typeof _tN_ !== "number" && 3 === _tN_[0]) + _tQ_=match$7[3], + _tP_=match$7[1]; + if(typeof _tQ_ !== "number" && 3 === _tQ_[0]) {var - fmtty_rest$4=_tN_[1], + 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,_tM_,prec$2,fmt$5],fmtty$5]} + return [0,[5,iconv$0,_tP_,prec$2,fmt$5],fmtty$5]} throw Type_mismatch; case 6: var @@ -19493,16 +19200,16 @@ pad$3=fmt[2], iconv$1=fmt[1], match$9=type_padprec(pad$3,prec$3,fmtty), - _tP_=match$9[3], - _tO_=match$9[1]; - if(typeof _tP_ !== "number" && 4 === _tP_[0]) + _tS_=match$9[3], + _tR_=match$9[1]; + if(typeof _tS_ !== "number" && 4 === _tS_[0]) {var - fmtty_rest$5=_tP_[1], + 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,_tO_,prec$4,fmt$6],fmtty$6]} + return [0,[6,iconv$1,_tR_,prec$4,fmt$6],fmtty$6]} throw Type_mismatch; case 7: var @@ -19511,16 +19218,16 @@ pad$4=fmt[2], iconv$2=fmt[1], match$11=type_padprec(pad$4,prec$5,fmtty), - _tR_=match$11[3], - _tQ_=match$11[1]; - if(typeof _tR_ !== "number" && 5 === _tR_[0]) + _tU_=match$11[3], + _tT_=match$11[1]; + if(typeof _tU_ !== "number" && 5 === _tU_[0]) {var - fmtty_rest$6=_tR_[1], + 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,_tQ_,prec$6,fmt$7],fmtty$7]} + return [0,[7,iconv$2,_tT_,prec$6,fmt$7],fmtty$7]} throw Type_mismatch; case 8: var @@ -19529,31 +19236,31 @@ pad$5=fmt[2], fconv=fmt[1], match$13=type_padprec(pad$5,prec$7,fmtty), - _tT_=match$13[3], - _tS_=match$13[1]; - if(typeof _tT_ !== "number" && 6 === _tT_[0]) + _tW_=match$13[3], + _tV_=match$13[1]; + if(typeof _tW_ !== "number" && 6 === _tW_[0]) {var - fmtty_rest$7=_tT_[1], + 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,_tS_,prec$8,fmt$8],fmtty$8]} + 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), - _tV_=match$15[2], - _tU_=match$15[1]; - if(typeof _tV_ !== "number" && 7 === _tV_[0]) + _tY_=match$15[2], + _tX_=match$15[1]; + if(typeof _tY_ !== "number" && 7 === _tY_[0]) {var - fmtty_rest$8=_tV_[1], + 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,_tU_,fmt$9],fmtty$9]} + return [0,[9,_tX_,fmt$9],fmtty$9]} throw Type_mismatch; case 10: var @@ -19602,8 +19309,8 @@ fmt_rest$13=fmt[3], sub_fmtty$1=fmt[2], pad_opt$0=fmt[1], - _tW_=[0,erase_rel(sub_fmtty1)]; - if(caml_notequal([0,erase_rel(sub_fmtty$1)],_tW_)) + _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)), @@ -19731,214 +19438,22 @@ var sub_fmtty$3=ign[2], pad_opt$2=ign[1], - _tX_=type_ignored_format_substituti(sub_fmtty$3,rest,fmtty), - match$35=_tX_[2], + _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=_tX_[1]; + sub_fmtty$4=_t0_[1]; return [0,[23,[9,pad_opt$2,sub_fmtty$4],fmt$22],fmtty$22]; case 10:return type_ignored_param_one(ign,rest,fmtty); default:return type_ignored_param_one(ign,rest,fmtty)} } throw Type_mismatch} - function type_ignored_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], - _tE_=[0,erase_rel(sub1_fmtty)]; - if(caml_notequal([0,erase_rel(sub1_fmtty$0)],_tE_)) - throw Type_mismatch; - var _tF_=[0,erase_rel(sub2_fmtty$1)]; - if(caml_notequal([0,erase_rel(sub2_fmtty$2)],_tF_)) - 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 - } + function type_ignored_param_one(ign,fmt,fmtty) + {var match=type_format_gen(fmt,fmtty),fmtty$0=match[2],fmt$0=match[1]; + return [0,[23,ign,fmt$0],fmtty$0]} + function type_format(fmt,fmtty) + {var _tI_=type_format_gen(fmt,fmtty); + if(typeof _tI_[2] === "number"){var fmt$0=_tI_[1];return fmt$0} throw Type_mismatch} function recast(fmt,fmtty){return type_format(fmt,erase_rel(symm(fmtty)))} function fix_padding(padty,width,str) @@ -19947,7 +19462,7 @@ padty$0=0 <= width?padty:0, width$0=abs(width); if(width$0 <= len)return str; - var _tD_=2 === padty$0?48:32,res=make$0(width$0,_tD_); + var _tH_=2 === padty$0?48:32,res=make$0(width$0,_tH_); switch(padty$0) {case 0:blit$0(str,0,res,0,len);break; case 1:blit$0(str,0,res,width$0 - len | 0,len);break; @@ -20057,7 +19572,7 @@ function format_of_fconv(fconv,prec) {var prec$0=abs(prec), - symb=char_of_fconv(_av_,fconv), + symb=char_of_fconv(_ax_,fconv), buf=buffer_create(16); buffer_add_char(buf,37); bprint_fconv_flag(buf,fconv); @@ -20067,14 +19582,14 @@ return buffer_contents(buf)} function transform_int_alt(iconv,s) {if(13 <= iconv) - {var n=[0,0],_ty_=caml_ml_string_length(s) - 1 | 0,_tx_=0; - if(! (_ty_ < 0)) - {var i$0=_tx_; + {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 _tC_=i$0 + 1 | 0; - if(_ty_ !== i$0){var i$0=_tC_;continue} + var _tG_=i$0 + 1 | 0; + if(_tC_ !== i$0){var i$0=_tG_;continue} break}} var digits=n[1], @@ -20084,93 +19599,93 @@ 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], - _tA_=caml_ml_string_length(s) - 1 | 0, - _tz_=0; - if(! (_tA_ < 0)) - {var i=_tz_; + _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 _tB_=i + 1 | 0; - if(_tA_ !== i){var i=_tB_;continue} + var _tF_=i + 1 | 0; + if(_tE_ !== i){var i=_tF_;continue} break}} return caml_string_of_bytes(buf)} return s} function convert_int(iconv,n) {switch(iconv) - {case 1:var _tw_=cst_d$3;break; - case 2:var _tw_=cst_d$4;break; - case 4:var _tw_=cst_i$1;break; - case 5:var _tw_=cst_i$2;break; - case 6:var _tw_=cst_x;break; - case 7:var _tw_=cst_x$0;break; - case 8:var _tw_=cst_X$0;break; - case 9:var _tw_=cst_X$1;break; - case 10:var _tw_=cst_o;break; - case 11:var _tw_=cst_o$0;break; + {case 1:var _tA_=cst_d$3;break; + case 2:var _tA_=cst_d$4;break; + case 4:var _tA_=cst_i$1;break; + case 5:var _tA_=cst_i$2;break; + case 6:var _tA_=cst_x;break; + case 7:var _tA_=cst_x$0;break; + case 8:var _tA_=cst_X$0;break; + case 9:var _tA_=cst_X$1;break; + case 10:var _tA_=cst_o;break; + case 11:var _tA_=cst_o$0;break; case 0: - case 13:var _tw_=cst_d$2;break; + case 13:var _tA_=cst_d$2;break; case 3: - case 14:var _tw_=cst_i$0;break; - default:var _tw_=cst_u} - return transform_int_alt(iconv,caml_format_int(_tw_,n))} + case 14:var _tA_=cst_i$0;break; + default:var _tA_=cst_u} + return transform_int_alt(iconv,caml_format_int(_tA_,n))} function convert_int32(iconv,n) {switch(iconv) - {case 1:var _tv_=cst_ld$0;break; - case 2:var _tv_=cst_ld$1;break; - case 4:var _tv_=cst_li$1;break; - case 5:var _tv_=cst_li$2;break; - case 6:var _tv_=cst_lx;break; - case 7:var _tv_=cst_lx$0;break; - case 8:var _tv_=cst_lX;break; - case 9:var _tv_=cst_lX$0;break; - case 10:var _tv_=cst_lo;break; - case 11:var _tv_=cst_lo$0;break; + {case 1:var _tz_=cst_ld$0;break; + case 2:var _tz_=cst_ld$1;break; + case 4:var _tz_=cst_li$1;break; + case 5:var _tz_=cst_li$2;break; + case 6:var _tz_=cst_lx;break; + case 7:var _tz_=cst_lx$0;break; + case 8:var _tz_=cst_lX;break; + case 9:var _tz_=cst_lX$0;break; + case 10:var _tz_=cst_lo;break; + case 11:var _tz_=cst_lo$0;break; case 0: - case 13:var _tv_=cst_ld;break; + case 13:var _tz_=cst_ld;break; case 3: - case 14:var _tv_=cst_li$0;break; - default:var _tv_=cst_lu} - return transform_int_alt(iconv,caml_format_int(_tv_,n))} + case 14:var _tz_=cst_li$0;break; + default:var _tz_=cst_lu} + return transform_int_alt(iconv,caml_format_int(_tz_,n))} function convert_nativeint(iconv,n) {switch(iconv) - {case 1:var _tu_=cst_nd$0;break; - case 2:var _tu_=cst_nd$1;break; - case 4:var _tu_=cst_ni$1;break; - case 5:var _tu_=cst_ni$2;break; - case 6:var _tu_=cst_nx;break; - case 7:var _tu_=cst_nx$0;break; - case 8:var _tu_=cst_nX;break; - case 9:var _tu_=cst_nX$0;break; - case 10:var _tu_=cst_no;break; - case 11:var _tu_=cst_no$0;break; + {case 1:var _ty_=cst_nd$0;break; + case 2:var _ty_=cst_nd$1;break; + case 4:var _ty_=cst_ni$1;break; + case 5:var _ty_=cst_ni$2;break; + case 6:var _ty_=cst_nx;break; + case 7:var _ty_=cst_nx$0;break; + case 8:var _ty_=cst_nX;break; + case 9:var _ty_=cst_nX$0;break; + case 10:var _ty_=cst_no;break; + case 11:var _ty_=cst_no$0;break; case 0: - case 13:var _tu_=cst_nd;break; + case 13:var _ty_=cst_nd;break; case 3: - case 14:var _tu_=cst_ni$0;break; - default:var _tu_=cst_nu} - return transform_int_alt(iconv,caml_format_int(_tu_,n))} + case 14:var _ty_=cst_ni$0;break; + default:var _ty_=cst_nu} + return transform_int_alt(iconv,caml_format_int(_ty_,n))} function convert_int64(iconv,n) {switch(iconv) - {case 1:var _tt_=cst_Ld$0;break; - case 2:var _tt_=cst_Ld$1;break; - case 4:var _tt_=cst_Li$1;break; - case 5:var _tt_=cst_Li$2;break; - case 6:var _tt_=cst_Lx;break; - case 7:var _tt_=cst_Lx$0;break; - case 8:var _tt_=cst_LX;break; - case 9:var _tt_=cst_LX$0;break; - case 10:var _tt_=cst_Lo;break; - case 11:var _tt_=cst_Lo$0;break; + {case 1:var _tx_=cst_Ld$0;break; + case 2:var _tx_=cst_Ld$1;break; + case 4:var _tx_=cst_Li$1;break; + case 5:var _tx_=cst_Li$2;break; + case 6:var _tx_=cst_Lx;break; + case 7:var _tx_=cst_Lx$0;break; + case 8:var _tx_=cst_LX;break; + case 9:var _tx_=cst_LX$0;break; + case 10:var _tx_=cst_Lo;break; + case 11:var _tx_=cst_Lo$0;break; case 0: - case 13:var _tt_=cst_Ld;break; + case 13:var _tx_=cst_Ld;break; case 3: - case 14:var _tt_=cst_Li$0;break; - default:var _tt_=cst_Lu} - return transform_int_alt(iconv,caml_int64_format(_tt_,n))} + case 14:var _tx_=cst_Li$0;break; + default:var _tx_=cst_Lu} + return transform_int_alt(iconv,caml_int64_format(_tx_,n))} function convert_float(fconv,prec,x) {function hex(param) {switch(fconv[1]) @@ -20191,17 +19706,17 @@ i=0; for(;;) {if(i === len) - var _tr_=0; + var _tv_=0; else - {var match=caml_string_get(str,i),_tq_=match - 46 | 0,switch$0=0; - if(23 < _tq_ >>> 0) - {if(55 === _tq_)switch$0 = 1} + {var match=caml_string_get(str,i),_tu_=match - 46 | 0,switch$0=0; + if(23 < _tu_ >>> 0) + {if(55 === _tu_)switch$0 = 1} else - if(21 < _tq_ - 1 >>> 0)switch$0 = 1; + if(21 < _tu_ - 1 >>> 0)switch$0 = 1; if(! switch$0){var i$0=i + 1 | 0,i=i$0;continue} - var _tr_=1} - var _ts_=_tr_?str:cat(str,cst$29); - return caml_special_val(_ts_)} + var _tv_=1} + var _tw_=_tv_?str:cat(str,cst$29); + return caml_special_val(_tw_)} case 6:return hex(0); case 7:return uppercase_ascii$1(hex(0)); case 8:return caml_special_val(hex(0)); @@ -20210,75 +19725,6 @@ {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)}} - else - {if(0 === pad[0]) - {var _tn_=pad[2],_to_=pad[1]; - if(typeof prec === "number") - return prec - ?function(p,x) - {var - str= - fix_padding - (_to_,_tn_,fix_int_precision(p,caml_call2(trans,iconv,x))); - return make_printf(k,[4,acc,str],fmt)} - :function(x) - {var str=fix_padding(_to_,_tn_,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 - (_to_,_tn_,fix_int_precision(p$0,caml_call2(trans,iconv,x))); - return make_printf(k,[4,acc,str],fmt)}} - var _tp_=pad[1]; - if(typeof prec === "number") - return prec - ?function(w,p,x) - {var - str= - fix_padding - (_tp_,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(_tp_,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 - (_tp_,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)}; - 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_printf$0(counter,k,acc,fmt) {var k$0=k,acc$0=acc,fmt$0=fmt; for(;;) @@ -20353,35 +19799,35 @@ return make_printf(k$0,[4,acc$0,str],rest$7)}} else {if(0 === pad$5[0]) - {var _tk_=pad$5[2],_tl_=pad$5[1]; + {var _tr_=pad$5[2],_ts_=pad$5[1]; if(typeof prec$3 === "number") return prec$3 ?function(p,x) - {var str=fix_padding(_tl_,_tk_,convert_float(fconv,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(_tl_,_tk_,str); + 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(_tl_,_tk_,convert_float(fconv,p$0,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 _tm_=pad$5[1]; + var _tt_=pad$5[1]; if(typeof prec$3 === "number") return prec$3 ?function(w,p,x) - {var str=fix_padding(_tm_,w,convert_float(fconv,p,x)); + {var str=fix_padding(_tt_,w,convert_float(fconv,p,x)); return make_printf(k$0,[4,acc$0,str],rest$7)} :function(w,x) {var str=convert_float(fconv,default_float_precision(fconv),x), - str$0=fix_padding(_tm_,w,str); + str$0=fix_padding(_tt_,w,str); return make_printf(k$0,[4,acc$0,str$0],rest$7)}; var p$1=prec$3[1]; return function(w,x) - {var str=fix_padding(_tm_,w,convert_float(fconv,p$1,x)); + {var str=fix_padding(_tt_,w,convert_float(fconv,p$1,x)); return make_printf(k$0,[4,acc$0,str],rest$7)}} case 9: var rest$8=fmt$0[2],pad$6=fmt$0[1]; @@ -20436,11 +19882,11 @@ fmt$0=fmt$4; continue; case 18: - var _ti_=fmt$0[1]; - if(0 === _ti_[0]) + var _tp_=fmt$0[1]; + if(0 === _tp_[0]) {var rest$13=fmt$0[2], - match=_ti_[1], + match=_tp_[1], fmt$5=match[1], k$3= function(acc,k,rest) @@ -20454,7 +19900,7 @@ continue} var rest$14=fmt$0[2], - match$0=_ti_[1], + match$0=_tp_[1], fmt$6=match$0[1], k$4= function(acc,k,rest) @@ -20465,7 +19911,7 @@ acc$0=0, fmt$0=fmt$6; continue; - case 19:throw [0,Assert_failure,_aw_]; + case 19:throw [0,Assert_failure,_ay_]; case 20: var rest$15=fmt$0[3],new_acc=[8,acc$0,cst_Printf_bad_conversion]; return function(param){return make_printf(k$0,new_acc,rest$15)}; @@ -20490,12 +19936,12 @@ rest$19=fmt$0[3], f=fmt$0[2], arity=fmt$0[1], - _tj_=caml_call1(f,0); + _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,_tj_)} + 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,_tj_])}} + (make_custom$0,[0,k$0,acc$0,rest$19,arity,_tq_])}} function make_ignored_param$0(counter,k,acc,ign,fmt) {if(typeof ign === "number") switch(ign) @@ -20509,7 +19955,7 @@ {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,_ax_]; + case 2:throw [0,Assert_failure,_az_]; default: if(counter < 50) {var counter$2=counter + 1 | 0; @@ -20623,7 +20069,7 @@ {return make_from_fmtty(k,acc,concat_fmtty(ty,rest$8),fmt)}; case 10: var rest$9=fmtty[1]; - return function(param,_th_) + return function(param,_to_) {return make_from_fmtty(k,acc,rest$9,fmt)}; case 11: var rest$10=fmtty[1]; @@ -20631,24 +20077,24 @@ 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,_ay_]; - default:throw [0,Assert_failure,_az_]}} + case 13:throw [0,Assert_failure,_aA_]; + default:throw [0,Assert_failure,_aB_]}} function make_invalid_arg(counter,k,acc,fmt) - {var _tg_=[8,acc,cst_Printf_bad_conversion$0]; + {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,_tg_,fmt)} - return caml_trampoline_return(make_printf$0,[0,k,_tg_,fmt])} + return make_printf$0(counter$0,k,_tn_,fmt)} + return caml_trampoline_return(make_printf$0,[0,k,_tn_,fmt])} function make_custom$0(counter,k,acc,rest,arity,f) {if(arity) {var arity$0=arity[1]; return function(x) {return make_custom(k,acc,rest,arity$0,caml_call1(f,x))}} - var _tf_=[4,acc,f]; + var _tm_=[4,acc,f]; if(counter < 50) {var counter$0=counter + 1 | 0; - return make_printf$0(counter$0,k,_tf_,rest)} - return caml_trampoline_return(make_printf$0,[0,k,_tf_,rest])} + return make_printf$0(counter$0,k,_tm_,rest)} + return caml_trampoline_return(make_printf$0,[0,k,_tm_,rest])} function make_printf(k,acc,fmt) {return caml_trampoline(make_printf$0(0,k,acc,fmt))} function make_ignored_param(k,acc,ign,fmt) @@ -20657,37 +20103,75 @@ {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 fn_of_padding_precision(k,o,fmt,pad,prec) + function make_padding(k,acc,fmt,pad,trans) {if(typeof pad === "number") - {if(typeof prec === "number") - {if(prec) - {var _sN_=make_iprintf(k,o,fmt),_sO_=function(_s5_){return _sN_}; - return function(_s4_){return _sO_}} - var _sP_=make_iprintf(k,o,fmt); - return function(_s3_){return _sP_}} - var _sQ_=make_iprintf(k,o,fmt); - return function(_s2_){return _sQ_}} + return function(x) + {var new_acc=[4,acc,caml_call1(trans,x)]; + return make_printf(k,new_acc,fmt)}; else {if(0 === pad[0]) - {if(typeof prec === "number") - {if(prec) - {var _sR_=make_iprintf(k,o,fmt),_sS_=function(_te_){return _sR_}; - return function(_td_){return _sS_}} - var _sT_=make_iprintf(k,o,fmt); - return function(_tc_){return _sT_}} - var _sU_=make_iprintf(k,o,fmt); - return function(_tb_){return _sU_}} - if(typeof prec === "number") - {if(prec) + {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 - _sV_=make_iprintf(k,o,fmt), - _sW_=function(_ta_){return _sV_}, - _sX_=function(_s$_){return _sW_}; - return function(_s__){return _sX_}} - var _sY_=make_iprintf(k,o,fmt),_sZ_=function(_s9_){return _sY_}; - return function(_s8_){return _sZ_}} - var _s0_=make_iprintf(k,o,fmt),_s1_=function(_s7_){return _s0_}; - return function(_s6_){return _s1_}}} + str= + fix_padding + (_tk_,_tj_,fix_int_precision(p$0,caml_call2(trans,iconv,x))); + return make_printf(k,[4,acc,str],fmt)}} + var _tl_=pad[1]; + if(typeof prec === "number") + return prec + ?function(w,p,x) + {var + str= + fix_padding + (_tl_,w,fix_int_precision(p,caml_call2(trans,iconv,x))); + return make_printf(k,[4,acc,str],fmt)} + :function(w,x) + {var str=fix_padding(_tl_,w,caml_call2(trans,iconv,x)); + return make_printf(k,[4,acc,str],fmt)}; + var p$1=prec[1]; + return function(w,x) + {var + str= + fix_padding + (_tl_,w,fix_int_precision(p$1,caml_call2(trans,iconv,x))); + return make_printf(k,[4,acc,str],fmt)}}} function make_iprintf$0(counter,k,o,fmt) {var k$0=k,fmt$0=fmt; for(;;) @@ -20696,39 +20180,39 @@ else switch(fmt$0[0]) {case 0: - var rest=fmt$0[1],_r4_=make_iprintf(k$0,o,rest); - return function(_sM_){return _r4_}; + var rest=fmt$0[1],_sA_=make_iprintf(k$0,o,rest); + return function(_ti_){return _sA_}; case 1: - var rest$0=fmt$0[1],_r5_=make_iprintf(k$0,o,rest$0); - return function(_sL_){return _r5_}; + var rest$0=fmt$0[1],_sB_=make_iprintf(k$0,o,rest$0); + return function(_th_){return _sB_}; case 2: - var _r6_=fmt$0[1]; - if(typeof _r6_ === "number") - {var rest$1=fmt$0[2],_r7_=make_iprintf(k$0,o,rest$1); - return function(_sH_){return _r7_}} + 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 === _r6_[0]) - {var rest$2=fmt$0[2],_r8_=make_iprintf(k$0,o,rest$2); - return function(_sK_){return _r8_}} + {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], - _r9_=make_iprintf(k$0,o,rest$3), - _r__=function(_sJ_){return _r9_}; - return function(_sI_){return _r__}} + _sF_=make_iprintf(k$0,o,rest$3), + _sG_=function(_tf_){return _sF_}; + return function(_te_){return _sG_}} case 3: - var _r$_=fmt$0[1]; - if(typeof _r$_ === "number") - {var rest$4=fmt$0[2],_sa_=make_iprintf(k$0,o,rest$4); - return function(_sD_){return _sa_}} + 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 === _r$_[0]) - {var rest$5=fmt$0[2],_sb_=make_iprintf(k$0,o,rest$5); - return function(_sG_){return _sb_}} + {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], - _sc_=make_iprintf(k$0,o,rest$6), - _sd_=function(_sF_){return _sc_}; - return function(_sE_){return _sd_}} + _sK_=make_iprintf(k$0,o,rest$6), + _sL_=function(_tb_){return _sK_}; + return function(_ta_){return _sL_}} case 4: var rest$7=fmt$0[4],prec=fmt$0[3],pad=fmt$0[2]; return fn_of_padding_precision(k$0,o,rest$7,pad,prec); @@ -20745,25 +20229,25 @@ 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 _se_=fmt$0[1]; - if(typeof _se_ === "number") - {var rest$12=fmt$0[2],_sf_=make_iprintf(k$0,o,rest$12); - return function(_sz_){return _sf_}} + 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 === _se_[0]) - {var rest$13=fmt$0[2],_sg_=make_iprintf(k$0,o,rest$13); - return function(_sC_){return _sg_}} + {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], - _sh_=make_iprintf(k$0,o,rest$14), - _si_=function(_sB_){return _sh_}; - return function(_sA_){return _si_}} + _sP_=make_iprintf(k$0,o,rest$14), + _sQ_=function(_s9_){return _sP_}; + return function(_s8_){return _sQ_}} case 10:var fmt$1=fmt$0[1],fmt$0=fmt$1;continue; case 11:var fmt$2=fmt$0[2],fmt$0=fmt$2;continue; case 12:var fmt$3=fmt$0[2],fmt$0=fmt$3;continue; case 13: - var rest$15=fmt$0[3],_sj_=make_iprintf(k$0,o,rest$15); - return function(_sy_){return _sj_}; + var rest$15=fmt$0[3],_sR_=make_iprintf(k$0,o,rest$15); + return function(_s6_){return _sR_}; case 14: var rest$16=fmt$0[3],fmtty=fmt$0[2]; return function(param) @@ -20772,19 +20256,19 @@ case 15: var rest$17=fmt$0[1], - _sk_=make_iprintf(k$0,o,rest$17), - _sl_=function(_sx_){return _sk_}; - return function(_sw_){return _sl_}; + _sS_=make_iprintf(k$0,o,rest$17), + _sT_=function(_s5_){return _sS_}; + return function(_s4_){return _sT_}; case 16: - var rest$18=fmt$0[1],_sm_=make_iprintf(k$0,o,rest$18); - return function(_sv_){return _sm_}; + var rest$18=fmt$0[1],_sU_=make_iprintf(k$0,o,rest$18); + return function(_s3_){return _sU_}; case 17:var fmt$4=fmt$0[2],fmt$0=fmt$4;continue; case 18: - var _sn_=fmt$0[1]; - if(0 === _sn_[0]) + var _sV_=fmt$0[1]; + if(0 === _sV_[0]) {var rest$19=fmt$0[2], - match=_sn_[1], + match=_sV_[1], fmt$5=match[1], k$3= function(k,rest) @@ -20795,7 +20279,7 @@ continue} var rest$20=fmt$0[2], - match$0=_sn_[1], + match$0=_sV_[1], fmt$6=match$0[1], k$4= function(k,rest) @@ -20804,20 +20288,20 @@ k$0=k$2, fmt$0=fmt$6; continue; - case 19:throw [0,Assert_failure,_aA_]; + case 19:throw [0,Assert_failure,_aC_]; case 20: - var rest$21=fmt$0[3],_so_=make_iprintf(k$0,o,rest$21); - return function(_su_){return _so_}; + var rest$21=fmt$0[3],_sW_=make_iprintf(k$0,o,rest$21); + return function(_s2_){return _sW_}; case 21: - var rest$22=fmt$0[2],_sp_=make_iprintf(k$0,o,rest$22); - return function(_st_){return _sp_}; + var rest$22=fmt$0[2],_sX_=make_iprintf(k$0,o,rest$22); + return function(_s1_){return _sX_}; case 22: - var rest$23=fmt$0[1],_sq_=make_iprintf(k$0,o,rest$23); - return function(_ss_){return _sq_}; + var rest$23=fmt$0[1],_sY_=make_iprintf(k$0,o,rest$23); + return function(_s0_){return _sY_}; case 23: - var rest$24=fmt$0[2],ign=fmt$0[1],_sr_=0; + var rest$24=fmt$0[2],ign=fmt$0[1],_sZ_=0; return make_ignored_param - (function(param){return caml_call1(k$0,o)},_sr_,ign,rest$24); + (function(param){return caml_call1(k$0,o)},_sZ_,ign,rest$24); default: var rest$25=fmt$0[3],arity=fmt$0[1]; if(counter < 50) @@ -20827,8 +20311,8 @@ (fn_of_custom_arity$0,[0,k$0,o,rest$25,arity])}} function fn_of_custom_arity$0(counter,k,o,fmt,param) {if(param) - {var arity=param[1],_r2_=fn_of_custom_arity(k,o,fmt,arity); - return function(_r3_){return _r2_}} + {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)} @@ -20837,6 +20321,37 @@ {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(;;) @@ -20852,15 +20367,15 @@ output_acc(o,p); return output_string(o,s); case 1: - var _r0_=acc$0[2],_r1_=acc$0[1]; - if(0 === _r0_[0]) - {var acc$1=_r0_[1]; - output_acc(o,_r1_); + var _r4_=acc$0[2],_r5_=acc$0[1]; + if(0 === _r4_[0]) + {var acc$1=_r4_[1]; + output_acc(o,_r5_); output_string(o,cst$30); var acc$0=acc$1; continue} - var acc$2=_r0_[1]; - output_acc(o,_r1_); + var acc$2=_r4_[1]; + output_acc(o,_r5_); output_string(o,cst$31); var acc$0=acc$2; continue; @@ -20897,15 +20412,15 @@ bufput_acc(b,p); return add_string(b,s); case 1: - var _rY_=acc$0[2],_rZ_=acc$0[1]; - if(0 === _rY_[0]) - {var acc$1=_rY_[1]; - bufput_acc(b,_rZ_); + var _r2_=acc$0[2],_r3_=acc$0[1]; + if(0 === _r2_[0]) + {var acc$1=_r2_[1]; + bufput_acc(b,_r3_); add_string(b,cst$32); var acc$0=acc$1; continue} - var acc$2=_rY_[1]; - bufput_acc(b,_rZ_); + var acc$2=_r2_[1]; + bufput_acc(b,_r3_); add_string(b,cst$33); var acc$0=acc$2; continue; @@ -20940,15 +20455,15 @@ strput_acc(b,p); return add_string(b,s); case 1: - var _rW_=acc$0[2],_rX_=acc$0[1]; - if(0 === _rW_[0]) - {var acc$1=_rW_[1]; - strput_acc(b,_rX_); + var _r0_=acc$0[2],_r1_=acc$0[1]; + if(0 === _r0_[0]) + {var acc$1=_r0_[1]; + strput_acc(b,_r1_); add_string(b,cst$34); var acc$0=acc$1; continue} - var acc$2=_rW_[1]; - strput_acc(b,_rX_); + var acc$2=_r0_[1]; + strput_acc(b,_r1_); add_string(b,cst$35); var acc$0=acc$2; continue; @@ -20973,10 +20488,10 @@ 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 _aB_; + {if(caml_string_equal(str,cst$36))return _aD_; var len=caml_ml_string_length(str); function invalid_box(param) - {return caml_call1(failwith_message(_aC_),str)} + {return caml_call1(failwith_message(_aE_),str)} function parse_spaces(i) {var i$0=i; for(;;) @@ -21015,11 +20530,11 @@ else try {var - _rU_=caml_int_of_string(sub$0(str,nstart,nend - nstart | 0)), - indent=_rU_} - catch(_rV_) - {_rV_ = caml_wrap_exception(_rV_); - if(_rV_[1] !== Failure)throw _rV_; + _rY_=caml_int_of_string(sub$0(str,nstart,nend - nstart | 0)), + indent=_rY_} + catch(_rZ_) + {_rZ_ = caml_wrap_exception(_rZ_); + if(_rZ_[1] !== Failure)throw _rZ_; var indent=invalid_box(0)} var exp_end=parse_spaces(nend); if(exp_end !== len)invalid_box(0); @@ -21066,13 +20581,13 @@ else var legacy_behavior$0=1; function invalid_format_message(str_ind,msg) - {return caml_call3(failwith_message(_aD_),str,str_ind,msg)} + {return caml_call3(failwith_message(_aF_),str,str_ind,msg)} function unexpected_end_of_format(end_ind) {return invalid_format_message(end_ind,cst_unexpected_end_of_format)} function invalid_format_without(str_ind,c,s) - {return caml_call4(failwith_message(_aE_),str,str_ind,c,s)} + {return caml_call4(failwith_message(_aG_),str,str_ind,c,s)} function expected_character(str_ind,expected,read) - {return caml_call4(failwith_message(_aF_),str,str_ind,expected,read)} + {return caml_call4(failwith_message(_aH_),str,str_ind,expected,read)} function add_literal(lit_start,str_ind,fmt) {var size=str_ind - lit_start | 0; return 0 === size @@ -21080,1071 +20595,6 @@ :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), - _rT_= - 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=_rT_[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=_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)} - var str_ind$1=str_ind + 1 | 0,str_ind=str_ind$1; - continue}} - 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 - ?_aL_ - :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 - ?_aM_ - :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], - _rq_=[0,[23,ignored$2,fmt_rest$7]]; - else - var _rq_=[0,[14,get_pad_opt(40),sub_fmtty,fmt_rest$7]]; - var fmt_result=_rq_; - 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], - _rs_=get_ign(0)?[0,[23,1,fmt_rest$10]]:[0,[1,fmt_rest$10]], - fmt_result=_rs_; - 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],_ry_=[0,[23,ignored$6,fmt_rest$14]]; - else - var _ry_=[0,[21,counter$0,fmt_rest$14]]; - var fmt_result=_ry_; - 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)], - _rz_=[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], - _rz_=[0,[3,pad$7,fmt_rest$16]]; - var fmt_result=_rz_; - 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 _rS_=i + 1 | 0; - if(c !== i){var i=_rS_;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 _rR_=str_ind$0 + 1 | 0; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return parse_char_set_after_char$0(counter$0,_rR_,end_ind,c)} - return caml_trampoline_return - (parse_char_set_after_char$0,[0,_rR_,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 _rP_=str_ind$2 + 2 | 0; - if(counter < 50) - {var counter$2=counter + 1 | 0; - return parse_char_set_content(counter$2,_rP_,end_ind)} - return caml_trampoline_return - (parse_char_set_content,[0,_rP_,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 _rQ_=str_ind$2 + 1 | 0; - if(counter < 50) - {var counter$1=counter + 1 | 0; - return parse_char_set_content(counter$1,_rQ_,end_ind)} - return caml_trampoline_return - (parse_char_set_content,[0,_rQ_,end_ind])} - if(switch$0 && 37 === c$0) - {add_char(c$1); - var _rO_=str_ind$0 + 1 | 0; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return parse_char_set_content(counter$0,_rO_,end_ind)} - return caml_trampoline_return - (parse_char_set_content,[0,_rO_,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], - _rE_=[0,[23,ignored$9,fmt_rest$19]]; - else - var _rE_=[0,[20,get_pad_opt(91),char_set$1,fmt_rest$19]]; - var fmt_result=_rE_; - 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 - _rF_=get_ign(0)?[0,[23,3,fmt_rest$21]]:[0,[22,fmt_rest$21]], - _rG_=_rF_; - else - var - _rG_= - legacy_behavior$0 - ?char_format(fmt_rest$21) - :invalid_format_message - (str_ind,cst_non_zero_widths_are_unsupp); - var _rH_=_rG_} - else - var _rH_=char_format(fmt_rest$21); - var fmt_result=_rH_; - break; - case 114: - var - match$25=parse(str_ind,end_ind), - fmt_rest$22=match$25[1], - _rI_=get_ign(0)?[0,[23,2,fmt_rest$22]]:[0,[19,fmt_rest$22]], - fmt_result=_rI_; - 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)], - _rJ_=[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], - _rJ_=[0,[2,pad$10,fmt_rest$24]]; - var fmt_result=_rJ_; - 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], - _rK_=[0,[23,ignored$11,fmt_rest$26]]; - else - var _rK_=[0,[13,get_pad_opt(123),sub_fmtty$0,fmt_rest$26]]; - var fmt_result=_rK_; - 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)], - _rr_=[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], - _rr_=[0,[9,pad$4,fmt_rest$9]]; - var fmt_result=_rr_; - 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), - _rL_=symb$0 - 88 | 0, - switch$2=0; - if(! (32 < _rL_ >>> 0)) - switch(_rL_) - {case 0: - case 12: - case 17: - case 23: - case 29: - case 32:var _rx_=1;switch$2 = 1;break - } - if(! switch$2)var _rx_=0; - if(_rx_){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],_rw_=[0,[23,ignored$5,fmt_rest$13]]; - else - var _rw_=[0,[21,counter,fmt_rest$13]]; - var fmt_result=_rw_} - 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 - _rA_=get_space(0), - _rB_=get_hash(0), - iconv$2= - compute_int_conv(pct_ind,str_ind,get_plus(0),_rB_,_rA_,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)], - _rC_=[0,[23,ignored$8,fmt_rest$17]]; - else - var - _rD_=get_prec(0), - match$20=make_padprec_fmt_ebb(get_int_pad(0),_rD_,fmt_rest$17), - fmt_rest$18=match$20[3], - prec$4=match$20[2], - pad$8=match$20[1], - _rC_=[0,[4,iconv$2,pad$8,prec$4,fmt_rest$18]]; - var fmt_result=_rC_; - 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 _rM_=1;break; - case 1:var _rM_=0;break; - case 2:var _rM_=3;break; - default:var _rM_=6} - var kind=_rM_}} - else - if(69 <= symb) - {var switch$5=0; - switch(symb - 69 | 0) - {case 0:var _rN_=2;break; - case 1:switch$4 = 1;switch$5 = 1;break; - case 2:var _rN_=4;break; - default:var _rN_=7} - if(! switch$5)var kind=_rN_} - 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 _rt_=match?incompatible_flag(pct_ind,str_ind,95,cst$40):0; - else - var ndec=match[1],_rt_=[0,ndec]; - var - ignored$4=[6,get_pad_opt(95),_rt_], - _ru_=[0,[23,ignored$4,fmt_rest$11]]} - else - var - _rv_=get_prec(0), - match$14=make_padprec_fmt_ebb(get_pad(0),_rv_,fmt_rest$11), - fmt_rest$12=match$14[3], - prec$3=match$14[2], - pad$5=match$14[1], - _ru_=[0,[8,fconv,pad$5,prec$3,fmt_rest$12]]; - var fmt_result=_ru_; - 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 - _ra_=caml_string_get(str,str_ind), - _rb_=get_space(0), - _rc_=get_hash(0), - iconv= - compute_int_conv - (pct_ind,str_ind + 1 | 0,get_plus(0),_rc_,_rb_,_ra_), - 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)], - _rd_=[0,[23,ignored,fmt_rest]]; - else - var - _rf_=get_prec(0), - match$1=make_padprec_fmt_ebb(get_int_pad(0),_rf_,fmt_rest), - fmt_rest$0=match$1[3], - prec$0=match$1[2], - pad$0=match$1[1], - _rd_=[0,[5,iconv,pad$0,prec$0,fmt_rest$0]]; - var _re_=_rd_; - break; - case 1:switch$7 = 1;switch$8 = 1;break; - default: - var - _rg_=caml_string_get(str,str_ind), - _rh_=get_space(0), - _ri_=get_hash(0), - iconv$0= - compute_int_conv - (pct_ind,str_ind + 1 | 0,get_plus(0),_ri_,_rh_,_rg_), - 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)], - _rj_=[0,[23,ignored$0,fmt_rest$1]]; - else - var - _rk_=get_prec(0), - match$3=make_padprec_fmt_ebb(get_int_pad(0),_rk_,fmt_rest$1), - fmt_rest$2=match$3[3], - prec$1=match$3[2], - pad$1=match$3[1], - _rj_=[0,[6,iconv$0,pad$1,prec$1,fmt_rest$2]]; - var _re_=_rj_} - if(! switch$8)var fmt_result=_re_} - else - if(76 === symb) - {var - _rl_=caml_string_get(str,str_ind), - _rm_=get_space(0), - _rn_=get_hash(0), - iconv$1= - compute_int_conv - (pct_ind,str_ind + 1 | 0,get_plus(0),_rn_,_rm_,_rl_), - 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)], - _ro_=[0,[23,ignored$1,fmt_rest$3]]; - else - var - _rp_=get_prec(0), - match$5=make_padprec_fmt_ebb(get_int_pad(0),_rp_,fmt_rest$3), - fmt_rest$4=match$5[3], - prec$2=match$5[2], - pad$2=match$5[1], - _ro_=[0,[7,iconv$1,pad$2,prec$2,fmt_rest$4]]; - var fmt_result=_ro_} - 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 _q3_=1 - plus_used[1],plus$0=_q3_?plus:_q3_; - if(plus$0)incompatible_flag(pct_ind,str_ind,symb,cst$41); - var _q4_=1 - hash_used[1],hash$0=_q4_?hash:_q4_; - if(hash$0)incompatible_flag(pct_ind,str_ind,symb,cst$42); - var _q5_=1 - space_used[1],space$0=_q5_?space:_q5_; - if(space$0)incompatible_flag(pct_ind,str_ind,symb,cst$43); - var _q6_=1 - pad_used[1],_q7_=_q6_?caml_notequal([0,pad],_aO_):_q6_; - if(_q7_)incompatible_flag(pct_ind,str_ind,symb,cst_padding$0); - var - _q8_=1 - prec_used[1], - _q9_=_q8_?caml_notequal([0,prec],_aP_):_q8_; - if(_q9_) - {var _q__=ign?95:symb; - incompatible_flag(pct_ind,str_ind,_q__,cst_precision$2)} - var plus$1=ign?plus:ign; - if(plus$1)incompatible_flag(pct_ind,str_ind,95,cst$44)} - var _q$_=1 - ign_used[1],ign$0=_q$_?ign:_q$_; - 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") - {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])} - return parse_conv(pad)} - 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 - _q2_=str_ind$0 + 1 | 0, - minus$0=minus || (45 === symb$0?1:0); - return parse_literal(minus$0,_q2_)} - 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)} - return parse_conversion - (pct_ind, - str_ind + 1 | 0, - end_ind, - plus, - hash, - space, - ign, - pad, - 0, - pad, - symb)} - 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 _qZ_=flag[1],_q0_=_qZ_?1 - legacy_behavior$0:_qZ_; - if(_q0_) - {var _q1_=caml_string_get(str,str_ind); - caml_call3(failwith_message(_aG_),str,str_ind,_q1_)} - 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 - _qU_=space[1], - _qV_=hash[1], - _qW_=plus[1], - _qX_=minus[1], - _qY_=zero[1]; - if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); - var - padty= - _qY_ - ?_qX_ - ?legacy_behavior$0 - ?0 - :incompatible_flag(pct_ind,str_ind$0,45,cst_0) - :2 - :_qX_?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, - _qX_, - _qW_, - _qV_, - _qU_, - ign, - [0,padty,width])}} - else - if(42 === match$0) - return parse_after_padding - (pct_ind, - str_ind$0 + 1 | 0, - end_ind, - _qX_, - _qW_, - _qV_, - _qU_, - 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,_qX_,_qW_,_qV_,_qU_,ign,0); - case 1: - return parse_after_padding - (pct_ind,str_ind$0,end_ind,_qX_,_qW_,_qV_,_qU_,ign,0); - default: - return parse_after_padding - (pct_ind,str_ind$0,end_ind,_qX_,_qW_,_qV_,_qU_,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) - {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], - _qS_=[0,[18,formatting$0,fmt_rest$0]]; - return _qS_} - throw Not_found} - catch(_qT_) - {_qT_ = caml_wrap_exception(_qT_); - if(_qT_ === 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 _qT_}} - function parse_good_break(str_ind,end_ind) - {try - {var - _qL_=str_ind === end_ind?1:0, - _qM_=_qL_ || (60 !== caml_string_get(str,str_ind)?1:0); - if(_qM_)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), - _qN_=[0,s,width,0], - _qO_=str_ind_3 + 1 | 0, - formatting_lit$0=_qN_, - next_ind=_qO_; - 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), - _qP_=[0,s$0,width,offset], - _qQ_=str_ind_5 + 1 | 0, - formatting_lit$0=_qP_, - next_ind=_qQ_} - else - switch$1 = 1; - if(switch$1)throw Not_found} - catch(_qR_) - {_qR_ = caml_wrap_exception(_qR_); - if(_qR_ !== Not_found && _qR_[1] !== Failure)throw _qR_; - 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), - _qJ_=[0,[0,str_ind_3 + 1 | 0,[1,s,size]]]} - else - var _qJ_=0; - var _qI_=_qJ_} - catch(_qK_) - {_qK_ = caml_wrap_exception(_qK_); - if(_qK_ !== Not_found && _qK_[1] !== Failure)throw _qK_; - var _qI_=0} - if(_qI_) - {var - match=_qI_[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)) - {var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1;continue} - return str_ind$0}} function parse_positive(str_ind,end_ind,acc) {var str_ind$0=str_ind,acc$0=acc; for(;;) @@ -22154,7 +20604,7 @@ var acc$1=(acc$0 * 10 | 0) + (c - 48 | 0) | 0; if(max_string_length < acc$1) return caml_call3 - (failwith_message(_aW_),str,acc$1,max_string_length); + (failwith_message(_aY_),str,acc$1,max_string_length); var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1,acc$0=acc$1; continue}} function parse_integer(str_ind,end_ind) @@ -22173,69 +20623,18 @@ n=match$0[2], next_ind=match$0[1]; return [0,next_ind,- n | 0]} - throw [0,Assert_failure,_aX_]} - function search_subformat_end(str_ind,end_ind,c) + throw [0,Assert_failure,_aZ_]} + function parse_spaces(str_ind,end_ind) {var str_ind$0=str_ind; for(;;) - {if(str_ind$0 === end_ind) - caml_call3(failwith_message(_aY_),str,c,end_ind); - var match=caml_string_get(str,str_ind$0); - if(37 === match) - {if((str_ind$0 + 1 | 0) === end_ind) - unexpected_end_of_format(end_ind); - if(caml_string_get(str,str_ind$0 + 1 | 0) === c)return str_ind$0; - var match$0=caml_string_get(str,str_ind$0 + 1 | 0); - if(95 <= match$0) - {if(123 <= match$0) - {if(! (126 <= match$0)) - switch(match$0 - 123 | 0) - {case 0: - var - sub_end=search_subformat_end(str_ind$0 + 2 | 0,end_ind,125), - str_ind$2=sub_end + 2 | 0, - str_ind$0=str_ind$2; - continue; - case 1:break; - default: - return expected_character - (str_ind$0 + 1 | 0,cst_character,125)}} - else - if(! (96 <= match$0)) - {if((str_ind$0 + 2 | 0) === end_ind) - unexpected_end_of_format(end_ind); - var match$1=caml_string_get(str,str_ind$0 + 2 | 0); - if(40 === match$1) - {var - sub_end$0=search_subformat_end(str_ind$0 + 3 | 0,end_ind,41), - str_ind$3=sub_end$0 + 2 | 0, - str_ind$0=str_ind$3; - continue} - if(123 === match$1) - {var - sub_end$1= - search_subformat_end(str_ind$0 + 3 | 0,end_ind,125), - str_ind$4=sub_end$1 + 2 | 0, - str_ind$0=str_ind$4; - continue} - var str_ind$5=str_ind$0 + 3 | 0,str_ind$0=str_ind$5; - continue}} - else - {if(40 === match$0) - {var - sub_end$2=search_subformat_end(str_ind$0 + 2 | 0,end_ind,41), - str_ind$6=sub_end$2 + 2 | 0, - str_ind$0=str_ind$6; - continue} - if(41 === match$0) - return expected_character(str_ind$0 + 1 | 0,cst_character$0,41)} - var str_ind$1=str_ind$0 + 2 | 0,str_ind$0=str_ind$1; - continue} - var str_ind$7=str_ind$0 + 1 | 0,str_ind$0=str_ind$7; - continue}} + {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + if(32 === caml_string_get(str,str_ind$0)) + {var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1;continue} + return str_ind$0}} function incompatible_flag(pct_ind,str_ind,symb,option) {var subfmt=sub$0(str,pct_ind,str_ind - pct_ind | 0); return caml_call5 - (failwith_message(_a2_),str,pct_ind,option,symb,subfmt)} + (failwith_message(_a4_),str,pct_ind,option,symb,subfmt)} function compute_int_conv(pct_ind,str_ind,plus,hash,space,symb) {var plus$0=plus,hash$0=hash,space$0=space; for(;;) @@ -22298,18 +20697,1134 @@ 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,_a0_]}} + throw [0,Assert_failure,_a2_]}} + function search_subformat_end(str_ind,end_ind,c) + {var str_ind$0=str_ind; + for(;;) + {if(str_ind$0 === end_ind) + caml_call3(failwith_message(_a0_),str,c,end_ind); + var match=caml_string_get(str,str_ind$0); + if(37 === match) + {if((str_ind$0 + 1 | 0) === end_ind) + unexpected_end_of_format(end_ind); + if(caml_string_get(str,str_ind$0 + 1 | 0) === c)return str_ind$0; + var match$0=caml_string_get(str,str_ind$0 + 1 | 0); + if(95 <= match$0) + {if(123 <= match$0) + {if(! (126 <= match$0)) + switch(match$0 - 123 | 0) + {case 0: + var + sub_end=search_subformat_end(str_ind$0 + 2 | 0,end_ind,125), + str_ind$2=sub_end + 2 | 0, + str_ind$0=str_ind$2; + continue; + case 1:break; + default: + return expected_character + (str_ind$0 + 1 | 0,cst_character,125)}} + else + if(! (96 <= match$0)) + {if((str_ind$0 + 2 | 0) === end_ind) + unexpected_end_of_format(end_ind); + var match$1=caml_string_get(str,str_ind$0 + 2 | 0); + if(40 === match$1) + {var + sub_end$0=search_subformat_end(str_ind$0 + 3 | 0,end_ind,41), + str_ind$3=sub_end$0 + 2 | 0, + str_ind$0=str_ind$3; + continue} + if(123 === match$1) + {var + sub_end$1= + search_subformat_end(str_ind$0 + 3 | 0,end_ind,125), + str_ind$4=sub_end$1 + 2 | 0, + str_ind$0=str_ind$4; + continue} + var str_ind$5=str_ind$0 + 3 | 0,str_ind$0=str_ind$5; + continue}} + else + {if(40 === match$0) + {var + sub_end$2=search_subformat_end(str_ind$0 + 2 | 0,end_ind,41), + str_ind$6=sub_end$2 + 2 | 0, + str_ind$0=str_ind$6; + continue} + if(41 === match$0) + return expected_character(str_ind$0 + 1 | 0,cst_character$0,41)} + var str_ind$1=str_ind$0 + 2 | 0,str_ind$0=str_ind$1; + continue} + var str_ind$7=str_ind$0 + 1 | 0,str_ind$0=str_ind$7; + continue}} + function parse_magic_size(str_ind,end_ind) + {try + {var + str_ind_1=parse_spaces(str_ind,end_ind), + match$2=caml_string_get(str,str_ind_1), + switch$0=0; + if(48 <= match$2) + {if(! (58 <= match$2))switch$0 = 1} + else + if(45 === match$2)switch$0 = 1; + if(switch$0) + {var + match$3=parse_integer(str_ind_1,end_ind), + size=match$3[2], + str_ind_2=match$3[1], + str_ind_3=parse_spaces(str_ind_2,end_ind); + if(62 !== caml_string_get(str,str_ind_3))throw Not_found; + var + s=sub$0(str,str_ind - 2 | 0,(str_ind_3 - str_ind | 0) + 3 | 0), + _rW_=[0,[0,str_ind_3 + 1 | 0,[1,s,size]]]} + else + var _rW_=0; + var _rV_=_rW_} + catch(_rX_) + {_rX_ = caml_wrap_exception(_rX_); + if(_rX_ !== Not_found && _rX_[1] !== Failure)throw _rX_; + var _rV_=0} + if(_rV_) + {var + match=_rV_[1], + formatting_lit=match[2], + next_ind=match[1], + match$0=parse(next_ind,end_ind), + fmt_rest=match$0[1]; + return [0,[17,formatting_lit,fmt_rest]]} + var match$1=parse(str_ind,end_ind),fmt_rest$0=match$1[1]; + return [0,[17,_aW_,fmt_rest$0]]} + function parse_good_break(str_ind,end_ind) + {try + {var + _rO_=str_ind === end_ind?1:0, + _rP_=_rO_ || (60 !== caml_string_get(str,str_ind)?1:0); + if(_rP_)throw Not_found; + var + str_ind_1=parse_spaces(str_ind + 1 | 0,end_ind), + match$0=caml_string_get(str,str_ind_1), + switch$0=0; + if(48 <= match$0) + {if(! (58 <= match$0))switch$0 = 1} + else + if(45 === match$0)switch$0 = 1; + if(! switch$0)throw Not_found; + var + match$1=parse_integer(str_ind_1,end_ind), + width=match$1[2], + str_ind_2=match$1[1], + str_ind_3=parse_spaces(str_ind_2,end_ind), + match$2=caml_string_get(str,str_ind_3), + switcher=match$2 - 45 | 0, + switch$1=0; + if(12 < switcher >>> 0) + if(17 === switcher) + var + s=sub$0(str,str_ind - 2 | 0,(str_ind_3 - str_ind | 0) + 3 | 0), + _rQ_=[0,s,width,0], + _rR_=str_ind_3 + 1 | 0, + formatting_lit$0=_rQ_, + next_ind=_rR_; + else + switch$1 = 1; + else + if(1 < switcher - 1 >>> 0) + {var + match$3=parse_integer(str_ind_3,end_ind), + offset=match$3[2], + str_ind_4=match$3[1], + str_ind_5=parse_spaces(str_ind_4,end_ind); + if(62 !== caml_string_get(str,str_ind_5))throw Not_found; + var + s$0=sub$0(str,str_ind - 2 | 0,(str_ind_5 - str_ind | 0) + 3 | 0), + _rS_=[0,s$0,width,offset], + _rT_=str_ind_5 + 1 | 0, + formatting_lit$0=_rS_, + next_ind=_rT_} + else + switch$1 = 1; + if(switch$1)throw Not_found} + catch(_rU_) + {_rU_ = caml_wrap_exception(_rU_); + if(_rU_ !== Not_found && _rU_[1] !== Failure)throw _rU_; + var formatting_lit$0=formatting_lit,next_ind=str_ind} + var match=parse(next_ind,end_ind),fmt_rest=match[1]; + return [0,[17,formatting_lit$0,fmt_rest]]} + function parse_tag(is_open_tag,str_ind,end_ind) + {try + {if(str_ind === end_ind)throw Not_found; + var match$0=caml_string_get(str,str_ind); + if(60 === match$0) + {var ind=index_from$0(str,str_ind + 1 | 0,62); + if(end_ind <= ind)throw Not_found; + var + sub_str=sub$0(str,str_ind,(ind - str_ind | 0) + 1 | 0), + match$1=parse(ind + 1 | 0,end_ind), + fmt_rest$0=match$1[1], + match$2=parse(str_ind,ind + 1 | 0), + sub_fmt=match$2[1], + sub_format$0=[0,sub_fmt,sub_str], + formatting$0=is_open_tag?[0,sub_format$0]:[1,sub_format$0], + _rM_=[0,[18,formatting$0,fmt_rest$0]]; + return _rM_} + throw Not_found} + catch(_rN_) + {_rN_ = caml_wrap_exception(_rN_); + if(_rN_ === Not_found) + {var + match=parse(str_ind,end_ind), + fmt_rest=match[1], + formatting=is_open_tag?[0,sub_format]:[1,sub_format]; + return [0,[18,formatting,fmt_rest]]} + throw _rN_}} + function parse_flags(pct_ind,str_ind,end_ind,ign) + {var zero=[0,0],minus=[0,0],plus=[0,0],space=[0,0],hash=[0,0]; + function set_flag(str_ind,flag) + {var _rJ_=flag[1],_rK_=_rJ_?1 - legacy_behavior$0:_rJ_; + if(_rK_) + {var _rL_=caml_string_get(str,str_ind); + caml_call3(failwith_message(_aI_),str,str_ind,_rL_)} + flag[1] = 1; + return 0} + var str_ind$0=str_ind; + for(;;) + {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + var match=caml_string_get(str,str_ind$0),switcher=match - 32 | 0; + if(! (16 < switcher >>> 0)) + switch(switcher) + {case 0: + set_flag(str_ind$0,space); + var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1; + continue; + case 3: + set_flag(str_ind$0,hash); + var str_ind$2=str_ind$0 + 1 | 0,str_ind$0=str_ind$2; + continue; + case 11: + set_flag(str_ind$0,plus); + var str_ind$3=str_ind$0 + 1 | 0,str_ind$0=str_ind$3; + continue; + case 13: + set_flag(str_ind$0,minus); + var str_ind$4=str_ind$0 + 1 | 0,str_ind$0=str_ind$4; + continue; + case 16: + set_flag(str_ind$0,zero); + var str_ind$5=str_ind$0 + 1 | 0,str_ind$0=str_ind$5; + continue + } + var + _rE_=space[1], + _rF_=hash[1], + _rG_=plus[1], + _rH_=minus[1], + _rI_=zero[1]; + if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + var + padty= + _rI_ + ?_rH_ + ?legacy_behavior$0 + ?0 + :incompatible_flag(pct_ind,str_ind$0,45,cst_0) + :2 + :_rH_?0:1, + match$0=caml_string_get(str,str_ind$0); + if(48 <= match$0) + {if(! (58 <= match$0)) + {var + match$1=parse_positive(str_ind$0,end_ind,0), + width=match$1[2], + new_ind=match$1[1]; + return parse_after_padding + (pct_ind, + new_ind, + end_ind, + _rH_, + _rG_, + _rF_, + _rE_, + ign, + [0,padty,width])}} + else + if(42 === match$0) + return parse_after_padding + (pct_ind, + str_ind$0 + 1 | 0, + end_ind, + _rH_, + _rG_, + _rF_, + _rE_, + ign, + [1,padty]); + switch(padty) + {case 0: + if(1 - legacy_behavior$0) + invalid_format_without(str_ind$0 - 1 | 0,45,cst_padding); + return parse_after_padding + (pct_ind,str_ind$0,end_ind,_rH_,_rG_,_rF_,_rE_,ign,0); + case 1: + return parse_after_padding + (pct_ind,str_ind$0,end_ind,_rH_,_rG_,_rF_,_rE_,ign,0); + default: + return parse_after_padding + (pct_ind,str_ind$0,end_ind,_rH_,_rG_,_rF_,_rE_,ign,_aJ_)}}} + function parse_after_padding + (pct_ind,str_ind,end_ind,minus,plus,hash,space,ign,pad) + {if(str_ind === end_ind)unexpected_end_of_format(end_ind); + var symb=caml_string_get(str,str_ind); + if(46 === symb) + {var str_ind$0=str_ind + 1 | 0; + if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + var + parse_literal= + function(minus,str_ind) + {var + match=parse_positive(str_ind,end_ind,0), + prec=match[2], + new_ind=match[1]; + return parse_after_precision + (pct_ind, + new_ind, + end_ind, + minus, + plus, + hash, + space, + ign, + pad, + [0,prec])}, + symb$0=caml_string_get(str,str_ind$0); + if(48 <= symb$0) + {if(! (58 <= symb$0))return parse_literal(minus,str_ind$0)} + else + if(42 <= symb$0) + switch(symb$0 - 42 | 0) + {case 0: + return parse_after_precision + (pct_ind, + str_ind$0 + 1 | 0, + end_ind, + minus, + plus, + hash, + space, + ign, + pad, + 1); + case 1: + case 3: + if(legacy_behavior$0) + {var + _rD_=str_ind$0 + 1 | 0, + minus$0=minus || (45 === symb$0?1:0); + return parse_literal(minus$0,_rD_)} + break + } + return legacy_behavior$0 + ?parse_after_precision + (pct_ind, + str_ind$0, + end_ind, + minus, + plus, + hash, + space, + ign, + pad, + _aK_) + :invalid_format_without(str_ind$0 - 1 | 0,46,cst_precision)} + return parse_conversion + (pct_ind, + str_ind + 1 | 0, + end_ind, + plus, + hash, + space, + ign, + pad, + 0, + pad, + symb)} + function parse_after_precision + (pct_ind,str_ind,end_ind,minus,plus,hash,space,ign,pad,prec) + {if(str_ind === end_ind)unexpected_end_of_format(end_ind); + function parse_conv(padprec) + {return parse_conversion + (pct_ind, + str_ind + 1 | 0, + end_ind, + plus, + hash, + space, + ign, + pad, + prec, + padprec, + caml_string_get(str,str_ind))} + if(typeof pad === "number") + {if(typeof prec === "number" && ! prec)return parse_conv(0); + if(minus) + {if(typeof prec === "number")return parse_conv(_aL_); + var n=prec[1]; + return parse_conv([0,0,n])} + if(typeof prec === "number")return parse_conv(_aM_); + var n$0=prec[1]; + return parse_conv([0,1,n$0])} + return parse_conv(pad)} + function parse_conversion + (pct_ind,str_ind,end_ind,plus,hash,space,ign,pad,prec,padprec,symb) + {var + plus_used=[0,0], + hash_used=[0,0], + space_used=[0,0], + ign_used=[0,0], + pad_used=[0,0], + prec_used=[0,0]; + function get_plus(param){plus_used[1] = 1;return plus} + function get_hash(param){hash_used[1] = 1;return hash} + function get_space(param){space_used[1] = 1;return space} + function get_ign(param){ign_used[1] = 1;return ign} + function get_pad(param){pad_used[1] = 1;return pad} + function get_prec(param){prec_used[1] = 1;return prec} + function get_padprec(param){pad_used[1] = 1;return padprec} + function get_int_pad(param) + {var pad=get_pad(0),match=get_prec(0); + if(typeof match === "number" && ! match)return pad; + if(typeof pad === "number") + return 0; + else + {if(0 === pad[0]) + {if(2 <= pad[1]) + {var n=pad[2]; + return legacy_behavior$0 + ?[0,1,n] + :incompatible_flag(pct_ind,str_ind,48,cst_precision$0)} + return pad} + return 2 <= pad[1] + ?legacy_behavior$0 + ?_aN_ + :incompatible_flag(pct_ind,str_ind,48,cst_precision$1) + :pad}} + function check_no_0(symb,pad) + {if(typeof pad === "number") + return pad; + else + {if(0 === pad[0]) + {if(2 <= pad[1]) + {var width=pad[2]; + return legacy_behavior$0 + ?[0,1,width] + :incompatible_flag(pct_ind,str_ind,symb,cst_0$0)} + return pad} + return 2 <= pad[1] + ?legacy_behavior$0 + ?_aO_ + :incompatible_flag(pct_ind,str_ind,symb,cst_0$1) + :pad}} + function opt_of_pad(c,pad) + {if(typeof pad === "number") + return 0; + else + {if(0 === pad[0]) + switch(pad[1]) + {case 0: + var width=pad[2]; + return legacy_behavior$0 + ?[0,width] + :incompatible_flag(pct_ind,str_ind,c,cst$38); + case 1:var width$0=pad[2];return [0,width$0]; + default: + var width$1=pad[2]; + return legacy_behavior$0 + ?[0,width$1] + :incompatible_flag(pct_ind,str_ind,c,cst_0$2)} + return incompatible_flag(pct_ind,str_ind,c,cst$39)}} + function get_pad_opt(c){return opt_of_pad(c,get_pad(0))} + function get_padprec_opt(c){return opt_of_pad(c,get_padprec(0))} + var switch$0=0; + if(124 <= symb) + switch$0 = 1; + else + switch(symb) + {case 33: + var + match$6=parse(str_ind,end_ind), + fmt_rest$5=match$6[1], + fmt_result=[0,[10,fmt_rest$5]]; + break; + case 40: + var + sub_end=search_subformat_end(str_ind,end_ind,41), + match$8=parse(sub_end + 2 | 0,end_ind), + fmt_rest$7=match$8[1], + match$9=parse(str_ind,sub_end), + sub_fmt=match$9[1], + sub_fmtty=fmtty_of_fmt(sub_fmt); + if(get_ign(0)) + var + ignored$2=[9,get_pad_opt(95),sub_fmtty], + _ra_=[0,[23,ignored$2,fmt_rest$7]]; + else + var _ra_=[0,[14,get_pad_opt(40),sub_fmtty,fmt_rest$7]]; + var fmt_result=_ra_; + break; + case 44:var fmt_result=parse(str_ind,end_ind);break; + case 67: + var + match$12=parse(str_ind,end_ind), + fmt_rest$10=match$12[1], + _rc_=get_ign(0)?[0,[23,1,fmt_rest$10]]:[0,[1,fmt_rest$10]], + fmt_result=_rc_; + break; + case 78: + var + match$16=parse(str_ind,end_ind), + fmt_rest$14=match$16[1], + counter$0=2; + if(get_ign(0)) + var ignored$6=[11,counter$0],_ri_=[0,[23,ignored$6,fmt_rest$14]]; + else + var _ri_=[0,[21,counter$0,fmt_rest$14]]; + var fmt_result=_ri_; + break; + case 83: + var + pad$6=check_no_0(symb,get_padprec(0)), + match$17=parse(str_ind,end_ind), + fmt_rest$15=match$17[1]; + if(get_ign(0)) + var + ignored$7=[1,get_padprec_opt(95)], + _rj_=[0,[23,ignored$7,fmt_rest$15]]; + else + var + match$18=make_padding_fmt_ebb(pad$6,fmt_rest$15), + fmt_rest$16=match$18[2], + pad$7=match$18[1], + _rj_=[0,[3,pad$7,fmt_rest$16]]; + var fmt_result=_rj_; + break; + case 91: + if(str_ind === end_ind)unexpected_end_of_format(end_ind); + var + char_set=create_char_set(0), + add_char=function(c){return add_in_char_set(char_set,c)}, + add_range= + function(c$0,c) + {if(! (c < c$0)) + {var i=c$0; + for(;;) + {add_in_char_set(char_set,char_of_int(i)); + var _rC_=i + 1 | 0; + if(c !== i){var i=_rC_;continue} + break}} + return 0}, + fail_single_percent= + function(str_ind) + {return caml_call2(failwith_message(_aX_),str,str_ind)}, + parse_char_set_content= + function(counter,str_ind,end_ind) + {var str_ind$0=str_ind; + for(;;) + {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + var c=caml_string_get(str,str_ind$0); + if(45 === c) + {add_char(45); + var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1; + continue} + if(93 === c)return str_ind$0 + 1 | 0; + var _rB_=str_ind$0 + 1 | 0; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return parse_char_set_after_char$0(counter$0,_rB_,end_ind,c)} + return caml_trampoline_return + (parse_char_set_after_char$0,[0,_rB_,end_ind,c])}}, + parse_char_set_after_char$0= + function(counter,str_ind,end_ind,c) + {var str_ind$0=str_ind,c$0=c; + for(;;) + {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + var c$1=caml_string_get(str,str_ind$0),switch$0=0; + if(46 <= c$1) + {if(64 === c$1) + switch$0 = 1; + else + if(93 === c$1){add_char(c$0);return str_ind$0 + 1 | 0}} + else + if(37 === c$1) + switch$0 = 1; + else + if(45 <= c$1) + {var str_ind$2=str_ind$0 + 1 | 0; + if(str_ind$2 === end_ind)unexpected_end_of_format(end_ind); + var c$2=caml_string_get(str,str_ind$2); + if(37 === c$2) + {if((str_ind$2 + 1 | 0) === end_ind) + unexpected_end_of_format(end_ind); + var c$3=caml_string_get(str,str_ind$2 + 1 | 0); + if(37 !== c$3 && 64 !== c$3) + return fail_single_percent(str_ind$2); + add_range(c$0,c$3); + var _rz_=str_ind$2 + 2 | 0; + if(counter < 50) + {var counter$2=counter + 1 | 0; + return parse_char_set_content(counter$2,_rz_,end_ind)} + return caml_trampoline_return + (parse_char_set_content,[0,_rz_,end_ind])} + if(93 === c$2) + {add_char(c$0);add_char(45);return str_ind$2 + 1 | 0} + add_range(c$0,c$2); + var _rA_=str_ind$2 + 1 | 0; + if(counter < 50) + {var counter$1=counter + 1 | 0; + return parse_char_set_content(counter$1,_rA_,end_ind)} + return caml_trampoline_return + (parse_char_set_content,[0,_rA_,end_ind])} + if(switch$0 && 37 === c$0) + {add_char(c$1); + var _ry_=str_ind$0 + 1 | 0; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return parse_char_set_content(counter$0,_ry_,end_ind)} + return caml_trampoline_return + (parse_char_set_content,[0,_ry_,end_ind])} + if(37 === c$0)fail_single_percent(str_ind$0); + add_char(c$0); + var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1,c$0=c$1; + continue}}, + parse_char_set_after_char= + function(str_ind,end_ind,c) + {return caml_trampoline + (parse_char_set_after_char$0(0,str_ind,end_ind,c))}; + if(str_ind === end_ind)unexpected_end_of_format(end_ind); + var match$31=caml_string_get(str,str_ind); + if(94 === match$31) + var str_ind$0=str_ind + 1 | 0,reverse=1,str_ind$1=str_ind$0; + else + var reverse=0,str_ind$1=str_ind; + if(str_ind$1 === end_ind)unexpected_end_of_format(end_ind); + var + c=caml_string_get(str,str_ind$1), + next_ind=parse_char_set_after_char(str_ind$1 + 1 | 0,end_ind,c), + char_set$0=freeze_char_set(char_set), + char_set$1=reverse?rev_char_set(char_set$0):char_set$0, + match$21=parse(next_ind,end_ind), + fmt_rest$19=match$21[1]; + if(get_ign(0)) + var + ignored$9=[10,get_pad_opt(95),char_set$1], + _ro_=[0,[23,ignored$9,fmt_rest$19]]; + else + var _ro_=[0,[20,get_pad_opt(91),char_set$1,fmt_rest$19]]; + var fmt_result=_ro_; + break; + case 97: + var + match$22=parse(str_ind,end_ind), + fmt_rest$20=match$22[1], + fmt_result=[0,[15,fmt_rest$20]]; + break; + case 99: + var + char_format= + function(fmt_rest) + {return get_ign(0)?[0,[23,0,fmt_rest]]:[0,[0,fmt_rest]]}, + match$23=parse(str_ind,end_ind), + fmt_rest$21=match$23[1], + match$24=get_pad_opt(99); + if(match$24) + {if(0 === match$24[1]) + var + _rp_=get_ign(0)?[0,[23,3,fmt_rest$21]]:[0,[22,fmt_rest$21]], + _rq_=_rp_; + else + var + _rq_= + legacy_behavior$0 + ?char_format(fmt_rest$21) + :invalid_format_message + (str_ind,cst_non_zero_widths_are_unsupp); + var _rr_=_rq_} + else + var _rr_=char_format(fmt_rest$21); + var fmt_result=_rr_; + break; + case 114: + var + match$25=parse(str_ind,end_ind), + fmt_rest$22=match$25[1], + _rs_=get_ign(0)?[0,[23,2,fmt_rest$22]]:[0,[19,fmt_rest$22]], + fmt_result=_rs_; + break; + case 115: + var + pad$9=check_no_0(symb,get_padprec(0)), + match$26=parse(str_ind,end_ind), + fmt_rest$23=match$26[1]; + if(get_ign(0)) + var + ignored$10=[0,get_padprec_opt(95)], + _rt_=[0,[23,ignored$10,fmt_rest$23]]; + else + var + match$27=make_padding_fmt_ebb(pad$9,fmt_rest$23), + fmt_rest$24=match$27[2], + pad$10=match$27[1], + _rt_=[0,[2,pad$10,fmt_rest$24]]; + var fmt_result=_rt_; + break; + case 116: + var + match$28=parse(str_ind,end_ind), + fmt_rest$25=match$28[1], + fmt_result=[0,[16,fmt_rest$25]]; + break; + case 123: + var + sub_end$0=search_subformat_end(str_ind,end_ind,125), + match$29=parse(str_ind,sub_end$0), + sub_fmt$0=match$29[1], + match$30=parse(sub_end$0 + 2 | 0,end_ind), + fmt_rest$26=match$30[1], + sub_fmtty$0=fmtty_of_fmt(sub_fmt$0); + if(get_ign(0)) + var + ignored$11=[8,get_pad_opt(95),sub_fmtty$0], + _ru_=[0,[23,ignored$11,fmt_rest$26]]; + else + var _ru_=[0,[13,get_pad_opt(123),sub_fmtty$0,fmt_rest$26]]; + var fmt_result=_ru_; + break; + case 66: + case 98: + var + pad$3=check_no_0(symb,get_padprec(0)), + match$10=parse(str_ind,end_ind), + fmt_rest$8=match$10[1]; + if(get_ign(0)) + var + ignored$3=[7,get_padprec_opt(95)], + _rb_=[0,[23,ignored$3,fmt_rest$8]]; + else + var + match$11=make_padding_fmt_ebb(pad$3,fmt_rest$8), + fmt_rest$9=match$11[2], + pad$4=match$11[1], + _rb_=[0,[9,pad$4,fmt_rest$9]]; + var fmt_result=_rb_; + break; + case 37: + case 64: + var + match$7=parse(str_ind,end_ind), + fmt_rest$6=match$7[1], + fmt_result=[0,[12,symb,fmt_rest$6]]; + break; + case 76: + case 108: + case 110: + var switch$1=0; + if(str_ind !== end_ind) + {var + symb$0=caml_string_get(str,str_ind), + _rv_=symb$0 - 88 | 0, + switch$2=0; + if(! (32 < _rv_ >>> 0)) + switch(_rv_) + {case 0: + case 12: + case 17: + case 23: + case 29: + case 32:var _rh_=1;switch$2 = 1;break + } + if(! switch$2)var _rh_=0; + if(_rh_){switch$0 = 1;switch$1 = 1}} + if(! switch$1) + {var + match$15=parse(str_ind,end_ind), + fmt_rest$13=match$15[1], + switch$3=0; + if(108 <= symb) + {if(! (111 <= symb)) + switch(symb - 108 | 0) + {case 0:var counter=0;switch$3 = 1;break; + case 1:break; + default:var counter=1;switch$3 = 1}} + else + if(76 === symb){var counter=2;switch$3 = 1} + if(! switch$3)throw [0,Assert_failure,_a1_]; + if(get_ign(0)) + var ignored$5=[11,counter],_rg_=[0,[23,ignored$5,fmt_rest$13]]; + else + var _rg_=[0,[21,counter,fmt_rest$13]]; + var fmt_result=_rg_} + break; + case 32: + case 35: + case 43: + case 45: + case 95: + var + fmt_result= + caml_call3(failwith_message(_aS_),str,pct_ind,symb); + break; + case 88: + case 100: + case 105: + case 111: + case 117: + case 120: + var + _rk_=get_space(0), + _rl_=get_hash(0), + iconv$2= + compute_int_conv(pct_ind,str_ind,get_plus(0),_rl_,_rk_,symb), + match$19=parse(str_ind,end_ind), + fmt_rest$17=match$19[1]; + if(get_ign(0)) + var + ignored$8=[2,iconv$2,get_pad_opt(95)], + _rm_=[0,[23,ignored$8,fmt_rest$17]]; + else + var + _rn_=get_prec(0), + match$20=make_padprec_fmt_ebb(get_int_pad(0),_rn_,fmt_rest$17), + fmt_rest$18=match$20[3], + prec$4=match$20[2], + pad$8=match$20[1], + _rm_=[0,[4,iconv$2,pad$8,prec$4,fmt_rest$18]]; + var fmt_result=_rm_; + break; + case 69: + case 70: + case 71: + case 72: + case 101: + case 102: + case 103: + case 104: + var + space$1=get_space(0), + hash$1=get_hash(0), + plus$2=get_plus(0), + flag= + plus$2 + ?space$1 + ?legacy_behavior$0 + ?1 + :incompatible_flag(pct_ind,str_ind,32,cst$50) + :1 + :space$1?2:0, + switch$4=0; + if(73 <= symb) + {var switcher=symb - 101 | 0; + if(3 < switcher >>> 0) + switch$4 = 1; + else + {switch(switcher) + {case 0:var _rw_=1;break; + case 1:var _rw_=0;break; + case 2:var _rw_=3;break; + default:var _rw_=6} + var kind=_rw_}} + else + if(69 <= symb) + {var switch$5=0; + switch(symb - 69 | 0) + {case 0:var _rx_=2;break; + case 1:switch$4 = 1;switch$5 = 1;break; + case 2:var _rx_=4;break; + default:var _rx_=7} + if(! switch$5)var kind=_rx_} + else + switch$4 = 1; + if(switch$4) + {var switch$6=0; + if(hash$1) + if(70 === symb)var kind=8;else switch$6 = 1; + else + if(70 === symb)var kind=5;else switch$6 = 1; + if(switch$6)throw [0,Assert_failure,_a3_]} + var + fconv=[0,flag,kind], + match$13=parse(str_ind,end_ind), + fmt_rest$11=match$13[1]; + if(get_ign(0)) + {var match=get_prec(0); + if(typeof match === "number") + var _rd_=match?incompatible_flag(pct_ind,str_ind,95,cst$40):0; + else + var ndec=match[1],_rd_=[0,ndec]; + var + ignored$4=[6,get_pad_opt(95),_rd_], + _re_=[0,[23,ignored$4,fmt_rest$11]]} + else + var + _rf_=get_prec(0), + match$14=make_padprec_fmt_ebb(get_pad(0),_rf_,fmt_rest$11), + fmt_rest$12=match$14[3], + prec$3=match$14[2], + pad$5=match$14[1], + _re_=[0,[8,fconv,pad$5,prec$3,fmt_rest$12]]; + var fmt_result=_re_; + break; + default:switch$0 = 1} + if(switch$0) + {var switch$7=0; + if(108 <= symb) + if(111 <= symb) + switch$7 = 1; + else + {var switch$8=0; + switch(symb - 108 | 0) + {case 0: + var + _qW_=caml_string_get(str,str_ind), + _qX_=get_space(0), + _qY_=get_hash(0), + iconv= + compute_int_conv + (pct_ind,str_ind + 1 | 0,get_plus(0),_qY_,_qX_,_qW_), + match$0=parse(str_ind + 1 | 0,end_ind), + fmt_rest=match$0[1]; + if(get_ign(0)) + var + ignored=[3,iconv,get_pad_opt(95)], + _qZ_=[0,[23,ignored,fmt_rest]]; + else + var + _q1_=get_prec(0), + match$1=make_padprec_fmt_ebb(get_int_pad(0),_q1_,fmt_rest), + fmt_rest$0=match$1[3], + prec$0=match$1[2], + pad$0=match$1[1], + _qZ_=[0,[5,iconv,pad$0,prec$0,fmt_rest$0]]; + var _q0_=_qZ_; + break; + case 1:switch$7 = 1;switch$8 = 1;break; + default: + var + _q2_=caml_string_get(str,str_ind), + _q3_=get_space(0), + _q4_=get_hash(0), + iconv$0= + compute_int_conv + (pct_ind,str_ind + 1 | 0,get_plus(0),_q4_,_q3_,_q2_), + match$2=parse(str_ind + 1 | 0,end_ind), + fmt_rest$1=match$2[1]; + if(get_ign(0)) + var + ignored$0=[4,iconv$0,get_pad_opt(95)], + _q5_=[0,[23,ignored$0,fmt_rest$1]]; + else + var + _q6_=get_prec(0), + match$3=make_padprec_fmt_ebb(get_int_pad(0),_q6_,fmt_rest$1), + fmt_rest$2=match$3[3], + prec$1=match$3[2], + pad$1=match$3[1], + _q5_=[0,[6,iconv$0,pad$1,prec$1,fmt_rest$2]]; + var _q0_=_q5_} + if(! switch$8)var fmt_result=_q0_} + else + if(76 === symb) + {var + _q7_=caml_string_get(str,str_ind), + _q8_=get_space(0), + _q9_=get_hash(0), + iconv$1= + compute_int_conv + (pct_ind,str_ind + 1 | 0,get_plus(0),_q9_,_q8_,_q7_), + match$4=parse(str_ind + 1 | 0,end_ind), + fmt_rest$3=match$4[1]; + if(get_ign(0)) + var + ignored$1=[5,iconv$1,get_pad_opt(95)], + _q__=[0,[23,ignored$1,fmt_rest$3]]; + else + var + _q$_=get_prec(0), + match$5=make_padprec_fmt_ebb(get_int_pad(0),_q$_,fmt_rest$3), + fmt_rest$4=match$5[3], + prec$2=match$5[2], + pad$2=match$5[1], + _q__=[0,[7,iconv$1,pad$2,prec$2,fmt_rest$4]]; + var fmt_result=_q__} + else + switch$7 = 1; + if(switch$7) + var + fmt_result= + caml_call3(failwith_message(_aP_),str,str_ind - 1 | 0,symb)} + if(1 - legacy_behavior$0) + {var _qN_=1 - plus_used[1],plus$0=_qN_?plus:_qN_; + if(plus$0)incompatible_flag(pct_ind,str_ind,symb,cst$41); + var _qO_=1 - hash_used[1],hash$0=_qO_?hash:_qO_; + if(hash$0)incompatible_flag(pct_ind,str_ind,symb,cst$42); + var _qP_=1 - space_used[1],space$0=_qP_?space:_qP_; + if(space$0)incompatible_flag(pct_ind,str_ind,symb,cst$43); + var _qQ_=1 - pad_used[1],_qR_=_qQ_?caml_notequal([0,pad],_aQ_):_qQ_; + if(_qR_)incompatible_flag(pct_ind,str_ind,symb,cst_padding$0); + var + _qS_=1 - prec_used[1], + _qT_=_qS_?caml_notequal([0,prec],_aR_):_qS_; + if(_qT_) + {var _qU_=ign?95:symb; + incompatible_flag(pct_ind,str_ind,_qU_,cst_precision$2)} + var plus$1=ign?plus:ign; + if(plus$1)incompatible_flag(pct_ind,str_ind,95,cst$44)} + var _qV_=1 - ign_used[1],ign$0=_qV_?ign:_qV_; + if(ign$0) + {var switch$9=0; + if(38 <= symb) + {if(44 !== symb && 64 !== symb)switch$9 = 1} + else + if(33 !== symb && ! (37 <= symb))switch$9 = 1; + var switch$10=0; + if(switch$9 || ! legacy_behavior$0)switch$10 = 1; + if(switch$10)incompatible_flag(pct_ind,str_ind,symb,cst$45)} + return fmt_result} + function parse(lit_start,end_ind) + {var str_ind=lit_start; + for(;;) + {if(str_ind === end_ind)return add_literal(lit_start,str_ind,0); + var match=caml_string_get(str,str_ind); + if(37 === match) + {var str_ind$2=str_ind + 1 | 0; + if(str_ind$2 === end_ind)unexpected_end_of_format(end_ind); + var + match$1=caml_string_get(str,str_ind$2), + _qM_= + 95 === match$1 + ?parse_flags(str_ind,str_ind$2 + 1 | 0,end_ind,1) + :parse_flags(str_ind,str_ind$2,end_ind,0), + fmt_rest=_qM_[1]; + return add_literal(lit_start,str_ind,fmt_rest)} + if(64 === match) + {var str_ind$0=str_ind + 1 | 0; + if(str_ind$0 === end_ind) + var match$0=_aT_; + else + {var c=caml_string_get(str,str_ind$0),switch$0=0; + if(65 <= c) + if(94 <= c) + {var switcher=c - 123 | 0; + if(2 < switcher >>> 0) + switch$0 = 1; + else + switch(switcher) + {case 0: + var match$0=parse_tag(1,str_ind$0 + 1 | 0,end_ind);break; + case 1:switch$0 = 1;break; + default: + var + match$3=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$2=match$3[1], + match$0=[0,[17,1,fmt_rest$2]]}} + else + if(91 <= c) + switch(c - 91 | 0) + {case 0: + var match$0=parse_tag(0,str_ind$0 + 1 | 0,end_ind);break; + case 1:switch$0 = 1;break; + default: + var + match$4=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$3=match$4[1], + match$0=[0,[17,0,fmt_rest$3]]} + else + switch$0 = 1; + else + if(10 === c) + var + match$5=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$4=match$5[1], + match$0=[0,[17,3,fmt_rest$4]]; + else + if(32 <= c) + switch(c - 32 | 0) + {case 0: + var + match$6=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$5=match$6[1], + match$0=[0,[17,_aU_,fmt_rest$5]]; + break; + case 5: + var switch$1=0; + if + ((str_ind$0 + 1 | 0) + < + end_ind + && + 37 + === + caml_string_get(str,str_ind$0 + 1 | 0)) + {var + match$7=parse(str_ind$0 + 2 | 0,end_ind), + fmt_rest$6=match$7[1], + match$0=[0,[17,6,fmt_rest$6]]; + switch$1 = 1} + if(! switch$1) + var + match$8=parse(str_ind$0,end_ind), + fmt_rest$7=match$8[1], + match$0=[0,[12,64,fmt_rest$7]]; + break; + case 12: + var + match$9=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$8=match$9[1], + match$0=[0,[17,_aV_,fmt_rest$8]]; + break; + case 14: + var + match$10=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$9=match$10[1], + match$0=[0,[17,4,fmt_rest$9]]; + break; + case 27: + var match$0=parse_good_break(str_ind$0 + 1 | 0,end_ind); + break; + case 28: + var match$0=parse_magic_size(str_ind$0 + 1 | 0,end_ind); + break; + case 31: + var + match$11=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$10=match$11[1], + match$0=[0,[17,2,fmt_rest$10]]; + break; + case 32: + var + match$12=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$11=match$12[1], + match$0=[0,[17,5,fmt_rest$11]]; + break; + default:switch$0 = 1} + else + switch$0 = 1; + if(switch$0) + var + match$2=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$1=match$2[1], + match$0=[0,[17,[2,c],fmt_rest$1]]} + var fmt_rest$0=match$0[1]; + return add_literal(lit_start,str_ind,fmt_rest$0)} + var str_ind$1=str_ind + 1 | 0,str_ind=str_ind$1; + continue}} return parse(0,caml_ml_string_length(str))} function format_of_string_fmtty(str,fmtty) {var match=fmt_ebb_of_string(0,str),fmt=match[1]; try - {var _qG_=[0,type_format(fmt,fmtty),str];return _qG_} - catch(_qH_) - {_qH_ = caml_wrap_exception(_qH_); - if(_qH_ === Type_mismatch) - {var _qF_=string_of_fmtty(fmtty); - return caml_call2(failwith_message(_a3_),str,_qF_)} - throw _qH_}} + {var _qK_=[0,type_format(fmt,fmtty),str];return _qK_} + catch(_qL_) + {_qL_ = caml_wrap_exception(_qL_); + if(_qL_ === Type_mismatch) + {var _qJ_=string_of_fmtty(fmtty); + return caml_call2(failwith_message(_a5_),str,_qJ_)} + throw _qL_}} function format_of_string_format(str,param) {var str$0=param[2], @@ -22317,12 +21832,12 @@ match=fmt_ebb_of_string(0,str), fmt$0=match[1]; try - {var _qD_=[0,type_format(fmt$0,fmtty_of_fmt(fmt)),str];return _qD_} - catch(_qE_) - {_qE_ = caml_wrap_exception(_qE_); - if(_qE_ === Type_mismatch) - return caml_call2(failwith_message(_a4_),str,str$0); - throw _qE_}} + {var _qH_=[0,type_format(fmt$0,fmtty_of_fmt(fmt)),str];return _qH_} + catch(_qI_) + {_qI_ = caml_wrap_exception(_qI_); + if(_qI_ === Type_mismatch) + return caml_call2(failwith_message(_a6_),str,str$0); + throw _qI_}} var CamlinternalFormat= [0, @@ -22351,24 +21866,24 @@ recast]; caml_register_global(807,CamlinternalFormat,"CamlinternalFormat"); function kfprintf(k,o,param) - {var fmt=param[1],_qC_=0; + {var fmt=param[1],_qG_=0; return make_printf (function(acc){output_acc(o,acc);return caml_call1(k,o)}, - _qC_, + _qG_, fmt)} function kbprintf(k,b,param) - {var fmt=param[1],_qB_=0; + {var fmt=param[1],_qF_=0; return make_printf (function(acc){bufput_acc(b,acc);return caml_call1(k,b)}, - _qB_, + _qF_, fmt)} function ikfprintf(k,oc,param) {var fmt=param[1];return make_iprintf(k,oc,fmt)} - function fprintf(oc,fmt){return kfprintf(function(_qA_){return 0},oc,fmt)} - function bprintf(b,fmt){return kbprintf(function(_qz_){return 0},b,fmt)} + function fprintf(oc,fmt){return kfprintf(function(_qE_){return 0},oc,fmt)} + function bprintf(b,fmt){return kbprintf(function(_qD_){return 0},b,fmt)} function ifprintf(oc,fmt) - {return ikfprintf(function(_qy_){return 0},oc,fmt)} - function ibprintf(b,fmt){return ikfprintf(function(_qx_){return 0},b,fmt)} + {return ikfprintf(function(_qC_){return 0},oc,fmt)} + function ibprintf(b,fmt){return ikfprintf(function(_qB_){return 0},b,fmt)} function printf(fmt){return fprintf(stdout,fmt)} function eprintf(fmt){return fprintf(stderr,fmt)} function ksprintf(k,param) @@ -22413,80 +21928,80 @@ {var i=index$0(s,61), len=caml_ml_string_length(s), - _qw_=sub$0(s,i + 1 | 0,len - (i + 1 | 0) | 0); - return [0,sub$0(s,0,i),_qw_]} + _qA_=sub$0(s,i + 1 | 0,len - (i + 1 | 0) | 0); + return [0,sub$0(s,0,i),_qA_]} function make_symlist(prefix,sep,suffix,l) {if(l) - {var t=l[2],h=l[1],_qv_=cat(prefix,h); + {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))},_qv_,t), + (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,_a7_]} + function help_action(param){throw [0,Stop,_a9_]} function add_help(speclist) {try - {assoc3(cst_help$2,speclist);var _qs_=0,_qq_=_qs_} - catch(_qu_) - {_qu_ = caml_wrap_exception(_qu_); - if(_qu_ !== Not_found)throw _qu_; + {assoc3(cst_help$2,speclist);var _qw_=0,_qu_=_qw_} + catch(_qy_) + {_qy_ = caml_wrap_exception(_qy_); + if(_qy_ !== Not_found)throw _qy_; var - _qq_= + _qu_= [0,[0,cst_help,[0,help_action],cst_Display_this_list_of_optio],0]} try - {assoc3(cst_help$1,speclist);var _qr_=0,add2=_qr_} - catch(_qt_) - {_qt_ = caml_wrap_exception(_qt_); - if(_qt_ !== Not_found)throw _qt_; + {assoc3(cst_help$1,speclist);var _qv_=0,add2=_qv_} + catch(_qx_) + {_qx_ = caml_wrap_exception(_qx_); + if(_qx_ !== Not_found)throw _qx_; var add2= [0, [0,cst_help$0,[0,help_action],cst_Display_this_list_of_optio$0], 0]} - return append(speclist,append(_qq_,add2))} + return append(speclist,append(_qu_,add2))} function usage_b(buf,speclist,errmsg) - {caml_call1(bprintf(buf,_a8_),errmsg); - var _qn_=add_help(speclist); + {caml_call1(bprintf(buf,_a__),errmsg); + var _qr_=add_help(speclist); return iter$2 (function(param) {var doc=param[3], spec=param[2], key=param[1], - _qo_=0 < caml_ml_string_length(doc)?1:0; - if(_qo_) + _qs_=0 < caml_ml_string_length(doc)?1:0; + if(_qs_) {if(11 === spec[0]) - {var l=spec[1],_qp_=make_symlist(cst$53,cst$52,cst$51,l); - return caml_call3(bprintf(buf,_a6_),key,_qp_,doc)} - return caml_call2(bprintf(buf,_a5_),key,doc)} - return _qo_}, - _qn_)} + {var l=spec[1],_qt_=make_symlist(cst$53,cst$52,cst$51,l); + return caml_call3(bprintf(buf,_a8_),key,_qt_,doc)} + return caml_call2(bprintf(buf,_a7_),key,doc)} + return _qs_}, + _qr_)} function usage_string(speclist,errmsg) {var b=create$2(200);usage_b(b,speclist,errmsg);return contents(b)} function usage(speclist,errmsg) - {var _qm_=usage_string(speclist,errmsg); - return caml_call1(eprintf(_a9_),_qm_)} + {var _qq_=usage_string(speclist,errmsg); + return caml_call1(eprintf(_a$_),_qq_)} var current=[0,0]; function bool_of_string_opt$0(x) {try - {var _qk_=[0,bool_of_string(x)];return _qk_} - catch(_ql_) - {_ql_ = caml_wrap_exception(_ql_); - if(_ql_[1] === Invalid_argument)return 0; - throw _ql_}} + {var _qo_=[0,bool_of_string(x)];return _qo_} + catch(_qp_) + {_qp_ = caml_wrap_exception(_qp_); + if(_qp_[1] === Invalid_argument)return 0; + throw _qp_}} function int_of_string_opt$0(x) {try - {var _qi_=[0,caml_int_of_string(x)];return _qi_} - catch(_qj_) - {_qj_ = caml_wrap_exception(_qj_); - if(_qj_[1] === Failure)return 0; - throw _qj_}} + {var _qm_=[0,caml_int_of_string(x)];return _qm_} + catch(_qn_) + {_qn_ = caml_wrap_exception(_qn_); + if(_qn_[1] === Failure)return 0; + throw _qn_}} function float_of_string_opt(x) {try - {var _qg_=[0,caml_float_of_string(x)];return _qg_} - catch(_qh_) - {_qh_ = caml_wrap_exception(_qh_); - if(_qh_[1] === Failure)return 0; - throw _qh_}} + {var _qk_=[0,caml_float_of_string(x)];return _qk_} + catch(_ql_) + {_ql_ = caml_wrap_exception(_ql_); + if(_ql_[1] === Failure)return 0; + throw _ql_}} function parse_and_expand_argv_dynamic_ (allow_expand,current,argv,speclist,anonfun,errmsg) {var initpos=current[1]; @@ -22499,21 +22014,21 @@ :cst$54; switch(error[0]) {case 0: - var _qf_=error[1]; + var _qj_=error[1]; if - (caml_string_notequal(_qf_,cst_help$3) + (caml_string_notequal(_qj_,cst_help$3) && - caml_string_notequal(_qf_,cst_help$4)) - caml_call2(bprintf(b,_a__),progname,_qf_); + caml_string_notequal(_qj_,cst_help$4)) + caml_call2(bprintf(b,_ba_),progname,_qj_); break; case 1: var expected=error[3],arg=error[2],opt=error[1]; - caml_call4(bprintf(b,_bb_),progname,arg,opt,expected); + caml_call4(bprintf(b,_bd_),progname,arg,opt,expected); break; - 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)} + case 2:var s=error[1];caml_call2(bprintf(b,_be_),progname,s);break; + default:var s$0=error[1];caml_call2(bprintf(b,_bf_),progname,s$0)} usage_b(b,speclist[1],errmsg); - if(! caml_equal(error,_a$_) && ! caml_equal(error,_ba_)) + if(! caml_equal(error,_bb_) && ! caml_equal(error,_bc_)) return [0,Bad,contents(b)]; return [0,Help,contents(b)]} current[1]++; @@ -22521,32 +22036,32 @@ {if(current[1] < argv[1].length - 1) {try {var - _p6_=current[1], - s=caml_check_bound(argv[1],_p6_)[1 + _p6_], + _p__=current[1], + s=caml_check_bound(argv[1],_p__)[1 + _p__], switch$0=0; if(1 <= caml_ml_string_length(s) && 45 === caml_string_get(s,0)) {try {var follow$1=0, - _p8_=assoc3(s,speclist[1]), + _qa_=assoc3(s,speclist[1]), follow$0=follow$1, - action=_p8_} - catch(_qd_) - {_qd_ = caml_wrap_exception(_qd_); - if(_qd_ !== Not_found)throw _qd_; + 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], - _p7_=assoc3(keyword,speclist[1])} - catch(_qe_) - {_qe_ = caml_wrap_exception(_qe_); - if(_qe_ === Not_found)throw [0,Stop,[0,s]]; - throw _qe_; - var _p9_=_qe_} - var follow$0=follow,action=_p7_,_p__=_qd_} + _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) @@ -22561,8 +22076,8 @@ {function get_arg(param) {if(follow){var arg=follow[1];return arg} if((current[1] + 1 | 0) < argv[1].length - 1) - {var _qc_=current[1] + 1 | 0; - return caml_check_bound(argv[1],_qc_)[1 + _qc_]} + {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), @@ -22646,8 +22161,8 @@ no_arg(0); for(;;) {if(current[1] < (argv[1].length - 1 - 1 | 0)) - {var _p$_=current[1] + 1 | 0; - caml_call1(f$5,caml_check_bound(argv[1],_p$_)[1 + _p$_]); + {var _qd_=current[1] + 1 | 0; + caml_call1(f$5,caml_check_bound(argv[1],_qd_)[1 + _qd_]); consume_arg(0); continue} return 0} @@ -22657,8 +22172,8 @@ var acc=[0,0]; for(;;) {if(current[1] < (argv[1].length - 1 - 1 | 0)) - {var _qb_=current[1] + 1 | 0,_qa_=acc[1]; - acc[1] = [0,caml_check_bound(argv[1],_qb_)[1 + _qb_],_qa_]; + {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]))} @@ -22707,17 +22222,7 @@ ([0,current$0],argv,[0,speclist],anonfun,errmsg)} function parse(l,f,msg) {try - {var _p5_=parse_argv(0,caml_sys_argv(0),l,f,msg);return _p5_} - 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) - {var msg$1=exn[2];caml_call1(printf(_bf_),msg$1);return exit(0)} - throw exn}} - function parse_dynamic(l,f,msg) - {try - {var _p4_=parse_argv_dynamic(0,caml_sys_argv(0),l,f,msg);return _p4_} + {var _p9_=parse_argv(0,caml_sys_argv(0),l,f,msg);return _p9_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] === Bad) @@ -22725,14 +22230,9 @@ if(exn[1] === Help) {var msg$1=exn[2];caml_call1(printf(_bh_),msg$1);return exit(0)} throw exn}} - function parse_expand(l,f,msg) + function parse_dynamic(l,f,msg) {try - {var - argv=[0,caml_sys_argv(0)], - spec=[0,l], - current$0=[0,current[1]], - _p3_=parse_and_expand_argv_dynamic(current$0,argv,spec,f,msg); - return _p3_} + {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) @@ -22740,6 +22240,21 @@ if(exn[1] === Help) {var msg$1=exn[2];caml_call1(printf(_bj_),msg$1);return exit(0)} throw exn}} + function parse_expand(l,f,msg) + {try + {var + argv=[0,caml_sys_argv(0)], + spec=[0,l], + current$0=[0,current[1]], + _p7_=parse_and_expand_argv_dynamic(current$0,argv,spec,f,msg); + return _p7_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] === Bad) + {var msg$0=exn[2];caml_call1(eprintf(_bk_),msg$0);return exit(2)} + if(exn[1] === Help) + {var msg$1=exn[2];caml_call1(printf(_bl_),msg$1);return exit(0)} + throw exn}} function second_word(s) {var len=caml_ml_string_length(s); function loop(n) @@ -22751,17 +22266,17 @@ return n$0}} try {var n$0=index$0(s,9)} - catch(_p1_) - {_p1_ = caml_wrap_exception(_p1_); - if(_p1_ === Not_found) + catch(_p5_) + {_p5_ = caml_wrap_exception(_p5_); + if(_p5_ === Not_found) {try {var n=index$0(s,32)} - catch(_p2_) - {_p2_ = caml_wrap_exception(_p2_); - if(_p2_ === Not_found)return len; - throw _p2_} + catch(_p6_) + {_p6_ = caml_wrap_exception(_p6_); + if(_p6_ === Not_found)return len; + throw _p6_} return loop(n + 1 | 0)} - throw _p1_} + throw _p5_} return loop(n$0 + 1 | 0)} function max_arg_len(cur,param) {var doc=param[3],spec=param[2],kwd=param[1]; @@ -22782,22 +22297,22 @@ len$0=min$1(len,limit); return map$4 (function(ksd) - {var _pZ_=ksd[1],_p0_=ksd[2]; + {var _p3_=ksd[1],_p4_=ksd[2]; if(caml_string_notequal(ksd[3],cst$58)) - {if(11 === _p0_[0]) + {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, - _pZ_, - _p0_, + _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(_pZ_), + kwd_len=caml_ml_string_length(_p3_), diff=(len$0 - kwd_len | 0) - cutcol | 0; if(0 < diff) {var @@ -22805,8 +22320,8 @@ prefix=sub$0(replace_leading_tab(msg),0,cutcol), suffix= sub$0(msg,cutcol,caml_ml_string_length(msg) - cutcol | 0); - return [0,_pZ_,spec,cat(prefix,cat(spaces,suffix))]} - return [0,_pZ_,spec,replace_leading_tab(msg)]} + return [0,_p3_,spec,cat(prefix,cat(spaces,suffix))]} + return [0,_p3_,spec,replace_leading_tab(msg)]} return ksd}, completed)} function read_aux(trim,sep,file) @@ -22816,9 +22331,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 _pY_=sub$0(s,0,len - 1 | 0);switch$0 = 1} - if(! switch$0)var _pY_=s; - var word=_pY_} + {var _p2_=sub$0(s,0,len - 1 | 0);switch$0 = 1} + if(! switch$0)var _p2_=s; + var word=_p2_} else var word=s; words[1] = [0,word,words[1]]; @@ -22828,25 +22343,25 @@ {var c=caml_ml_input_char(ic); if(c === sep)stash(0);else add_char(buf,c); continue}} - catch(_pX_) - {_pX_ = caml_wrap_exception(_pX_); - if(_pX_ === End_of_file) + 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 _pX_}} - var _bk_=10,_bl_=1; - function read_arg(_pW_){return read_aux(_bl_,_bk_,_pW_)} - var _bm_=0,_bn_=0; - function read_arg0(_pV_){return read_aux(_bn_,_bm_,_pV_)} + throw _p1_}} + var _bm_=10,_bn_=1; + function read_arg(_p0_){return read_aux(_bn_,_bm_,_p0_)} + var _bo_=0,_bp_=0; + function read_arg0(_pZ_){return read_aux(_bp_,_bo_,_pZ_)} function write_aux(sep,file,args) {var oc=open_bin(file); - iter$5(function(s){return caml_call2(fprintf(oc,_bo_),s,sep)},args); + iter$5(function(s){return caml_call2(fprintf(oc,_bq_),s,sep)},args); return close(oc)} - var _bp_=10; - function write_arg(_pT_,_pU_){return write_aux(_bp_,_pT_,_pU_)} - var _bq_=0; - function write_arg0(_pR_,_pS_){return write_aux(_bq_,_pR_,_pS_)} + var _br_=10; + function write_arg(_pX_,_pY_){return write_aux(_br_,_pX_,_pY_)} + var _bs_=0; + function write_arg0(_pV_,_pW_){return write_aux(_bs_,_pV_,_pW_)} var Stdlib_Arg= [0, @@ -22876,13 +22391,13 @@ {var f=x[1 + i]; return is_block(f) ?caml_obj_tag(f) === 252 - ?caml_call1(sprintf(_br_),f) + ?caml_call1(sprintf(_bt_),f) :caml_obj_tag(f) === 253?to_string(f):cst$60 - :caml_call1(sprintf(_bs_),f)} + :caml_call1(sprintf(_bu_),f)} function other_fields(x,i) {if(x.length - 1 <= i)return cst$61; - var _pP_=other_fields(x,i + 1 | 0),_pQ_=field(x,i); - return caml_call2(sprintf(_bt_),_pQ_,_pP_)} + var _pT_=other_fields(x,i + 1 | 0),_pU_=field(x,i); + return caml_call2(sprintf(_bv_),_pU_,_pT_)} function use_printers(x) {function conv(param) {var param$0=param; @@ -22891,7 +22406,7 @@ {var tl=param$0[2],hd=param$0[1]; try {var switch$0=0,val=caml_call1(hd,x);switch$0 = 1} - catch(_pO_){} + catch(_pS_){} if(switch$0 && val){var s=val[1];return [0,s]} var param$0=tl; continue} @@ -22939,15 +22454,15 @@ {var constructor=x[1][1],match=x.length - 1; if(2 < match >>> 0) var - _pK_=other_fields(x,2), - _pL_=field(x,1), - _pN_=caml_call2(sprintf(_bu_),_pL_,_pK_); + _pO_=other_fields(x,2), + _pP_=field(x,1), + _pR_=caml_call2(sprintf(_bw_),_pP_,_pO_); else switch(match) - {case 0:var _pN_=cst$62;break; - case 1:var _pN_=cst$63;break; - default:var _pM_=field(x,1),_pN_=caml_call1(sprintf(_bv_),_pM_)} - return cat(constructor,_pN_)} + {case 0:var _pR_=cst$62;break; + case 1:var _pR_=cst$63;break; + default:var _pQ_=field(x,1),_pR_=caml_call1(sprintf(_bx_),_pQ_)} + return cat(constructor,_pR_)} return x[1]} function to_string$6(e) {var match=use_printers(e); @@ -22955,21 +22470,21 @@ return to_string_default(e)} function print(fct,arg) {try - {var _pJ_=caml_call1(fct,arg);return _pJ_} + {var _pN_=caml_call1(fct,arg);return _pN_} catch(x) {x = caml_wrap_exception(x); - var _pI_=to_string$6(x); - caml_call1(eprintf(_bw_),_pI_); + var _pM_=to_string$6(x); + caml_call1(eprintf(_by_),_pM_); caml_ml_flush(stderr); throw x}} function catch$0(fct,arg) {try - {var _pH_=caml_call1(fct,arg);return _pH_} + {var _pL_=caml_call1(fct,arg);return _pL_} catch(x) {x = caml_wrap_exception(x); caml_ml_flush(stdout); - var _pG_=to_string$6(x); - caml_call1(eprintf(_bx_),_pG_); + var _pK_=to_string$6(x); + caml_call1(eprintf(_bz_),_pK_); return exit(2)}} function raw_backtrace_entries(bt){return bt} function convert_raw_backtrace(bt) @@ -22981,45 +22496,45 @@ :0 === pos?cst_Raised_by_primitive_operat:cst_Called_from} if(0 === slot[0]) {var - _py_=slot[5], - _pz_=slot[4], - _pA_=slot[3], - _pB_=slot[6]?cst_inlined:cst$64, - _pC_=slot[2], - _pD_=slot[7], - _pE_=info(slot[1]); + _pC_=slot[5], + _pD_=slot[4], + _pE_=slot[3], + _pF_=slot[6]?cst_inlined:cst$64, + _pG_=slot[2], + _pH_=slot[7], + _pI_=info(slot[1]); return [0, - caml_call7(sprintf(_by_),_pE_,_pD_,_pC_,_pB_,_pA_,_pz_,_py_)]} + caml_call7(sprintf(_bA_),_pI_,_pH_,_pG_,_pF_,_pE_,_pD_,_pC_)]} if(slot[1])return 0; - var _pF_=info(0); - return [0,caml_call1(sprintf(_bz_),_pF_)]} + var _pJ_=info(0); + return [0,caml_call1(sprintf(_bB_),_pJ_)]} function print_raw_backtrace(outchan,raw_backtrace) {var backtrace=convert_raw_backtrace(raw_backtrace); if(backtrace) - {var a=backtrace[1],_pw_=a.length - 1 - 1 | 0,_pv_=0; - if(! (_pw_ < 0)) - {var i=_pv_; + {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,_bA_),str)} - var _px_=i + 1 | 0; - if(_pw_ !== i){var i=_px_;continue} + 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,_bB_)} + return fprintf(outchan,_bD_)} function print_backtrace(outchan) {return print_raw_backtrace(outchan,caml_get_exception_raw_backtra(0))} function raw_backtrace_to_string(raw_backtrace) {var backtrace=convert_raw_backtrace(raw_backtrace); if(backtrace) - {var a=backtrace[1],b=create$2(1024),_pt_=a.length - 1 - 1 | 0,_ps_=0; - if(! (_pt_ < 0)) - {var i=_ps_; + {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,_bC_),str)} - var _pu_=i + 1 | 0; - if(_pt_ !== i){var i=_pu_;continue} + 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_} @@ -23038,14 +22553,14 @@ {var backtrace=match[1],i$1=backtrace.length - 1 - 1 | 0,i=i$1; for(;;) {if(-1 === i) - var _pr_=0; + var _pv_=0; else {var param=caml_check_bound(backtrace,i)[1 + i], - _pq_=0 === param[0]?1:0; - if(! _pq_){var i$0=i - 1 | 0,i=i$0;continue} - var _pr_=_pq_} - return _pr_?[0,backtrace]:0}} + _pu_=0 === param[0]?1:0; + if(! _pu_){var i$0=i - 1 | 0,i=i$0;continue} + var _pv_=_pu_} + return _pv_?[0,backtrace]:0}} return 0} function backtrace_slots_of_raw_entry(entry) {return backtrace_slots([0,entry])} @@ -23058,21 +22573,21 @@ old_printers=printers[1], new_printers=[0,fn,old_printers], success=compare_and_set(printers,old_printers,new_printers), - _pp_=1 - success; - if(_pp_)continue; - return _pp_}} + _pt_=1 - success; + if(_pt_)continue; + return _pt_}} function exn_slot(x){return 0 === caml_obj_tag(x)?x[1]:x} function exn_slot_id(x){var slot=exn_slot(x);return slot[2]} function exn_slot_name(x){var slot=exn_slot(x);return slot[1]} - var errors=_bD_.slice(); + var errors=_bF_.slice(); function default_uncaught_exception_han(exn,raw_backtrace) - {var _pn_=to_string$6(exn); - caml_call1(eprintf(_bE_),_pn_); + {var _pr_=to_string$6(exn); + caml_call1(eprintf(_bG_),_pr_); print_raw_backtrace(stderr,raw_backtrace); var status=runtime.caml_ml_debug_info_status(0); if(status < 0) - {var _po_=abs(status); - prerr_endline(caml_check_bound(errors,_po_)[1 + _po_])} + {var _ps_=abs(status); + prerr_endline(caml_check_bound(errors,_ps_)[1 + _ps_])} return caml_ml_flush(stderr)} var uncaught_exception_handler=[0,default_uncaught_exception_han]; function set_uncaught_exception_handler(fn) @@ -23084,46 +22599,46 @@ {var raw_backtrace= debugger_in_use?empty_backtrace:caml_get_exception_raw_backtra(0); - try {do_at_exit(0)}catch(_pm_){} + try {do_at_exit(0)}catch(_pq_){} try {var - _pi_=caml_call2(uncaught_exception_handler[1],exn,raw_backtrace), - _ph_=_pi_} + _pm_=caml_call2(uncaught_exception_handler[1],exn,raw_backtrace), + _pl_=_pm_} catch(exn$0) {exn$0 = caml_wrap_exception(exn$0); var raw_backtrace$0=caml_get_exception_raw_backtra(0), - _pf_=to_string$6(exn); - caml_call1(eprintf(_bF_),_pf_); + _pj_=to_string$6(exn); + caml_call1(eprintf(_bH_),_pj_); print_raw_backtrace(stderr,raw_backtrace); - var _pg_=to_string$6(exn$0); - caml_call1(eprintf(_bG_),_pg_); + var _pk_=to_string$6(exn$0); + caml_call1(eprintf(_bI_),_pk_); print_raw_backtrace(stderr,raw_backtrace$0); - var _ph_=caml_ml_flush(stderr)} - var _pj_=_ph_} - catch(_pl_) - {_pl_ = caml_wrap_exception(_pl_); - if(_pl_ !== Out_of_memory)throw _pl_; - var _pj_=prerr_endline(cst_Fatal_error_out_of_memory_)} - return _pj_} - catch(_pk_){return 0}} + var _pl_=caml_ml_flush(stderr)} + var _pn_=_pl_} + catch(_pp_) + {_pp_ = caml_wrap_exception(_pp_); + if(_pp_ !== Out_of_memory)throw _pp_; + var _pn_=prerr_endline(cst_Fatal_error_out_of_memory_)} + return _pn_} + catch(_po_){return 0}} caml_register_named_value (caml_string_of_jsbytes("Printexc.handle_uncaught_exception"), handle_uncaught_exception); - function _bH_(_pe_){return runtime.caml_raw_backtrace_next_slot(_pe_)} - function _bI_(_pd_){return runtime.caml_convert_raw_backtrace_slot(_pd_)} - function _bJ_(_pc_,_pb_) - {return runtime.caml_raw_backtrace_slot(_pc_,_pb_)} + function _bJ_(_pi_){return runtime.caml_raw_backtrace_next_slot(_pi_)} + function _bK_(_ph_){return runtime.caml_convert_raw_backtrace_slot(_ph_)} + function _bL_(_pg_,_pf_) + {return runtime.caml_raw_backtrace_slot(_pg_,_pf_)} var - _bK_= + _bM_= [0, backtrace_slot_is_raise, backtrace_slot_is_inline, backtrace_slot_location, backtrace_slot_defname, format_backtrace_slot]; - function _bL_(_pa_){return caml_get_exception_raw_backtra(_pa_)} - function _bM_(_o$_){return runtime.caml_backtrace_status(_o$_)} + function _bN_(_pe_){return caml_get_exception_raw_backtra(_pe_)} + function _bO_(_pd_){return runtime.caml_backtrace_status(_pd_)} var Stdlib_Printexc= [0, @@ -23133,23 +22648,23 @@ catch$0, print_backtrace, get_backtrace, - function(_o__){return runtime.caml_record_backtrace(_o__)}, - _bM_, + function(_pc_){return runtime.caml_record_backtrace(_pc_)}, + _bO_, register_printer, use_printers, raw_backtrace_entries, - _bL_, + _bN_, print_raw_backtrace, raw_backtrace_to_string, default_uncaught_exception_han, set_uncaught_exception_handler, backtrace_slots, backtrace_slots_of_raw_entry, - _bK_, + _bM_, raw_backtrace_length, + _bL_, + _bK_, _bJ_, - _bI_, - _bH_, exn_slot_id, exn_slot_name]; caml_register_global(811,Stdlib_Printexc,"Stdlib__Printexc"); @@ -23168,7 +22683,7 @@ function protect(finally$0,work) {function finally_no_exn(param) {try - {var _o9_=caml_call1(finally$0,0);return _o9_} + {var _pb_=caml_call1(finally$0,0);return _pb_} catch(e) {e = caml_wrap_exception(e); var bt=caml_get_exception_raw_backtra(0),exn=[0,Finally_raised,e]; @@ -23187,47 +22702,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),_oR_=st[4]; - caml_call1(fprintf(c,_bN_),_oR_); - var _oS_=st[5]; - caml_call1(fprintf(c,_bO_),_oS_); - var _oT_=st[14]; - caml_call1(fprintf(c,_bP_),_oT_); - var _oU_=st[17]; - caml_call1(fprintf(c,_bQ_),_oU_); - fprintf(c,_bR_); + {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 - _oV_=st[1], - l1=caml_ml_string_length(caml_call1(sprintf(_bS_),_oV_)), - _oW_=st[1]; - caml_call2(fprintf(c,_bT_),l1,_oW_); - var _oX_=st[2]; - caml_call2(fprintf(c,_bU_),l1,_oX_); - var _oY_=st[3]; - caml_call2(fprintf(c,_bV_),l1,_oY_); - fprintf(c,_bW_); + _oZ_=st[1], + l1=caml_ml_string_length(caml_call1(sprintf(_bU_),_oZ_)), + _o0_=st[1]; + caml_call2(fprintf(c,_bV_),l1,_o0_); + var _o1_=st[2]; + caml_call2(fprintf(c,_bW_),l1,_o1_); + var _o2_=st[3]; + caml_call2(fprintf(c,_bX_),l1,_o2_); + fprintf(c,_bY_); var - _oZ_=st[15], - l2=caml_ml_string_length(caml_call1(sprintf(_bX_),_oZ_)), - _o0_=st[15]; - caml_call2(fprintf(c,_bY_),l2,_o0_); - var _o1_=st[6]; - caml_call2(fprintf(c,_bZ_),l2,_o1_); - var _o2_=st[8]; - caml_call2(fprintf(c,_b0_),l2,_o2_); - var _o3_=st[10]; - caml_call2(fprintf(c,_b1_),l2,_o3_); - var _o4_=st[12]; - caml_call2(fprintf(c,_b2_),l2,_o4_); - var _o5_=st[13]; - caml_call2(fprintf(c,_b3_),l2,_o5_); - fprintf(c,_b4_); - var _o6_=st[9]; - caml_call1(fprintf(c,_b5_),_o6_); - var _o7_=st[11]; - caml_call1(fprintf(c,_b6_),_o7_); - var _o8_=st[7]; - return caml_call1(fprintf(c,_b7_),_o8_)} + _o3_=st[15], + l2=caml_ml_string_length(caml_call1(sprintf(_bZ_),_o3_)), + _o4_=st[15]; + caml_call2(fprintf(c,_b0_),l2,_o4_); + var _o5_=st[6]; + caml_call2(fprintf(c,_b1_),l2,_o5_); + var _o6_=st[8]; + caml_call2(fprintf(c,_b2_),l2,_o6_); + var _o7_=st[10]; + caml_call2(fprintf(c,_b3_),l2,_o7_); + var _o8_=st[12]; + caml_call2(fprintf(c,_b4_),l2,_o8_); + var _o9_=st[13]; + caml_call2(fprintf(c,_b5_),l2,_o9_); + fprintf(c,_b6_); + var _o__=st[9]; + caml_call1(fprintf(c,_b7_),_o__); + var _o$_=st[11]; + caml_call1(fprintf(c,_b8_),_o$_); + var _pa_=st[7]; + return caml_call1(fprintf(c,_b9_),_pa_)} function allocated_bytes(param) {var match=runtime.caml_gc_counters(0), @@ -23237,31 +22752,32 @@ 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} - var null_tracker=[0,function(param){return 0},_b$_,_b__,_b9_,_b8_]; + function _ca_(param){return 0} + function _cb_(param){return 0} + var null_tracker=[0,function(param){return 0},_cb_,_ca_,_b$_,_b__]; function start(sampling_rate,opt,tracker) {if(opt) var sth=opt[1],callstack_size=sth; else var callstack_size=max_int; return runtime.caml_memprof_start(sampling_rate,callstack_size,tracker)} - var _ca_=[0,null_tracker,start,runtime.caml_memprof_stop]; - function _cb_(_oQ_){return runtime.caml_final_release(_oQ_)} + 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 - _cc_=runtime.caml_final_register_called_without_value, Stdlib_Gc= [0, print_stat, allocated_bytes, - function(_oP_,_oO_){return runtime.caml_final_register(_oP_,_oO_)}, - _cc_, - _cb_, + function(_oR_,_oQ_){return runtime.caml_final_register(_oR_,_oQ_)}, + _ce_, + _cd_, create_alarm, delete_alarm, - _ca_]; + _cc_]; caml_register_global(813,Stdlib_Gc,"Stdlib__Gc"); function string(str) {return caml_md5_string(str,0,caml_ml_string_length(str))} @@ -23291,7 +22807,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 _oN_=10 <= n?87:48;return n + _oN_ | 0} + function char_hex(n){var _oP_=10 <= n?87:48;return n + _oP_ | 0} function to_hex(d) {if(16 !== caml_ml_string_length(d))invalid_arg(cst_Digest_to_hex); var result=caml_create_bytes(32),i=0; @@ -23299,8 +22815,8 @@ {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 _oM_=i + 1 | 0; - if(15 !== i){var i=_oM_;continue} + var _oO_=i + 1 | 0; + if(15 !== i){var i=_oO_;continue} return caml_string_of_bytes(result)}} function from_hex(s) {if(32 !== caml_ml_string_length(s))invalid_arg(cst_Digest_from_hex); @@ -23315,11 +22831,11 @@ throw [0,Invalid_argument,cst_Digest_from_hex$0]} var result=caml_create_bytes(16),i=0; for(;;) - {var i$0=2 * i | 0,_oK_=digit(caml_string_get(s,i$0 + 1 | 0)); + {var i$0=2 * i | 0,_oM_=digit(caml_string_get(s,i$0 + 1 | 0)); caml_bytes_set - (result,i,chr((digit(caml_string_get(s,i$0)) << 4) + _oK_ | 0)); - var _oL_=i + 1 | 0; - if(15 !== i){var i=_oL_;continue} + (result,i,chr((digit(caml_string_get(s,i$0)) << 4) + _oM_ | 0)); + var _oN_=i + 1 | 0; + if(15 !== i){var i=_oN_;continue} return caml_string_of_bytes(result)}} var Stdlib_Digest= @@ -23343,11 +22859,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 _oJ_=i$0 + 1 | 0; - if(54 !== i$0){var i$0=_oJ_;continue} - var accu=[0,cst_x$1],_oF_=54 + max$1(55,l) | 0,_oE_=0; - if(! (_oF_ < 0)) - {var i=_oE_; + var _oL_=i$0 + 1 | 0; + if(54 !== i$0){var i$0=_oL_;continue} + var accu=[0,cst_x$1],_oH_=54 + max$1(55,l) | 0,_oG_=0; + if(! (_oH_ < 0)) + {var i=_oG_; for(;;) {var j=i % 55 | 0, @@ -23355,15 +22871,15 @@ x=caml_check_bound(seed$0,k)[1 + k]; accu[1] = string(cat(accu[1],caml_string_of_jsbytes("" + x))); var - _oG_=accu[1], - _oA_=caml_string_get(_oG_,3) << 24, - _oB_=caml_string_get(_oG_,2) << 16, - _oC_=caml_string_get(_oG_,1) << 8, - _oD_=((caml_string_get(_oG_,0) + _oC_ | 0) + _oB_ | 0) + _oA_ | 0, - _oH_=(caml_check_bound(s[1],j)[1 + j] ^ _oD_) & 1073741823; - caml_check_bound(s[1],j)[1 + j] = _oH_; - var _oI_=i + 1 | 0; - if(_oF_ !== i){var i=_oI_;continue} + _oI_=accu[1], + _oC_=caml_string_get(_oI_,3) << 24, + _oD_=caml_string_get(_oI_,2) << 16, + _oE_=caml_string_get(_oI_,1) << 8, + _oF_=((caml_string_get(_oI_,0) + _oE_ | 0) + _oD_ | 0) + _oC_ | 0, + _oJ_=(caml_check_bound(s[1],j)[1 + j] ^ _oF_) & 1073741823; + caml_check_bound(s[1],j)[1 + j] = _oJ_; + var _oK_=i + 1 | 0; + if(_oH_ !== i){var i=_oK_;continue} break}} s[2] = 0; return 0}} @@ -23374,18 +22890,18 @@ function bits(s) {s[2] = (s[2] + 1 | 0) % 55 | 0; var - _ox_=s[2], - curval=caml_check_bound(s[1],_ox_)[1 + _ox_], - _oy_=(s[2] + 24 | 0) % 55 | 0, + _oz_=s[2], + curval=caml_check_bound(s[1],_oz_)[1 + _oz_], + _oA_=(s[2] + 24 | 0) % 55 | 0, newval= - caml_check_bound(s[1],_oy_)[1 + _oy_] + caml_check_bound(s[1],_oA_)[1 + _oA_] + (curval ^ (curval >>> 25 | 0) & 31) | 0, newval30=newval & 1073741823, - _oz_=s[2]; - caml_check_bound(s[1],_oz_)[1 + _oz_] = newval30; + _oB_=s[2]; + caml_check_bound(s[1],_oB_)[1 + _oB_] = newval30; return newval30} function intaux(s,n) {for(;;) @@ -23429,7 +22945,7 @@ continue; return v}} function int64(s,bound) - {if(caml_lessequal(bound,_ce_))return invalid_arg(cst_Random_int64); + {if(caml_lessequal(bound,_cg_))return invalid_arg(cst_Random_int64); for(;;) {var b1=caml_int64_of_int32(bits(s)), @@ -23440,7 +22956,7 @@ if (caml_greaterthan (caml_int64_sub(r,v), - caml_int64_add(caml_int64_sub(max_int$2,bound),_cd_))) + caml_int64_add(caml_int64_sub(max_int$2,bound),_cf_))) continue; return v}} function nativeint(s,bound){return int32(s,bound)} @@ -23460,7 +22976,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,_cf_.slice(),0]; + var default$0=[0,_ch_.slice(),0]; function bits$0(param){return bits(default$0)} function int$1(bound){return int$0(default$0,bound)} function full_int$0(bound){return full_int(default$0,bound)} @@ -23478,7 +22994,7 @@ function get_state(param){return copy$5(default$0)} function set_state(s){return assign(default$0,s)} var - _cg_= + _ci_= [0, make$3, make_self_init, @@ -23510,31 +23026,31 @@ bits32$0, bits64$0, nativebits$0, - _cg_, + _ci_, get_state, set_state]; caml_register_global(815,Stdlib_Random,"Stdlib__Random"); function ongoing_traversal(h) - {var _ov_=h.length - 1 < 4?1:0,_ow_=_ov_ || (h[4] < 0?1:0);return _ow_} + {var _ox_=h.length - 1 < 4?1:0,_oy_=_ox_ || (h[4] < 0?1:0);return _oy_} function flip_ongoing_traversal(h){h[4] = - h[4] | 0;return 0} try - {var _c3_=caml_sys_getenv(cst_OCAMLRUNPARAM),params=_c3_} - catch(_ot_) - {_ot_ = caml_wrap_exception(_ot_); - if(_ot_ !== Not_found)throw _ot_; + {var _c5_=caml_sys_getenv(cst_OCAMLRUNPARAM),params=_c5_} + catch(_ov_) + {_ov_ = caml_wrap_exception(_ov_); + if(_ov_ !== Not_found)throw _ov_; try - {var _c2_=caml_sys_getenv(cst_CAMLRUNPARAM),_ch_=_c2_} - catch(_ou_) - {_ou_ = caml_wrap_exception(_ou_); - if(_ou_ !== Not_found)throw _ou_; - var _ch_=cst$66} - var params=_ch_} + {var _c4_=caml_sys_getenv(cst_CAMLRUNPARAM),_cj_=_c4_} + catch(_ow_) + {_ow_ = caml_wrap_exception(_ow_); + if(_ow_ !== Not_found)throw _ow_; + var _cj_=cst$66} + var params=_cj_} var randomized_default=contains$0(params,82), randomized=[0,randomized_default]; function randomize(param){randomized[1] = 1;return 0} function is_randomized(param){return randomized[1]} - var prng=[246,function(_os_){return caml_call1(_cg_[2],0)}]; + var prng=[246,function(_ou_){return caml_call1(_ci_[2],0)}]; function power_2_above(x,n) {var x$0=x; for(;;) @@ -23547,15 +23063,15 @@ var s=power_2_above(16,initial_size); if(random) var - _oq_=caml_obj_tag(prng), - _or_=250 === _oq_?prng[1]:246 === _oq_?force_lazy_block(prng):prng, - seed=caml_call1(_cg_[4],_or_); + _os_=caml_obj_tag(prng), + _ot_=250 === _os_?prng[1]:246 === _os_?force_lazy_block(prng):prng, + seed=caml_call1(_ci_[4],_ot_); else var seed=0; return [0,0,caml_make_vect(s,0),seed,s]} function clear$2(h) - {var _op_=0 < h[1]?1:0; - return _op_?(h[1] = 0,fill$0(h[2],0,h[2].length - 1,0)):_op_} + {var _or_=0 < h[1]?1:0; + return _or_?(h[1] = 0,fill$0(h[2],0,h[2].length - 1,0)):_or_} function reset$0(h) {var len=h[2].length - 1; if(4 <= h.length - 1 && len !== abs(h[4])) @@ -23583,17 +23099,17 @@ return prec$0}} return 0} function copy$6(init) - {var _om_=init[4],_on_=init[3],_oo_=map$7(copy_bucketlist,init[2]); - return [0,init[1],_oo_,_on_,_om_]} + {var _oo_=init[4],_op_=init[3],_oq_=map$7(copy_bucketlist,init[2]); + return [0,init[1],_oq_,_op_,_oo_]} function length$5(h){return h[1]} function insert_all_buckets(indexfun,inplace,odata,ndata) {var nsize=ndata.length - 1, ndata_tail=caml_make_vect(nsize,0), - _og_=odata.length - 1 - 1 | 0, - _of_=0; - if(! (_og_ < 0)) - {var i$0=_of_; + _oi_=odata.length - 1 - 1 | 0, + _oh_=0; + if(! (_oi_ < 0)) + {var i$0=_oh_; a: for(;;) {var cell$1=caml_check_bound(odata,i$0)[1 + i$0],cell=cell$1; @@ -23613,35 +23129,35 @@ caml_check_bound(ndata_tail,nidx)[1 + nidx] = cell$0; var cell=next; continue} - var _ol_=i$0 + 1 | 0; - if(_og_ !== i$0){var i$0=_ol_;continue a} + var _on_=i$0 + 1 | 0; + if(_oi_ !== i$0){var i$0=_on_;continue a} break} break}} if(inplace) - {var _oi_=nsize - 1 | 0,_oh_=0; - if(! (_oi_ < 0)) - {var i=_oh_; + {var _ok_=nsize - 1 | 0,_oj_=0; + if(! (_ok_ < 0)) + {var i=_oj_; for(;;) {var match$0=caml_check_bound(ndata_tail,i)[1 + i]; if(match$0)match$0[3] = 0; - var _ok_=i + 1 | 0; - if(_oi_ !== i){var i=_ok_;continue} + var _om_=i + 1 | 0; + if(_ok_ !== i){var i=_om_;continue} break}} - var _oj_=0} + var _ol_=0} else - var _oj_=inplace; - return _oj_} + var _ol_=inplace; + return _ol_} function resize$0(indexfun,h) {var odata=h[2], osize=odata.length - 1, nsize=osize * 2 | 0, - _oe_=nsize < max_array_length?1:0; - if(_oe_) + _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 _oe_} + return _og_} function iter$10(f,h) {function do_bucket(param) {var param$0=param; @@ -23655,16 +23171,16 @@ var old_trav=ongoing_traversal(h); if(1 - old_trav)flip_ongoing_traversal(h); try - {var d=h[2],_oa_=d.length - 1 - 1 | 0,_n$_=0; - if(! (_oa_ < 0)) - {var i=_n$_; + {var d=h[2],_oc_=d.length - 1 - 1 | 0,_ob_=0; + if(! (_oc_ < 0)) + {var i=_ob_; for(;;) {do_bucket(caml_check_bound(d,i)[1 + i]); - var _od_=i + 1 | 0; - if(_oa_ !== i){var i=_od_;continue} + var _of_=i + 1 | 0; + if(_oc_ !== i){var i=_of_;continue} break}} - var _ob_=1 - old_trav,_oc_=_ob_?flip_ongoing_traversal(h):_ob_; - return _oc_} + var _od_=1 - old_trav,_oe_=_od_?flip_ongoing_traversal(h):_od_; + return _oe_} catch(exn) {exn = caml_wrap_exception(exn); if(old_trav)throw exn; @@ -23698,16 +23214,16 @@ {var d=h[2],old_trav=ongoing_traversal(h); if(1 - old_trav)flip_ongoing_traversal(h); try - {var _n7_=d.length - 1 - 1 | 0,_n6_=0; - if(! (_n7_ < 0)) - {var i=_n6_; + {var _n9_=d.length - 1 - 1 | 0,_n8_=0; + if(! (_n9_ < 0)) + {var i=_n8_; for(;;) {filter_map_inplace_bucket(f,h,i,0,caml_check_bound(h[2],i)[1 + i]); - var _n__=i + 1 | 0; - if(_n7_ !== i){var i=_n__;continue} + var _oa_=i + 1 | 0; + if(_n9_ !== i){var i=_oa_;continue} break}} - var _n8_=1 - old_trav,_n9_=_n8_?flip_ongoing_traversal(h):_n8_; - return _n9_} + var _n__=1 - old_trav,_n$_=_n__?flip_ongoing_traversal(h):_n__; + return _n$_} catch(exn) {exn = caml_wrap_exception(exn); if(old_trav)throw exn; @@ -23730,18 +23246,18 @@ var old_trav=ongoing_traversal(h); if(1 - old_trav)flip_ongoing_traversal(h); try - {var d=h[2],accu=[0,init],_n2_=d.length - 1 - 1 | 0,_n1_=0; - if(! (_n2_ < 0)) - {var i=_n1_; + {var d=h[2],accu=[0,init],_n4_=d.length - 1 - 1 | 0,_n3_=0; + if(! (_n4_ < 0)) + {var i=_n3_; for(;;) - {var _n4_=accu[1]; - accu[1] = do_bucket(caml_check_bound(d,i)[1 + i],_n4_); - var _n5_=i + 1 | 0; - if(_n2_ !== i){var i=_n5_;continue} + {var _n6_=accu[1]; + accu[1] = do_bucket(caml_check_bound(d,i)[1 + i],_n6_); + var _n7_=i + 1 | 0; + if(_n4_ !== i){var i=_n7_;continue} break}} if(1 - old_trav)flip_ongoing_traversal(h); - var _n3_=accu[1]; - return _n3_} + var _n5_=accu[1]; + return _n5_} catch(exn) {exn = caml_wrap_exception(exn); if(old_trav)throw exn; @@ -23760,21 +23276,21 @@ return accu$0}} function stats(h) {var - _nX_=h[2], - _nY_=0, + _nZ_=h[2], + _n0_=0, mbl= fold_left$3 - (function(m,b){return max$1(m,bucket_length(0,b))},_nY_,_nX_), + (function(m,b){return max$1(m,bucket_length(0,b))},_n0_,_nZ_), histo=caml_make_vect(mbl + 1 | 0,0), - _nZ_=h[2]; + _n1_=h[2]; iter$5 (function(b) {var l=bucket_length(0,b), - _n0_=caml_check_bound(histo,l)[1 + l] + 1 | 0; - caml_check_bound(histo,l)[1 + l] = _n0_; + _n2_=caml_check_bound(histo,l)[1 + l] + 1 | 0; + caml_check_bound(histo,l)[1 + l] = _n2_; return 0}, - _nZ_); + _n1_); return [0,h[1],h[2].length - 1,mbl,histo]} function to_seq$9(tbl) {var tbl_data=tbl[2]; @@ -23783,7 +23299,7 @@ for(;;) {if(buck$0) {var key=buck$0[1],data=buck$0[2],next=buck$0[3]; - return [0,[0,key,data],function(_nW_){return aux(i$0,next,_nW_)}]} + return [0,[0,key,data],function(_nY_){return aux(i$0,next,_nY_)}]} if(i$0 === tbl_data.length - 1)return 0; var buck$1=caml_check_bound(tbl_data,i$0)[1 + i$0], @@ -23791,28 +23307,28 @@ i$0=i$1, buck$0=buck$1; continue}} - var _nT_=0,_nU_=0; - return function(_nV_){return aux(_nU_,_nT_,_nV_)}} + var _nV_=0,_nW_=0; + return function(_nX_){return aux(_nW_,_nV_,_nX_)}} function to_seq_keys(m) - {var _nP_=to_seq$9(m); - function _nQ_(_nS_){return _nS_[1]} - return function(_nR_){return map$1(_nQ_,_nP_,_nR_)}} + {var _nR_=to_seq$9(m); + function _nS_(_nU_){return _nU_[1]} + return function(_nT_){return map$1(_nS_,_nR_,_nT_)}} function to_seq_values(m) - {var _nL_=to_seq$9(m); - function _nM_(_nO_){return _nO_[2]} - return function(_nN_){return map$1(_nM_,_nL_,_nN_)}} + {var _nN_=to_seq$9(m); + function _nO_(_nQ_){return _nQ_[2]} + return function(_nP_){return map$1(_nO_,_nN_,_nP_)}} function MakeSeeded(H) {function key_index(h,key) - {var _nK_=h[2].length - 1 - 1 | 0; - return caml_call2(H[2],h[3],key) & _nK_} + {var _nM_=h[2].length - 1 - 1 | 0; + return caml_call2(H[2],h[3],key) & _nM_} function add(h,key,data) {var i=key_index(h,key), bucket=[0,key,data,caml_check_bound(h[2],i)[1 + i]]; caml_check_bound(h[2],i)[1 + i] = bucket; h[1] = h[1] + 1 | 0; - var _nJ_=h[2].length - 1 << 1 < h[1]?1:0; - return _nJ_?resize$0(key_index,h):_nJ_} + var _nL_=h[2].length - 1 << 1 < h[1]?1:0; + return _nL_?resize$0(key_index,h):_nL_} function remove(h,key) {var i=key_index(h,key), @@ -23831,7 +23347,7 @@ continue} return 0}} function find(h,key) - {var _nI_=key_index(h,key),match=caml_check_bound(h[2],_nI_)[1 + _nI_]; + {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; @@ -23853,7 +23369,7 @@ throw Not_found} throw Not_found} function find_opt(h,key) - {var _nH_=key_index(h,key),match=caml_check_bound(h[2],_nH_)[1 + _nH_]; + {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]; @@ -23884,8 +23400,8 @@ var param$0=next; continue} return 0}} - var _nG_=key_index(h,key); - return find_in_bucket(caml_check_bound(h[2],_nG_)[1 + _nG_])} + var _nI_=key_index(h,key); + return find_in_bucket(caml_check_bound(h[2],_nI_)[1 + _nI_])} function replace(h,key,data) {var i=key_index(h,key), @@ -23897,27 +23413,27 @@ if(! caml_call2(H[1],k,key)){var param=next;continue} param[1] = key; param[2] = data; - var _nD_=0} + var _nF_=0} else - var _nD_=1; - if(_nD_) + var _nF_=1; + if(_nF_) {caml_check_bound(h[2],i)[1 + i] = [0,key,data,param$0]; h[1] = h[1] + 1 | 0; - var _nE_=h[2].length - 1 << 1 < h[1]?1:0; - if(_nE_)return resize$0(key_index,h); - var _nF_=_nE_} + var _nG_=h[2].length - 1 << 1 < h[1]?1:0; + if(_nG_)return resize$0(key_index,h); + var _nH_=_nG_} else - var _nF_=_nD_; - return _nF_}} + var _nH_=_nF_; + return _nH_}} function mem(h,key) {var - _nC_=key_index(h,key), - param$0=caml_check_bound(h[2],_nC_)[1 + _nC_], + _nE_=key_index(h,key), + param$0=caml_check_bound(h[2],_nE_)[1 + _nE_], param=param$0; for(;;) {if(param) - {var k=param[1],next=param[3],_nB_=caml_call2(H[1],k,key); - if(_nB_)return _nB_; + {var k=param[1],next=param[3],_nD_=caml_call2(H[1],k,key); + if(_nD_)return _nD_; var param=next; continue} return 0}} @@ -23980,8 +23496,8 @@ to_seq_values=include[19], add_seq=include[20], replace_seq=include[21], - _nA_=include[1]; - function create(sz){return caml_call2(_nA_,_ci_,sz)} + _nC_=include[1]; + function create(sz){return caml_call2(_nC_,_ck_,sz)} function of_seq(i) {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} return [0, @@ -24020,8 +23536,8 @@ 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 _nz_=h[2].length - 1 << 1 < h[1]?1:0; - return _nz_?resize$0(key_index,h):_nz_} + var _nB_=h[2].length - 1 << 1 < h[1]?1:0; + return _nB_?resize$0(key_index,h):_nB_} function remove(h,key) {var i=key_index(h,key),c$0=caml_check_bound(h[2],i)[1 + i],prec=0,c=c$0; for(;;) @@ -24036,7 +23552,7 @@ continue} return 0}} function find$1(h,key) - {var _ny_=key_index(h,key),match=caml_check_bound(h[2],_ny_)[1 + _ny_]; + {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; @@ -24058,7 +23574,7 @@ throw Not_found} throw Not_found} function find_opt$1(h,key) - {var _nx_=key_index(h,key),match=caml_check_bound(h[2],_nx_)[1 + _nx_]; + {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]; @@ -24089,8 +23605,8 @@ var param$0=next; continue} return 0}} - var _nw_=key_index(h,key); - return find_in_bucket(caml_check_bound(h[2],_nw_)[1 + _nw_])} + var _ny_=key_index(h,key); + return find_in_bucket(caml_check_bound(h[2],_ny_)[1 + _ny_])} function replace(h,key,data) {var i=key_index(h,key), @@ -24102,27 +23618,27 @@ if(0 !== caml_compare(k,key)){var param=next;continue} param[1] = key; param[2] = data; - var _nt_=0} + var _nv_=0} else - var _nt_=1; - if(_nt_) + var _nv_=1; + if(_nv_) {caml_check_bound(h[2],i)[1 + i] = [0,key,data,param$0]; h[1] = h[1] + 1 | 0; - var _nu_=h[2].length - 1 << 1 < h[1]?1:0; - if(_nu_)return resize$0(key_index,h); - var _nv_=_nu_} + var _nw_=h[2].length - 1 << 1 < h[1]?1:0; + if(_nw_)return resize$0(key_index,h); + var _nx_=_nw_} else - var _nv_=_nt_; - return _nv_}} + var _nx_=_nv_; + return _nx_}} function mem$2(h,key) {var - _ns_=key_index(h,key), - param$0=caml_check_bound(h[2],_ns_)[1 + _ns_], + _nu_=key_index(h,key), + param$0=caml_check_bound(h[2],_nu_)[1 + _nu_], param=param$0; for(;;) {if(param) - {var k=param[1],next=param[3],_nr_=0 === caml_compare(k,key)?1:0; - if(_nr_)return _nr_; + {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}} @@ -24142,19 +23658,19 @@ var s=power_2_above(16,h[2].length - 1); if(random) var - _nk_=caml_obj_tag(prng), - _nl_=250 === _nk_?prng[1]:246 === _nk_?force_lazy_block(prng):prng, - seed=caml_call1(_cg_[4],_nl_); + _nm_=caml_obj_tag(prng), + _nn_=250 === _nm_?prng[1]:246 === _nm_?force_lazy_block(prng):prng, + seed=caml_call1(_ci_[4],_nn_); else var seed=4 <= h.length - 1?h[3]:0; var - _nm_=4 <= h.length - 1?h[4]:s, - h$0=[0,h[1],caml_make_vect(s,0),seed,_nm_], - _nn_=h$0[2], - _no_=h[2], - _np_=0; + _no_=4 <= h.length - 1?h[4]:s, + h$0=[0,h[1],caml_make_vect(s,0),seed,_no_], + _np_=h$0[2], + _nq_=h[2], + _nr_=0; insert_all_buckets - (function(_nq_){return key_index(h$0,_nq_)},_np_,_no_,_nn_); + (function(_ns_){return key_index(h$0,_ns_)},_nr_,_nq_,_np_); return h$0} var Stdlib_Hashtbl= @@ -24192,26 +23708,26 @@ caml_hash]; caml_register_global(816,Stdlib_Hashtbl,"Stdlib__Hashtbl"); function weak_create(l) - {var _ni_=0 <= l?1:0,_nj_=_ni_?l <= _o_[15]?1:0:_ni_; - if(1 - _nj_)invalid_arg(cst_Weak_create); + {var _nk_=0 <= l?1:0,_nl_=_nk_?l <= _q_[15]?1:0:_nk_; + if(1 - _nl_)invalid_arg(cst_Weak_create); return runtime.caml_weak_create(l)} function length$6(x){return x.length - 1 - 2 | 0} function raise_if_invalid_offset$0(e,o,msg) - {var _nf_=0 <= o?1:0,_ng_=_nf_?o < length$6(e)?1:0:_nf_,_nh_=1 - _ng_; - return _nh_?invalid_arg(msg):_nh_} + {var _nh_=0 <= o?1:0,_ni_=_nh_?o < length$6(e)?1:0:_nh_,_nj_=1 - _ni_; + return _nj_?invalid_arg(msg):_nj_} function set$1(e,o,x) {raise_if_invalid_offset$0(e,o,cst_Weak_set); if(x){var x$0=x[1];return caml_ephe_set_key(e,o,x$0)} return caml_ephe_unset_key(e,o)} function get$2(e,o) {raise_if_invalid_offset$0(e,o,cst_Weak_get); - return caml_ephe_get_key(e,o)} + return runtime.caml_weak_get(e,o)} function get_copy(e,o) {raise_if_invalid_offset$0(e,o,cst_Weak_get_copy); - return caml_ephe_get_key_copy(e,o)} + return runtime.caml_weak_get_copy(e,o)} function check$0(e,o) {raise_if_invalid_offset$0(e,o,cst_Weak_check); - return caml_ephe_check_key(e,o)} + return runtime.caml_weak_check(e,o)} function blit$4(e1,o1,e2,o2,l) {if (0 @@ -24231,18 +23747,20 @@ && ! ((length$6(e2) - l | 0) < o2)) - {var _nd_=0 !== l?1:0,_ne_=_nd_?caml_ephe_blit_key(e1,o1,e2,o2,l):_nd_; - return _ne_} + {var + _nf_=0 !== l?1:0, + _ng_=_nf_?runtime.caml_weak_blit(e1,o1,e2,o2,l):_nf_; + return _ng_} return invalid_arg(cst_Weak_blit)} function fill$2(ar,ofs,len,x) {if(0 <= ofs && 0 <= len && ! ((length$6(ar) - len | 0) < ofs)) - {var _nb_=(ofs + len | 0) - 1 | 0; - if(! (_nb_ < ofs)) + {var _nd_=(ofs + len | 0) - 1 | 0; + if(! (_nd_ < ofs)) {var i=ofs; for(;;) {set$1(ar,i,x); - var _nc_=i + 1 | 0; - if(_nb_ !== i){var i=_nc_;continue} + var _ne_=i + 1 | 0; + if(_nd_ !== i){var i=_ne_;continue} break}} return 0} throw [0,Invalid_argument,cst_Weak_fill]} @@ -24261,20 +23779,20 @@ 0, 0]} function clear(t) - {var _m$_=t[1].length - 1 - 1 | 0,_m__=0; - if(! (_m$_ < 0)) - {var i=_m__; + {var _nb_=t[1].length - 1 - 1 | 0,_na_=0; + if(! (_nb_ < 0)) + {var i=_na_; for(;;) {caml_check_bound(t[1],i)[1 + i] = emptybucket; caml_check_bound(t[2],i)[1 + i] = [0]; - var _na_=i + 1 | 0; - if(_m$_ !== i){var i=_na_;continue} + var _nc_=i + 1 | 0; + if(_nb_ !== i){var i=_nc_;continue} break}} t[3] = limit; t[4] = 0; return 0} function fold(f,t,init) - {var _m9_=t[1],i=0; + {var _m$_=t[1],i=0; return fold_right$2 (function(b,accu$1) {var i$0=i,accu=accu$1; @@ -24291,10 +23809,10 @@ continue} var i$2=i$0 + 1 | 0,i$0=i$2; continue}}, - _m9_, + _m$_, init)} function iter(f,t) - {var _m8_=t[1],i=0; + {var _m__=t[1],i=0; return iter$5 (function(b) {var i$0=i; @@ -24308,24 +23826,24 @@ continue} var i$2=i$0 + 1 | 0,i$0=i$2; continue}}, - _m8_)} + _m__)} function count_bucket(i,b,accu) {var i$0=i,accu$0=accu; for(;;) {if(length$6(b) <= i$0)return accu$0; var - _m7_=check$0(b,i$0)?1:0, - accu$1=accu$0 + _m7_ | 0, + _m9_=check$0(b,i$0)?1:0, + accu$1=accu$0 + _m9_ | 0, i$1=i$0 + 1 | 0, i$0=i$1, accu$0=accu$1; continue}} function count(t) - {var _m2_=0,_m3_=t[1],_m4_=0; + {var _m4_=0,_m5_=t[1],_m6_=0; return fold_right$2 - (function(_m5_,_m6_){return count_bucket(_m4_,_m5_,_m6_)}, - _m3_, - _m2_)} + (function(_m7_,_m8_){return count_bucket(_m6_,_m7_,_m8_)}, + _m5_, + _m4_)} function add_aux(t,setter,d,h,index) {var bucket$0=caml_check_bound(t[1],index)[1 + index], @@ -24347,16 +23865,16 @@ 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 _mY_=sz <= t[3]?1:0,_mZ_=_mY_?t[3] < newsz?1:0:_mY_; - if(_mZ_) + 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 - _mO_=t[5], - bucket=caml_check_bound(t[1],_mO_)[1 + _mO_], - _mP_=t[5], - hbucket=caml_check_bound(t[2],_mP_)[1 + _mP_], + _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); @@ -24368,38 +23886,38 @@ {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 _mQ_=caml_check_bound(hbucket,j)[1 + j]; - caml_check_bound(hbucket,i$0)[1 + i$0] = _mQ_; + 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 _mR_=t[5]; - caml_check_bound(t[1],_mR_)[1 + _mR_] = emptybucket; - var _mS_=t[5]; - caml_check_bound(t[2],_mS_)[1 + _mS_] = [0]} + {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 _mV_=t[5]; - caml_check_bound(t[1],_mV_)[1 + _mV_] = newbucket; - var _mW_=sub$1(hbucket,0,prev_len),_mX_=t[5]; - caml_check_bound(t[2],_mX_)[1 + _mX_] = _mW_} - var _mT_=t[3] < n?1:0,_mU_=_mT_?prev_len <= t[3]?1:0:_mT_; - if(_mU_)t[4] = t[4] - 1 | 0; + 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 _m1_=i$4 + 1 | 0; - if(2 !== i$4){var i$4=_m1_;continue} + var _m3_=i$4 + 1 | 0; + if(2 !== i$4){var i$4=_m3_;continue} break}} - var _m0_=((t[1].length - 1) / 2 | 0) < t[4]?1:0; - if(_m0_) + var _m2_=((t[1].length - 1) / 2 | 0) < t[4]?1:0; + if(_m2_) {var n$0=t[1].length - 1, newlen=min$1(((3 * n$0 | 0) / 2 | 0) + 3 | 0,max_array_length); if(n$0 < newlen) - {var newt=create(newlen),_mN_=t[1],i=0; + {var newt=create(newlen),_mP_=t[1],i=0; iteri$3 (function(j,ob) {var i$0=i; @@ -24420,7 +23938,7 @@ continue} var i$2=i$0 + 1 | 0,i$0=i$2; continue}}, - _mN_); + _mP_); t[1] = newt[1]; t[2] = newt[2]; t[3] = newt[3]; @@ -24430,7 +23948,7 @@ t[3] = max_int; t[4] = 0; return 0} - return _m0_} + 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; @@ -24511,10 +24029,10 @@ var i$1=i + 1 | 0,i=i$1; continue}} function remove(t,d) - {var _mM_=0; - return find_shadow(t,d,function(w,i){return set$1(w,i,0)},_mM_)} + {var _mO_=0; + return find_shadow(t,d,function(w,i){return set$1(w,i,0)},_mO_)} function mem(t,d) - {var _mL_=0;return find_shadow(t,d,function(w,i){return 1},_mL_)} + {var _mN_=0;return find_shadow(t,d,function(w,i){return 1},_mN_)} function find_all(t,d) {var h=caml_call1(H[2],d), @@ -24550,15 +24068,15 @@ {var len=t[1].length - 1,lens=map$7(length$6,t[1]); sort(caml_int_compare,lens); var - _mD_=0, + _mF_=0, totlen= - fold_left$3(function(_mK_,_mJ_){return _mK_ + _mJ_ | 0},_mD_,lens), - _mE_=len - 1 | 0, - _mG_=len / 2 | 0, - _mF_=caml_check_bound(lens,_mE_)[1 + _mE_], + 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_], - _mI_=caml_check_bound(lens,0)[1]; - return [0,len,count(t),totlen,_mI_,_mH_,_mF_]} + _mJ_=caml_check_bound(lens,_mI_)[1 + _mI_], + _mK_=caml_check_bound(lens,0)[1]; + return [0,len,count(t),totlen,_mK_,_mJ_,_mH_]} return [0, create, clear, @@ -24603,8 +24121,8 @@ state[11] = 0; return 0} function format_string(state,s) - {var _mC_=caml_string_notequal(s,cst$67); - return _mC_?format_pp_text(state,caml_ml_string_length(s),s):_mC_} + {var _mE_=caml_string_notequal(s,cst$67); + return _mE_?format_pp_text(state,caml_ml_string_length(s),s):_mE_} function break_new_line(state,param,width) {var after=param[3],offset=param[2],before=param[1]; format_string(state,before); @@ -24617,7 +24135,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,_cj_,width)} + function break_line(state,width){return break_new_line(state,_cl_,width)} function break_same_line(state,param) {var after=param[3],width=param[2],before=param[1]; format_string(state,before); @@ -24651,8 +24169,8 @@ return break_line(state,width$0)} return pp_output_newline(state); case 4: - var _mz_=state[10] !== (state[6] - state[9] | 0)?1:0; - if(_mz_) + 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]; @@ -24660,7 +24178,7 @@ state[9] = state[9] + size | 0; return 0} return 0} - return _mz_; + return _mB_; default: var match$7=pop_opt(state[5]); if(match$7) @@ -24704,17 +24222,17 @@ 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],_mA_=tabs$0[1]; - if(_mA_) - {var first=_mA_[1],param$0=tabs$0[1]; + {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 _mB_=head} + var _mD_=head} else - var _mB_=first; - var tab=_mB_; + var _mD_=first; + var tab=_mD_; break}} else var tab=insertion_point; @@ -24756,15 +24274,15 @@ length=match$0[3], token=match$0[2], pending_count=state[13] - state[12] | 0, - _mx_=0 <= size?1:0, - _my_=_mx_ || (state[9] <= pending_count?1:0); - if(_my_) + _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 _my_} + return _mA_} return 0}} function enqueue_advance(state,tok) {pp_enqueue(state,tok);return advance_left(state)} @@ -24772,7 +24290,7 @@ {return enqueue_advance(state,[0,size,[0,s],size])} function initialize_scan_stack(stack) {clear(stack); - var queue_elem=[0,unknown,_ck_,0]; + var queue_elem=[0,unknown,_cm_,0]; return push([0,-1,queue_elem],stack)} function set_size(state,ty) {var match=top_opt(state[1]); @@ -24781,25 +24299,25 @@ match$0=match[1], queue_elem=match$0[2], left_total=match$0[1], - _ms_=queue_elem[1]; + _mu_=queue_elem[1]; if(left_total < state[12])return initialize_scan_stack(state[1]); - var _mt_=queue_elem[2]; - if(typeof _mt_ !== "number") - switch(_mt_[0]) + var _mv_=queue_elem[2]; + if(typeof _mv_ !== "number") + switch(_mv_[0]) {case 3: var - _mv_=1 - ty, - _mw_= - _mv_ - ?(queue_elem[1] = state[13] + _ms_ | 0,pop_opt(state[1]),0) - :_mv_; - return _mw_; + _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 - _mu_= - ty?(queue_elem[1] = state[13] + _ms_ | 0,pop_opt(state[1]),0):ty; - return _mu_ + _mw_= + ty?(queue_elem[1] = state[13] + _mu_ | 0,pop_opt(state[1]),0):ty; + return _mw_ } return 0} return 0} @@ -24813,37 +24331,37 @@ 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 _mq_=state[14] === state[15]?1:0; - if(_mq_) - {var _mr_=state[16]; - return enqueue_string_as(state,caml_ml_string_length(_mr_),_mr_)} - return _mq_} + var _ms_=state[14] === state[15]?1:0; + if(_ms_) + {var _mt_=state[16]; + return enqueue_string_as(state,caml_ml_string_length(_mt_),_mt_)} + return _ms_} function pp_close_box(state,param) - {var _mo_=1 < state[14]?1:0; - if(_mo_) + {var _mq_=1 < state[14]?1:0; + if(_mq_) {if(state[14] < state[15]) {pp_enqueue(state,[0,size,1,0]);set_size(state,1);set_size(state,0)} state[14] = state[14] - 1 | 0; - var _mp_=0} + var _mr_=0} else - var _mp_=_mo_; - return _mp_} + 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 _mn_=state[23]; - if(_mn_) + var _mp_=state[23]; + if(_mp_) {var token=[5,tag_name];return pp_enqueue(state,[0,size,token,0])} - return _mn_} + return _mp_} function pp_close_stag(state,param) {if(state[23])pp_enqueue(state,[0,size,5,0]); - var _ml_=state[22]; - if(_ml_) + 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 _mm_=0} + var _mo_=0} else - var _mm_=_ml_; - return _mm_} + var _mo_=_mn_; + return _mo_} function pp_open_tag(state,s){return pp_open_stag(state,[0,String_tag,s])} function pp_close_tag(state,param){return pp_close_stag(state,0)} function pp_set_print_tags(state,b){state[22] = b;return 0} @@ -24875,8 +24393,8 @@ state[9] = state[6]; return pp_open_box_gen(state,0,3)} function pp_flush_queue(state,b) - {var _mk_=state[4]; - iter$7(function(param){return pp_close_tag(state,0)},_mk_); + {var _mm_=state[4]; + iter$7(function(param){return pp_close_tag(state,0)},_mm_); for(;;) {if(1 < state[14]){pp_close_box(state,0);continue} state[13] = pp_infinity; @@ -24884,8 +24402,8 @@ if(b)pp_output_newline(state); return pp_rinit(state)}} function pp_print_as_size(state,size,s) - {var _mj_=state[14] < state[15]?1:0; - return _mj_?enqueue_string_as(state,size,s):_mj_} + {var _ml_=state[14] < state[15]?1:0; + return _ml_?enqueue_string_as(state,size,s):_ml_} function pp_print_as(state,isize,s) {return pp_print_as_size(state,isize,s)} function pp_print_string(state,s) @@ -24912,18 +24430,18 @@ function pp_print_flush(state,param) {pp_flush_queue(state,0);return caml_call1(state[18],0)} function pp_force_newline(state,param) - {var _mi_=state[14] < state[15]?1:0; - return _mi_?enqueue_advance(state,[0,size,3,0]):_mi_} + {var _mk_=state[14] < state[15]?1:0; + return _mk_?enqueue_advance(state,[0,size,3,0]):_mk_} function pp_print_if_newline(state,param) - {var _mh_=state[14] < state[15]?1:0; - return _mh_?enqueue_advance(state,[0,size,4,0]):_mh_} + {var _mj_=state[14] < state[15]?1:0; + return _mj_?enqueue_advance(state,[0,size,4,0]):_mj_} function pp_print_custom_break(state,fits,breaks) {var after=fits[3], width=fits[2], before=fits[1], - _mg_=state[14] < state[15]?1:0; - if(_mg_) + _mi_=state[14] < state[15]?1:0; + if(_mi_) {var size=- state[13] | 0, token=[1,fits,breaks], @@ -24935,7 +24453,7 @@ 0, elem=[0,size,token,length]; return scan_push(state,1,elem)} - return _mg_} + return _mi_} function pp_print_break(state,width,offset) {return pp_print_custom_break (state,[0,cst$75,width,cst$74],[0,cst$73,offset,cst$72])} @@ -24943,37 +24461,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 _mf_=state[14] < state[15]?1:0; - if(_mf_) + 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 _mf_} + return _mh_} function pp_close_tbox(state,param) - {var _mc_=1 < state[14]?1:0; - if(_mc_) - {var _md_=state[14] < state[15]?1:0; - if(_md_) + {var _me_=1 < state[14]?1:0; + if(_me_) + {var _mf_=state[14] < state[15]?1:0; + if(_mf_) {var elem=[0,size,2,0]; enqueue_advance(state,elem); state[14] = state[14] - 1 | 0; - var _me_=0} + var _mg_=0} else - var _me_=_md_} + var _mg_=_mf_} else - var _me_=_mc_; - return _me_} + var _mg_=_me_; + return _mg_} function pp_print_tbreak(state,width,offset) - {var _mb_=state[14] < state[15]?1:0; - if(_mb_) + {var _md_=state[14] < state[15]?1:0; + if(_md_) {var size=- state[13] | 0,elem=[0,size,[2,width,offset],width]; return scan_push(state,1,elem)} - return _mb_} + return _md_} function pp_print_tab(state,param){return pp_print_tbreak(state,0,0)} function pp_set_tab(state,param) - {var _ma_=state[14] < state[15]?1:0; - if(_ma_){var elem=[0,size,0,0];return enqueue_advance(state,elem)} - return _ma_} + {var _mc_=state[14] < state[15]?1:0; + if(_mc_){var elem=[0,size,0,0];return enqueue_advance(state,elem)} + return _mc_} function pp_set_max_boxes(state,n) - {var _l__=1 < n?1:0,_l$_=_l__?(state[15] = n,0):_l__;return _l$_} + {var _ma_=1 < n?1:0,_mb_=_ma_?(state[15] = n,0):_ma_;return _mb_} function pp_get_max_boxes(state,param){return state[15]} function pp_over_max_boxes(state,param) {return state[14] === state[15]?1:0} @@ -24981,20 +24499,20 @@ 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 _l9_=1 < n$0?1:0; - if(_l9_) - {var n$1=state[6] - n$0 | 0,_l8_=1 <= n$1?1:0; - if(_l8_) + {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 _l8_} - return _l9_} + return _l__} + return _l$_} function pp_get_max_indent(state,param){return state[8]} function pp_set_margin(state,n) - {var _l7_=1 <= n?1:0; - if(_l7_) + {var _l9_=1 <= n?1:0; + if(_l9_) {var n$0=pp_limit(n); state[6] = n$0; var @@ -25003,10 +24521,10 @@ ?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 _l7_} + return _l9_} function validate_geometry(param) {var margin=param[2],max_indent=param[1]; - return 2 <= max_indent?margin <= max_indent?_cl_:_cm_:_cn_} + return 2 <= max_indent?margin <= max_indent?_cn_:_co_:_cp_} function check_geometry(geometry) {var match=validate_geometry(geometry);return 0 === match[0]?1:0} function pp_get_margin(state,param){return state[6]} @@ -25047,22 +24565,22 @@ function display_indent(state,n) {var n$0=n; for(;;) - {var _l6_=0 < n$0?1:0; - if(_l6_) + {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 _l6_}} + return _l8_}} function pp_set_formatter_out_channel(state,oc) {state[17] = - function(_l3_,_l4_,_l5_){return output_substring(oc,_l3_,_l4_,_l5_)}; + function(_l5_,_l6_,_l7_){return output_substring(oc,_l5_,_l6_,_l7_)}; state[18] = function(param){return caml_ml_flush(oc)}; - state[19] = function(_l2_){return display_newline(state,_l2_)}; - state[20] = function(_l1_){return display_indent(state,_l1_)}; - state[21] = function(_l0_){return display_indent(state,_l0_)}; + state[19] = function(_l4_){return display_newline(state,_l4_)}; + state[20] = function(_l3_){return display_indent(state,_l3_)}; + state[21] = function(_l2_){return display_indent(state,_l2_)}; return 0} function default_pp_mark_open_tag(param) {if(param[1] === String_tag) @@ -25072,21 +24590,21 @@ {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(_lZ_){return 0} - function default_pp_print_close_tag(_lY_){return 0} + function default_pp_print_open_tag(_l1_){return 0} + function default_pp_print_close_tag(_l0_){return 0} function pp_make_formatter(f,g,h,i,j) - {var pp_queue=create$1(0),sys_tok=[0,unknown,_co_,0]; + {var pp_queue=create$1(0),sys_tok=[0,unknown,_cq_,0]; add(sys_tok,pp_queue); var scan_stack=create$0(0); initialize_scan_stack(scan_stack); push([0,1,sys_tok],scan_stack); - var _lV_=create$0(0),_lW_=create$0(0),_lX_=create$0(0); + var _lX_=create$0(0),_lY_=create$0(0),_lZ_=create$0(0); return [0, scan_stack, create$0(0), + _lZ_, + _lY_, _lX_, - _lW_, - _lV_, 78, 10, 68, @@ -25114,27 +24632,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 _lN_(_lU_){return 0} - function _lO_(_lT_){return 0} + {function _lP_(_lW_){return 0} + function _lQ_(_lV_){return 0} var ppf= - pp_make_formatter(output,flush,function(_lS_){return 0},_lO_,_lN_); - ppf[19] = function(_lR_){return display_newline(ppf,_lR_)}; - ppf[20] = function(_lQ_){return display_indent(ppf,_lQ_)}; - ppf[21] = function(_lP_){return display_indent(ppf,_lP_)}; + pp_make_formatter(output,flush,function(_lU_){return 0},_lQ_,_lP_); + ppf[19] = function(_lT_){return display_newline(ppf,_lT_)}; + ppf[20] = function(_lS_){return display_indent(ppf,_lS_)}; + ppf[21] = function(_lR_){return display_indent(ppf,_lR_)}; return ppf} function formatter_of_out_channel(oc) - {function _lJ_(param){return caml_ml_flush(oc)} + {function _lL_(param){return caml_ml_flush(oc)} return make_formatter - (function(_lK_,_lL_,_lM_) - {return output_substring(oc,_lK_,_lL_,_lM_)}, - _lJ_)} + (function(_lM_,_lN_,_lO_) + {return output_substring(oc,_lM_,_lN_,_lO_)}, + _lL_)} function formatter_of_buffer(b) - {function _lE_(_lI_){return 0} + {function _lG_(_lK_){return 0} return make_formatter - (function(_lF_,_lG_,_lH_) - {return add_substring(b,_lF_,_lG_,_lH_)}, - _lE_)} + (function(_lH_,_lI_,_lJ_) + {return add_substring(b,_lH_,_lI_,_lJ_)}, + _lG_)} var pp_buffer_size=512; function pp_make_buffer(param){return create$2(pp_buffer_size)} var @@ -25157,96 +24675,96 @@ {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(_lD_){return add_symbolic_output_item(sob,0)} - function h(_lC_){return add_symbolic_output_item(sob,1)} + function g(_lF_){return add_symbolic_output_item(sob,0)} + function h(_lE_){return add_symbolic_output_item(sob,1)} function i(n){return add_symbolic_output_item(sob,[1,n])} function j(n){return add_symbolic_output_item(sob,[2,n])} return pp_make_formatter(f,g,h,i,j)} - function open_hbox(_lB_){return pp_open_hbox(std_formatter,_lB_)} - function open_vbox(_lA_){return pp_open_vbox(std_formatter,_lA_)} - function open_hvbox(_lz_){return pp_open_hvbox(std_formatter,_lz_)} - function open_hovbox(_ly_){return pp_open_hovbox(std_formatter,_ly_)} - function open_box(_lx_){return pp_open_box(std_formatter,_lx_)} - function close_box(_lw_){return pp_close_box(std_formatter,_lw_)} - function open_tag(_lv_){return pp_open_tag(std_formatter,_lv_)} - function close_tag(_lu_){return pp_close_tag(std_formatter,_lu_)} - function open_stag(_lt_){return pp_open_stag(std_formatter,_lt_)} - function close_stag(_ls_){return pp_close_stag(std_formatter,_ls_)} - function print_as(_lq_,_lr_){return pp_print_as(std_formatter,_lq_,_lr_)} - function print_string$0(_lp_){return pp_print_string(std_formatter,_lp_)} - function print_bytes$0(_lo_){return pp_print_bytes(std_formatter,_lo_)} - function print_int$0(_ln_){return pp_print_int(std_formatter,_ln_)} - function print_float$0(_lm_){return pp_print_float(std_formatter,_lm_)} - function print_char$0(_ll_){return pp_print_char(std_formatter,_ll_)} - function print_bool(_lk_){return pp_print_bool(std_formatter,_lk_)} - function print_break(_li_,_lj_) - {return pp_print_break(std_formatter,_li_,_lj_)} - function print_cut(_lh_){return pp_print_cut(std_formatter,_lh_)} - function print_space(_lg_){return pp_print_space(std_formatter,_lg_)} - function force_newline(_lf_){return pp_force_newline(std_formatter,_lf_)} - function print_flush(_le_){return pp_print_flush(std_formatter,_le_)} - function print_newline$0(_ld_) - {return pp_print_newline(std_formatter,_ld_)} - function print_if_newline(_lc_) - {return pp_print_if_newline(std_formatter,_lc_)} - function open_tbox(_lb_){return pp_open_tbox(std_formatter,_lb_)} - function close_tbox(_la_){return pp_close_tbox(std_formatter,_la_)} - function print_tbreak(_k__,_k$_) - {return pp_print_tbreak(std_formatter,_k__,_k$_)} - function set_tab(_k9_){return pp_set_tab(std_formatter,_k9_)} - function print_tab(_k8_){return pp_print_tab(std_formatter,_k8_)} - function set_margin(_k7_){return pp_set_margin(std_formatter,_k7_)} - function get_margin(_k6_){return std_formatter[6]} - function set_max_indent(_k5_) - {return pp_set_max_indent(std_formatter,_k5_)} - function get_max_indent(_k4_){return std_formatter[8]} - function set_geometry(_k2_,_k3_) - {return pp_set_geometry(std_formatter,_k2_,_k3_)} - function safe_set_geometry(_k0_,_k1_) - {return pp_safe_set_geometry(std_formatter,_k0_,_k1_)} - function get_geometry(_kZ_){return pp_get_geometry(std_formatter,_kZ_)} - function update_geometry(_kY_) - {return pp_update_geometry(std_formatter,_kY_)} - function set_max_boxes(_kX_){return pp_set_max_boxes(std_formatter,_kX_)} - function get_max_boxes(_kW_){return std_formatter[15]} - function over_max_boxes(_kV_) - {return pp_over_max_boxes(std_formatter,_kV_)} - function set_ellipsis_text(_kU_) - {return pp_set_ellipsis_text(std_formatter,_kU_)} - function get_ellipsis_text(_kT_){return std_formatter[16]} - function set_formatter_out_channel(_kS_) - {return pp_set_formatter_out_channel(std_formatter,_kS_)} - function set_formatter_out_functions(_kR_) - {return pp_set_formatter_out_functions(std_formatter,_kR_)} - function get_formatter_out_functions(_kQ_) - {return pp_get_formatter_out_functions(std_formatter,_kQ_)} - function set_formatter_output_functions(_kO_,_kP_) - {return pp_set_formatter_output_functi(std_formatter,_kO_,_kP_)} - function get_formatter_output_functions(_kN_) - {return pp_get_formatter_output_functi(std_formatter,_kN_)} - function set_formatter_stag_functions(_kM_) - {return pp_set_formatter_stag_function(std_formatter,_kM_)} - function get_formatter_stag_functions(_kL_) - {return pp_get_formatter_stag_function(std_formatter,_kL_)} - function set_print_tags(_kK_) - {return pp_set_print_tags(std_formatter,_kK_)} - function get_print_tags(_kJ_){return std_formatter[22]} - function set_mark_tags(_kI_){return pp_set_mark_tags(std_formatter,_kI_)} - function get_mark_tags(_kH_){return std_formatter[23]} - function set_tags(_kG_){return pp_set_tags(std_formatter,_kG_)} + function open_hbox(_lD_){return pp_open_hbox(std_formatter,_lD_)} + function open_vbox(_lC_){return pp_open_vbox(std_formatter,_lC_)} + function open_hvbox(_lB_){return pp_open_hvbox(std_formatter,_lB_)} + function open_hovbox(_lA_){return pp_open_hovbox(std_formatter,_lA_)} + function open_box(_lz_){return pp_open_box(std_formatter,_lz_)} + function close_box(_ly_){return pp_close_box(std_formatter,_ly_)} + function open_tag(_lx_){return pp_open_tag(std_formatter,_lx_)} + function close_tag(_lw_){return pp_close_tag(std_formatter,_lw_)} + function open_stag(_lv_){return pp_open_stag(std_formatter,_lv_)} + function close_stag(_lu_){return pp_close_stag(std_formatter,_lu_)} + function print_as(_ls_,_lt_){return pp_print_as(std_formatter,_ls_,_lt_)} + function print_string$0(_lr_){return pp_print_string(std_formatter,_lr_)} + function print_bytes$0(_lq_){return pp_print_bytes(std_formatter,_lq_)} + function print_int$0(_lp_){return pp_print_int(std_formatter,_lp_)} + function print_float$0(_lo_){return pp_print_float(std_formatter,_lo_)} + function print_char$0(_ln_){return pp_print_char(std_formatter,_ln_)} + function print_bool(_lm_){return pp_print_bool(std_formatter,_lm_)} + function print_break(_lk_,_ll_) + {return pp_print_break(std_formatter,_lk_,_ll_)} + function print_cut(_lj_){return pp_print_cut(std_formatter,_lj_)} + function print_space(_li_){return pp_print_space(std_formatter,_li_)} + function force_newline(_lh_){return pp_force_newline(std_formatter,_lh_)} + function print_flush(_lg_){return pp_print_flush(std_formatter,_lg_)} + function print_newline$0(_lf_) + {return pp_print_newline(std_formatter,_lf_)} + function print_if_newline(_le_) + {return pp_print_if_newline(std_formatter,_le_)} + function open_tbox(_ld_){return pp_open_tbox(std_formatter,_ld_)} + function close_tbox(_lc_){return pp_close_tbox(std_formatter,_lc_)} + function print_tbreak(_la_,_lb_) + {return pp_print_tbreak(std_formatter,_la_,_lb_)} + function set_tab(_k$_){return pp_set_tab(std_formatter,_k$_)} + function print_tab(_k__){return pp_print_tab(std_formatter,_k__)} + function set_margin(_k9_){return pp_set_margin(std_formatter,_k9_)} + function get_margin(_k8_){return std_formatter[6]} + function set_max_indent(_k7_) + {return pp_set_max_indent(std_formatter,_k7_)} + function get_max_indent(_k6_){return std_formatter[8]} + function set_geometry(_k4_,_k5_) + {return pp_set_geometry(std_formatter,_k4_,_k5_)} + function safe_set_geometry(_k2_,_k3_) + {return pp_safe_set_geometry(std_formatter,_k2_,_k3_)} + function get_geometry(_k1_){return pp_get_geometry(std_formatter,_k1_)} + function update_geometry(_k0_) + {return pp_update_geometry(std_formatter,_k0_)} + function set_max_boxes(_kZ_){return pp_set_max_boxes(std_formatter,_kZ_)} + function get_max_boxes(_kY_){return std_formatter[15]} + function over_max_boxes(_kX_) + {return pp_over_max_boxes(std_formatter,_kX_)} + function set_ellipsis_text(_kW_) + {return pp_set_ellipsis_text(std_formatter,_kW_)} + function get_ellipsis_text(_kV_){return std_formatter[16]} + function set_formatter_out_channel(_kU_) + {return pp_set_formatter_out_channel(std_formatter,_kU_)} + function set_formatter_out_functions(_kT_) + {return pp_set_formatter_out_functions(std_formatter,_kT_)} + function get_formatter_out_functions(_kS_) + {return pp_get_formatter_out_functions(std_formatter,_kS_)} + function set_formatter_output_functions(_kQ_,_kR_) + {return pp_set_formatter_output_functi(std_formatter,_kQ_,_kR_)} + function get_formatter_output_functions(_kP_) + {return pp_get_formatter_output_functi(std_formatter,_kP_)} + function set_formatter_stag_functions(_kO_) + {return pp_set_formatter_stag_function(std_formatter,_kO_)} + function get_formatter_stag_functions(_kN_) + {return pp_get_formatter_stag_function(std_formatter,_kN_)} + function set_print_tags(_kM_) + {return pp_set_print_tags(std_formatter,_kM_)} + function get_print_tags(_kL_){return std_formatter[22]} + function set_mark_tags(_kK_){return pp_set_mark_tags(std_formatter,_kK_)} + function get_mark_tags(_kJ_){return std_formatter[23]} + function set_tags(_kI_){return pp_set_tags(std_formatter,_kI_)} function pp_print_list(opt,pp_v,ppf,param) {var opt$0=opt,param$0=param; for(;;) {if(opt$0)var sth=opt$0[1],pp_sep=sth;else var pp_sep=pp_print_cut; if(param$0) - {var _kF_=param$0[1]; + {var _kH_=param$0[1]; if(param$0[2]) {var vs=param$0[2]; - caml_call2(pp_v,ppf,_kF_); + 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,_kF_)} + return caml_call2(pp_v,ppf,_kH_)} return 0}} function pp_print_seq(opt,pp_v,ppf,seq$1) {if(opt)var sth=opt[1],pp_sep=sth;else var pp_sep=pp_print_cut; @@ -25280,13 +24798,13 @@ else if(32 === match){flush(0);pp_print_space(ppf,0)}else right[1]++; continue} - var _kE_=left[1] !== len?1:0; - return _kE_?flush(0):_kE_}} + var _kG_=left[1] !== len?1:0; + return _kG_?flush(0):_kG_}} function pp_print_option(opt,pp_v,ppf,param) {if(opt) var sth=opt[1],none=sth; else - var none=function(param,_kD_){return 0}; + var none=function(param,_kF_){return 0}; if(param){var v=param[1];return caml_call2(pp_v,ppf,v)} return caml_call2(none,ppf,0)} function pp_print_result(ok,error,ppf,param) @@ -25334,62 +24852,62 @@ output_acc$0(ppf,p); return output_formatting_lit(ppf,f); case 1: - var _kt_=acc[2],_ku_=acc[1]; - if(0 === _kt_[0]) - {var acc$0=_kt_[1]; - output_acc$0(ppf,_ku_); + 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=_kt_[1]; - output_acc$0(ppf,_ku_); + 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 _kv_=acc[1],switch$1=0; - if(typeof _kv_ !== "number" && 0 === _kv_[0]) - {var _kw_=_kv_[2],switch$2=0; - if(typeof _kw_ !== "number" && 1 === _kw_[0]) - {var s$0=acc[2],size=_kw_[2],p$1=_kv_[1]; + 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=_kv_;switch$0 = 2} + if(! switch$1){var s=acc[2],p$0=_kx_;switch$0 = 2} break; case 3: - var _kx_=acc[1],switch$3=0; - if(typeof _kx_ !== "number" && 0 === _kx_[0]) - {var _ky_=_kx_[2],switch$4=0; - if(typeof _ky_ !== "number" && 1 === _ky_[0]) - {var c$0=acc[2],size$0=_ky_[2],p$3=_kx_[1]; + 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=_kx_;switch$0 = 3} + if(! switch$3){var c=acc[2],p$2=_kz_;switch$0 = 3} break; case 4: - var _kz_=acc[1],switch$5=0; - if(typeof _kz_ !== "number" && 0 === _kz_[0]) - {var _kA_=_kz_[2],switch$6=0; - if(typeof _kA_ !== "number" && 1 === _kA_[0]) - {var s$0=acc[2],size=_kA_[2],p$1=_kz_[1]; + 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=_kz_;switch$0 = 2} + if(! switch$5){var s=acc[2],p$0=_kB_;switch$0 = 2} break; case 5: - var _kB_=acc[1],switch$7=0; - if(typeof _kB_ === "number" || ! (0 === _kB_[0])) + var _kD_=acc[1],switch$7=0; + if(typeof _kD_ === "number" || ! (0 === _kD_[0])) switch$7 = 1; else - {var _kC_=_kB_[2],switch$8=0; - if(typeof _kC_ !== "number" && 1 === _kC_[0]) - {var c$0=acc[2],size$0=_kC_[2],p$3=_kB_[1]; + {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=_kB_;switch$0 = 3} + 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]; @@ -25419,73 +24937,73 @@ strput_acc$0(ppf,p); return output_formatting_lit(ppf,f); case 1: - var _kh_=acc[2],_ki_=acc[1]; - if(0 === _kh_[0]) - {var acc$0=_kh_[1]; - strput_acc$0(ppf,_ki_); + 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=_kh_[1]; - strput_acc$0(ppf,_ki_); + 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 _kj_=acc[1],switch$1=0; - if(typeof _kj_ !== "number" && 0 === _kj_[0]) - {var _kk_=_kj_[2],switch$2=0; - if(typeof _kk_ !== "number" && 1 === _kk_[0]) - {var s$0=acc[2],size=_kk_[2],p$1=_kj_[1]; + 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=_kj_;switch$0 = 2} + if(! switch$1){var s=acc[2],p$0=_kl_;switch$0 = 2} break; case 3: - var _kl_=acc[1],switch$3=0; - if(typeof _kl_ !== "number" && 0 === _kl_[0]) - {var _km_=_kl_[2],switch$4=0; - if(typeof _km_ !== "number" && 1 === _km_[0]) - {var c$0=acc[2],size$0=_km_[2],p$3=_kl_[1]; + 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=_kl_;switch$0 = 3} + if(! switch$3){var c=acc[2],p$2=_kn_;switch$0 = 3} break; case 4: - var _kn_=acc[1],switch$5=0; - if(typeof _kn_ !== "number" && 0 === _kn_[0]) - {var _ko_=_kn_[2],switch$6=0; - if(typeof _ko_ !== "number" && 1 === _ko_[0]) - {var s$0=acc[2],size=_ko_[2],p$1=_kn_[1]; + 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=_kn_;switch$0 = 2} + if(! switch$5){var s=acc[2],p$0=_kp_;switch$0 = 2} break; case 5: - var _kp_=acc[1],switch$7=0; - if(typeof _kp_ === "number" || ! (0 === _kp_[0])) + var _kr_=acc[1],switch$7=0; + if(typeof _kr_ === "number" || ! (0 === _kr_[0])) switch$7 = 1; else - {var _kq_=_kp_[2],switch$8=0; - if(typeof _kq_ !== "number" && 1 === _kq_[0]) - {var c$0=acc[2],size$0=_kq_[2],p$3=_kp_[1]; + {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=_kp_;switch$0 = 3} + if(switch$7){var c=acc[2],p$2=_kr_;switch$0 = 3} break; case 6: - var _kr_=acc[1]; - if(typeof _kr_ !== "number" && 0 === _kr_[0]) - {var _ks_=_kr_[2]; - if(typeof _ks_ !== "number" && 1 === _ks_[0]) - {var f$1=acc[2],size$1=_ks_[2],p$4=_kr_[1]; + 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,_kr_); + 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); @@ -25501,28 +25019,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],_kg_=0; + {var fmt=param[1],_ki_=0; return make_printf (function(acc){output_acc$0(ppf,acc);return caml_call1(k,ppf)}, - _kg_, + _ki_, fmt)} function ikfprintf$0(k,ppf,param) {var fmt=param[1];return make_iprintf(k,ppf,fmt)} function ifprintf$0(ppf,param) - {var fmt=param[1],_ke_=0; - return make_iprintf(function(_kf_){return 0},_ke_,fmt)} + {var fmt=param[1],_kg_=0; + return make_iprintf(function(_kh_){return 0},_kg_,fmt)} function fprintf$0(ppf) - {function _kb_(_kd_){return 0} - return function(_kc_){return kfprintf$0(_kb_,ppf,_kc_)}} + {function _kd_(_kf_){return 0} + return function(_ke_){return kfprintf$0(_kd_,ppf,_ke_)}} function printf$0(fmt){return caml_call1(fprintf$0(std_formatter),fmt)} function eprintf$0(fmt){return caml_call1(fprintf$0(err_formatter),fmt)} function kdprintf(k,param) - {var fmt=param[1],_ka_=0; + {var fmt=param[1],_kc_=0; return make_printf (function(acc) {return caml_call1 (k,function(ppf){return output_acc$0(ppf,acc)})}, - _ka_, + _kc_, fmt)} function dprintf(fmt){return kdprintf(function(i){return i},fmt)} function kprintf(k,param) @@ -25549,10 +25067,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(_j8_,_j9_,_j__,_j$_) - {return pp_set_all_formatter_output_fu(std_formatter,_j8_,_j9_,_j__,_j$_)} - function get_all_formatter_output_funct(_j7_) - {return pp_get_all_formatter_output_fu(std_formatter,_j7_)} + function set_all_formatter_output_funct(_j__,_j$_,_ka_,_kb_) + {return pp_set_all_formatter_output_fu(std_formatter,_j__,_j$_,_ka_,_kb_)} + function get_all_formatter_output_funct(_j9_) + {return pp_get_all_formatter_output_fu(std_formatter,_j9_)} function bprintf$0(b,param) {var fmt=param[1],ppf=formatter_of_buffer(b); function k(acc){output_acc$0(ppf,acc);return pp_flush_queue(ppf,0)} @@ -25562,12 +25080,12 @@ function stringify(f,e,param) {if(param[1] === String_tag){var s=param[2];return caml_call1(f,s)} return e} - state[24] = function(_j6_){return stringify(mot,cst$84,_j6_)}; - state[25] = function(_j5_){return stringify(mct,cst$85,_j5_)}; - var _j1_=0; - state[26] = function(_j4_){return stringify(pot,_j1_,_j4_)}; - var _j2_=0; - state[27] = function(_j3_){return stringify(pct,_j2_,_j3_)}; + state[24] = function(_j8_){return stringify(mot,cst$84,_j8_)}; + state[25] = function(_j7_){return stringify(mct,cst$85,_j7_)}; + var _j3_=0; + state[26] = function(_j6_){return stringify(pot,_j3_,_j6_)}; + var _j4_=0; + state[27] = function(_j5_){return stringify(pct,_j4_,_j5_)}; return 0} function pp_get_formatter_tag_functions(fmt,param) {var funs=pp_get_formatter_stag_function(fmt,0); @@ -25576,10 +25094,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(_j0_) - {return pp_set_formatter_tag_functions(std_formatter,_j0_)} - function get_formatter_tag_functions(_jZ_) - {return pp_get_formatter_tag_functions(std_formatter,_jZ_)} + function set_formatter_tag_functions(_j2_) + {return pp_set_formatter_tag_functions(std_formatter,_j2_)} + function get_formatter_tag_functions(_j1_) + {return pp_get_formatter_tag_functions(std_formatter,_j1_)} var Stdlib_Format= [0, @@ -25747,23 +25265,23 @@ ib[4] = ib[4] + 1 | 0; if(10 === c)ib[5] = ib[5] + 1 | 0; return c} - catch(_jY_) - {_jY_ = caml_wrap_exception(_jY_); - if(_jY_ === End_of_file) + 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 _jY_}} + throw _j0_}} function peek_char(ib){return ib[3]?ib[2]:next_char(ib)} function checked_peek_char(ib) {var c=peek_char(ib);if(ib[1])throw End_of_file;return c} function end_of_input(ib){peek_char(ib);return ib[1]} function beginning_of_input(ib){return 0 === ib[4]?1:0} function name_of_input(ib) - {var _jX_=ib[9]; - if(typeof _jX_ === "number") - return 0 === _jX_?cst_unnamed_function:cst_unnamed_character_string; + {var _jZ_=ib[9]; + if(typeof _jZ_ === "number") + return 0 === _jZ_?cst_unnamed_function:cst_unnamed_character_string; else - {if(0 === _jX_[0])return cst_unnamed_Stdlib_input_chann; - var fname=_jX_[1]; + {if(0 === _jZ_[0])return cst_unnamed_Stdlib_input_chann; + var fname=_jZ_[1]; return fname}} function char_count(ib){return ib[3]?ib[4] - 1 | 0:ib[4]} function reset_token(ib){return reset(ib[8])} @@ -25797,8 +25315,8 @@ i[1]++; return c} return create$4(1,next)} - var _cp_=0; - function from_function$0(_jW_){return create$4(_cp_,_jW_)} + var _cr_=0; + function from_function$0(_jY_){return create$4(_cr_,_jY_)} var len=1024; function scan_close_at_end(ic) {caml_ml_close_channel(ic);throw End_of_file} @@ -25819,42 +25337,42 @@ {var ic=caml_call1(open_in,fname); return from_ic(scan_close_at_end,[1,fname,ic],ic)} return stdib} - function from_file(_jV_){return open_in_file(open_text$0,_jV_)} - function from_file_bin(_jU_){return open_in_file(open_bin$0,_jU_)} + function from_file(_jX_){return open_in_file(open_text$0,_jX_)} + function from_file_bin(_jW_){return open_in_file(open_bin$0,_jW_)} function from_channel$0(ic){return from_ic(scan_raise_at_end,[0,ic],ic)} function close_in(ib) - {var _jT_=ib[9]; - if(typeof _jT_ === "number") + {var _jV_=ib[9]; + if(typeof _jV_ === "number") return 0; else - {if(0 === _jT_[0]){var ic=_jT_[1];return caml_ml_close_channel(ic)} - var ic$0=_jT_[2]; + {if(0 === _jV_[0]){var ic=_jV_[1];return caml_ml_close_channel(ic)} + var ic$0=_jV_[2]; return caml_ml_close_channel(ic$0)}} var memo=[0,0]; function memo_from_ic(scan_close_ic,ic) {try - {var _jR_=assq(ic,memo[1]);return _jR_} - catch(_jS_) - {_jS_ = caml_wrap_exception(_jS_); - if(_jS_ === Not_found) + {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 _jS_}} - function memo_from_channel(_jQ_) - {return memo_from_ic(scan_raise_at_end,_jQ_)} + throw _jU_}} + function memo_from_channel(_jS_) + {return memo_from_ic(scan_raise_at_end,_jS_)} var Scan_failure=[248,cst_Stdlib_Scanf_Scan_failure,caml_fresh_oo_id(0)]; function bad_input(s){throw [0,Scan_failure,s]} function bad_input_escape(c) - {return bad_input(caml_call1(sprintf(_cq_),c))} + {return bad_input(caml_call1(sprintf(_cs_),c))} function bad_token_length(message) - {return bad_input(caml_call1(sprintf(_cr_),message))} + {return bad_input(caml_call1(sprintf(_ct_),message))} function bad_float(param) {return bad_input(cst_no_dot_or_exponent_part_fo)} function bad_hex_float(param) {return bad_input(cst_not_a_valid_float_in_hexad)} function character_mismatch(c,ci) - {return bad_input(caml_call2(sprintf(_ct_),c,ci))} + {return bad_input(caml_call2(sprintf(_cv_),c,ci))} function check_this_char(ib,c) {var ci=checked_peek_char(ib); return ci === c?invalidate_current_char(ib):character_mismatch(c,ci)} @@ -25868,23 +25386,23 @@ :character_mismatch(10,ci)} if(32 === c$0) for(;;) - {var c=peek_char(ib),_jO_=1 - ib[1]; - if(_jO_) - {var _jP_=c - 9 | 0,switch$0=0; - if(4 < _jP_ >>> 0) - {if(23 === _jP_)switch$0 = 1} + {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 < _jP_ - 2 >>> 0)switch$0 = 1; + if(1 < _jR_ - 2 >>> 0)switch$0 = 1; if(switch$0){invalidate_current_char(ib);continue} return 0} - return _jO_} + return _jQ_} return check_this_char(ib,c$0)} function token_char(ib){return caml_string_get(token_string(ib),0)} function token_bool(ib) {var s=token_string(ib); return caml_string_notequal(s,cst_false$3) ?caml_string_notequal(s,cst_true$3) - ?bad_input(caml_call1(sprintf(_cu_),s)) + ?bad_input(caml_call1(sprintf(_cw_),s)) :1 :0} function integer_conversion_of_char(param) @@ -25899,7 +25417,7 @@ case 0: case 32:return 5 } - throw [0,Assert_failure,_cv_]} + throw [0,Assert_failure,_cx_]} function token_int_literal(conv,ib) {switch(conv) {case 0:var tok=cat(cst_0b,token_string(ib));break; @@ -25928,7 +25446,7 @@ 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(_cw_),c)); + if(9 < c - 48 >>> 0)return bad_input(caml_call1(sprintf(_cy_),c)); var width$0=store_char(width,ib,c); return scan_decimal_digit_star(width$0,ib)} function scan_digit_plus(basis,digitp,width$2,ib) @@ -25945,22 +25463,22 @@ if(95 === c) {var width$1=ignore_char(width,ib),width=width$1;continue} return width}} - return bad_input(caml_call2(sprintf(_cx_),c$0,basis))} + return bad_input(caml_call2(sprintf(_cz_),c$0,basis))} function is_binary_digit(param){return 1 < param - 48 >>> 0?0:1} - function scan_binary_int(_jM_,_jN_) - {return scan_digit_plus(cst_binary,is_binary_digit,_jM_,_jN_)} + function scan_binary_int(_jO_,_jP_) + {return scan_digit_plus(cst_binary,is_binary_digit,_jO_,_jP_)} function is_octal_digit(param){return 7 < param - 48 >>> 0?0:1} - function scan_octal_int(_jK_,_jL_) - {return scan_digit_plus(cst_octal,is_octal_digit,_jK_,_jL_)} + function scan_octal_int(_jM_,_jN_) + {return scan_digit_plus(cst_octal,is_octal_digit,_jM_,_jN_)} function is_hexa_digit(param) - {var _jJ_=param - 48 | 0,switch$0=0; - if(22 < _jJ_ >>> 0) - {if(! (5 < _jJ_ - 49 >>> 0))switch$0 = 1} + {var _jL_=param - 48 | 0,switch$0=0; + if(22 < _jL_ >>> 0) + {if(! (5 < _jL_ - 49 >>> 0))switch$0 = 1} else - if(6 < _jJ_ - 10 >>> 0)switch$0 = 1; + if(6 < _jL_ - 10 >>> 0)switch$0 = 1; return switch$0?1:0} - function scan_hexadecimal_int(_jH_,_jI_) - {return scan_digit_plus(cst_hexadecimal,is_hexa_digit,_jH_,_jI_)} + function scan_hexadecimal_int(_jJ_,_jK_) + {return scan_digit_plus(cst_hexadecimal,is_hexa_digit,_jJ_,_jK_)} function scan_sign(width,ib) {var c=checked_peek_char(ib),switcher=c - 43 | 0; if(! (2 < switcher >>> 0)) @@ -26039,27 +25557,27 @@ var len=caml_ml_string_length(str), width$0=[0,width], - _jE_=len - 1 | 0, - _jD_=0; - if(! (_jE_ < 0)) - {var i=_jD_; + _jG_=len - 1 | 0, + _jF_=0; + if(! (_jG_ < 0)) + {var i=_jF_; for(;;) - {var c=peek_char(ib),_jF_=lowercase(caml_string_get(str,i)); - if(lowercase(c) !== _jF_)caml_call1(error,0); + {var c=peek_char(ib),_jH_=lowercase(caml_string_get(str,i)); + if(lowercase(c) !== _jH_)caml_call1(error,0); if(0 === width$0[1])caml_call1(error,0); width$0[1] = store_char(width$0[1],ib,c); - var _jG_=i + 1 | 0; - if(_jE_ !== i){var i=_jG_;continue} + var _jI_=i + 1 | 0; + if(_jG_ !== i){var i=_jI_;continue} break}} return width$0[1]} function scan_hex_float(width,precision,ib) - {var _jq_=0 === width?1:0,_jr_=_jq_ || end_of_input(ib); - if(_jr_)bad_hex_float(0); + {var _js_=0 === width?1:0,_jt_=_js_ || end_of_input(ib); + if(_jt_)bad_hex_float(0); var width$0=scan_sign(width,ib), - _js_=0 === width$0?1:0, - _jt_=_js_ || end_of_input(ib); - if(_jt_)bad_hex_float(0); + _ju_=0 === width$0?1:0, + _jv_=_ju_ || end_of_input(ib); + if(_jv_)bad_hex_float(0); var c=peek_char(ib),switch$0=0; if(78 <= c) {var switcher=c - 79 | 0; @@ -26067,9 +25585,9 @@ {if(! (32 <= switcher)) {var width$1=store_char(width$0,ib,c), - _ju_=0 === width$1?1:0, - _jv_=_ju_ || end_of_input(ib); - if(_jv_)bad_hex_float(0); + _jw_=0 === width$1?1:0, + _jx_=_jw_ || end_of_input(ib); + if(_jx_)bad_hex_float(0); return check_case_insensitive_string (width$1,ib,bad_hex_float,cst_an)}} else @@ -26078,18 +25596,18 @@ {if(48 === c) {var width$3=store_char(width$0,ib,c), - _jy_=0 === width$3?1:0, - _jz_=_jy_ || end_of_input(ib); - if(_jz_)bad_hex_float(0); + _jA_=0 === width$3?1:0, + _jB_=_jA_ || end_of_input(ib); + if(_jB_)bad_hex_float(0); var width$4= check_case_insensitive_string(width$3,ib,bad_hex_float,cst_x$2); if(0 !== width$4 && ! end_of_input(ib)) - {var match=peek_char(ib),_jA_=match - 46 | 0,switch$1=0; - if(34 < _jA_ >>> 0) - {if(66 === _jA_)switch$1 = 1} + {var match=peek_char(ib),_jC_=match - 46 | 0,switch$1=0; + if(34 < _jC_ >>> 0) + {if(66 === _jC_)switch$1 = 1} else - if(32 < _jA_ - 1 >>> 0)switch$1 = 1; + if(32 < _jC_ - 1 >>> 0)switch$1 = 1; var width$5=switch$1?width$4:scan_hexadecimal_int(width$4,ib); if(0 !== width$5 && ! end_of_input(ib)) {var c$0=peek_char(ib); @@ -26119,9 +25637,9 @@ if(80 !== c$1 && 112 !== c$1)return width$8; var width$9=store_char(width$8,ib,c$1), - _jB_=0 === width$9?1:0, - _jC_=_jB_ || end_of_input(ib); - if(_jC_)bad_hex_float(0); + _jD_=0 === width$9?1:0, + _jE_=_jD_ || end_of_input(ib); + if(_jE_)bad_hex_float(0); return scan_optionally_signed_decimal(width$9,ib)} return width$8} return width$5} @@ -26130,20 +25648,20 @@ if(switch$0) {var width$2=store_char(width$0,ib,c), - _jw_=0 === width$2?1:0, - _jx_=_jw_ || end_of_input(ib); - if(_jx_)bad_hex_float(0); + _jy_=0 === width$2?1:0, + _jz_=_jy_ || end_of_input(ib); + if(_jz_)bad_hex_float(0); return check_case_insensitive_string (width$2,ib,bad_hex_float,cst_nfinity)} return bad_hex_float(0)} function scan_caml_float_rest(width,precision,ib) - {var _jm_=0 === width?1:0,_jn_=_jm_ || end_of_input(ib); - if(_jn_)bad_float(0); + {var _jo_=0 === width?1:0,_jp_=_jo_ || end_of_input(ib); + if(_jp_)bad_float(0); var width$0=scan_decimal_digit_star(width,ib), - _jo_=0 === width$0?1:0, - _jp_=_jo_ || end_of_input(ib); - if(_jp_)bad_float(0); + _jq_=0 === width$0?1:0, + _jr_=_jq_ || end_of_input(ib); + if(_jr_)bad_float(0); var c=peek_char(ib),switcher=c - 69 | 0; if(32 < switcher >>> 0) {if(-23 === switcher) @@ -26158,42 +25676,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 _i__=0 === width?1:0,_i$_=_i__ || end_of_input(ib); - if(_i$_)bad_float(0); + {var _ja_=0 === width?1:0,_jb_=_ja_ || end_of_input(ib); + if(_jb_)bad_float(0); var width$0=scan_sign(width,ib), - _ja_=0 === width$0?1:0, - _jb_=_ja_ || end_of_input(ib); - if(_jb_)bad_float(0); + _jc_=0 === width$0?1:0, + _jd_=_jc_ || end_of_input(ib); + if(_jd_)bad_float(0); var c=peek_char(ib); if(49 <= c) {if(! (58 <= c)) {var width$1=store_char(width$0,ib,c), - _jc_=0 === width$1?1:0, - _jd_=_jc_ || end_of_input(ib); - if(_jd_)bad_float(0); + _je_=0 === width$1?1:0, + _jf_=_je_ || end_of_input(ib); + if(_jf_)bad_float(0); return scan_caml_float_rest(width$1,precision,ib)}} else if(48 <= c) {var width$2=store_char(width$0,ib,c), - _je_=0 === width$2?1:0, - _jf_=_je_ || end_of_input(ib); - if(_jf_)bad_float(0); + _jg_=0 === width$2?1:0, + _jh_=_jg_ || end_of_input(ib); + if(_jh_)bad_float(0); var c$0=peek_char(ib); if(88 !== c$0 && 120 !== c$0) return scan_caml_float_rest(width$2,precision,ib); var width$3=store_char(width$2,ib,c$0), - _jg_=0 === width$3?1:0, - _jh_=_jg_ || end_of_input(ib); - if(_jh_)bad_float(0); - var - width$4=scan_hexadecimal_int(width$3,ib), - _ji_=0 === width$4?1:0, + _ji_=0 === width$3?1:0, _jj_=_ji_ || end_of_input(ib); if(_jj_)bad_float(0); + var + width$4=scan_hexadecimal_int(width$3,ib), + _jk_=0 === width$4?1:0, + _jl_=_jk_ || end_of_input(ib); + if(_jl_)bad_float(0); var c$1=peek_char(ib),switcher=c$1 - 80 | 0,switch$0=0; if(32 < switcher >>> 0) if(-34 === switcher) @@ -26225,9 +25743,9 @@ if(80 !== c$2 && 112 !== c$2)return width$8; var width$9=store_char(width$8,ib,c$2), - _jk_=0 === width$9?1:0, - _jl_=_jk_ || end_of_input(ib); - if(_jl_)bad_hex_float(0); + _jm_=0 === width$9?1:0, + _jn_=_jm_ || end_of_input(ib); + if(_jn_)bad_hex_float(0); return scan_optionally_signed_decimal(width$9,ib)} return width$8} return bad_float(0)} @@ -26242,11 +25760,11 @@ 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 _i9_=c - 9 | 0,switch$0=0; - if(4 < _i9_ >>> 0) - {if(23 === _i9_)switch$0 = 1} + var _i$_=c - 9 | 0,switch$0=0; + if(4 < _i$_ >>> 0) + {if(23 === _i$_)switch$0 = 1} else - if(1 < _i9_ - 2 >>> 0)switch$0 = 1; + if(1 < _i$_ - 2 >>> 0)switch$0 = 1; if(switch$0)return width$0; var width$2=store_char(width$0,ib,c),width$0=width$2; continue}} @@ -26257,11 +25775,11 @@ 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(_cs_),message)):c} - function check_next_char_for_char(_i7_,_i8_) - {return check_next_char(cst_a_Char,_i7_,_i8_)} - function check_next_char_for_string(_i5_,_i6_) - {return check_next_char(cst_a_String,_i5_,_i6_)} + return ib[1]?bad_input(caml_call1(sprintf(_cu_),message)):c} + function check_next_char_for_char(_i9_,_i__) + {return check_next_char(cst_a_Char,_i9_,_i__)} + function check_next_char_for_string(_i7_,_i8_) + {return check_next_char(cst_a_String,_i7_,_i8_)} function scan_backslash_char(width,ib) {var c0=check_next_char_for_char(width,ib),switch$0=0; if(40 <= c0) @@ -26273,22 +25791,22 @@ var get_digit= function(param) - {var c=next_char(ib),_i4_=c - 48 | 0,switch$0=0; - if(22 < _i4_ >>> 0) - {if(! (5 < _i4_ - 49 >>> 0))switch$0 = 1} + {var c=next_char(ib),_i6_=c - 48 | 0,switch$0=0; + if(22 < _i6_ >>> 0) + {if(! (5 < _i6_ - 49 >>> 0))switch$0 = 1} else - if(6 < _i4_ - 10 >>> 0)switch$0 = 1; + if(6 < _i6_ - 10 >>> 0)switch$0 = 1; return switch$0?c:bad_input_escape(c)}, c1=get_digit(0), c2=get_digit(0), - _i0_=hexadecimal_value_of_char(c2), - c$0=(16 * hexadecimal_value_of_char(c1) | 0) + _i0_ | 0, + _i2_=hexadecimal_value_of_char(c2), + c$0=(16 * hexadecimal_value_of_char(c1) | 0) + _i2_ | 0, switch$1=0; if(0 <= c$0 && ! (255 < c$0)) - {var _i2_=char_of_int(c$0);switch$1 = 1} + {var _i4_=char_of_int(c$0);switch$1 = 1} if(! switch$1) - var _i2_=bad_input(caml_call2(sprintf(_cz_),c1,c2)); - return store_char(width - 2 | 0,ib,_i2_); + var _i4_=bad_input(caml_call2(sprintf(_cB_),c1,c2)); + return store_char(width - 2 | 0,ib,_i4_); case 0: case 6: case 18: @@ -26311,10 +25829,10 @@ | 0, switch$2=0; - if(0 <= c && ! (255 < c)){var _i3_=char_of_int(c);switch$2 = 1} + if(0 <= c && ! (255 < c)){var _i5_=char_of_int(c);switch$2 = 1} if(! switch$2) - var _i3_=bad_input(caml_call3(sprintf(_cy_),c0,c1$0,c2$0)); - return store_char(width - 2 | 0,ib,_i3_)}} + var _i5_=bad_input(caml_call3(sprintf(_cA_),c0,c1$0,c2$0)); + return store_char(width - 2 | 0,ib,_i5_)}} else if(34 === c0 || 39 <= c0)switch$0 = 1; if(switch$0) @@ -26324,14 +25842,14 @@ switch$3 = 1; else switch(c0 - 110 | 0) - {case 0:var _i1_=10;break; - case 4:var _i1_=13;break; - case 6:var _i1_=9;break; + {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 _i1_=8;else switch$3 = 1; - if(switch$3)var _i1_=c0; - return store_char(width,ib,_i1_)} + if(98 === c0)var _i3_=8;else switch$3 = 1; + if(switch$3)var _i3_=c0; + return store_char(width,ib,_i3_)} return bad_input_escape(c0)} function scan_caml_char(width,ib) {function find_stop(width) @@ -26357,21 +25875,21 @@ width$1=ignore_char(width$0,ib), match=check_next_char_for_string(width$1,ib); if(10 === match) - {var _iY_=ignore_char(width$1,ib); + {var _i0_=ignore_char(width$1,ib); if(counter < 50) {var counter$0=counter + 1 | 0; - return skip_spaces(counter$0,_iY_)} - return caml_trampoline_return(skip_spaces,[0,_iY_])} + 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 _iZ_=ignore_char(width$3,ib); + {var _i1_=ignore_char(width$3,ib); if(counter < 50) {var counter$1=counter + 1 | 0; - return skip_spaces(counter$1,_iZ_)} - return caml_trampoline_return(skip_spaces,[0,_iZ_])} + 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; @@ -26397,26 +25915,26 @@ {function scan_chars(i,stp) {var i$0=i; for(;;) - {var c=peek_char(ib),_iU_=0 < i$0?1:0; - if(_iU_) - {var _iV_=1 - ib[1]; - if(_iV_) - var _iW_=is_in_char_set(char_set,c),_iX_=_iW_?c !== stp?1:0:_iW_; + {var c=peek_char(ib),_iW_=0 < i$0?1:0; + if(_iW_) + {var _iX_=1 - ib[1]; + if(_iX_) + var _iY_=is_in_char_set(char_set,c),_iZ_=_iY_?c !== stp?1:0:_iY_; else - var _iX_=_iV_} + var _iZ_=_iX_} else - var _iX_=_iU_; - if(_iX_) + var _iZ_=_iW_; + if(_iZ_) {store_char(max_int,ib,c);var i$1=i$0 - 1 | 0,i$0=i$1;continue} - return _iX_}} + return _iZ_}} if(scan_indic) {var c=scan_indic[1]; scan_chars(width,c); - var _iT_=1 - ib[1]; - if(_iT_) + var _iV_=1 - ib[1]; + if(_iV_) {var ci=peek_char(ib); return c === ci?invalidate_current_char(ib):character_mismatch(c,ci)} - return _iT_} + return _iV_} return scan_chars(width,-1)} function scanf_bad_input(ib,x) {if(x[1] === Scan_failure) @@ -26424,14 +25942,14 @@ else {if(x[1] !== Failure)throw x;var s=x[2]} var i=char_count(ib); - return bad_input(caml_call2(sprintf(_cB_),i,s))} + return bad_input(caml_call2(sprintf(_cD_),i,s))} function get_counter(ib,counter) {switch(counter) {case 0:return ib[5];case 1:return char_count(ib);default:return ib[6]}} function width_of_pad_opt(pad_opt) {if(pad_opt){var width=pad_opt[1];return width}return max_int} function stopper_of_formatting_lit(fmting) - {if(6 === fmting)return _cC_; + {if(6 === fmting)return _cE_; var str=string_of_formatting_lit(fmting), stp=caml_string_get(str,1), @@ -26459,28 +25977,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],_iR_=erase_rel(symm(fmtty)); + 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,_iR_,rest)} + return take_fmtty_format_readers$0(counter$0,k,_iT_,rest)} return caml_trampoline_return - (take_fmtty_format_readers$0,[0,k,_iR_,rest]); + (take_fmtty_format_readers$0,[0,k,_iT_,rest]); case 15:var fmt$15=fmt$0[1],fmt$0=fmt$15;continue; case 16:var fmt$16=fmt$0[1],fmt$0=fmt$16;continue; case 17:var fmt$17=fmt$0[2],fmt$0=fmt$17;continue; case 18: - var _iS_=fmt$0[1]; - if(0 === _iS_[0]) + var _iU_=fmt$0[1]; + if(0 === _iU_[0]) {var rest$0=fmt$0[2], - match=_iS_[1], + match=_iU_[1], fmt$18=match[1], fmt$19=concat_fmt(fmt$18,rest$0), fmt$0=fmt$19; continue} var rest$1=fmt$0[2], - match$0=_iS_[1], + match$0=_iU_[1], fmt$20=match$0[1], fmt$21=concat_fmt(fmt$20,rest$1), fmt$0=fmt$21; @@ -26575,32 +26093,6 @@ {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") - {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 _iQ_=pad[2]; - if(typeof prec === "number") - {if(prec)return invalid_arg(cst_scanf_bad_conversion$0); - caml_call3(scan,_iQ_,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,_iQ_,p$0,ib); - var x$2=caml_call1(token,ib); - return [0,x$2,make_scanf(ib,fmt,readers)]} - return invalid_arg(cst_scanf_bad_conversion$1)} - return invalid_arg(cst_scanf_bad_conversion$2)}} function make_scanf(ib,fmt,readers) {var fmt$0=fmt; for(;;) @@ -26619,13 +26111,13 @@ var c$0=token_char(ib); return [0,c$0,make_scanf(ib,rest$0,readers)]; case 2: - var _iD_=fmt$0[1],_iE_=fmt$0[2]; - if(typeof _iE_ !== "number") - switch(_iE_[0]) + var _iG_=fmt$0[1],_iH_=fmt$0[2]; + if(typeof _iH_ !== "number") + switch(_iH_[0]) {case 17: var - rest$2=_iE_[2], - fmting_lit=_iE_[1], + rest$2=_iH_[2], + fmting_lit=_iH_[1], match=stopper_of_formatting_lit(fmting_lit), str=match[2], stp=match[1], @@ -26634,35 +26126,35 @@ {return scan_string([0,stp],width,ib)}, str_rest=[11,str,rest$2]; return pad_prec_scanf - (ib,str_rest,readers,_iD_,0,scan$0,token_string); + (ib,str_rest,readers,_iG_,0,scan$0,token_string); case 18: - var _iF_=_iE_[1]; - if(0 === _iF_[0]) + var _iI_=_iH_[1]; + if(0 === _iI_[0]) {var - rest$3=_iE_[2], - match$0=_iF_[1], + rest$3=_iH_[2], + match$0=_iI_[1], fmt$1=match$0[1], scan$1= - function(width,param,ib){return scan_string(_cD_,width,ib)}; + function(width,param,ib){return scan_string(_cF_,width,ib)}; return pad_prec_scanf (ib, concat_fmt(fmt$1,rest$3), readers, - _iD_, + _iG_, 0, scan$1, token_string)} var - rest$4=_iE_[2], - match$1=_iF_[1], + rest$4=_iH_[2], + match$1=_iI_[1], fmt$2=match$1[1], scan$2= - function(width,param,ib){return scan_string(_cE_,width,ib)}; + function(width,param,ib){return scan_string(_cG_,width,ib)}; return pad_prec_scanf (ib, concat_fmt(fmt$2,rest$4), readers, - _iD_, + _iG_, 0, scan$2, token_string) @@ -26670,7 +26162,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,_iD_,0,scan,token_string); + return pad_prec_scanf(ib,rest$1,readers,_iG_,0,scan,token_string); case 3: var rest$5=fmt$0[2], @@ -26780,13 +26272,13 @@ rest$13=fmt$0[2], pad$7=fmt$0[1], scan$8= - function(param,_iP_,ib) + function(param,_iS_,ib) {var c=checked_peek_char(ib), m= 102 === c ?5 - :116 === c?4:bad_input(caml_call1(sprintf(_cA_),c)); + :116 === c?4:bad_input(caml_call1(sprintf(_cC_),c)); return scan_string(0,m,ib)}; return pad_prec_scanf(ib,rest$13,readers,pad$7,0,scan$8,token_bool); case 10: @@ -26795,7 +26287,7 @@ return bad_input(cst_end_of_input_not_found); case 11: var rest$15=fmt$0[2],str$0=fmt$0[1]; - iter$4(function(_iO_){return check_char(ib,_iO_)},str$0); + iter$4(function(_iR_){return check_char(ib,_iR_)},str$0); var fmt$0=rest$15; continue; case 12: @@ -26808,7 +26300,7 @@ scan_caml_string(width_of_pad_opt(pad_opt),ib); var s=token_string(ib); try - {var _iG_=format_of_string_fmtty(s,fmtty),fmt$3=_iG_} + {var _iJ_=format_of_string_fmtty(s,fmtty),fmt$3=_iJ_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] !== Failure)throw exn; @@ -26825,17 +26317,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))), - _iI_=type_format(fmt$6,erase_rel(fmtty$0)), + _iL_=type_format(fmt$6,erase_rel(fmtty$0)), fmt$5=fmt$8, - fmt$4=_iI_} + fmt$4=_iL_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] !== Failure)throw exn; var msg$0=exn[2], - _iH_=bad_input(msg$0), - fmt$5=_iH_[2], - fmt$4=_iH_[1]} + _iK_=bad_input(msg$0), + fmt$5=_iK_[2], + fmt$4=_iK_[1]} return [0, [0,fmt$4,s$0], make_scanf(ib,concat_fmt(fmt$5,rest$18),readers)]; @@ -26845,19 +26337,19 @@ var rest$19=fmt$0[2], formatting_lit=fmt$0[1], - _iJ_=string_of_formatting_lit(formatting_lit); - iter$4(function(_iN_){return check_char(ib,_iN_)},_iJ_); + _iM_=string_of_formatting_lit(formatting_lit); + iter$4(function(_iQ_){return check_char(ib,_iQ_)},_iM_); var fmt$0=rest$19; continue; case 18: - var _iK_=fmt$0[1]; - if(0 === _iK_[0]) - {var rest$20=fmt$0[2],match$4=_iK_[1],fmt$9=match$4[1]; + var _iN_=fmt$0[1]; + if(0 === _iN_[0]) + {var rest$20=fmt$0[2],match$4=_iN_[1],fmt$9=match$4[1]; check_char(ib,64); check_char(ib,123); var fmt$10=concat_fmt(fmt$9,rest$20),fmt$0=fmt$10; continue} - var rest$21=fmt$0[2],match$5=_iK_[1],fmt$11=match$5[1]; + var rest$21=fmt$0[2],match$5=_iN_[1],fmt$11=match$5[1]; check_char(ib,64); check_char(ib,91); var fmt$12=concat_fmt(fmt$11,rest$21),fmt$0=fmt$12; @@ -26872,23 +26364,23 @@ return [0,x,make_scanf(ib,fmt_rest,readers_rest)]} return invalid_arg(cst_scanf_missing_reader); case 20: - var _iL_=fmt$0[1],_iM_=fmt$0[3]; - if(typeof _iM_ !== "number" && 17 === _iM_[0]) + var _iO_=fmt$0[1],_iP_=fmt$0[3]; + if(typeof _iP_ !== "number" && 17 === _iP_[0]) {var - rest$23=_iM_[2], - fmting_lit$0=_iM_[1], + rest$23=_iP_[2], + fmting_lit$0=_iP_[1], char_set$0=fmt$0[2], match$6=stopper_of_formatting_lit(fmting_lit$0), str$1=match$6[2], stp$0=match$6[1], - width$0=width_of_pad_opt(_iL_); + width$0=width_of_pad_opt(_iO_); scan_chars_in_char_set(char_set$0,[0,stp$0],width$0,ib); var s$2=token_string(ib),str_rest$0=[11,str$1,rest$23]; return [0,s$2,make_scanf(ib,str_rest$0,readers)]} var rest$22=fmt$0[3], char_set=fmt$0[2], - width=width_of_pad_opt(_iL_); + width=width_of_pad_opt(_iO_); scan_chars_in_char_set(char_set,0,width,ib); var s$1=token_string(ib); return [0,s$1,make_scanf(ib,rest$22,readers)]; @@ -26909,8 +26401,34 @@ 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,_cF_]; + throw [0,Assert_failure,_cH_]; default:return invalid_arg(cst_scanf_bad_conversion_custo)}} + function pad_prec_scanf(ib,fmt,readers,pad,prec,scan,token) + {if(typeof pad === "number") + {if(typeof prec === "number") + {if(prec)return invalid_arg(cst_scanf_bad_conversion); + caml_call3(scan,max_int,max_int,ib); + var x=caml_call1(token,ib); + return [0,x,make_scanf(ib,fmt,readers)]} + var p=prec[1]; + caml_call3(scan,max_int,p,ib); + var x$0=caml_call1(token,ib); + return [0,x$0,make_scanf(ib,fmt,readers)]} + else + {if(0 === pad[0]) + {if(pad[1]) + {var _iF_=pad[2]; + if(typeof prec === "number") + {if(prec)return invalid_arg(cst_scanf_bad_conversion$0); + caml_call3(scan,_iF_,max_int,ib); + var x$1=caml_call1(token,ib); + return [0,x$1,make_scanf(ib,fmt,readers)]} + var p$0=prec[1]; + caml_call3(scan,_iF_,p$0,ib); + var x$2=caml_call1(token,ib); + return [0,x$2,make_scanf(ib,fmt,readers)]} + return invalid_arg(cst_scanf_bad_conversion$1)} + return invalid_arg(cst_scanf_bad_conversion$2)}} function kscanf(ib,ef,param) {var str=param[2],fmt=param[1]; function apply(f,args) @@ -26928,7 +26446,7 @@ function k(readers,f) {reset_token(ib); try - {var _iC_=[0,make_scanf(ib,fmt,readers)],_iB_=_iC_} + {var _iE_=[0,make_scanf(ib,fmt,readers)],_iD_=_iE_} catch(exc) {exc = caml_wrap_exception(exc); var switch$0=0; @@ -26947,14 +26465,14 @@ {if(exc[1] !== Invalid_argument)throw exc; var msg=exc[2], - _iA_= + _iC_= invalid_arg (cat(msg,cat(cst_in_format,cat(escaped$1(str),cst$88)))); switch$0 = 1} - if(! switch$0)var _iA_=[1,exc]; - var _iB_=_iA_} - if(0 === _iB_[0]){var args=_iB_[1];return apply(f,args)} - var exc=_iB_[1]; + if(! switch$0)var _iC_=[1,exc]; + var _iD_=_iC_} + if(0 === _iD_[0]){var args=_iD_[1];return apply(f,args)} + var exc=_iD_[1]; return caml_call2(ef,ib,exc)} return take_format_readers(k,fmt)} function bscanf(ib,fmt){return kscanf(ib,scanf_bad_input,fmt)} @@ -26966,7 +26484,7 @@ {scan_caml_string(max_int,ib); var str=token_string(ib); try - {var _iz_=format_of_string_format(str,format),fmt=_iz_} + {var _iB_=format_of_string_format(str,format),fmt=_iB_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] !== Failure)throw exn; @@ -26975,11 +26493,11 @@ function sscanf_format(s,format,f) {return bscanf_format(from_string$1(s),format,f)} function format_from_string(s,fmt) - {function _iy_(x){return x} - return sscanf_format(cat(cst$90,cat(escaped$1(s),cst$89)),fmt,_iy_)} + {function _iA_(x){return x} + return sscanf_format(cat(cst$90,cat(escaped$1(s),cst$89)),fmt,_iA_)} function unescaped(s) - {function _ix_(x){return x} - return caml_call1(sscanf(cat(cst$92,cat(s,cst$91)),_cG_),_ix_)} + {function _iz_(x){return x} + return caml_call1(sscanf(cat(cst$92,cat(s,cst$91)),_cI_),_iz_)} function kfscanf(ic,ef,fmt){return kscanf(memo_from_channel(ic),ef,fmt)} function fscanf(ic,fmt) {return kscanf(memo_from_channel(ic),scanf_bad_input,fmt)} @@ -27022,14 +26540,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],_iu_=caml_ml_string_length(s) - 1 | 0,_it_=0; - if(! (_iu_ < 0)) - {var i=_it_; + {var accu=[0,0],_iw_=caml_ml_string_length(s) - 1 | 0,_iv_=0; + if(! (_iw_ < 0)) + {var i=_iv_; for(;;) - {var _iv_=caml_string_get(s,i); - accu[1] = (223 * accu[1] | 0) + _iv_ | 0; - var _iw_=i + 1 | 0; - if(_iu_ !== i){var i=_iw_;continue} + {var _ix_=caml_string_get(s,i); + accu[1] = (223 * accu[1] | 0) + _ix_ | 0; + var _iy_=i + 1 | 0; + if(_iw_ !== i){var i=_iy_;continue} break}} accu[1] = accu[1] & 2147483647; var tag=1073741823 < accu[1]?accu[1] + 2147483648 | 0:accu[1]; @@ -27051,30 +26569,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 _in_=((fit_size(len) * 32 | 0) / 8 | 0) - 1 | 0; - caml_check_bound(methods,1)[2] = _in_; - var _ip_=len - 1 | 0,_io_=0; - if(! (_ip_ < 0)) - {var i=_io_; + var _ip_=((fit_size(len) * 32 | 0) / 8 | 0) - 1 | 0; + caml_check_bound(methods,1)[2] = _ip_; + var _ir_=len - 1 | 0,_iq_=0; + if(! (_ir_ < 0)) + {var i=_iq_; for(;;) {var - _ir_=(i * 2 | 0) + 3 | 0, - _iq_=caml_check_bound(pub_labels,i)[1 + i]; - caml_check_bound(methods,_ir_)[1 + _ir_] = _iq_; - var _is_=i + 1 | 0; - if(_ip_ !== i){var i=_is_;continue} + _it_=(i * 2 | 0) + 3 | 0, + _is_=caml_check_bound(pub_labels,i)[1 + i]; + caml_check_bound(methods,_it_)[1 + _it_] = _is_; + var _iu_=i + 1 | 0; + if(_ir_ !== i){var i=_iu_;continue} break}} return [0,initial_object_size,methods,Meths[1],Labs[1],0,0,Vars[1],0]} function resize$1(array,new_size) - {var old_size=array[2].length - 1,_il_=old_size < new_size?1:0; - if(_il_) + {var old_size=array[2].length - 1,_in_=old_size < new_size?1:0; + if(_in_) {var new_buck=caml_make_vect(new_size,dummy_met); blit$1(array[2],0,new_buck,0,old_size); array[2] = new_buck; - var _im_=0} + var _io_=0} else - var _im_=_il_; - return _im_} + var _io_=_in_; + return _io_} var method_count=[0,0],inst_var_count=[0,0]; function new_method(table) {var index=table[2].length - 1; @@ -27082,17 +26600,17 @@ return index} function get_method_label(table,name) {try - {var _ij_=caml_call2(Meths[28],name,table[3]);return _ij_} - catch(_ik_) - {_ik_ = caml_wrap_exception(_ik_); - if(_ik_ === Not_found) + {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 _ik_}} + throw _im_}} function get_method_labels(table,names) - {return map$7(function(_ii_){return get_method_label(table,_ii_)},names)} + {return map$7(function(_ik_){return get_method_label(table,_ik_)},names)} function set_method(table,label,element) {method_count[1]++; return caml_call2(Labs[28],label,table[4]) @@ -27104,12 +26622,12 @@ :(table[6] = [0,[0,label,element],table[6]],0)} function get_method(table,label) {try - {var _ig_=assoc(label,table[6]);return _ig_} - catch(_ih_) - {_ih_ = caml_wrap_exception(_ih_); - if(_ih_ === Not_found) + {var _ii_=assoc(label,table[6]);return _ii_} + catch(_ij_) + {_ij_ = caml_wrap_exception(_ij_); + if(_ij_ === Not_found) return caml_check_bound(table[2],label)[1 + label]; - throw _ih_}} + throw _ij_}} function to_list$3(arr){return 0 === arr?0:to_list$1(arr)} function narrow(table,vars,virt_meths,concr_meths) {var @@ -27118,31 +26636,31 @@ concr_meths$0=to_list$3(concr_meths), virt_meth_labs= map$4 - (function(_if_){return get_method_label(table,_if_)},virt_meths$0), + (function(_ih_){return get_method_label(table,_ih_)},virt_meths$0), concr_meth_labs= map$4 - (function(_ie_){return get_method_label(table,_ie_)},concr_meths$0); + (function(_ig_){return get_method_label(table,_ig_)},concr_meths$0); table[5] = [0, [0,table[3],table[4],table[6],table[7],virt_meth_labs,vars$0], table[5]]; - var _h7_=Vars[1],_h8_=table[7]; - function _h9_(lab,info,tvars) + var _h9_=Vars[1],_h__=table[7]; + function _h$_(lab,info,tvars) {return mem(lab,vars$0)?caml_call3(Vars[4],lab,info,tvars):tvars} - table[7] = caml_call3(Vars[13],_h9_,_h8_,_h7_); + table[7] = caml_call3(Vars[13],_h$_,_h__,_h9_); var by_name=[0,Meths[1]],by_label=[0,Labs[1]]; iter2$0 (function(met,label) {by_name[1] = caml_call3(Meths[4],met,label,by_name[1]); - var _ia_=by_label[1]; + var _ic_=by_label[1]; try - {var _ic_=caml_call2(Labs[28],label,table[4]),_ib_=_ic_} - catch(_id_) - {_id_ = caml_wrap_exception(_id_); - if(_id_ !== Not_found)throw _id_; - var _ib_=1} - by_label[1] = caml_call3(Labs[4],label,_ib_,_ia_); + {var _ie_=caml_call2(Labs[28],label,table[4]),_id_=_ie_} + catch(_if_) + {_if_ = caml_wrap_exception(_if_); + if(_if_ !== Not_found)throw _if_; + var _id_=1} + by_label[1] = caml_call3(Labs[4],label,_id_,_ic_); return 0}, concr_meths$0, concr_meth_labs); @@ -27155,14 +26673,14 @@ virt_meth_labs); table[3] = by_name[1]; table[4] = by_label[1]; - var _h__=0,_h$_=table[6]; + var _ia_=0,_ib_=table[6]; table[6] = fold_right (function(met,hm) {var lab=met[1];return mem(lab,virt_meth_labs)?hm:[0,met,hm]}, - _h$_, - _h__); + _ib_, + _ia_); return 0} function widen(table) {var @@ -27178,34 +26696,34 @@ = fold_left$0 (function(s,v) - {var _h6_=caml_call2(Vars[28],v,table[7]); - return caml_call3(Vars[4],v,_h6_,s)}, + {var _h8_=caml_call2(Vars[28],v,table[7]); + return caml_call3(Vars[4],v,_h8_,s)}, saved_vars, vars); table[3] = by_name; table[4] = by_label; - var _h5_=table[6]; + var _h7_=table[6]; table[6] = fold_right (function(met,hm) {var lab=met[1];return mem(lab,virt_meths)?hm:[0,met,hm]}, - _h5_, + _h7_, saved_hidden_meths); return 0} function new_slot(table) {var index=table[1];table[1] = index + 1 | 0;return index} function new_variable(table,name) {try - {var _h3_=caml_call2(Vars[28],name,table[7]);return _h3_} - catch(_h4_) - {_h4_ = caml_wrap_exception(_h4_); - if(_h4_ === Not_found) + {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 _h4_}} + throw _h6_}} function to_array(arr){return caml_equal(arr,0)?[0]:arr} function new_methods_variables(table,meths,vals) {var @@ -27213,39 +26731,39 @@ nmeths=meths$0.length - 1, nvals=vals.length - 1, res=caml_make_vect(nmeths + nvals | 0,0), - _hV_=nmeths - 1 | 0, - _hU_=0; - if(! (_hV_ < 0)) - {var i$0=_hU_; - for(;;) - {var - _h1_= - get_method_label(table,caml_check_bound(meths$0,i$0)[1 + i$0]); - caml_check_bound(res,i$0)[1 + i$0] = _h1_; - var _h2_=i$0 + 1 | 0; - if(_hV_ !== i$0){var i$0=_h2_;continue} - break}} - var _hX_=nvals - 1 | 0,_hW_=0; + _hX_=nmeths - 1 | 0, + _hW_=0; if(! (_hX_ < 0)) - {var i=_hW_; + {var i$0=_hW_; for(;;) {var - _hZ_=i + nmeths | 0, - _hY_=new_variable(table,caml_check_bound(vals,i)[1 + i]); - caml_check_bound(res,_hZ_)[1 + _hZ_] = _hY_; - var _h0_=i + 1 | 0; - if(_hX_ !== i){var i=_h0_;continue} + _h3_= + get_method_label(table,caml_check_bound(meths$0,i$0)[1 + i$0]); + caml_check_bound(res,i$0)[1 + i$0] = _h3_; + var _h4_=i$0 + 1 | 0; + if(_hX_ !== i$0){var i$0=_h4_;continue} + break}} + var _hZ_=nvals - 1 | 0,_hY_=0; + if(! (_hZ_ < 0)) + {var i=_hY_; + for(;;) + {var + _h1_=i + nmeths | 0, + _h0_=new_variable(table,caml_check_bound(vals,i)[1 + i]); + caml_check_bound(res,_h1_)[1 + _h1_] = _h0_; + var _h2_=i + 1 | 0; + if(_hZ_ !== i){var i=_h2_;continue} break}} return res} function get_variable(table,name) {try - {var _hS_=caml_call2(Vars[28],name,table[7]);return _hS_} - catch(_hT_) - {_hT_ = caml_wrap_exception(_hT_); - if(_hT_ === Not_found)throw [0,Assert_failure,_cH_]; - throw _hT_}} + {var _hU_=caml_call2(Vars[28],name,table[7]);return _hU_} + catch(_hV_) + {_hV_ = caml_wrap_exception(_hV_); + if(_hV_ === Not_found)throw [0,Assert_failure,_cJ_]; + throw _hV_}} function get_variables(table,names) - {return map$7(function(_hR_){return get_variable(table,_hR_)},names)} + {return map$7(function(_hT_){return get_variable(table,_hT_)},names)} function add_initializer(table,f){table[8] = [0,f,table[8]];return 0} function create_table(public_methods) {if(0 === public_methods)return new_table([0]); @@ -27272,20 +26790,20 @@ var init=top?caml_call2(super$0,cla,env):caml_call1(super$0,cla); widen(cla); var - _hM_=0, - _hN_=to_array(concr_meths), - _hO_= + _hO_=0, + _hP_=to_array(concr_meths), + _hQ_= [0, map$7 - (function(nm){return get_method(cla,get_method_label(cla,nm))},_hN_), - _hM_], - _hP_=to_array(vals); + (function(nm){return get_method(cla,get_method_label(cla,nm))},_hP_), + _hO_], + _hR_=to_array(vals); return caml_array_concat ([0, [0,init], [0, - map$7(function(_hQ_){return get_variable(cla,_hQ_)},_hP_), - _hO_]])} + map$7(function(_hS_){return get_variable(cla,_hS_)},_hR_), + _hQ_]])} function make_class(pub_meths,class_init) {var table=create_table(pub_meths),env_init=caml_call1(class_init,table); init_class(table); @@ -27318,8 +26836,8 @@ continue} return 0}} function run_initializers(obj,table) - {var inits=table[8],_hL_=0 !== inits?1:0; - return _hL_?iter_f(obj,inits):_hL_} + {var inits=table[8],_hN_=0 !== inits?1:0; + return _hN_?iter_f(obj,inits):_hN_} function run_initializers_opt(obj_0,obj,table) {if(obj_0)return obj; var inits=table[8]; @@ -27331,20 +26849,20 @@ run_initializers(obj,table); return obj} function get_data$0(param) - {if(param)return param[2];throw [0,Assert_failure,_cL_]} + {if(param)return param[2];throw [0,Assert_failure,_cN_]} function build_path(n,keys,tables) - {var res=[0,0,0,0],r=[0,res],_hH_=0; + {var res=[0,0,0,0],r=[0,res],_hJ_=0; if(! (n < 0)) - {var i=_hH_; + {var i=_hJ_; for(;;) - {var _hJ_=r[1]; - r[1] = [0,caml_check_bound(keys,i)[1 + i],_hJ_,0]; - var _hK_=i + 1 | 0; - if(n !== i){var i=_hK_;continue} + {var _hL_=r[1]; + r[1] = [0,caml_check_bound(keys,i)[1 + i],_hL_,0]; + var _hM_=i + 1 | 0; + if(n !== i){var i=_hM_;continue} break}} - var _hI_=r[1]; - if(tables){tables[2] = _hI_;return res} - throw [0,Assert_failure,_cI_]} + var _hK_=r[1]; + if(tables){tables[2] = _hK_;return res} + throw [0,Assert_failure,_cK_]} function lookup_tables(root,keys) {var tables$2=get_data$0(root); if(tables$2) @@ -27359,16 +26877,16 @@ {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,_cN_]} + throw [0,Assert_failure,_cP_]} if(tables$0) - {var _hG_=tables$0[3]; - if(_hG_){var tables$0=_hG_;continue} + {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,_cJ_]} - throw [0,Assert_failure,_cM_]} - throw [0,Assert_failure,_cK_]}} + throw [0,Assert_failure,_cL_]} + throw [0,Assert_failure,_cO_]} + throw [0,Assert_failure,_cM_]}} return tables}} return build_path(keys.length - 1 - 1 | 0,keys,root)} function new_cache(table) @@ -27389,13 +26907,13 @@ for(;;) {if(i[1] < len) {var - _hA_=i[1], - label=caml_check_bound(methods,_hA_)[1 + _hA_], + _hC_=i[1], + label=caml_check_bound(methods,_hC_)[1 + _hC_], next= function(param) {i[1]++; - var _hF_=i[1]; - return caml_check_bound(methods,_hF_)[1 + _hF_]}, + var _hH_=i[1]; + return caml_check_bound(methods,_hH_)[1 + _hH_]}, clo=next(0); if(typeof clo === "number") switch(clo) @@ -27584,8 +27102,8 @@ clo$0= function(n,m) {return function(obj) - {var _hD_=caml_call1(obj[1][1 + m],obj); - return caml_call2(obj[1][1 + n],obj,_hD_)}} + {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: @@ -27605,8 +27123,8 @@ clo$0= function(m,n) {return function(obj) - {var _hC_=obj[1 + n]; - return caml_call1(caml_get_public_method(_hC_,m,0),_hC_)}} + {var _hE_=obj[1 + n]; + return caml_call1(caml_get_public_method(_hE_,m,0),_hE_)}} (m$3,n$16); break; case 22: @@ -27616,8 +27134,8 @@ clo$0= function(m,e,n) {return function(obj) - {var _hB_=obj[1 + e][1 + n]; - return caml_call1(caml_get_public_method(_hB_,m,0),_hB_)}} + {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: @@ -27627,8 +27145,8 @@ clo$0= function(m,n) {return function(obj) - {var _hE_=caml_call1(obj[1][1 + n],obj); - return caml_call1(caml_get_public_method(_hE_,m,0),_hE_)}} + {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; @@ -27678,10 +27196,10 @@ {var length=comps$0.length - 1, modu=caml_obj_block(0,length), - _hw_=length - 1 | 0, - _hv_=0; - if(! (_hw_ < 0)) - {var i=_hv_; + _hy_=length - 1 | 0, + _hx_=0; + if(! (_hy_ < 0)) + {var i=_hx_; for(;;) {var shape=caml_check_bound(comps$0,i)[1 + i]; if(typeof shape === "number") @@ -27704,13 +27222,13 @@ (l, [246, function(l,i) - {return function(_hy_) + {return function(_hA_) {var l$0=modu[1 + i]; if(l === l$0)throw [0,Undefined_recursive_module,loc]; - var _hz_=caml_obj_tag(l$0); - return 250 === _hz_ + var _hB_=caml_obj_tag(l$0); + return 250 === _hB_ ?l$0[1] - :246 === _hz_?force_lazy_block(l$0):l$0}} + :246 === _hB_?force_lazy_block(l$0):l$0}} (l,i)]); var init=l; break; @@ -27721,8 +27239,8 @@ else var v=shape[1],init=v; modu[1 + i] = init; - var _hx_=i + 1 | 0; - if(_hw_ !== i){var i=_hx_;continue} + var _hz_=i + 1 | 0; + if(_hy_ !== i){var i=_hz_;continue} break}} return modu} function init_mod(loc,shape) @@ -27731,9 +27249,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 _ht_=comps$0.length - 1 - 1 | 0,_hs_=0; - if(! (_ht_ < 0)) - {var i=_hs_; + {var _hv_=comps$0.length - 1 - 1 | 0,_hu_=0; + if(! (_hv_ < 0)) + {var i=_hu_; for(;;) {var n$0=n[1 + i],shape=caml_check_bound(comps$0,i)[1 + i]; if(typeof shape === "number") @@ -27743,22 +27261,22 @@ {var cl=o[1 + i],j=0; for(;;) {cl[1 + j] = n$0[1 + j]; - var _hr_=j + 1 | 0; - if(3 !== j){var j=_hr_;continue} + var _ht_=j + 1 | 0; + if(3 !== j){var j=_ht_;continue} break}} else switch$0 = 1; - if(switch$0)throw [0,Assert_failure,_cO_]} + if(switch$0)throw [0,Assert_failure,_cQ_]} else o[1 + i] = n$0; else if(0 === shape[0]) {var comps=shape[1];update_mod_block(comps,o[1 + i],n$0)} - var _hu_=i + 1 | 0; - if(_ht_ !== i){var i=_hu_;continue} + var _hw_=i + 1 | 0; + if(_hv_ !== i){var i=_hw_;continue} break}} return 0} - throw [0,Assert_failure,_cP_]} + throw [0,Assert_failure,_cR_]} function update_mod(shape,o,n) {if(typeof shape !== "number" && 0 === shape[0]) {var comps=shape[1];return update_mod_block(comps,o,n)} @@ -27790,76 +27308,147 @@ keywords); function ident_or_keyword(id) {try - {var _hp_=caml_call2(Stdlib_Hashtbl[6],kwd_table,id);return _hp_} - catch(_hq_) - {_hq_ = caml_wrap_exception(_hq_); - if(_hq_ === Not_found)return [1,id]; - throw _hq_}} + {var _hr_=caml_call2(Stdlib_Hashtbl[6],kwd_table,id);return _hr_} + catch(_hs_) + {_hs_ = caml_wrap_exception(_hs_); + if(_hs_ === Not_found)return [1,id]; + throw _hs_}} function keyword_or_error(c) {var s=make$1(1,c); try - {var _hn_=caml_call2(Stdlib_Hashtbl[6],kwd_table,s);return _hn_} - catch(_ho_) - {_ho_ = caml_wrap_exception(_ho_); - if(_ho_ === Not_found)throw [0,Error,cat(cst_Illegal_character,s)]; - throw _ho_}} + {var _hp_=caml_call2(Stdlib_Hashtbl[6],kwd_table,s);return _hp_} + catch(_hq_) + {_hq_ = caml_wrap_exception(_hq_); + if(_hq_ === Not_found)throw [0,Error,cat(cst_Illegal_character,s)]; + throw _hq_}} + function comment(strm) + {a: + for(;;) + {var match=peek$0(strm); + if(match) + {var switcher=match[1] - 40 | 0; + if(! (2 < switcher >>> 0)) + switch(switcher) + {case 0: + junk(strm); + var match$0=peek$0(strm); + if(match$0) + {if(42 === match$0[1]){junk(strm);comment(strm);continue} + junk(strm); + continue} + throw Failure$0; + case 1:break; + default: + junk(strm); + for(;;) + {var match$1=peek$0(strm); + if(match$1) + {var _ho_=match$1[1]; + if(41 === _ho_){junk(strm);return 0} + if(42 === _ho_){junk(strm);continue} + junk(strm); + continue a} + throw Failure$0}} + junk(strm); + continue} + throw Failure$0}} + function escape(strm) + {var match=peek$0(strm); + if(match) + {var _hl_=match[1]; + if(58 <= _hl_) + {var switcher=_hl_ - 110 | 0; + if(! (6 < switcher >>> 0)) + switch(switcher) + {case 0:junk(strm);return 10; + case 4:junk(strm);return 13; + case 6:junk(strm);return 9 + }} + else + if(48 <= _hl_) + {junk(strm); + var match$0=peek$0(strm); + if(match$0) + {var _hm_=match$0[1]; + if(! (9 < _hm_ - 48 >>> 0)) + {junk(strm); + var match$1=peek$0(strm); + if(match$1) + {var _hn_=match$1[1]; + if(! (9 < _hn_ - 48 >>> 0)) + {junk(strm); + return chr + ((((_hl_ - 48 | 0) * 100 | 0) + + + ((_hm_ - 48 | 0) * 10 | 0) + | + 0) + + + (_hn_ - 48 | 0) + | + 0)}} + throw [0,Error,cst$99]}} + throw [0,Error,cst$98]} + junk(strm); + return _hl_} + throw Failure$0} function end_exponent_part(strm) {for(;;) {var match=peek$0(strm); if(match) - {var _hm_=match[1]; - if(! (9 < _hm_ - 48 >>> 0)){junk(strm);store(_hm_);continue}} + {var _hk_=match[1]; + if(! (9 < _hk_ - 48 >>> 0)){junk(strm);store(_hk_);continue}} return [0,[3,caml_float_of_string(get_string(0))]]}} function exponent_part(strm) {var match=peek$0(strm); if(match) - {var _hl_=match[1],switch$0=0; - if(43 !== _hl_ && 45 !== _hl_)switch$0 = 1; + {var _hj_=match[1],switch$0=0; + if(43 !== _hj_ && 45 !== _hj_)switch$0 = 1; if(! switch$0) - {junk(strm);store(_hl_);return end_exponent_part(strm)}} + {junk(strm);store(_hj_);return end_exponent_part(strm)}} return end_exponent_part(strm)} function number(s) {for(;;) {var match=peek$0(s); if(match) - {var _hi_=match[1]; - if(58 <= _hi_) + {var _hg_=match[1]; + if(58 <= _hg_) {var switch$0=0; - if(69 === _hi_ || 101 === _hi_)switch$0 = 1; + if(69 === _hg_ || 101 === _hg_)switch$0 = 1; if(switch$0){junk(s);store(69);return exponent_part(s)}} else - {if(46 === _hi_) + {if(46 === _hg_) {junk(s); store(46); for(;;) {var match$0=peek$0(s); if(match$0) - {var _hj_=match$0[1],_hk_=_hj_ - 69 | 0; - if(32 < _hk_ >>> 0) - {if(! (9 < _hk_ + 21 >>> 0)){junk(s);store(_hj_);continue}} + {var _hh_=match$0[1],_hi_=_hh_ - 69 | 0; + if(32 < _hi_ >>> 0) + {if(! (9 < _hi_ + 21 >>> 0)){junk(s);store(_hh_);continue}} else - if(30 < _hk_ - 1 >>> 0) + if(30 < _hi_ - 1 >>> 0) {junk(s);store(69);return exponent_part(s)}} return [0,[3,caml_float_of_string(get_string(0))]]}} - if(48 <= _hi_){junk(s);store(_hi_);continue}}} + if(48 <= _hg_){junk(s);store(_hg_);continue}}} return [0,[2,caml_int_of_string(get_string(0))]]}} function ident2(strm) {for(;;) {var match=peek$0(strm); if(match) - {var _hg_=match[1],switch$0=0; - if(94 <= _hg_) - {var _hh_=_hg_ - 95 | 0; - if(30 < _hh_ >>> 0) - {if(! (32 <= _hh_))switch$0 = 1} + {var _he_=match[1],switch$0=0; + if(94 <= _he_) + {var _hf_=_he_ - 95 | 0; + if(30 < _hf_ >>> 0) + {if(! (32 <= _hf_))switch$0 = 1} else - if(29 === _hh_)switch$0 = 1} + if(29 === _hf_)switch$0 = 1} else - if(65 <= _hg_) - {if(92 === _hg_)switch$0 = 1} + if(65 <= _he_) + {if(92 === _he_)switch$0 = 1} else - if(33 <= _hg_) - switch(_hg_ - 33 | 0) + if(33 <= _he_) + switch(_he_ - 33 | 0) {case 0: case 2: case 3: @@ -27876,14 +27465,14 @@ case 30: case 31:switch$0 = 1;break } - if(switch$0){junk(strm);store(_hg_);continue}} + if(switch$0){junk(strm);store(_he_);continue}} return [0,ident_or_keyword(get_string(0))]}} function neg_number(s) {var match=peek$0(s); if(match) - {var _hf_=match[1]; - if(! (9 < _hf_ - 48 >>> 0)) - {junk(s);reset_buffer(0);store(45);store(_hf_);return number(s)}} + {var _hd_=match[1]; + if(! (9 < _hd_ - 48 >>> 0)) + {junk(s);reset_buffer(0);store(45);store(_hd_);return number(s)}} reset_buffer(0); store(45); return ident2(s)} @@ -27891,56 +27480,56 @@ {for(;;) {var match=peek$0(strm); if(match) - {var _hd_=match[1],switch$0=0; - if(91 <= _hd_) - {var _he_=_hd_ - 95 | 0; - if(27 < _he_ >>> 0) - {if(97 <= _he_)switch$0 = 1} + {var _hb_=match[1],switch$0=0; + if(91 <= _hb_) + {var _hc_=_hb_ - 95 | 0; + if(27 < _hc_ >>> 0) + {if(97 <= _hc_)switch$0 = 1} else - if(1 !== _he_)switch$0 = 1} + if(1 !== _hc_)switch$0 = 1} else - if(48 <= _hd_) - {if(6 < _hd_ - 58 >>> 0)switch$0 = 1} + if(48 <= _hb_) + {if(6 < _hb_ - 58 >>> 0)switch$0 = 1} else - if(39 === _hd_)switch$0 = 1; - if(switch$0){junk(strm);store(_hd_);continue}} + if(39 === _hb_)switch$0 = 1; + if(switch$0){junk(strm);store(_hb_);continue}} return [0,ident_or_keyword(get_string(0))]}} function next_token$0(counter,strm) {for(;;) {var match=peek$0(strm); if(match) - {var _g5_=match[1],switch$0=0; - if(124 <= _g5_) - {if(127 <= _g5_) - {if(192 <= _g5_)switch$0 = 1} + {var _g3_=match[1],switch$0=0; + if(124 <= _g3_) + {if(127 <= _g3_) + {if(192 <= _g3_)switch$0 = 1} else - if(125 !== _g5_)switch$0 = 2} + if(125 !== _g3_)switch$0 = 2} else - {var _g6_=_g5_ - 65 | 0; - if(57 < _g6_ >>> 0) - {if(! (58 <= _g6_)) - switch(_g6_ + 65 | 0) + {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 _g8_=match$1[1]; - if(34 === _g8_){junk(strm);return [0,[4,get_string(0)]]} - if(92 === _g8_) + {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(_hc_) - {_hc_ = caml_wrap_exception(_hc_); - if(_hc_ === Failure$0)throw [0,Error,cst$96]; - throw _hc_; - var _g$_=_hc_} + 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(_g8_); + store(_g6_); continue} throw Failure$0} case 39: @@ -27948,22 +27537,22 @@ try {var match$2=peek$0(strm); if(! match$2)throw Failure$0; - var _g9_=match$2[1]; - if(92 === _g9_) + var _g7_=match$2[1]; + if(92 === _g7_) {junk(strm); try - {var _g__=escape(strm)} - catch(_hb_) - {_hb_ = caml_wrap_exception(_hb_); - if(_hb_ === Failure$0)throw [0,Error,cst$97]; - throw _hb_} - var c=_g__} + {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=_g9_}} - catch(_ha_) - {_ha_ = caml_wrap_exception(_ha_); - if(_ha_ === Failure$0)throw [0,Error,cst$94]; - throw _ha_} + {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]]} @@ -27991,7 +27580,7 @@ case 55: case 56: case 57: - junk(strm);reset_buffer(0);store(_g5_);return number(strm); + junk(strm);reset_buffer(0);store(_g3_);return number(strm); case 33: case 35: case 36: @@ -28008,18 +27597,18 @@ case 64:switch$0 = 2;break }} else - {var _g7_=_g6_ - 26 | 0; - if(5 < _g7_ >>> 0) + {var _g5_=_g4_ - 26 | 0; + if(5 < _g5_ >>> 0) switch$0 = 1; else - switch(_g7_) + 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(_g5_)]; + {case 0:junk(strm);return [0,keyword_or_error(_g3_)]; case 1: - junk(strm);reset_buffer(0);store(_g5_);return ident(strm); + junk(strm);reset_buffer(0);store(_g3_);return ident(strm); default: - junk(strm);reset_buffer(0);store(_g5_);return ident2(strm)}} + junk(strm);reset_buffer(0);store(_g3_);return ident2(strm)}} return 0}} function maybe_comment(counter,strm) {var match=peek$0(strm); @@ -28031,83 +27620,12 @@ return caml_trampoline_return(next_token$0,[0,strm])} return [0,keyword_or_error(40)]} function next_token(strm){return caml_trampoline(next_token$0(0,strm))} - function escape(strm) - {var match=peek$0(strm); - if(match) - {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_} - throw Failure$0} - 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 _g1_=match$1[1]; - if(41 === _g1_){junk(strm);return 0} - if(42 === _g1_){junk(strm);continue} - junk(strm); - continue a} - throw Failure$0}} - junk(strm); - continue} - throw Failure$0}} 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(_g0_){return caml_call1(_cg_[2],0)}]; + {var prng=[246,function(_g2_){return caml_call1(_ci_[2],0)}]; function create(opt,initial_size) {if(opt) var sth=opt[1],random=sth; @@ -28119,21 +27637,21 @@ {var x$0=x * 2 | 0,x=x$0;continue} if(random) var - _gY_=caml_obj_tag(prng), - _gZ_=250 === _gY_?prng[1]:246 === _gY_?force_lazy_block(prng):prng, - seed=caml_call1(_cg_[4],_gZ_); + _g0_=caml_obj_tag(prng), + _g1_=250 === _g0_?prng[1]:246 === _g0_?force_lazy_block(prng):prng, + seed=caml_call1(_ci_[4],_g1_); else var seed=0; return [0,0,caml_make_vect(x,0),seed,x]}} function clear(h) {h[1] = 0; - var len=h[2].length - 1,_gW_=len - 1 | 0,_gV_=0; - if(! (_gW_ < 0)) - {var i=_gV_; + var len=h[2].length - 1,_gY_=len - 1 | 0,_gX_=0; + if(! (_gY_ < 0)) + {var i=_gX_; for(;;) {caml_check_bound(h[2],i)[1 + i] = 0; - var _gX_=i + 1 | 0; - if(_gW_ !== i){var i=_gX_;continue} + var _gZ_=i + 1 | 0; + if(_gY_ !== i){var i=_gZ_;continue} break}} return 0} function reset(h) @@ -28142,8 +27660,8 @@ ?clear(h) :(h[1] = 0,h[2] = caml_make_vect(h[4],0),0)} function copy(init) - {var _gS_=init[4],_gT_=init[3],_gU_=copy$1(init[2]); - return [0,init[1],_gU_,_gT_,_gS_]} + {var _gU_=init[4],_gV_=init[3],_gW_=copy$1(init[2]); + return [0,init[1],_gW_,_gV_,_gU_]} function key_index(h,hkey){return hkey & (h[2].length - 1 - 1 | 0)} function clean(h) {function do_bucket(param) @@ -28158,23 +27676,23 @@ var param$0=rest; continue} return 0}} - var d=h[2],_gP_=d.length - 1 - 1 | 0,_gO_=0; - if(! (_gP_ < 0)) - {var i=_gO_; + var d=h[2],_gR_=d.length - 1 - 1 | 0,_gQ_=0; + if(! (_gR_ < 0)) + {var i=_gQ_; for(;;) - {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} + {var _gS_=do_bucket(caml_check_bound(d,i)[1 + i]); + caml_check_bound(d,i)[1 + i] = _gS_; + var _gT_=i + 1 | 0; + if(_gR_ !== i){var i=_gT_;continue} break}} return 0} function resize(h) {var odata=h[2],osize=odata.length - 1,nsize=osize * 2 | 0; clean(h); var - _gH_=nsize < max_array_length?1:0, - _gI_=_gH_?(osize >>> 1 | 0) <= h[1]?1:0:_gH_; - if(_gI_) + _gJ_=nsize < max_array_length?1:0, + _gK_=_gJ_?(osize >>> 1 | 0) <= h[1]?1:0:_gJ_; + if(_gK_) {var ndata=caml_make_vect(nsize,0); h[2] = ndata; var @@ -28185,23 +27703,23 @@ 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_; + _gP_=[0,hkey,data,caml_check_bound(ndata,nidx)[1 + nidx]]; + caml_check_bound(ndata,nidx)[1 + nidx] = _gP_; return 0} return 0}, - _gK_=osize - 1 | 0, - _gJ_=0; - if(! (_gK_ < 0)) - {var i=_gJ_; + _gM_=osize - 1 | 0, + _gL_=0; + if(! (_gM_ < 0)) + {var i=_gL_; for(;;) {insert_bucket(caml_check_bound(odata,i)[1 + i]); - var _gM_=i + 1 | 0; - if(_gK_ !== i){var i=_gM_;continue} + var _gO_=i + 1 | 0; + if(_gM_ !== i){var i=_gO_;continue} break}} - var _gL_=0} + var _gN_=0} else - var _gL_=_gI_; - return _gL_} + var _gN_=_gK_; + return _gN_} function add(h,key,info) {var hkey=caml_call2(H[2],h[3],key), @@ -28210,8 +27728,8 @@ 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 _gG_=h[2].length - 1 << 1 < h[1]?1:0; - return _gG_?resize(h):_gG_} + var _gI_=h[2].length - 1 << 1 < h[1]?1:0; + return _gI_?resize(h):_gI_} function remove(h,key) {var hkey=caml_call2(H[2],h[3],key); function remove_bucket(param) @@ -28230,14 +27748,14 @@ return 0}} var i=key_index(h,hkey), - _gF_=remove_bucket(caml_check_bound(h[2],i)[1 + i]); - caml_check_bound(h[2],i)[1 + i] = _gF_; + _gH_=remove_bucket(caml_check_bound(h[2],i)[1 + i]); + caml_check_bound(h[2],i)[1 + i] = _gH_; return 0} function find(h,key) {var hkey=caml_call2(H[2],h[3],key), - _gE_=key_index(h,hkey), - param$1=caml_check_bound(h[2],_gE_)[1 + _gE_], + _gG_=key_index(h,hkey), + param$1=caml_check_bound(h[2],_gG_)[1 + _gG_], param=param$1; for(;;) {if(param) @@ -28258,8 +27776,8 @@ function find_opt(h,key) {var hkey=caml_call2(H[2],h[3],key), - _gD_=key_index(h,hkey), - param$1=caml_check_bound(h[2],_gD_)[1 + _gD_], + _gF_=key_index(h,hkey), + param$1=caml_check_bound(h[2],_gF_)[1 + _gF_], param=param$1; for(;;) {if(param) @@ -28298,8 +27816,8 @@ var param$1=param$0[3],param$0=param$1; continue} return 0}} - var _gC_=key_index(h,hkey); - return find_in_bucket(caml_check_bound(h[2],_gC_)[1 + _gC_])} + var _gE_=key_index(h,hkey); + return find_in_bucket(caml_check_bound(h[2],_gE_)[1 + _gE_])} function replace(h,key,info) {var hkey=caml_call2(H[2],h[3],key); function replace_bucket(param) @@ -28316,21 +27834,21 @@ throw Not_found}} var i=key_index(h,hkey),l=caml_check_bound(h[2],i)[1 + i]; try - {var _gA_=replace_bucket(l);return _gA_} - catch(_gB_) - {_gB_ = caml_wrap_exception(_gB_); - if(_gB_ === Not_found) + {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 _gz_=h[2].length - 1 << 1 < h[1]?1:0; - return _gz_?resize(h):_gz_} - throw _gB_}} + var _gB_=h[2].length - 1 << 1 < h[1]?1:0; + return _gB_?resize(h):_gB_} + throw _gD_}} function mem(h,key) {var hkey=caml_call2(H[2],h[3],key), - _gy_=key_index(h,hkey), - param$1=caml_check_bound(h[2],_gy_)[1 + _gy_], + _gA_=key_index(h,hkey), + param$1=caml_check_bound(h[2],_gA_)[1 + _gA_], param=param$1; for(;;) {if(param) @@ -28343,9 +27861,9 @@ continue} return 0}} function iter$0(f,h) - {var d$0=h[2],_gw_=d$0.length - 1 - 1 | 0,_gv_=0; - if(! (_gw_ < 0)) - {var i=_gv_; + {var d$0=h[2],_gy_=d$0.length - 1 - 1 | 0,_gx_=0; + if(! (_gy_ < 0)) + {var i=_gx_; a: for(;;) {var param$0=caml_check_bound(d$0,i)[1 + i],param=param$0; @@ -28361,22 +27879,22 @@ {var d=match$0[1],k=match[1];caml_call2(f,k,d);switch$0 = 1} var param=rest; continue} - var _gx_=i + 1 | 0; - if(_gw_ !== i){var i=_gx_;continue a} + var _gz_=i + 1 | 0; + if(_gy_ !== i){var i=_gz_;continue a} break} break}} return 0} function fold(f,h,init) - {var d$0=h[2],accu$1=[0,init],_gs_=d$0.length - 1 - 1 | 0,_gr_=0; - if(! (_gs_ < 0)) - {var i=_gr_; + {var d$0=h[2],accu$1=[0,init],_gu_=d$0.length - 1 - 1 | 0,_gt_=0; + if(! (_gu_ < 0)) + {var i=_gt_; a: for(;;) {var - _gt_=accu$1[1], + _gv_=accu$1[1], b$0=caml_check_bound(d$0,i)[1 + i], b=b$0, - accu=_gt_; + accu=_gv_; for(;;) {if(b) {var @@ -28392,8 +27910,8 @@ var b=rest,accu=accu$0; continue} accu$1[1] = accu; - var _gu_=i + 1 | 0; - if(_gs_ !== i){var i=_gu_;continue a} + var _gw_=i + 1 | 0; + if(_gu_ !== i){var i=_gw_;continue a} break} break}} return accu$1[1]} @@ -28419,14 +27937,14 @@ var param$0=rest; continue} return 0}} - var d=h[2],_go_=d.length - 1 - 1 | 0,_gn_=0; - if(! (_go_ < 0)) - {var i=_gn_; + var d=h[2],_gq_=d.length - 1 - 1 | 0,_gp_=0; + if(! (_gq_ < 0)) + {var i=_gp_; for(;;) - {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} + {var _gr_=do_bucket(caml_check_bound(d,i)[1 + i]); + caml_check_bound(d,i)[1 + i] = _gr_; + var _gs_=i + 1 | 0; + if(_gq_ !== i){var i=_gs_;continue} break}} return 0} function length(h){return h[1]} @@ -28443,21 +27961,21 @@ return accu$0}} function stats(h) {var - _gj_=h[2], - _gk_=0, + _gl_=h[2], + _gm_=0, mbl= fold_left$3 - (function(m,b){return max$1(m,bucket_length(0,b))},_gk_,_gj_), + (function(m,b){return max$1(m,bucket_length(0,b))},_gm_,_gl_), histo=caml_make_vect(mbl + 1 | 0,0), - _gl_=h[2]; + _gn_=h[2]; iter$5 (function(b) {var l=bucket_length(0,b), - _gm_=caml_check_bound(histo,l)[1 + l] + 1 | 0; - caml_check_bound(histo,l)[1 + l] = _gm_; + _go_=caml_check_bound(histo,l)[1 + l] + 1 | 0; + caml_check_bound(histo,l)[1 + l] = _go_; return 0}, - _gl_); + _gn_); return [0,h[1],h[2].length - 1,mbl,histo]} function bucket_length_alive(accu,param) {var accu$0=accu,param$0=param; @@ -28472,21 +27990,21 @@ function stats_alive(h) {var size=[0,0], - _gf_=h[2], - _gg_=0, + _gh_=h[2], + _gi_=0, mbl= fold_left$3 - (function(m,b){return max$1(m,bucket_length_alive(0,b))},_gg_,_gf_), + (function(m,b){return max$1(m,bucket_length_alive(0,b))},_gi_,_gh_), histo=caml_make_vect(mbl + 1 | 0,0), - _gh_=h[2]; + _gj_=h[2]; iter$5 (function(b) {var l=bucket_length_alive(0,b); size[1] = size[1] + l | 0; - var _gi_=caml_check_bound(histo,l)[1 + l] + 1 | 0; - caml_check_bound(histo,l)[1 + l] = _gi_; + var _gk_=caml_check_bound(histo,l)[1 + l] + 1 | 0; + caml_check_bound(histo,l)[1 + l] = _gk_; return 0}, - _gh_); + _gj_); return [0,size[1],h[2].length - 1,mbl,histo]} function to_seq(tbl) {var tbl_data=tbl[2]; @@ -28503,7 +28021,7 @@ {var data=match$0[1],key=match[1]; return [0, [0,key,data], - function(_ge_){return aux(i$0,next,_ge_)}]} + function(_gg_){return aux(i$0,next,_gg_)}]} var buck$0=next; continue} if(i$0 === tbl_data.length - 1)return 0; @@ -28513,16 +28031,16 @@ i$0=i$1, buck$0=buck$1; continue}} - var _gb_=0,_gc_=0; - return function(_gd_){return aux(_gc_,_gb_,_gd_)}} + var _gd_=0,_ge_=0; + return function(_gf_){return aux(_ge_,_gd_,_gf_)}} function to_seq_keys(m) - {var _f9_=to_seq(m); - function _f__(_ga_){return _ga_[1]} - return function(_f$_){return map$1(_f__,_f9_,_f$_)}} + {var _f$_=to_seq(m); + function _ga_(_gc_){return _gc_[1]} + return function(_gb_){return map$1(_ga_,_f$_,_gb_)}} function to_seq_values(m) - {var _f5_=to_seq(m); - function _f6_(_f8_){return _f8_[2]} - return function(_f7_){return map$1(_f6_,_f5_,_f7_)}} + {var _f7_=to_seq(m); + function _f8_(_f__){return _f__[2]} + return function(_f9_){return map$1(_f8_,_f7_,_f9_)}} function add_seq(tbl,i) {return iter (function(param) @@ -28559,19 +28077,19 @@ of_seq, clean, stats_alive]} - 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 create$5(param){return caml_call1(_q_[1],1)} + function get_key$0(t){return caml_call2(_q_[3],t,0)} + function get_key_copy$0(t){return caml_call2(_q_[4],t,0)} + function set_key$0(t,k){return caml_call3(_q_[5],t,0,k)} + function unset_key$0(t){return caml_call2(_q_[6],t,0)} + function check_key$0(t){return caml_call2(_q_[7],t,0)} + function blit_key$0(t1,t2){return caml_call5(_q_[8],t1,0,t2,0,1)} + function get_data$1(t){return caml_call1(_q_[9],t)} + function get_data_copy(t){return caml_call1(_q_[10],t)} + function set_data(t,d){return caml_call2(_q_[11],t,d)} + function unset_data(t){return caml_call1(_q_[12],t)} + function check_data(t){return caml_call1(_q_[13],t)} + function blit_data(t1,t2){return caml_call2(_q_[14],t1,t2)} function make$4(key,data) {var eph=create$5(0);set_data(eph,data);set_key$0(eph,key);return eph} function query(eph,key) @@ -28624,8 +28142,8 @@ replace_seq=include[21], clean=include[23], stats_alive=include[24], - _f4_=include[1]; - function create(sz){return caml_call2(_f4_,_cQ_,sz)} + _f6_=include[1]; + function create(sz){return caml_call2(_f6_,_cS_,sz)} function of_seq(i) {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} return [0, @@ -28654,7 +28172,7 @@ clean, stats_alive]} function make$5(param){return [0,0]} - function add$1(b,k,d){var _f3_=b[1];b[1] = [0,make$4(k,d),_f3_];return 0} + function add$1(b,k,d){var _f5_=b[1];b[1] = [0,make$4(k,d),_f5_];return 0} function test_key(k,e) {var match=get_key$0(e); if(match){var x=match[1];if(x === k)return 1} @@ -28670,32 +28188,32 @@ return 0}} function find$2(b,k) {var - _f1_=b[1], - match=find_opt(function(_f2_){return test_key(k,_f2_)},_f1_); + _f3_=b[1], + match=find_opt(function(_f4_){return test_key(k,_f4_)},_f3_); if(match){var e=match[1];return get_data$1(e)} return 0} function length$7(b){return length$1(b[1])} function clear$3(b){b[1] = 0;return 0} - function create$6(param){return caml_call1(_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 create$6(param){return caml_call1(_q_[1],2)} + function get_key1(t){return caml_call2(_q_[3],t,0)} + function get_key1_copy(t){return caml_call2(_q_[4],t,0)} + function set_key1(t,k){return caml_call3(_q_[5],t,0,k)} + function unset_key1(t){return caml_call2(_q_[6],t,0)} + function check_key1(t){return caml_call2(_q_[7],t,0)} + function get_key2(t){return caml_call2(_q_[3],t,1)} + function get_key2_copy(t){return caml_call2(_q_[4],t,1)} + function set_key2(t,k){return caml_call3(_q_[5],t,1,k)} + function unset_key2(t){return caml_call2(_q_[6],t,1)} + function check_key2(t){return caml_call2(_q_[7],t,1)} + function blit_key1(t1,t2){return caml_call5(_q_[8],t1,0,t2,0,1)} + function blit_key2(t1,t2){return caml_call5(_q_[8],t1,1,t2,1,1)} + function blit_key12(t1,t2){return caml_call5(_q_[8],t1,0,t2,0,2)} + function get_data$2(t){return caml_call1(_q_[9],t)} + function get_data_copy$0(t){return caml_call1(_q_[10],t)} + function set_data$0(t,d){return caml_call2(_q_[11],t,d)} + function unset_data$0(t){return caml_call1(_q_[12],t)} + function check_data$0(t){return caml_call1(_q_[13],t)} + function blit_data$0(t1,t2){return caml_call2(_q_[14],t1,t2)} function make$6(key1,key2,data) {var eph=create$6(0); set_data$0(eph,data); @@ -28724,8 +28242,8 @@ {var k2=param[2], k1=param[1], - _f0_=caml_call2(H2[2],seed,k2) * 65599 | 0; - return caml_call2(H1[2],seed,k1) + _f0_ | 0} + _f2_=caml_call2(H2[2],seed,k2) * 65599 | 0; + return caml_call2(H1[2],seed,k1) + _f2_ | 0} function equal(c,param) {var k2=param[2],k1=param[1],match=get_key1(c),match$0=get_key2(c); if(match && match$0) @@ -28745,16 +28263,16 @@ set_key2(c,k2); return set_data$0(c,d)} function check_key(c) - {var _fZ_=check_key1(c);return _fZ_?check_key2(c):_fZ_} + {var _f1_=check_key1(c);return _f1_?check_key2(c):_f1_} return MakeSeeded$0 ([0,create,hash,equal,get_data$2,get_key,set_key_data,check_key])} function Make$3(H1,H2) {var equal=H2[1]; function hash(seed,x){return caml_call1(H2[2],x)} - var equal$0=H1[1],_fX_=[0,equal,hash]; + var equal$0=H1[1],_fZ_=[0,equal,hash]; function hash$0(seed,x){return caml_call1(H1[2],x)} var - include=MakeSeeded$2([0,equal$0,hash$0],_fX_), + include=MakeSeeded$2([0,equal$0,hash$0],_fZ_), clear=include[2], reset=include[3], copy=include[4], @@ -28777,8 +28295,8 @@ replace_seq=include[21], clean=include[23], stats_alive=include[24], - _fY_=include[1]; - function create(sz){return caml_call2(_fY_,_cR_,sz)} + _f0_=include[1]; + function create(sz){return caml_call2(_f0_,_cT_,sz)} function of_seq(i) {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} return [0, @@ -28808,7 +28326,7 @@ stats_alive]} function make$7(param){return [0,0]} function add$2(b,k1,k2,d) - {var _fW_=b[1];b[1] = [0,make$6(k1,k2,d),_fW_];return 0} + {var _fY_=b[1];b[1] = [0,make$6(k1,k2,d),_fY_];return 0} function test_keys(k1,k2,e) {var match=get_key1(e),match$0=get_key2(e); if(match && match$0) @@ -28825,80 +28343,80 @@ return 0}} function find$3(b,k1,k2) {var - _fU_=b[1], - match=find_opt(function(_fV_){return test_keys(k1,k2,_fV_)},_fU_); + _fW_=b[1], + match=find_opt(function(_fX_){return test_keys(k1,k2,_fX_)},_fW_); if(match){var e=match[1];return get_data$2(e)} return 0} function length$8(b){return length$1(b[1])} function clear$4(b){b[1] = 0;return 0} - function create$7(n){return caml_call1(_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 create$7(n){return caml_call1(_q_[1],n)} + function length$9(k){return caml_call1(_q_[2],k)} + function get_key$1(t,n){return caml_call2(_q_[3],t,n)} + function get_key_copy$1(t,n){return caml_call2(_q_[4],t,n)} + function set_key$1(t,n,k){return caml_call3(_q_[5],t,n,k)} + function unset_key$1(t,n){return caml_call2(_q_[6],t,n)} + function check_key$1(t,n){return caml_call2(_q_[7],t,n)} function blit_key$1(t1,o1,t2,o2,l) - {return caml_call5(_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)} + {return caml_call5(_q_[8],t1,o1,t2,o2,l)} + function get_data$3(t){return caml_call1(_q_[9],t)} + function get_data_copy$1(t){return caml_call1(_q_[10],t)} + function set_data$1(t,d){return caml_call2(_q_[11],t,d)} + function unset_data$1(t){return caml_call1(_q_[12],t)} + function check_data$1(t){return caml_call1(_q_[13],t)} + function blit_data$1(t1,t2){return caml_call2(_q_[14],t1,t2)} function make$8(keys,data) {var l=keys.length - 1,eph=create$7(l); set_data$1(eph,data); - var _fS_=l - 1 | 0,_fR_=0; - if(! (_fS_ < 0)) - {var i=_fR_; + var _fU_=l - 1 | 0,_fT_=0; + if(! (_fU_ < 0)) + {var i=_fT_; for(;;) {set_key$1(eph,i,caml_check_bound(keys,i)[1 + i]); - var _fT_=i + 1 | 0; - if(_fS_ !== i){var i=_fT_;continue} + var _fV_=i + 1 | 0; + if(_fU_ !== i){var i=_fV_;continue} break}} return eph} function query$1(eph,keys) {var l=length$9(eph); try {if(l !== keys.length - 1)throw Exit; - var _fN_=l - 1 | 0,_fM_=0; - if(! (_fN_ < 0)) - {var i=_fM_; + var _fP_=l - 1 | 0,_fO_=0; + if(! (_fP_ < 0)) + {var i=_fO_; for(;;) {var match=get_key$1(eph,i); if(! match)throw Exit; var k=match[1]; if(k !== caml_check_bound(keys,i)[1 + i])throw Exit; - var _fP_=i + 1 | 0; - if(_fN_ !== i){var i=_fP_;continue} + var _fR_=i + 1 | 0; + if(_fP_ !== i){var i=_fR_;continue} break}} - var _fO_=get_data$3(eph); - return _fO_} - catch(_fQ_) - {_fQ_ = caml_wrap_exception(_fQ_);if(_fQ_ === Exit)return 0;throw _fQ_}} + var _fQ_=get_data$3(eph); + return _fQ_} + catch(_fS_) + {_fS_ = caml_wrap_exception(_fS_);if(_fS_ === Exit)return 0;throw _fS_}} function MakeSeeded$3(H) {function create(k,d) {var c=create$7(k.length - 1); set_data$1(c,d); - var _fK_=k.length - 1 - 1 | 0,_fJ_=0; - if(! (_fK_ < 0)) - {var i=_fJ_; + var _fM_=k.length - 1 - 1 | 0,_fL_=0; + if(! (_fM_ < 0)) + {var i=_fL_; for(;;) {set_key$1(c,i,caml_check_bound(k,i)[1 + i]); - var _fL_=i + 1 | 0; - if(_fK_ !== i){var i=_fL_;continue} + var _fN_=i + 1 | 0; + if(_fM_ !== i){var i=_fN_;continue} break}} return c} function hash(seed,k) - {var h=[0,0],_fF_=k.length - 1 - 1 | 0,_fE_=0; - if(! (_fF_ < 0)) - {var i=_fE_; + {var h=[0,0],_fH_=k.length - 1 - 1 | 0,_fG_=0; + if(! (_fH_ < 0)) + {var i=_fG_; for(;;) - {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} + {var _fI_=h[1],_fJ_=caml_check_bound(k,i)[1 + i]; + h[1] = (caml_call2(H[2],seed,_fJ_) * 65599 | 0) + _fI_ | 0; + var _fK_=i + 1 | 0; + if(_fH_ !== i){var i=_fK_;continue} break}} return h[1]} function equal(c,k) @@ -28909,8 +28427,8 @@ {if(0 <= i) {var match=get_key$1(c,i); if(match) - {var ki=match[1],_fD_=caml_check_bound(k,i)[1 + i]; - if(caml_call2(H[1],_fD_,ki)){var i$0=i - 1 | 0,i=i$0;continue} + {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}} @@ -28933,26 +28451,26 @@ return 0} function set_key_data(c,k,d) {unset_data$1(c); - var _fB_=k.length - 1 - 1 | 0,_fA_=0; - if(! (_fB_ < 0)) - {var i=_fA_; + var _fD_=k.length - 1 - 1 | 0,_fC_=0; + if(! (_fD_ < 0)) + {var i=_fC_; for(;;) {set_key$1(c,i,caml_check_bound(k,i)[1 + i]); - var _fC_=i + 1 | 0; - if(_fB_ !== i){var i=_fC_;continue} + var _fE_=i + 1 | 0; + if(_fD_ !== i){var i=_fE_;continue} break}} return set_data$1(c,d)} function check_key(c) {var i$1=length$9(c) - 1 | 0,i=i$1; for(;;) - {var _fx_=i < 0?1:0; - if(_fx_) - var _fy_=_fx_; + {var _fz_=i < 0?1:0; + if(_fz_) + var _fA_=_fz_; else - {var _fz_=check_key$1(c,i); - if(_fz_){var i$0=i - 1 | 0,i=i$0;continue} - var _fy_=_fz_} - return _fy_}} + {var _fB_=check_key$1(c,i); + if(_fB_){var i$0=i - 1 | 0,i=i$0;continue} + var _fA_=_fB_} + return _fA_}} return MakeSeeded$0 ([0,create,hash,equal,get_data$3,get_key,set_key_data,check_key])} function Make$4(H) @@ -28982,8 +28500,8 @@ replace_seq=include[21], clean=include[23], stats_alive=include[24], - _fw_=include[1]; - function create(sz){return caml_call2(_fw_,_cS_,sz)} + _fy_=include[1]; + function create(sz){return caml_call2(_fy_,_cU_,sz)} function of_seq(i) {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} return [0, @@ -29012,27 +28530,27 @@ clean, stats_alive]} function make$9(param){return [0,0]} - function add$3(b,k,d){var _fv_=b[1];b[1] = [0,make$8(k,d),_fv_];return 0} + function add$3(b,k,d){var _fx_=b[1];b[1] = [0,make$8(k,d),_fx_];return 0} function test_keys$0(k,e) {try {if(length$9(e) !== k.length - 1)throw Exit; - var _fr_=k.length - 1 - 1 | 0,_fq_=0; - if(! (_fr_ < 0)) - {var i=_fq_; + var _ft_=k.length - 1 - 1 | 0,_fs_=0; + if(! (_ft_ < 0)) + {var i=_fs_; for(;;) {var match=get_key$1(e,i),switch$0=0; if(match) {var x=match[1]; if(x === caml_check_bound(k,i)[1 + i]) - {var _ft_=i + 1 | 0; - if(_fr_ !== i){var i=_ft_;continue} + {var _fv_=i + 1 | 0; + if(_ft_ !== i){var i=_fv_;continue} switch$0 = 1}} if(! switch$0)throw Exit; break}} - var _fs_=1; - return _fs_} - catch(_fu_) - {_fu_ = caml_wrap_exception(_fu_);if(_fu_ === Exit)return 0;throw _fu_}} + var _fu_=1; + return _fu_} + catch(_fw_) + {_fw_ = caml_wrap_exception(_fw_);if(_fw_ === Exit)return 0;throw _fw_}} function remove$2(b,k) {var l=b[1],acc=0; for(;;) @@ -29044,8 +28562,8 @@ return 0}} function find$4(b,k) {var - _fo_=b[1], - match=find_opt(function(_fp_){return test_keys$0(k,_fp_)},_fo_); + _fq_=b[1], + match=find_opt(function(_fr_){return test_keys$0(k,_fr_)},_fq_); if(match){var e=match[1];return get_data$3(e)} return 0} function length$10(b){return length$1(b[1])} @@ -29118,9 +28636,9 @@ MakeSeeded$3, [0,make$9,add$3,remove$2,find$4,length$10,clear$5]], [0, - function(_fn_) + function(_fp_) {return MakeSeeded$0 - ([0,_fn_[3],_fn_[1],_fn_[2],_fn_[5],_fn_[4],_fn_[6],_fn_[7]])}]]; + ([0,_fp_[3],_fp_[1],_fp_[2],_fp_[5],_fp_[4],_fp_[6],_fp_[7]])}]]; caml_register_global(825,Stdlib_Ephemeron,"Stdlib__Ephemeron"); function generic_basename(is_dir_sep,current_dir_name,name) {if(caml_string_equal(name,cst$100))return current_dir_name; @@ -29161,24 +28679,24 @@ function is_dir_sep(s,i){return 47 === caml_string_get(s,i)?1:0} function is_relative(n) {var - _fl_=caml_ml_string_length(n) < 1?1:0, - _fm_=_fl_ || (47 !== caml_string_get(n,0)?1:0); - return _fm_} + _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 _fg_=is_relative(n); - if(_fg_) + {var _fi_=is_relative(n); + if(_fi_) {var - _fh_=caml_ml_string_length(n) < 2?1:0, - _fi_=_fh_ || caml_string_notequal(sub$0(n,0,2),cst$103); - if(_fi_) + _fj_=caml_ml_string_length(n) < 2?1:0, + _fk_=_fj_ || caml_string_notequal(sub$0(n,0,2),cst$103); + if(_fk_) var - _fj_=caml_ml_string_length(n) < 3?1:0, - _fk_=_fj_ || caml_string_notequal(sub$0(n,0,3),cst$102); + _fl_=caml_ml_string_length(n) < 3?1:0, + _fm_=_fl_ || caml_string_notequal(sub$0(n,0,3),cst$102); else - var _fk_=_fi_} + var _fm_=_fk_} else - var _fk_=_fg_; - return _fk_} + var _fm_=_fi_; + return _fm_} function check_suffix(name,suff){return ends_with$0(suff,name)} function chop_suffix_opt(suffix,filename) {var @@ -29191,24 +28709,24 @@ :0} return 0} try - {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} + {var _c3_=caml_sys_getenv(cst_TMPDIR),_cV_=_c3_} + catch(_fh_) + {_fh_ = caml_wrap_exception(_fh_); + if(_fh_ !== Not_found)throw _fh_; + var _cV_=cst_tmp} function quote(s) {var l=caml_ml_string_length(s),b=create$2(l + 20 | 0); add_char(b,39); - var _fd_=l - 1 | 0,_fc_=0; - if(! (_fd_ < 0)) - {var i=_fc_; + var _ff_=l - 1 | 0,_fe_=0; + if(! (_ff_ < 0)) + {var i=_fe_; for(;;) {if(39 === caml_string_get(s,i)) add_string(b,quotequote); else add_char(b,caml_string_get(s,i)); - var _fe_=i + 1 | 0; - if(_fd_ !== i){var i=_fe_;continue} + var _fg_=i + 1 | 0; + if(_ff_ !== i){var i=_fg_;continue} break}} add_char(b,39); return contents(b)} @@ -29216,25 +28734,25 @@ {if(stderr) var f=stderr[1], - _e8_=caml_equal(stderr,stdout)?cst_2_1:cat(cst_2,quote(f)), - _e9_=_e8_; + _e__=caml_equal(stderr,stdout)?cst_2_1:cat(cst_2,quote(f)), + _e$_=_e__; else - var _e9_=cst$109; + var _e$_=cst$109; if(stdout) - var f$0=stdout[1],_e__=cat(cst$104,quote(f$0)); + var f$0=stdout[1],_fa_=cat(cst$104,quote(f$0)); else - var _e__=cst$108; - var _e$_=cat(_e__,_e9_); - if(stdin) - var f$1=stdin[1],_fa_=cat(cst$105,quote(f$1)); - else - var _fa_=cst$107; + var _fa_=cst$108; 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_)} + if(stdin) + var f$1=stdin[1],_fc_=cat(cst$105,quote(f$1)); + else + var _fc_=cst$107; + var _fd_=cat(_fc_,_fb_); + return cat(concat$1(cst$106,map$4(quote,[0,cmd,args])),_fd_)} + function basename(_e9_) + {return generic_basename(is_dir_sep,current_dir_name,_e9_)} + function dirname(_e8_) + {return generic_dirname(is_dir_sep,current_dir_name,_e8_)} var Unix= [0, @@ -29247,76 +28765,76 @@ is_implicit, check_suffix, chop_suffix_opt, - _cT_, + _cV_, quote, quote_command, basename, dirname]; function is_dir_sep$0(s,i) - {var c=caml_string_get(s,i),_e3_=47 === c?1:0; - if(_e3_) - var _e4_=_e3_; + {var c=caml_string_get(s,i),_e5_=47 === c?1:0; + if(_e5_) + var _e6_=_e5_; else - var _e5_=92 === c?1:0,_e4_=_e5_ || (58 === c?1:0); - return _e4_} + var _e7_=92 === c?1:0,_e6_=_e7_ || (58 === c?1:0); + return _e6_} function is_relative$0(n) {var - _eX_=caml_ml_string_length(n) < 1?1:0, - _eY_=_eX_ || (47 !== caml_string_get(n,0)?1:0); - if(_eY_) + _eZ_=caml_ml_string_length(n) < 1?1:0, + _e0_=_eZ_ || (47 !== caml_string_get(n,0)?1:0); + if(_e0_) {var - _eZ_=caml_ml_string_length(n) < 1?1:0, - _e0_=_eZ_ || (92 !== caml_string_get(n,0)?1:0); - if(_e0_) + _e1_=caml_ml_string_length(n) < 1?1:0, + _e2_=_e1_ || (92 !== caml_string_get(n,0)?1:0); + if(_e2_) var - _e1_=caml_ml_string_length(n) < 2?1:0, - _e2_=_e1_ || (58 !== caml_string_get(n,1)?1:0); + _e3_=caml_ml_string_length(n) < 2?1:0, + _e4_=_e3_ || (58 !== caml_string_get(n,1)?1:0); else - var _e2_=_e0_} + var _e4_=_e2_} else - var _e2_=_eY_; - return _e2_} + var _e4_=_e0_; + return _e4_} function is_implicit$0(n) - {var _eO_=is_relative$0(n); - if(_eO_) + {var _eQ_=is_relative$0(n); + if(_eQ_) {var - _eP_=caml_ml_string_length(n) < 2?1:0, - _eQ_=_eP_ || caml_string_notequal(sub$0(n,0,2),cst$113); - if(_eQ_) + _eR_=caml_ml_string_length(n) < 2?1:0, + _eS_=_eR_ || caml_string_notequal(sub$0(n,0,2),cst$113); + if(_eS_) {var - _eR_=caml_ml_string_length(n) < 2?1:0, - _eS_=_eR_ || caml_string_notequal(sub$0(n,0,2),cst$112); - if(_eS_) + _eT_=caml_ml_string_length(n) < 2?1:0, + _eU_=_eT_ || caml_string_notequal(sub$0(n,0,2),cst$112); + if(_eU_) {var - _eT_=caml_ml_string_length(n) < 3?1:0, - _eU_=_eT_ || caml_string_notequal(sub$0(n,0,3),cst$111); - if(_eU_) + _eV_=caml_ml_string_length(n) < 3?1:0, + _eW_=_eV_ || caml_string_notequal(sub$0(n,0,3),cst$111); + if(_eW_) var - _eV_=caml_ml_string_length(n) < 3?1:0, - _eW_=_eV_ || caml_string_notequal(sub$0(n,0,3),cst$110); + _eX_=caml_ml_string_length(n) < 3?1:0, + _eY_=_eX_ || caml_string_notequal(sub$0(n,0,3),cst$110); else - var _eW_=_eU_} + var _eY_=_eW_} else - var _eW_=_eS_} + var _eY_=_eU_} else - var _eW_=_eQ_} + var _eY_=_eS_} else - var _eW_=_eO_; - return _eW_} + var _eY_=_eQ_; + return _eY_} function check_suffix$0(name,suff) - {var _eL_=caml_ml_string_length(suff) <= caml_ml_string_length(name)?1:0; - if(_eL_) + {var _eN_=caml_ml_string_length(suff) <= caml_ml_string_length(name)?1:0; + if(_eN_) var s= sub$0 (name, caml_ml_string_length(name) - caml_ml_string_length(suff) | 0, caml_ml_string_length(suff)), - _eM_=lowercase_ascii$1(suff), - _eN_=caml_string_equal(lowercase_ascii$1(s),_eM_); + _eO_=lowercase_ascii$1(suff), + _eP_=caml_string_equal(lowercase_ascii$1(s),_eO_); else - var _eN_=_eL_; - return _eN_} + var _eP_=_eN_; + return _eP_} function chop_suffix_opt$0(suffix,filename) {var len_s=caml_ml_string_length(suffix), @@ -29324,28 +28842,28 @@ if(len_s <= len_f) {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_) + _eM_=lowercase_ascii$1(suffix); + return caml_string_equal(lowercase_ascii$1(r),_eM_) ?[0,sub$0(filename,0,len_f - len_s | 0)] :0} return 0} try - {var _c0_=caml_sys_getenv(cst_TEMP),temp_dir_name=_c0_} - catch(_eJ_) - {_eJ_ = caml_wrap_exception(_eJ_); - if(_eJ_ !== Not_found)throw _eJ_; + {var _c2_=caml_sys_getenv(cst_TEMP),temp_dir_name=_c2_} + catch(_eL_) + {_eL_ = caml_wrap_exception(_eL_); + if(_eL_ !== Not_found)throw _eL_; var temp_dir_name=cst$114} function quote$0(s) {var l=caml_ml_string_length(s),b=create$2(l + 20 | 0); add_char(b,34); function add_bs(n) - {var _eH_=1; + {var _eJ_=1; if(! (n < 1)) - {var j=_eH_; + {var j=_eJ_; for(;;) {add_char(b,92); - var _eI_=j + 1 | 0; - if(n !== j){var j=_eI_;continue} + var _eK_=j + 1 | 0; + if(n !== j){var j=_eK_;continue} break}} return 0} function loop$0(counter,i) @@ -29354,17 +28872,17 @@ {if(i$0 === l)return add_char(b,34); var c=caml_string_get(s,i$0); if(34 === c) - {var _eF_=0; + {var _eH_=0; if(counter < 50) {var counter$1=counter + 1 | 0; - return loop_bs(counter$1,_eF_,i$0)} - return caml_trampoline_return(loop_bs,[0,_eF_,i$0])} + return loop_bs(counter$1,_eH_,i$0)} + return caml_trampoline_return(loop_bs,[0,_eH_,i$0])} if(92 === c) - {var _eG_=0; + {var _eI_=0; if(counter < 50) {var counter$0=counter + 1 | 0; - return loop_bs(counter$0,_eG_,i$0)} - return caml_trampoline_return(loop_bs,[0,_eG_,i$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}} @@ -29376,10 +28894,10 @@ if(34 === match) {add_bs((2 * n$0 | 0) + 1 | 0); add_char(b,34); - var _eE_=i$0 + 1 | 0; + var _eG_=i$0 + 1 | 0; if(counter < 50) - {var counter$1=counter + 1 | 0;return loop$0(counter$1,_eE_)} - return caml_trampoline_return(loop$0,[0,_eE_])} + {var counter$1=counter + 1 | 0;return loop$0(counter$1,_eG_)} + return caml_trampoline_return(loop$0,[0,_eG_])} if(92 === match) {var i$1=i$0 + 1 | 0,n$1=n$0 + 1 | 0,n$0=n$1,i$0=i$1;continue} add_bs(n$0); @@ -29397,36 +28915,36 @@ {if(stderr) var f=stderr[1], - _ev_= + _ex_= caml_equal(stderr,stdout) ?cst_2_1$0 :cat(cst_2$0,quote_cmd_filename(f)), - _ew_=_ev_; + _ey_=_ex_; else - var _ew_=cst$125; - var _ex_=[0,_ew_,_cU_]; + var _ey_=cst$125; + var _ez_=[0,_ey_,_cW_]; if(stdout) - var f$0=stdout[1],_ey_=cat(cst$117,quote_cmd_filename(f$0)); + var f$0=stdout[1],_eA_=cat(cst$117,quote_cmd_filename(f$0)); else - var _ey_=cst$124; - var _ez_=[0,_ey_,_ex_]; + var _eA_=cst$124; + var _eB_=[0,_eA_,_ez_]; if(stdin) - var f$1=stdin[1],_eA_=cat(cst$118,quote_cmd_filename(f$1)); + var f$1=stdin[1],_eC_=cat(cst$118,quote_cmd_filename(f$1)); else - var _eA_=cst$123; + var _eC_=cst$123; var s=concat$1(cst$119,map$4(quote$0,args)), b=create$2(caml_ml_string_length(s) + 20 | 0), - _eB_=[0,_eA_,_ez_]; + _eD_=[0,_eC_,_eB_]; iter$4 (function(c) {var switch$0=0; if(62 <= c) - {var _eD_=c - 63 | 0; - if(60 < _eD_ >>> 0) - {if(! (62 <= _eD_))switch$0 = 1} + {var _eF_=c - 63 | 0; + if(60 < _eF_ >>> 0) + {if(! (62 <= _eF_))switch$0 = 1} else - if(31 === _eD_)switch$0 = 1} + if(31 === _eF_)switch$0 = 1} else if(42 <= c) {if(60 === c)switch$0 = 1} @@ -29436,22 +28954,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 _eC_=[0,cst$120,[0,contents(b),_eB_]]; - return concat$1(cst$122,[0,cst$121,[0,quote_cmd_filename(cmd),_eC_]])} + var _eE_=[0,cst$120,[0,contents(b),_eD_]]; + return concat$1(cst$122,[0,cst$121,[0,quote_cmd_filename(cmd),_eE_]])} function drive_and_path(s) - {var _er_=2 <= caml_ml_string_length(s)?1:0; - if(_er_) + {var _et_=2 <= caml_ml_string_length(s)?1:0; + if(_et_) {var param=caml_string_get(s,0),switch$0=0; if(91 <= param) {if(! (25 < param - 97 >>> 0))switch$0 = 1} else if(65 <= param)switch$0 = 1; - var _es_=switch$0?1:0,_et_=_es_?58 === caml_string_get(s,1)?1:0:_es_} + var _eu_=switch$0?1:0,_ev_=_eu_?58 === caml_string_get(s,1)?1:0:_eu_} else - var _et_=_er_; - if(_et_) - {var _eu_=sub$0(s,2,caml_ml_string_length(s) - 2 | 0); - return [0,sub$0(s,0,2),_eu_]} + var _ev_=_et_; + if(_ev_) + {var _ew_=sub$0(s,2,caml_ml_string_length(s) - 2 | 0); + return [0,sub$0(s,0,2),_ew_]} return [0,cst$126,s]} function dirname$0(s) {var @@ -29480,10 +28998,10 @@ quote_command$0, basename$0, dirname$0]; - 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_)} + function basename$1(_es_) + {return generic_basename(is_dir_sep$0,current_dir_name$1,_es_)} + function dirname$1(_er_) + {return generic_dirname(is_dir_sep$0,current_dir_name$1,_er_)} var Cygwin= [0, @@ -29496,7 +29014,7 @@ is_implicit$0, check_suffix$0, chop_suffix_opt$0, - _cT_, + _cV_, quote, quote_command, basename$1, @@ -29557,14 +29075,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(_eo_){return caml_call1(_cg_[2],0)}]; + var prng$0=[246,function(_eq_){return caml_call1(_ci_[2],0)}]; function temp_file_name(temp_dir,prefix,suffix) {var - _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))} + _eo_=caml_obj_tag(prng$0), + _ep_= + 250 === _eo_?prng$0[1]:246 === _eo_?force_lazy_block(prng$0):prng$0, + rnd=caml_call1(_ci_[4],_ep_) & 16777215; + return concat$4(temp_dir,caml_call3(sprintf(_cX_),prefix,rnd,suffix))} var current_temp_dir_name=[0,temp_dir_name$0]; function set_temp_dir_name(s){current_temp_dir_name[1] = s;return 0} function get_temp_dir_name(param){return current_temp_dir_name[1]} @@ -29578,7 +29096,7 @@ for(;;) {var name=temp_file_name(temp_dir,prefix,suffix); try - {runtime.caml_sys_close(caml_sys_open(name,_cW_,384));return name} + {runtime.caml_sys_close(caml_sys_open(name,_cY_,384));return name} catch(e) {e = caml_wrap_exception(e); if(e[1] === Sys_error) @@ -29587,11 +29105,11 @@ continue} throw e}}} return try_name(0)} - 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; + function open_temp_file(opt,_em_,_el_,prefix,suffix) + {if(opt)var sth=opt[1],mode=sth;else var mode=_cZ_; + if(_em_)var sth$0=_em_[1],perms=sth$0;else var perms=384; + if(_el_) + var sth$1=_el_[1],temp_dir=sth$1; else var temp_dir=current_temp_dir_name[1]; function try_name(counter) @@ -29599,8 +29117,8 @@ for(;;) {var name=temp_file_name(temp_dir,prefix,suffix); try - {var _el_=[0,name,open_gen([0,1,[0,3,[0,5,mode]]],perms,name)]; - return _el_} + {var _en_=[0,name,open_gen([0,1,[0,3,[0,5,mode]]],perms,name)]; + return _en_} catch(e) {e = caml_wrap_exception(e); if(e[1] === Sys_error) @@ -29659,7 +29177,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 _cY_; + {if(x[1] == 0. && x[2] == 0.)return _c0_; var r=Math.abs(x[1]),i=Math.abs(x[2]); if(i <= r) var @@ -29675,7 +29193,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 _ei_=Math.atan2(x[2],x[1]);return [254,Math.log(norm(x)),_ei_]} + {var _ek_=Math.atan2(x[2],x[1]);return [254,Math.log(norm(x)),_ek_]} function pow(x,y){return exp(mul(y,log(x)))} var Stdlib_Complex= @@ -30010,26 +29528,26 @@ function cloop(arr,idx,f,col,max) {if(col === idx.length - 1) return caml_ba_set_generic(arr,idx,caml_call1(f,idx)); - var _eg_=caml_check_bound(max,col)[1 + col] - 1 | 0,_ef_=0; - if(! (_eg_ < 0)) - {var j=_ef_; + var _ei_=caml_check_bound(max,col)[1 + col] - 1 | 0,_eh_=0; + if(! (_ei_ < 0)) + {var j=_eh_; for(;;) {caml_check_bound(idx,col)[1 + col] = j; cloop(arr,idx,f,col + 1 | 0,max); - var _eh_=j + 1 | 0; - if(_eg_ !== j){var j=_eh_;continue} + var _ej_=j + 1 | 0; + if(_ei_ !== j){var j=_ej_;continue} break}} return 0} function floop(arr,idx,f,col,max) {if(0 <= col) - {var _ed_=caml_check_bound(max,col)[1 + col],_ec_=1; - if(! (_ed_ < 1)) - {var j=_ec_; + {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 _ee_=j + 1 | 0; - if(_ed_ !== j){var j=_ee_;continue} + 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))} @@ -30041,24 +29559,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),_d$_=n - 1 | 0,_d__=0; - if(! (_d$_ < 0)) - {var i=_d__; + {var n=caml_ba_num_dims(a),d=caml_make_vect(n,0),_eb_=n - 1 | 0,_ea_=0; + if(! (_eb_ < 0)) + {var i=_ea_; for(;;) - {var _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} + {var _ec_=runtime.caml_ba_dim(a,i); + caml_check_bound(d,i)[1 + i] = _ec_; + var _ed_=i + 1 | 0; + if(_eb_ !== i){var i=_ed_;continue} break}} return d} function size_in_bytes(arr) - {var _d9_=fold_left$3(caml_mul,1,dims(arr)); - return caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_d9_)} + {var _d$_=fold_left$3(caml_mul,1,dims(arr)); + return caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_d$_)} function create$8(kind,layout){return caml_ba_create(kind,layout,[0])} function get$3(arr){return runtime.caml_ba_get_generic(arr,[0])} function set$2(arr) - {var _d7_=[0]; - return function(_d8_){return caml_ba_set_generic(arr,_d7_,_d8_)}} + {var _d9_=[0]; + return function(_d__){return caml_ba_set_generic(arr,_d9_,_d__)}} function size_in_bytes$0(arr) {return kind_size_in_bytes(caml_ba_kind(arr))} function of_value(kind,layout,v) @@ -30066,87 +29584,87 @@ function create$9(kind,layout,dim) {return caml_ba_create(kind,layout,[0,dim])} function size_in_bytes$1(arr) - {var _d6_=caml_ba_dim_1(arr); - return caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_d6_)} + {var _d8_=caml_ba_dim_1(arr); + return caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_d8_)} function slice(a,n) {var match=runtime.caml_ba_layout(a); return match?caml_ba_slice(a,[0,n]):caml_ba_slice(a,[0,n])} function init$7(kind,layout,dim,f) {var arr=create$9(kind,layout,dim); if(layout) - {var _d4_=1; + {var _d6_=1; if(! (dim < 1)) - {var i$0=_d4_; + {var i$0=_d6_; for(;;) {caml_ba_set_1(arr,i$0,caml_call1(f,i$0)); - var _d5_=i$0 + 1 | 0; - if(dim !== i$0){var i$0=_d5_;continue} + var _d7_=i$0 + 1 | 0; + if(dim !== i$0){var i$0=_d7_;continue} break}} return arr} - var _d2_=dim - 1 | 0,_d1_=0; - if(! (_d2_ < 0)) - {var i=_d1_; + var _d4_=dim - 1 | 0,_d3_=0; + if(! (_d4_ < 0)) + {var i=_d3_; for(;;) {caml_ba_set_1(arr,i,caml_call1(f,i)); - var _d3_=i + 1 | 0; - if(_d2_ !== i){var i=_d3_;continue} + var _d5_=i + 1 | 0; + if(_d4_ !== i){var i=_d5_;continue} break}} return arr} function of_array(kind,layout,data) {var ba=create$9(kind,layout,data.length - 1), ofs=layout?1:0, - _dZ_=data.length - 1 - 1 | 0, - _dY_=0; - if(! (_dZ_ < 0)) - {var i=_dY_; + _d1_=data.length - 1 - 1 | 0, + _d0_=0; + if(! (_d1_ < 0)) + {var i=_d0_; for(;;) {caml_ba_set_1(ba,i + ofs | 0,caml_check_bound(data,i)[1 + i]); - var _d0_=i + 1 | 0; - if(_dZ_ !== i){var i=_d0_;continue} + var _d2_=i + 1 | 0; + if(_d1_ !== i){var i=_d2_;continue} break}} return ba} function create$10(kind,layout,dim1,dim2) {return caml_ba_create(kind,layout,[0,dim1,dim2])} function size_in_bytes$2(arr) - {var _dW_=caml_ba_dim_2(arr),_dX_=caml_ba_dim_1(arr); + {var _dY_=caml_ba_dim_2(arr),_dZ_=caml_ba_dim_1(arr); return caml_mul - (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dX_),_dW_)} + (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dZ_),_dY_)} function slice_left(a,n){return caml_ba_slice(a,[0,n])} function slice_right(a,n){return caml_ba_slice(a,[0,n])} function init$8(kind,layout,dim1,dim2,f) {var arr=create$10(kind,layout,dim1,dim2); if(layout) - {var _dS_=1; + {var _dU_=1; if(! (dim2 < 1)) - {var j$0=_dS_; + {var j$0=_dU_; for(;;) - {var _dT_=1; + {var _dV_=1; if(! (dim1 < 1)) - {var i$0=_dT_; + {var i$0=_dV_; for(;;) {caml_ba_set_2(arr,i$0,j$0,caml_call2(f,i$0,j$0)); - var _dV_=i$0 + 1 | 0; - if(dim1 !== i$0){var i$0=_dV_;continue} + var _dX_=i$0 + 1 | 0; + if(dim1 !== i$0){var i$0=_dX_;continue} break}} - var _dU_=j$0 + 1 | 0; - if(dim2 !== j$0){var j$0=_dU_;continue} + var _dW_=j$0 + 1 | 0; + if(dim2 !== j$0){var j$0=_dW_;continue} break}} return arr} - var _dN_=dim1 - 1 | 0,_dM_=0; - if(! (_dN_ < 0)) - {var i=_dM_; + var _dP_=dim1 - 1 | 0,_dO_=0; + if(! (_dP_ < 0)) + {var i=_dO_; for(;;) - {var _dP_=dim2 - 1 | 0,_dO_=0; - if(! (_dP_ < 0)) - {var j=_dO_; + {var _dR_=dim2 - 1 | 0,_dQ_=0; + if(! (_dR_ < 0)) + {var j=_dQ_; for(;;) {caml_ba_set_2(arr,i,j,caml_call2(f,i,j)); - var _dR_=j + 1 | 0; - if(_dP_ !== j){var j=_dR_;continue} + var _dT_=j + 1 | 0; + if(_dR_ !== j){var j=_dT_;continue} break}} - var _dQ_=i + 1 | 0; - if(_dN_ !== i){var i=_dQ_;continue} + var _dS_=i + 1 | 0; + if(_dP_ !== i){var i=_dS_;continue} break}} return arr} function of_array$0(kind,layout,data) @@ -30155,38 +29673,38 @@ dim2=0 === dim1?0:caml_check_bound(data,0)[1].length - 1, ba=create$10(kind,layout,dim1,dim2), ofs=layout?1:0, - _dH_=dim1 - 1 | 0, - _dG_=0; - if(! (_dH_ < 0)) - {var i=_dG_; + _dJ_=dim1 - 1 | 0, + _dI_=0; + if(! (_dJ_ < 0)) + {var i=_dI_; for(;;) {var row=caml_check_bound(data,i)[1 + i]; if(row.length - 1 !== dim2) invalid_arg(cst_Bigarray_Array2_of_array_n); - var _dJ_=dim2 - 1 | 0,_dI_=0; - if(! (_dJ_ < 0)) - {var j=_dI_; + var _dL_=dim2 - 1 | 0,_dK_=0; + if(! (_dL_ < 0)) + {var j=_dK_; for(;;) {caml_ba_set_2 (ba,i + ofs | 0,j + ofs | 0,caml_check_bound(row,j)[1 + j]); - var _dL_=j + 1 | 0; - if(_dJ_ !== j){var j=_dL_;continue} + var _dN_=j + 1 | 0; + if(_dL_ !== j){var j=_dN_;continue} break}} - var _dK_=i + 1 | 0; - if(_dH_ !== i){var i=_dK_;continue} + var _dM_=i + 1 | 0; + if(_dJ_ !== i){var i=_dM_;continue} break}} return ba} function create$11(kind,layout,dim1,dim2,dim3) {return caml_ba_create(kind,layout,[0,dim1,dim2,dim3])} function size_in_bytes$3(arr) {var - _dD_=runtime.caml_ba_dim_3(arr), - _dE_=caml_ba_dim_2(arr), - _dF_=caml_ba_dim_1(arr); + _dF_=runtime.caml_ba_dim_3(arr), + _dG_=caml_ba_dim_2(arr), + _dH_=caml_ba_dim_1(arr); return caml_mul (caml_mul - (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dF_),_dE_), - _dD_)} + (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dH_),_dG_), + _dF_)} function slice_left_1(a,n,m){return caml_ba_slice(a,[0,n,m])} function slice_right_1(a,n,m){return caml_ba_slice(a,[0,n,m])} function slice_left_2(a,n){return caml_ba_slice(a,[0,n])} @@ -30194,50 +29712,50 @@ function init$9(kind,layout,dim1,dim2,dim3,f) {var arr=create$11(kind,layout,dim1,dim2,dim3); if(layout) - {var _dx_=1; + {var _dz_=1; if(! (dim3 < 1)) - {var k$0=_dx_; + {var k$0=_dz_; for(;;) - {var _dy_=1; + {var _dA_=1; if(! (dim2 < 1)) - {var j$0=_dy_; + {var j$0=_dA_; for(;;) - {var _dA_=1; + {var _dC_=1; if(! (dim1 < 1)) - {var i$0=_dA_; + {var i$0=_dC_; for(;;) {caml_ba_set_3(arr,i$0,j$0,k$0,caml_call3(f,i$0,j$0,k$0)); - var _dC_=i$0 + 1 | 0; - if(dim1 !== i$0){var i$0=_dC_;continue} + var _dE_=i$0 + 1 | 0; + if(dim1 !== i$0){var i$0=_dE_;continue} break}} - var _dB_=j$0 + 1 | 0; - if(dim2 !== j$0){var j$0=_dB_;continue} + var _dD_=j$0 + 1 | 0; + if(dim2 !== j$0){var j$0=_dD_;continue} break}} - var _dz_=k$0 + 1 | 0; - if(dim3 !== k$0){var k$0=_dz_;continue} + var _dB_=k$0 + 1 | 0; + if(dim3 !== k$0){var k$0=_dB_;continue} break}} return arr} - var _dp_=dim1 - 1 | 0,_do_=0; - if(! (_dp_ < 0)) - {var i=_do_; + var _dr_=dim1 - 1 | 0,_dq_=0; + if(! (_dr_ < 0)) + {var i=_dq_; for(;;) - {var _dr_=dim2 - 1 | 0,_dq_=0; - if(! (_dr_ < 0)) - {var j=_dq_; + {var _dt_=dim2 - 1 | 0,_ds_=0; + if(! (_dt_ < 0)) + {var j=_ds_; for(;;) - {var _du_=dim3 - 1 | 0,_dt_=0; - if(! (_du_ < 0)) - {var k=_dt_; + {var _dw_=dim3 - 1 | 0,_dv_=0; + if(! (_dw_ < 0)) + {var k=_dv_; for(;;) {caml_ba_set_3(arr,i,j,k,caml_call3(f,i,j,k)); - var _dw_=k + 1 | 0; - if(_du_ !== k){var k=_dw_;continue} + var _dy_=k + 1 | 0; + if(_dw_ !== k){var k=_dy_;continue} break}} - var _dv_=j + 1 | 0; - if(_dr_ !== j){var j=_dv_;continue} + var _dx_=j + 1 | 0; + if(_dt_ !== j){var j=_dx_;continue} break}} - var _ds_=i + 1 | 0; - if(_dp_ !== i){var i=_ds_;continue} + var _du_=i + 1 | 0; + if(_dr_ !== i){var i=_du_;continue} break}} return arr} function of_array$1(kind,layout,data) @@ -30250,24 +29768,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, - _dg_=dim1 - 1 | 0, - _df_=0; - if(! (_dg_ < 0)) - {var i=_df_; + _di_=dim1 - 1 | 0, + _dh_=0; + if(! (_di_ < 0)) + {var i=_dh_; for(;;) {var row=caml_check_bound(data,i)[1 + i]; if(row.length - 1 !== dim2) invalid_arg(cst_Bigarray_Array3_of_array_n); - var _di_=dim2 - 1 | 0,_dh_=0; - if(! (_di_ < 0)) - {var j=_dh_; + var _dk_=dim2 - 1 | 0,_dj_=0; + if(! (_dk_ < 0)) + {var j=_dj_; for(;;) {var col=caml_check_bound(row,j)[1 + j]; if(col.length - 1 !== dim3) invalid_arg(cst_Bigarray_Array3_of_array_n$0); - var _dl_=dim3 - 1 | 0,_dk_=0; - if(! (_dl_ < 0)) - {var k=_dk_; + var _dn_=dim3 - 1 | 0,_dm_=0; + if(! (_dn_ < 0)) + {var k=_dm_; for(;;) {caml_ba_set_3 (ba, @@ -30275,14 +29793,14 @@ j + ofs | 0, k + ofs | 0, caml_check_bound(col,k)[1 + k]); - var _dn_=k + 1 | 0; - if(_dl_ !== k){var k=_dn_;continue} + var _dp_=k + 1 | 0; + if(_dn_ !== k){var k=_dp_;continue} break}} - var _dm_=j + 1 | 0; - if(_di_ !== j){var j=_dm_;continue} + var _do_=j + 1 | 0; + if(_dk_ !== j){var j=_do_;continue} break}} - var _dj_=i + 1 | 0; - if(_dg_ !== i){var i=_dj_;continue} + var _dl_=i + 1 | 0; + if(_di_ !== i){var i=_dl_;continue} break}} return ba} function array0_of_genarray(a) @@ -30371,52 +29889,52 @@ caml_register_global(834,Stdlib_Bigarray,"Stdlib__Bigarray"); function with_open(openfun,s,f) {var ic=caml_call1(openfun,s); - function _de_(param){return caml_call1(f,ic)} - return protect(function(param){return close_noerr$0(ic)},_de_)} + function _dg_(param){return caml_call1(f,ic)} + return protect(function(param){return close_noerr$0(ic)},_dg_)} function with_open_bin(s,f){return with_open(open_bin$0,s,f)} function with_open_text(s,f){return with_open(open_text$0,s,f)} function with_open_gen(flags,perm,s,f) - {return with_open(function(_dd_){return open_gen$0(flags,perm,_dd_)},s,f)} + {return with_open(function(_df_){return open_gen$0(flags,perm,_df_)},s,f)} var seek=_m_[4],pos=_m_[5],length$11=_m_[6]; function input_char$0(ic) {try {var c=caml_ml_input_char(ic)} - catch(_dc_) - {_dc_ = caml_wrap_exception(_dc_); - if(_dc_ === End_of_file)return 0; - throw _dc_} + 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(_db_) - {_db_ = caml_wrap_exception(_db_); - if(_db_ === End_of_file)return 0; - throw _db_} + catch(_dd_) + {_dd_ = caml_wrap_exception(_dd_); + if(_dd_ === End_of_file)return 0; + throw _dd_} return [0,n]} function input_line$0(ic) {try {var s=input_line(ic)} + catch(_dc_) + {_dc_ = caml_wrap_exception(_dc_); + if(_dc_ === End_of_file)return 0; + throw _dc_} + return [0,s]} + function really_input$0(ic,buf,pos,len) + {try + {really_input(ic,buf,pos,len);return _c1_} + catch(_db_) + {_db_ = caml_wrap_exception(_db_); + if(_db_ === End_of_file)return 0; + throw _db_}} + function really_input_string$0(ic,len) + {try + {var s=really_input_string(ic,len)} catch(_da_) {_da_ = caml_wrap_exception(_da_); if(_da_ === End_of_file)return 0; throw _da_} return [0,s]} - function 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(;;) @@ -30452,12 +29970,12 @@ {var chunk_size=65536; try {var - _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_; + _c8_=caml_ml_pos_in(ic), + _c9_=caml_ml_channel_size(ic) - _c8_ | 0, + initial_size=_c9_} + catch(_c$_) + {_c$_ = caml_wrap_exception(_c$_); + if(_c$_[1] !== Sys_error)throw _c$_; var initial_size=-1} var initial_size$0=0 <= initial_size?initial_size:chunk_size, @@ -30468,10 +29986,10 @@ if(nread < initial_size$1)return sub_string(buf,0,nread); try {var c=caml_ml_input_char(ic)} - catch(_c8_) - {_c8_ = caml_wrap_exception(_c8_); - if(_c8_ === End_of_file)return caml_string_of_bytes(buf); - throw _c8_} + catch(_c__) + {_c__ = caml_wrap_exception(_c__); + if(_c__ === End_of_file)return caml_string_of_bytes(buf); + throw _c__} function loop(buf,ofs) {var buf$0=buf,ofs$0=ofs; for(;;) @@ -30511,12 +30029,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 _c5_(param){return caml_call1(f,oc)} - return protect(function(param){return close_noerr(oc)},_c5_)} + function _c7_(param){return caml_call1(f,oc)} + return protect(function(param){return close_noerr(oc)},_c7_)} function with_open_bin$0(s,f){return with_open$0(open_bin,s,f)} function with_open_text$0(s,f){return with_open$0(open_text,s,f)} function with_open_gen$0(flags,perm,s,f) - {return with_open$0(function(_c4_){return open_gen(flags,perm,_c4_)},s,f)} + {return with_open$0(function(_c6_){return open_gen(flags,perm,_c6_)},s,f)} var seek$0=_m_[1], pos$0=_m_[2], @@ -31894,6 +31412,2520 @@ (globalThis)); +//# 1 "../../.js/easy-format/easy_format.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_ml_string_length=runtime.caml_ml_string_length, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, + caml_wrap_exception=runtime.caml_wrap_exception; + function caml_call1(f,a0) + {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} + function caml_call2(f,a0,a1) + {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} + function caml_call3(f,a0,a1,a2) + {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} + function caml_call4(f,a0,a1,a2,a3) + {return f.length == 4 + ?f(a0,a1,a2,a3) + :runtime.caml_call_gen(f,[a0,a1,a2,a3])} + var + global_data=runtime.caml_get_global_data(), + cst$3=caml_string_of_jsbytes(" "), + cst$4=caml_string_of_jsbytes(" "), + cst$5=caml_string_of_jsbytes(" "), + cst$6=caml_string_of_jsbytes(" "), + cst$7=caml_string_of_jsbytes(" "), + cst$8=caml_string_of_jsbytes(" "), + cst$9=caml_string_of_jsbytes(" "), + cst$10=caml_string_of_jsbytes(" "), + cst$1=caml_string_of_jsbytes(""), + cst$2=caml_string_of_jsbytes(""), + cst=caml_string_of_jsbytes(""), + cst$0=caml_string_of_jsbytes(""), + atom=[0,0], + list=[0,1,1,0,1,1,1,1,-921200851,2,0,0,0,0,0], + label=[0,726666127,1,2,0], + list_true=[0,1,1,1,1,1,1,1,-921200851,2,0,0,0,0,0], + list_false=[0,0,0,0,0,0,0,0,-921200851,2,0,0,0,0,0], + label_true=[0,726666127,1,2,0], + label_false=[0,726666127,0,2,0], + Stdlib_Buffer=global_data.Stdlib__Buffer, + Stdlib_Format=global_data.Stdlib__Format, + Stdlib_List=global_data.Stdlib__List, + Stdlib_Printf=global_data.Stdlib__Printf, + Stdlib=global_data.Stdlib, + Stdlib_String=global_data.Stdlib__String, + Stdlib_Hashtbl=global_data.Stdlib__Hashtbl, + _a_=[0,[2,0,[2,0,0]],caml_string_of_jsbytes("%s%s")], + _b_=[0,[2,0,0],caml_string_of_jsbytes("%s")]; + function set_escape(fmt,escape) + {var + match=caml_call2(Stdlib_Format[98],fmt,0), + flush0=match[2], + print0=match[1], + tagf0=caml_call2(Stdlib_Format[106],fmt,0), + is_tag=[0,0]; + function mot(tag){is_tag[1] = 1;return caml_call1(tagf0[1],tag)} + function mct(tag){is_tag[1] = 1;return caml_call1(tagf0[2],tag)} + function print(s,p,n) + {return is_tag[1] + ?(caml_call3(print0,s,p,n),is_tag[1] = 0,0) + :caml_call4(escape,print0,s,p,n)} + var tagf=[0,mot,mct,tagf0[3],tagf0[4]]; + caml_call3(Stdlib_Format[96],fmt,print,flush0); + return caml_call2(Stdlib_Format[104],fmt,tagf)} + function define_styles(fmt,escape$0,l) + {if(0 !== l) + {caml_call2(Stdlib_Format[84],fmt,1); + var + _R_=2 * caml_call1(Stdlib_List[1],l) | 0, + tbl1=caml_call2(Stdlib_Hashtbl[1],0,_R_), + _S_=2 * caml_call1(Stdlib_List[1],l) | 0, + tbl2=caml_call2(Stdlib_Hashtbl[1],0,_S_), + _T_= + function(param) + {var style=param[2],style_name=param[1]; + caml_call3(Stdlib_Hashtbl[5],tbl1,style_name,style[1]); + return caml_call3(Stdlib_Hashtbl[5],tbl2,style_name,style[2])}; + caml_call2(Stdlib_List[17],_T_,l); + var + mark_open_tag= + function(param) + {if(param[1] === Stdlib_Format[79]) + {var style_name=param[2]; + try + {var _X_=caml_call2(Stdlib_Hashtbl[6],tbl1,style_name); + return _X_} + catch(_Y_) + {_Y_ = caml_wrap_exception(_Y_); + if(_Y_ === Stdlib[8])return cst; + throw _Y_}} + return cst$0}, + mark_close_tag= + function(param) + {if(param[1] === Stdlib_Format[79]) + {var style_name=param[2]; + try + {var _V_=caml_call2(Stdlib_Hashtbl[6],tbl2,style_name); + return _V_} + catch(_W_) + {_W_ = caml_wrap_exception(_W_); + if(_W_ === Stdlib[8])return cst$1; + throw _W_}} + return cst$2}, + _U_=caml_call2(Stdlib_Format[106],fmt,0), + tagf=[0,mark_open_tag,mark_close_tag,_U_[3],_U_[4]]; + caml_call2(Stdlib_Format[104],fmt,tagf)} + if(typeof escape$0 === "number")return 0; + if(258914209 <= escape$0[1]) + {var esc=escape$0[2];return set_escape(fmt,esc)} + var esc$0=escape$0[2]; + function escape(print,s,p,n) + {var s0=caml_call3(Stdlib_String[15],s,p,n),s1=caml_call1(esc$0,s0); + return caml_call3(print,s1,0,caml_ml_string_length(s1))} + return set_escape(fmt,escape)} + function pp_open_xbox(fmt,p,indent) + {var _Q_=p[8]; + if(451368025 <= _Q_) + {if(! (736550845 <= _Q_))return caml_call2(Stdlib_Format[7],fmt,indent)} + else + if(379096626 <= _Q_)return caml_call2(Stdlib_Format[5],fmt,0); + return caml_call2(Stdlib_Format[9],fmt,indent)} + function extra_box(p,l) + {var _M_=p[8]; + if(379096626 <= _M_) + var wrap=922275930 <= _M_?1:0; + else + var + _P_=function(param){return 0 === param[0]?1:0}, + wrap=caml_call2(Stdlib_List[32],_P_,l); + if(wrap) + {var _N_=function(fmt){return caml_call2(Stdlib_Format[3],fmt,0)}; + return [0, + function(fmt){return caml_call2(Stdlib_Format[11],fmt,0)}, + _N_]} + function _O_(param){return 0} + return [0,function(param){return 0},_O_]} + function open_tag(fmt,param) + {if(param) + {var s=param[1]; + return caml_call2(Stdlib_Format[80],fmt,[0,Stdlib_Format[79],s])} + return 0} + function close_tag(fmt,param) + {return param?caml_call2(Stdlib_Format[82],fmt,0):0} + function tag_string(fmt,o,s) + {if(o) + {var tag=o[1]; + caml_call2(Stdlib_Format[80],fmt,[0,Stdlib_Format[79],tag]); + caml_call2(Stdlib_Format[13],fmt,s); + return caml_call2(Stdlib_Format[82],fmt,0)} + return caml_call2(Stdlib_Format[13],fmt,s)} + function fprint_opt_label(fmt,param) + {if(param) + {var match=param[1],lp=match[2],lab=match[1]; + open_tag(fmt,lp[4]); + fprint_t(fmt,lab); + close_tag(fmt,lp[4]); + var _L_=lp[2]; + return _L_?caml_call2(Stdlib_Format[13],fmt,cst$5):_L_} + return 0} + function fprint_list_body_stick_left(fmt,p,sep,hd,tl) + {open_tag(fmt,p[12]); + fprint_t(fmt,hd); + function _K_(x) + {if(p[3])caml_call2(Stdlib_Format[13],fmt,cst$3); + tag_string(fmt,p[13],sep); + if(p[2]) + caml_call2(Stdlib_Format[27],fmt,0); + else + caml_call2(Stdlib_Format[29],fmt,0); + return fprint_t(fmt,x)} + caml_call2(Stdlib_List[17],_K_,tl); + return close_tag(fmt,p[12])} + function fprint_t(fmt,param) + {switch(param[0]) + {case 0:var p=param[2],s=param[1];return tag_string(fmt,p[1],s); + case 1: + var l=param[2],param$0=param[1],p$0=param$0[4]; + open_tag(fmt,p$0[10]); + if(p$0[7]) + fprint_list(fmt,0,param$0,l); + else + {var _C_=param$0[4],_D_=param$0[3],_E_=param$0[2],_F_=param$0[1]; + if(l) + {var tl=l[2],hd=l[1]; + tag_string(fmt,_C_[11],_F_); + if(_C_[1])caml_call2(Stdlib_Format[13],fmt,cst$8); + var _z_=_C_[8],indent=0; + if(379096626 === _z_) + caml_call2(Stdlib_Format[5],fmt,0); + else + if(736550845 <= _z_) + if(922275930 <= _z_) + caml_call2(Stdlib_Format[11],fmt,indent); + else + caml_call2(Stdlib_Format[9],fmt,indent); + else + if(-921200850 <= _z_) + caml_call2(Stdlib_Format[7],fmt,indent); + else + {var _A_=function(param){return 0 === param[0]?1:0}; + if(caml_call2(Stdlib_List[32],_A_,l)) + caml_call2(Stdlib_Format[11],fmt,indent); + else + caml_call2(Stdlib_Format[9],fmt,indent)} + if(_C_[4]) + fprint_list_body_stick_left(fmt,_C_,_E_,hd,tl); + else + {open_tag(fmt,_C_[12]); + fprint_t(fmt,hd); + var + _B_= + function(x) + {if(_C_[3]) + caml_call2(Stdlib_Format[27],fmt,0); + else + caml_call2(Stdlib_Format[29],fmt,0); + tag_string(fmt,_C_[13],_E_); + if(_C_[2])caml_call2(Stdlib_Format[13],fmt,cst$4); + return fprint_t(fmt,x)}; + caml_call2(Stdlib_List[17],_B_,tl); + close_tag(fmt,_C_[12])} + caml_call2(Stdlib_Format[3],fmt,0); + if(_C_[5])caml_call2(Stdlib_Format[13],fmt,cst$9); + tag_string(fmt,_C_[14],_D_)} + else + {tag_string(fmt,_C_[11],_F_); + var _G_=_C_[1],_H_=_G_ || _C_[5]; + if(_H_)caml_call2(Stdlib_Format[13],fmt,cst$10); + tag_string(fmt,_C_[14],_D_)}} + return close_tag(fmt,p$0[10]); + case 2: + var x=param[2],label=param[1],lp=label[2],lab=label[1]; + if(1 === x[0]) + {var + l$0=x[2], + match=x[1], + p$1=match[4], + cl=match[3], + sep=match[2], + op=match[1]; + if(p$1[6] && p$1[7]) + return fprint_list(fmt,[0,label],[0,op,sep,cl,p$1],l$0)} + var indent$0=lp[3]; + caml_call2(Stdlib_Format[9],fmt,0); + open_tag(fmt,lp[4]); + fprint_t(fmt,lab); + close_tag(fmt,lp[4]); + var _I_=lp[1]; + if(726666127 === _I_) + if(lp[2]) + caml_call3(Stdlib_Format[31],fmt,1,indent$0); + else + caml_call3(Stdlib_Format[31],fmt,0,indent$0); + else + if(744337004 <= _I_) + {if(lp[2])caml_call2(Stdlib_Format[23],fmt,32)} + else + {caml_call2(Stdlib_Format[34],fmt,0); + var _J_=caml_call2(Stdlib_String[1],indent$0,32); + caml_call2(Stdlib_Format[13],fmt,_J_)} + fprint_t(fmt,x); + return caml_call2(Stdlib_Format[3],fmt,0); + default:var f=param[1];return caml_call1(f,fmt)}} + function fprint_list(fmt,label,param,l) + {var _s_=param[4],_t_=param[3],_u_=param[1]; + if(l) + {var tl=l[2],hd=l[1]; + if(0 !== tl && ! _s_[4]) + {var + p$0=param[4], + cl$0=param[3], + sep$0=param[2], + op$0=param[1], + base_indent=p$0[9], + _x_=p$0[2]?1:0, + sep_indent=caml_ml_string_length(sep$0) + _x_ | 0, + indent$0=base_indent + sep_indent | 0; + pp_open_xbox(fmt,p$0,indent$0); + fprint_opt_label(fmt,label); + tag_string(fmt,p$0[11],op$0); + if(p$0[1]) + caml_call2(Stdlib_Format[27],fmt,0); + else + caml_call2(Stdlib_Format[29],fmt,0); + var + match$0=extra_box(p$0,l), + close_extra$0=match$0[2], + open_extra$0=match$0[1]; + caml_call1(open_extra$0,fmt); + fprint_t(fmt,hd); + var + _y_= + function(x) + {if(p$0[3]) + caml_call3(Stdlib_Format[31],fmt,1,- sep_indent | 0); + else + caml_call3(Stdlib_Format[31],fmt,0,- sep_indent | 0); + tag_string(fmt,p$0[13],sep$0); + if(p$0[2])caml_call2(Stdlib_Format[13],fmt,cst$7); + return fprint_t(fmt,x)}; + caml_call2(Stdlib_List[17],_y_,tl); + caml_call1(close_extra$0,fmt); + if(p$0[5]) + caml_call3(Stdlib_Format[31],fmt,1,- indent$0 | 0); + else + caml_call3(Stdlib_Format[31],fmt,0,- indent$0 | 0); + tag_string(fmt,p$0[14],cl$0); + return caml_call2(Stdlib_Format[3],fmt,0)} + var p=param[4],cl=param[3],sep=param[2],op=param[1],indent=p[9]; + pp_open_xbox(fmt,p,indent); + fprint_opt_label(fmt,label); + tag_string(fmt,p[11],op); + if(p[1]) + caml_call2(Stdlib_Format[27],fmt,0); + else + caml_call2(Stdlib_Format[29],fmt,0); + var match=extra_box(p,l),close_extra=match[2],open_extra=match[1]; + caml_call1(open_extra,fmt); + fprint_list_body_stick_left(fmt,p,sep,hd,tl); + caml_call1(close_extra,fmt); + if(p[5]) + caml_call3(Stdlib_Format[31],fmt,1,- indent | 0); + else + caml_call3(Stdlib_Format[31],fmt,0,- indent | 0); + tag_string(fmt,p[14],cl); + return caml_call2(Stdlib_Format[3],fmt,0)} + fprint_opt_label(fmt,label); + tag_string(fmt,_s_[11],_u_); + var _v_=_s_[1],_w_=_v_ || _s_[5]; + if(_w_)caml_call2(Stdlib_Format[13],fmt,cst$6); + return tag_string(fmt,_s_[14],_t_)} + function to_formatter(fmt,x) + {function init_acc(param) + {var switch$0=0; + switch(param[0]) + {case 1:if(451368025 === param[1][4][8])switch$0 = 1;break; + case 2:if(3884224 === param[1][2][1])switch$0 = 1;break + } + return switch$0?1:0} + function merge_acc(force_breaks1,force_breaks2) + {var force_breaks1$0=force_breaks1 || force_breaks2; + return force_breaks1$0} + function map_node(x,force_breaks) + {switch(x[0]) + {case 1: + var + _j_=x[1], + _k_=_j_[4], + _l_=_k_[8], + _m_=_j_[3], + _n_=_j_[2], + _o_=_j_[1]; + if(379096626 !== _l_) + {if(451368025 === _l_)return [0,x,1]; + if(610243080 === _l_)return [0,x,force_breaks]; + var children=x[2]; + if(force_breaks) + {var + p= + [0, + _k_[1], + _k_[2], + _k_[3], + _k_[4], + _k_[5], + _k_[6], + _k_[7], + 610243080, + _k_[9], + _k_[10], + _k_[11], + _k_[12], + _k_[13], + _k_[14]]; + return [0,[1,[0,_o_,_n_,_m_,p],children],1]} + return [0,x,0]} + break; + case 2: + var _p_=x[1],_q_=_p_[2],_r_=_p_[1]; + if(726666127 === _q_[1]) + {var b=x[2]; + if(force_breaks) + {var lp=[0,-76840209,_q_[2],_q_[3],_q_[4]]; + return [0,[2,[0,_r_,lp],b],1]} + return [0,x,0]} + break + } + return [0,x,force_breaks]} + function aux(x$0) + {switch(x$0[0]) + {case 0:var acc=init_acc(x$0);return map_node(x$0,acc); + case 1: + var + children=x$0[2], + param$1=x$0[1], + param$2=caml_call2(Stdlib_List[21],aux,children), + new_children=0, + accs=0, + param=param$2; + for(;;) + {if(param) + {var + param$0=param[2], + match=param[1], + y=match[2], + x=match[1], + ys=[0,y,accs], + xs=[0,x,new_children], + new_children=xs, + accs=ys, + param=param$0; + continue} + var + _i_=init_acc(x$0), + acc$0=caml_call3(Stdlib_List[25],merge_acc,_i_,accs); + return map_node([1,param$1,new_children],acc$0)} + case 2: + var + x2=x$0[2], + match$0=x$0[1], + param$3=match$0[2], + x1=match$0[1], + acc0=init_acc(x$0), + match$1=aux(x1), + acc1=match$1[2], + new_x1=match$1[1], + match$2=aux(x2), + acc2=match$2[2], + new_x2=match$2[1], + acc$1=merge_acc(merge_acc(acc0,acc1),acc2); + return map_node([2,[0,new_x1,param$3],new_x2],acc$1); + default:var acc$2=init_acc(x$0);return map_node(x$0,acc$2)}} + var match=aux(x),new_x=match[1]; + fprint_t(fmt,new_x); + return caml_call2(Stdlib_Format[38],fmt,0)} + function to_buffer(opt,_h_,buf,x) + {if(opt)var sth=opt[1],escape=sth;else var escape=870530776; + if(_h_)var sth$0=_h_[1],styles=sth$0;else var styles=0; + var fmt=caml_call1(Stdlib_Format[111],buf); + define_styles(fmt,escape,styles); + return to_formatter(fmt,x)} + function to_string(escape,styles,x) + {var buf=caml_call1(Stdlib_Buffer[1],500); + to_buffer(escape,styles,buf,x); + return caml_call1(Stdlib_Buffer[2],buf)} + function to_channel(opt,_g_,oc,x) + {if(opt)var sth=opt[1],escape=sth;else var escape=870530776; + if(_g_)var sth$0=_g_[1],styles=sth$0;else var styles=0; + var fmt=caml_call1(Stdlib_Format[108],oc); + define_styles(fmt,escape,styles); + return to_formatter(fmt,x)} + function to_stdout(escape,styles,x) + {return to_channel(escape,styles,Stdlib[39],x)} + function to_stderr(escape,styles,x) + {return to_channel(escape,styles,Stdlib[40],x)} + function fprint_t$0(buf,param) + {var param$0=param; + for(;;) + switch(param$0[0]) + {case 0:var s=param$0[1];return caml_call2(Stdlib_Buffer[16],buf,s); + case 1: + var + l=param$0[2], + param$1=param$0[1], + _c_=param$1[3], + _e_=param$1[1], + _d_=param$1[2]; + if(l) + {var tl=l[2],x$0=l[1]; + caml_call2(Stdlib_Buffer[16],buf,_e_); + fprint_t$0(buf,x$0); + var + _f_= + function(x) + {caml_call2(Stdlib_Buffer[16],buf,_d_); + return fprint_t$0(buf,x)}; + caml_call2(Stdlib_List[17],_f_,tl); + return caml_call2(Stdlib_Buffer[16],buf,_c_)} + return caml_call4(Stdlib_Printf[5],buf,_a_,_e_,_c_); + case 2: + var x=param$0[2],label=param$0[1],label$0=label[1]; + fprint_t$0(buf,label$0); + var param$0=x; + continue; + default: + var f=param$0[1],fmt=caml_call1(Stdlib_Format[111],buf); + caml_call1(f,fmt); + return caml_call2(Stdlib_Format[38],fmt,0)}} + function to_buffer$0(buf,x){return fprint_t$0(buf,x)} + function to_string$0(x) + {var buf=caml_call1(Stdlib_Buffer[1],500); + to_buffer$0(buf,x); + return caml_call1(Stdlib_Buffer[2],buf)} + function to_formatter$0(fmt,x) + {var s=to_string$0(x); + caml_call3(Stdlib_Format[129],fmt,_b_,s); + return caml_call2(Stdlib_Format[38],fmt,0)} + function to_channel$0(oc,x) + {var buf=caml_call1(Stdlib_Buffer[1],500); + to_buffer$0(buf,x); + return caml_call2(Stdlib_Buffer[10],oc,buf)} + function to_stdout$0(x){return to_channel$0(Stdlib[39],x)} + function to_stderr$0(x){return to_channel$0(Stdlib[40],x)} + var + Easy_format= + [0, + atom, + list, + label, + [0, + define_styles, + to_formatter, + to_buffer, + to_string, + to_channel, + to_stdout, + to_stderr], + [0, + to_buffer$0, + to_string$0, + to_channel$0, + to_stdout$0, + to_stderr$0, + to_formatter$0], + [0,list_true,label_true,list_false,label_false]]; + runtime.caml_register_global(28,Easy_format,"Easy_format"); + return} + (globalThis)); + + +//# 1 "../../.js/biniou/biniou.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_bytes_get=runtime.caml_bytes_get, + caml_bytes_set=runtime.caml_bytes_set, + caml_bytes_unsafe_get=runtime.caml_bytes_unsafe_get, + caml_bytes_unsafe_set=runtime.caml_bytes_unsafe_set, + caml_check_bound=runtime.caml_check_bound, + caml_create_bytes=runtime.caml_create_bytes, + caml_fresh_oo_id=runtime.caml_fresh_oo_id, + caml_make_vect=runtime.caml_make_vect, + caml_ml_bytes_length=runtime.caml_ml_bytes_length, + caml_ml_string_length=runtime.caml_ml_string_length, + caml_obj_tag=runtime.caml_obj_tag, + caml_register_global=runtime.caml_register_global, + caml_string_get=runtime.caml_string_get, + caml_string_notequal=runtime.caml_string_notequal, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, + caml_string_unsafe_get=runtime.caml_string_unsafe_get, + caml_sys_getenv=runtime.caml_sys_getenv, + caml_wrap_exception=runtime.caml_wrap_exception; + function caml_call1(f,a0) + {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} + function caml_call2(f,a0,a1) + {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} + function caml_call3(f,a0,a1,a2) + {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} + function caml_call4(f,a0,a1,a2,a3) + {return f.length == 4 + ?f(a0,a1,a2,a3) + :runtime.caml_call_gen(f,[a0,a1,a2,a3])} + function caml_call5(f,a0,a1,a2,a3,a4) + {return f.length == 5 + ?f(a0,a1,a2,a3,a4) + :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])} + var + global_data=runtime.caml_get_global_data(), + cst_Bi_util_print_bits=caml_string_of_jsbytes("Bi_util.print_bits"), + cst_Bi_util_print_bits$0=caml_string_of_jsbytes("Bi_util.print_bits"), + cst_Bi_util_Error=caml_string_of_jsbytes("Bi_util.Error"), + cst_Corrupted_data_invalid_ref= + caml_string_of_jsbytes("Corrupted data (invalid reference)"), + cst_Bi_share_Rd_poly_create_ty= + caml_string_of_jsbytes + ("Bi_share.Rd_poly.create_type_id: exhausted available type_id's"), + cst_Bi_inbuf_refill_from_chann= + caml_string_of_jsbytes("Bi_inbuf.refill_from_channel"), + cst_Bi_inbuf_End_of_input=caml_string_of_jsbytes("Bi_inbuf.End_of_input"), + cst_Buf_extend_reached_Sys_max= + caml_string_of_jsbytes("Buf.extend: reached Sys.max_string_length"), + cst_Junk_input_after_end_of_vi= + caml_string_of_jsbytes("Junk input after end of vint"), + cst_Unterminated_vint_or_vint_= + caml_string_of_jsbytes + ("Unterminated vint or vint exceeding range of OCaml ints"), + cst_Vint_exceeding_range_of_OC= + caml_string_of_jsbytes("Vint exceeding range of OCaml ints"), + cst$0=caml_string_of_jsbytes(""), + cst_test_stream_dat=caml_string_of_jsbytes("test-stream.dat"), + cst_test_stream_dat$0=caml_string_of_jsbytes("test-stream.dat"), + cst=caml_string_of_jsbytes("\0\0\0\0"), + cst_Corrupted_stream_excessive= + caml_string_of_jsbytes("Corrupted stream: excessive chunk length"), + cst_Chunk_length_exceeds_suppo$0= + caml_string_of_jsbytes + ("Chunk length exceeds supported range on this platform"), + cst_Chunk_length_exceeds_suppo= + caml_string_of_jsbytes + ("Chunk length exceeds supported range on this platform"), + cst_Bi_stream=caml_string_of_jsbytes("Bi_stream: "), + cst_Bi_io_write_t_Malformed_Ta= + caml_string_of_jsbytes("Bi_io.write_t: Malformed `Table"), + cst_Corrupted_data_invalid_tag$0= + caml_string_of_jsbytes("Corrupted data (invalid tag)"), + cst_unit=caml_string_of_jsbytes("unit"), + cst$1=caml_string_of_jsbytes("]"), + cst$2=caml_string_of_jsbytes(","), + cst$3=caml_string_of_jsbytes("["), + cst$4=caml_string_of_jsbytes("[]"), + cst$5=caml_string_of_jsbytes("}"), + cst$6=caml_string_of_jsbytes(","), + cst$7=caml_string_of_jsbytes("{"), + cst_true=caml_string_of_jsbytes("true"), + cst_false=caml_string_of_jsbytes("false"), + cst$8=caml_string_of_jsbytes(")"), + cst$9=caml_string_of_jsbytes(","), + cst$10=caml_string_of_jsbytes("("), + cst$11=caml_string_of_jsbytes(":"), + cst$12=caml_string_of_jsbytes(">"), + cst$13=caml_string_of_jsbytes(""), + cst$14=caml_string_of_jsbytes("<"), + cst$15=caml_string_of_jsbytes(">"), + cst$16=caml_string_of_jsbytes("<"), + cst$17=caml_string_of_jsbytes("[]"), + cst$18=caml_string_of_jsbytes(""), + cst_Some=caml_string_of_jsbytes("Some"), + cst_None=caml_string_of_jsbytes("None"), + cst_Corrupted_data_invalid_tag= + caml_string_of_jsbytes("Corrupted data (invalid tag)"), + cst_Corrupted_data_string= + caml_string_of_jsbytes("Corrupted data (string)"), + cst_Corrupted_data_bool_value= + caml_string_of_jsbytes("Corrupted data (bool value)"), + cst_Corrupted_data_unit_value= + caml_string_of_jsbytes("Corrupted data (unit value)"), + s=caml_string_of_jsbytes("?\xf0\x06\x05\x04\x03\x02\x01"), + cst_Corrupted_data_invalid_num= + caml_string_of_jsbytes("Corrupted data (invalid numtag)"), + cst_Corrupted_data_invalid_fie= + caml_string_of_jsbytes("Corrupted data (invalid field hashtag)"), + cst_Cygwin=caml_string_of_jsbytes("Cygwin"), + cst_Unix=caml_string_of_jsbytes("Unix"), + cst_Win32=caml_string_of_jsbytes("Win32"), + cst_bdump_dict=caml_string_of_jsbytes("_bdump-dict"), + cst_HOMEPATH=caml_string_of_jsbytes("HOMEPATH"), + cst_bdump_dict$0=caml_string_of_jsbytes(".bdump-dict"), + cst_HOME=caml_string_of_jsbytes("HOME"), + cst_bdump_dict$1=caml_string_of_jsbytes(".bdump-dict"), + cst_HOME$0=caml_string_of_jsbytes("HOME"), + Stdlib=global_data.Stdlib, + Stdlib_Bytes=global_data.Stdlib__Bytes, + Stdlib_Char=global_data.Stdlib__Char, + Stdlib_Hashtbl=global_data.Stdlib__Hashtbl, + Stdlib_Sys=global_data.Stdlib__Sys, + Stdlib_String=global_data.Stdlib__String, + Stdlib_Printf=global_data.Stdlib__Printf, + Stdlib_List=global_data.Stdlib__List, + Stdlib_Array=global_data.Stdlib__Array, + Assert_failure=global_data.Assert_failure, + Stdlib_Stream=global_data.Stdlib__Stream, + Easy_format=global_data.Easy_format, + CamlinternalLazy=global_data.CamlinternalLazy, + Stdlib_Obj=global_data.Stdlib__Obj, + Stdlib_Printexc=global_data.Stdlib__Printexc, + Stdlib_Buffer=global_data.Stdlib__Buffer, + Stdlib_Filename=global_data.Stdlib__Filename, + Error=[248,cst_Bi_util_Error,caml_fresh_oo_id(0)], + _g_= + [0, + [11,caml_string_of_jsbytes("Corrupted stream: "),[1,0]], + caml_string_of_jsbytes("Corrupted stream: %C")], + _f_= + [0, + [11, + caml_string_of_jsbytes("Corrupted stream: excessive chunk length ("), + [4,3,0,0,[11,caml_string_of_jsbytes(" bytes)"),0]]], + caml_string_of_jsbytes + ("Corrupted stream: excessive chunk length (%i bytes)")], + _i_=[0,caml_string_of_jsbytes("src/bi_stream.ml"),131,22], + _j_=[0,2], + _h_=[0,caml_string_of_jsbytes("src/bi_stream.ml"),102,20], + _e_= + [0, + [11, + caml_string_of_jsbytes("unsupported word size ("), + [4,3,0,0,[12,41,0]]], + caml_string_of_jsbytes("unsupported word size (%i)")], + _d_= + [0, + [11, + caml_string_of_jsbytes("unsupported word size ("), + [4,3,0,0,[12,41,0]]], + caml_string_of_jsbytes("unsupported word size (%i)")], + _s_= + [0, + [11,caml_string_of_jsbytes("0x"),[4,6,[0,2,2],0,0]], + caml_string_of_jsbytes("0x%02x")], + _t_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _u_=[0,[12,35,[5,6,[0,2,8],0,0]],caml_string_of_jsbytes("#%08lx")], + _v_= + [0, + [11, + caml_string_of_jsbytes("shared"), + [4,3,0,0,[11,caml_string_of_jsbytes(" ->"),0]]], + caml_string_of_jsbytes("shared%i ->")], + _w_= + [0, + [11,caml_string_of_jsbytes("shared"),[4,3,0,0,0]], + caml_string_of_jsbytes("shared%i")], + _x_= + [0, + [11,caml_string_of_jsbytes("0x"),[7,6,[0,2,16],0,0]], + caml_string_of_jsbytes("0x%016Lx")], + _y_= + [0, + [11,caml_string_of_jsbytes("0x"),[5,6,[0,2,8],0,0]], + caml_string_of_jsbytes("0x%08lx")], + _z_= + [0, + [11,caml_string_of_jsbytes("0x"),[4,6,[0,2,4],0,0]], + caml_string_of_jsbytes("0x%04x")], + _A_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _B_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _D_=[0,[12,35,[5,6,[0,2,8],0,0]],caml_string_of_jsbytes("#%08lx")], + _C_=[0,[2,0,[12,58,0]],caml_string_of_jsbytes("%s:")], + _p_=[0,951901561,0], + _q_=[0,504440814,0], + _n_=[0,caml_string_of_jsbytes("src/bi_io.ml"),270,4], + _o_=[0,caml_string_of_jsbytes("src/bi_io.ml"),274,4], + _m_=[0,caml_string_of_jsbytes("src/bi_io.ml"),212,11], + _k_= + [0, + [11, + caml_string_of_jsbytes("Bi_io.make_unhash: "), + [3, + 0, + [11, + caml_string_of_jsbytes(" and "), + [3, + 0, + [11, + caml_string_of_jsbytes + (" have the same hash, please pick another name"), + 0]]]]], + caml_string_of_jsbytes + ("Bi_io.make_unhash: %S and %S have the same hash, please pick another name")], + _l_=[0,caml_string_of_jsbytes("src/bi_io.ml"),169,13], + _H_=[0,caml_string_of_jsbytes("src/bi_io.ml"),85,2], + _G_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], + _F_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], + _E_= + [0, + [11, + caml_string_of_jsbytes("Cannot load dictionary from "), + [3,0,[11,caml_string_of_jsbytes(": "),[2,0,[12,10,[10,0]]]]]], + caml_string_of_jsbytes("Cannot load dictionary from %S: %s\n%!")]; + function error(s){throw [0,Error,s]} + function string8_of_int(x) + {var s=caml_create_bytes(8),i=0; + for(;;) + {caml_bytes_set + (s, + 7 - i | 0, + caml_call1(Stdlib_Char[1],255 & (x >>> (8 * i | 0) | 0))); + var _c4_=i + 1 | 0; + if(7 !== i){var i=_c4_;continue} + return caml_call1(Stdlib_Bytes[6],s)}} + function string4_of_int(x) + {var s=caml_create_bytes(4),i=0; + for(;;) + {caml_bytes_set + (s, + 3 - i | 0, + caml_call1(Stdlib_Char[1],255 & (x >>> (8 * i | 0) | 0))); + var _c3_=i + 1 | 0; + if(3 !== i){var i=_c3_;continue} + return caml_call1(Stdlib_Bytes[6],s)}} + function print_bits(opt,len,s) + {if(opt)var sth=opt[1],pos=sth;else var pos=0; + var slen=caml_ml_string_length(s),_cT_=pos < 0?1:0; + if(_cT_) + var _cU_=_cT_; + else + var _c2_=0 < pos?1:0,_cU_=_c2_?slen <= pos?1:0:_c2_; + if(_cU_)caml_call1(Stdlib[1],cst_Bi_util_print_bits); + if(len) + var + len$0=len[1], + _cV_= + (slen - pos | 0) < len$0 + ?caml_call1(Stdlib[1],cst_Bi_util_print_bits$0) + :len$0, + len$1=_cV_; + else + var len$1=slen - pos | 0; + var r=caml_create_bytes(len$1 * 9 | 0),_cX_=len$1 - 1 | 0,_cW_=0; + if(! (_cX_ < 0)) + {var i=_cW_; + a: + for(;;) + {var k=i * 9 | 0,x=caml_string_get(s,pos + i | 0),j=0; + for(;;) + {var _c0_=0 === ((x >>> (7 - j | 0) | 0) & 1)?48:49; + caml_bytes_set(r,k + j | 0,_c0_); + var _c1_=j + 1 | 0; + if(7 !== j){var j=_c1_;continue} + var _cY_=0 === ((i + 1 | 0) % 8 | 0)?10:32; + caml_bytes_set(r,k + 8 | 0,_cY_); + var _cZ_=i + 1 | 0; + if(_cX_ !== i){var i=_cZ_;continue a} + break} + break}} + return caml_call1(Stdlib_Bytes[6],r)} + var c=[0,0],r=[0,-1]; + for(;;) + {if(0 === r[1]) + {var + int_size=c[1], + Bi_util= + [0,Error,error,string8_of_int,string4_of_int,print_bits,int_size]; + caml_register_global(101,Bi_util,"Bi_util"); + var + n=[0,0], + dummy_type_id=0, + create_type_id= + function(param) + {n[1]++; + return 0 <= n[1] + ?n[1] + :caml_call1(Stdlib[2],cst_Bi_share_Rd_poly_create_ty)}, + equal= + function(param,_cQ_) + {var + t2=_cQ_[2], + x2=_cQ_[1], + t1=param[2], + x1=param[1], + _cR_=x1 === x2?1:0, + _cS_=_cR_?t1 === t2?1:0:_cR_; + return _cS_}, + hash=Stdlib_Hashtbl[28], + H=caml_call1(Stdlib_Hashtbl[26],[0,equal,hash]), + create=H[1], + clear= + function(tbl) + {var _cP_=0 < caml_call1(H[15],tbl)?1:0; + return _cP_?caml_call1(H[2],tbl):_cP_}, + put= + function(tbl,k,pos) + {try + {var pos0=caml_call2(H[7],tbl,k),_cN_=pos - pos0 | 0;return _cN_} + catch(_cO_) + {_cO_ = caml_wrap_exception(_cO_); + if(_cO_ === Stdlib[8]){caml_call3(H[5],tbl,k,pos);return 0} + throw _cO_}}, + create$0=function(n){return caml_call2(Stdlib_Hashtbl[1],0,n)}, + clear$0=Stdlib_Hashtbl[2], + put$0= + function(tbl,pos,x){return caml_call3(Stdlib_Hashtbl[5],tbl,pos,x)}, + get= + function(tbl,pos) + {try + {var _cL_=caml_call2(Stdlib_Hashtbl[6],tbl,pos);return _cL_} + catch(_cM_) + {_cM_ = caml_wrap_exception(_cM_); + if(_cM_ === Stdlib[8]) + return error(cst_Corrupted_data_invalid_ref); + throw _cM_}}, + Rd=[0,create$0,clear$0,put$0,get], + _a_=[0,create,clear,put], + Bi_share=[0,dummy_type_id,create_type_id,_a_,Rd]; + caml_register_global(103,Bi_share,"Bi_share"); + var + End_of_input=[248,cst_Bi_inbuf_End_of_input,caml_fresh_oo_id(0)], + try_preread= + function(ib,n) + {return (ib[3] - ib[2] | 0) < n + ?(caml_call2(ib[6],ib,n), + caml_call2(Stdlib[16],ib[3] - ib[2] | 0,n)) + :n}, + read= + function(ib,n) + {var pos=ib[2]; + if(n <= (ib[3] - pos | 0)){ib[2] = pos + n | 0;return pos} + if(n <= try_preread(ib,n)) + {var pos$0=ib[2];ib[2] = ib[2] + n | 0;return pos$0} + throw End_of_input}, + read_char= + function(ib) + {var pos=ib[2]; + if(0 < (ib[3] - pos | 0)) + {var c=caml_bytes_unsafe_get(ib[1],pos); + ib[2] = pos + 1 | 0; + return c} + if(0 < try_preread(ib,1)) + {var pos$0=ib[2],c$0=caml_bytes_unsafe_get(ib[1],pos$0); + ib[2] = pos$0 + 1 | 0; + return c$0} + throw End_of_input}, + peek= + function(ib) + {var pos=ib[2]; + if(0 < (ib[3] - pos | 0))return caml_bytes_unsafe_get(ib[1],pos); + if(0 < try_preread(ib,1)) + return caml_bytes_unsafe_get(ib[1],ib[2]); + throw End_of_input}, + from_bytes= + function(opt,_cJ_,s) + {if(opt)var sth=opt[1],pos=sth;else var pos=0; + if(_cJ_)var sth$0=_cJ_[1],shrlen=sth$0;else var shrlen=16; + var _cK_=caml_call1(Rd[1],shrlen); + return [0, + s, + pos, + caml_ml_bytes_length(s), + - pos | 0, + caml_ml_bytes_length(s), + function(ib,n){return 0}, + _cK_]}, + from_string= + function(pos,shrlen,s) + {return from_bytes(pos,shrlen,caml_call1(Stdlib_Bytes[5],s))}, + from_channel= + function(opt,_cF_,ic) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + if(_cF_)var sth$0=_cF_[1],shrlen=sth$0;else var shrlen=16; + var _cG_=caml_call1(Rd[1],shrlen); + return [0, + caml_create_bytes(len), + 0, + 0, + 0, + len, + function(ib,n$0) + {if(ib[5] < n$0) + return caml_call1(Stdlib[1],cst_Bi_inbuf_refill_from_chann); + var pos$1=ib[3] - ib[2] | 0,_cH_=pos$1 < n$0?1:0; + if(_cH_) + {var s=ib[1]; + caml_call5(Stdlib_Bytes[11],s,ib[2],s,0,pos$1); + var len$1=n$0 - pos$1 | 0,pos=pos$1,len=len$1,accu=0; + for(;;) + {var n=caml_call4(Stdlib[84],ic,s,pos,len); + if(n < len && 0 < n) + {var + accu$0=accu + n | 0, + len$0=len - n | 0, + pos$0=pos + n | 0, + pos=pos$0, + len=len$0, + accu=accu$0; + continue} + var really_read=accu + n | 0; + ib[4] = ib[4] + ib[2] | 0; + ib[2] = 0; + ib[3] = pos$1 + really_read | 0; + var _cI_=0; + break}} + else + var _cI_=_cH_; + return _cI_}, + _cG_]}, + Bi_inbuf= + [0, + End_of_input, + try_preread, + read, + read_char, + peek, + from_string, + from_bytes, + from_channel]; + caml_register_global(104,Bi_inbuf,"Bi_inbuf"); + var + really_extend= + function(b,n) + {var + slen0=b[2], + reqlen=b[3] + n | 0, + x=caml_call2(Stdlib[17],reqlen,2 * slen0 | 0), + slen= + x <= Stdlib_Sys[12] + ?x + :Stdlib_Sys[12] < reqlen + ?caml_call1(Stdlib[1],cst_Buf_extend_reached_Sys_max) + :Stdlib_Sys[12], + s=caml_create_bytes(slen); + caml_call5(Stdlib_Bytes[11],b[1],0,s,0,b[3]); + b[1] = s; + b[2] = slen; + return 0}, + flush_to_output= + function(abstract_output,b,n) + {var _cD_=b[3]; + caml_call3 + (abstract_output,caml_call1(Stdlib_Bytes[6],b[1]),0,_cD_); + b[4] = b[4] + b[3] | 0; + b[3] = 0; + var _cE_=b[2] < n?1:0; + return _cE_?really_extend(b,n):_cE_}, + flush_to_channel= + function(oc) + {var _cA_=caml_call1(Stdlib[69],oc); + return function(_cB_,_cC_){return flush_to_output(_cA_,_cB_,_cC_)}}, + create$1= + function(opt,_cz_,n) + {if(opt) + var sth=opt[1],make_room=sth; + else + var make_room=really_extend; + if(_cz_)var sth$0=_cz_[1],shrlen=sth$0;else var shrlen=16; + return [0, + caml_create_bytes(n), + n, + 0, + 0, + n, + make_room, + caml_call1(_a_[1],shrlen), + shrlen]}, + create_channel_writer= + function(opt,shrlen,oc) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + return create$1([0,flush_to_channel(oc)],shrlen,len)}, + flush_output_writer=function(b){return caml_call2(b[6],b,0)}, + create_output_writer= + function(opt,shrlen,out) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + var + _cw_= + caml_call1(runtime.caml_get_public_method(out,209784577,1),out); + return create$1 + ([0, + function(_cx_,_cy_){return flush_to_output(_cw_,_cx_,_cy_)}], + shrlen, + len)}, + extend= + function(b,n) + {var _cv_=b[2] < (b[3] + n | 0)?1:0; + return _cv_?caml_call2(b[6],b,n):_cv_}, + alloc= + function(b,n) + {extend(b,n);var pos=b[3];b[3] = pos + n | 0;return pos}, + add_sub= + function(blit,b,s,pos,len) + {extend(b,len); + caml_call5(blit,s,pos,b[1],b[3],len); + b[3] = b[3] + len | 0; + return 0}, + _b_=Stdlib_String[48], + add_substring= + function(_cr_,_cs_,_ct_,_cu_) + {return add_sub(_b_,_cr_,_cs_,_ct_,_cu_)}, + _c_=Stdlib_Bytes[11], + add_subbytes= + function(_cn_,_co_,_cp_,_cq_) + {return add_sub(_c_,_cn_,_co_,_cp_,_cq_)}, + add_string= + function(b,s){return add_substring(b,s,0,caml_ml_string_length(s))}, + add_bytes= + function(b,s){return add_subbytes(b,s,0,caml_ml_bytes_length(s))}, + add_char= + function(b,c){var pos=alloc(b,1);return caml_bytes_set(b[1],pos,c)}, + unsafe_add_char= + function(b,c) + {var len=b[3]; + caml_bytes_set(b[1],len,c); + b[3] = len + 1 | 0; + return 0}, + add_char2= + function(b,c1,c2) + {var pos=alloc(b,2),s=b[1]; + caml_bytes_unsafe_set(s,pos,c1); + caml_bytes_unsafe_set(s,pos + 1 | 0,c2); + return 0}, + add_char4= + function(b,c1,c2,c3,c4) + {var pos=alloc(b,4),s=b[1]; + caml_bytes_unsafe_set(s,pos,c1); + caml_bytes_unsafe_set(s,pos + 1 | 0,c2); + caml_bytes_unsafe_set(s,pos + 2 | 0,c3); + caml_bytes_unsafe_set(s,pos + 3 | 0,c4); + return 0}, + clear$1=function(b){b[4] = 0;b[3] = 0;return caml_call1(_a_[2],b[7])}, + reset= + function(b) + {if(caml_ml_bytes_length(b[1]) !== b[5]) + b[1] = caml_create_bytes(b[5]); + b[4] = 0; + b[3] = 0; + b[7] = caml_call1(_a_[1],b[8]); + return 0}, + contents=function(b){return caml_call3(Stdlib_Bytes[8],b[1],0,b[3])}, + Bi_outbuf= + [0, + really_extend, + flush_to_channel, + create$1, + contents, + create_channel_writer, + flush_output_writer, + create_output_writer, + flush_output_writer, + extend, + alloc, + add_bytes, + add_subbytes, + add_string, + add_substring, + add_char, + add_char2, + add_char4, + unsafe_add_char, + clear$1, + reset]; + caml_register_global(107,Bi_outbuf,"Bi_outbuf"); + if(0 === (int_size % 7 | 0)) + var m=int_size / 7 | 0,max_highest_byte=127,max_vint_bytes=m; + else + var + m$0=(int_size / 7 | 0) + 1 | 0, + h=(1 << (int_size % 7 | 0)) - 1 | 0, + max_highest_byte=h, + max_vint_bytes=m$0; + var + check_highest_byte= + function(x) + {var _cm_=max_highest_byte < x?1:0; + return _cm_?error(cst_Vint_exceeding_range_of_OC):_cm_}, + unsigned_of_signed= + function(i){return 0 <= i?i << 1:(-1 - i | 0) << 1 | 1}, + write_untagged_uvint= + function(buf,i) + {extend(buf,max_vint_bytes); + var x=[0,i]; + for(;;) + {if(0 === (x[1] >>> 7 | 0)) + return unsafe_add_char(buf,caml_call1(Stdlib_Char[1],x[1])); + var byte$0=128 | x[1] & 127; + unsafe_add_char(buf,caml_call1(Stdlib_Char[1],byte$0)); + x[1] = x[1] >>> 7 | 0; + continue}}, + write_untagged_svint= + function(buf,i) + {return write_untagged_uvint(buf,unsigned_of_signed(i))}, + uvint_of_uint= + function(buf,i) + {if(buf)var b=buf[1],buffer=b;else var buffer=create$1(0,0,10); + clear$1(buffer); + write_untagged_uvint(buffer,i); + return contents(buffer)}, + svint_of_int= + function(buf,i){return uvint_of_uint(buf,unsigned_of_signed(i))}, + read_untagged_uvint= + function(ib) + {var + avail=try_preread(ib,max_vint_bytes), + s=ib[1], + pos=ib[2], + x=[0,0]; + try + {var _cj_=avail - 1 | 0,_ci_=0; + if(! (_cj_ < 0)) + {var i=_ci_; + for(;;) + {var b=caml_bytes_get(s,pos + i | 0); + x[1] = (b & 127) << (7 * i | 0) | x[1]; + if(b < 128) + {ib[2] = (pos + i | 0) + 1 | 0; + if((i + 1 | 0) === max_vint_bytes)check_highest_byte(b); + throw Stdlib[3]} + var _ck_=i + 1 | 0; + if(_cj_ !== i){var i=_ck_;continue} + break}} + error(cst_Unterminated_vint_or_vint_)} + catch(_cl_) + {_cl_ = caml_wrap_exception(_cl_); + if(_cl_ !== Stdlib[3])throw _cl_} + return x[1]}, + read_untagged_svint= + function(ib) + {var i=read_untagged_uvint(ib); + return 0 === (i & 1)?i >>> 1 | 0:-1 - (i >>> 1 | 0) | 0}, + check_end_of_input= + function(ib) + {var _ch_=0 < try_preread(ib,1)?1:0; + return _ch_?error(cst_Junk_input_after_end_of_vi):_ch_}, + uint_of_uvint= + function(s) + {var ib=from_string(0,0,s),x=read_untagged_uvint(ib); + check_end_of_input(ib); + return x}, + int_of_svint= + function(s) + {var ib=from_string(0,0,s),x=read_untagged_svint(ib); + check_end_of_input(ib); + return x}, + Bi_vint= + [0, + uvint_of_uint, + svint_of_int, + uint_of_uvint, + int_of_svint, + write_untagged_uvint, + write_untagged_svint, + read_untagged_uvint, + read_untagged_svint]; + caml_register_global(110,Bi_vint,"Bi_vint"); + var + error$0= + function(s) + {var _cg_=caml_call2(Stdlib[28],cst_Bi_stream,s); + return caml_call1(Stdlib[2],_cg_)}, + read_stream= + function(of_string,ic) + {function _b__(i$2) + {var c=caml_call1(Stdlib[82],ic); + if(1 === c) + {var _ca_=Stdlib_Sys[9]; + if(32 === _ca_) + {var i$0=1; + for(;;) + {if(0 !== caml_call1(Stdlib[87],ic)) + error$0(cst_Chunk_length_exceeds_suppo$0); + var _cd_=i$0 + 1 | 0; + if(4 !== i$0){var i$0=_cd_;continue} + var n=[0,0],i=1; + for(;;) + {var _cb_=caml_call1(Stdlib[87],ic); + n[1] = n[1] << 8 | _cb_; + var _cc_=i + 1 | 0; + if(4 !== i){var i=_cc_;continue} + if(n[1] < 0)error$0(cst_Chunk_length_exceeds_suppo); + var len=n[1]; + break} + break}} + else + if(64 === _ca_) + {var n$0=[0,0],i$1=1; + for(;;) + {var _ce_=caml_call1(Stdlib[87],ic); + n$0[1] = n$0[1] << 8 | _ce_; + var _cf_=i$1 + 1 | 0; + if(8 !== i$1){var i$1=_cf_;continue} + if(n$0[1] < 0)error$0(cst_Corrupted_stream_excessive); + var len=n$0[1]; + break}} + else + var len=error$0(caml_call2(Stdlib_Printf[4],_d_,_ca_)); + if(Stdlib_Sys[12] < len) + error$0(caml_call2(Stdlib_Printf[4],_f_,len)); + var s=caml_create_bytes(len); + caml_call4(Stdlib[85],ic,s,0,len); + return [0,caml_call1(of_string,caml_call1(Stdlib_Bytes[6],s))]} + return c?error$0(caml_call2(Stdlib_Printf[4],_g_,c)):0} + var st=caml_call1(Stdlib_Stream[3],_b__),a=[0,[0]],pos=[0,0]; + function next(i) + {for(;;) + {if(a[1].length - 1 <= pos[1]) + {var match=caml_call1(Stdlib_Stream[11],st); + if(match) + {var a$0=match[1]; + caml_call1(Stdlib_Stream[12],st); + a[1] = a$0; + pos[1] = 0; + continue} + return 0} + var _b$_=pos[1],x=caml_check_bound(a[1],_b$_)[1 + _b$_]; + pos[1]++; + return [0,x]}} + return caml_call1(Stdlib_Stream[3],next)}, + write_stream= + function(opt,to_string,oc,st) + {if(opt)var sth=opt[1],chunk_len=sth;else var chunk_len=1024; + var n=[0,0],acc=[0,0]; + function flush_chunk(param) + {var _b9_=acc[1]; + if(_b9_) + {var + tl=_b9_[2], + x=_b9_[1], + r=[0,tl], + len=caml_call1(Stdlib_List[1],_b9_), + a=caml_make_vect(len,x), + _b6_=len - 2 | 0; + if(! (_b6_ < 0)) + {var i$1=_b6_; + for(;;) + {var _b7_=r[1]; + if(! _b7_)throw [0,Assert_failure,_h_]; + var tl$0=_b7_[2],hd=_b7_[1]; + caml_check_bound(a,i$1)[1 + i$1] = hd; + r[1] = tl$0; + var _b8_=i$1 - 1 | 0; + if(0 !== i$1){var i$1=_b8_;continue} + break}} + var a$0=a} + else + var a$0=[0]; + acc[1] = 0; + n[1] = 0; + var s=caml_call1(to_string,a$0); + caml_call2(Stdlib[65],oc,1); + var n$2=caml_ml_string_length(s),_b1_=Stdlib_Sys[9]; + if(32 === _b1_) + {caml_call2(Stdlib[66],oc,cst); + var n$0=[0,n$2],i=1; + for(;;) + {var _b2_=caml_call1(Stdlib[29],n$0[1] >>> 24 | 0); + caml_call2(Stdlib[65],oc,_b2_); + n$0[1] = n$0[1] << 8; + var _b3_=i + 1 | 0; + if(4 !== i){var i=_b3_;continue} + break}} + else + if(64 === _b1_) + {var n$1=[0,n$2],i$0=1; + for(;;) + {var _b4_=caml_call1(Stdlib[29],n$1[1] >>> 56 | 0); + caml_call2(Stdlib[65],oc,_b4_); + n$1[1] = n$1[1] << 8; + var _b5_=i$0 + 1 | 0; + if(8 !== i$0){var i$0=_b5_;continue} + break}} + else + error$0(caml_call2(Stdlib_Printf[4],_e_,_b1_)); + return caml_call2(Stdlib[66],oc,s)} + function _bZ_(x) + {n[1]++; + acc[1] = [0,x,acc[1]]; + var _b0_=chunk_len <= n[1]?1:0; + return _b0_?flush_chunk(0):_b0_} + caml_call2(Stdlib_Stream[8],_bZ_,st); + if(0 < n[1])flush_chunk(0); + return caml_call2(Stdlib[65],oc,0)}, + test= + function(l) + {function _bT_(x) + {if(0 <= x && ! (9 < x))return 0;throw [0,Assert_failure,_i_]} + caml_call2(Stdlib_List[17],_bT_,l); + function to_string(a) + {var + _bX_=caml_call1(Stdlib_Array[11],a), + _bY_=caml_call2(Stdlib_List[19],Stdlib[33],_bX_); + return caml_call2(Stdlib_String[6],cst$0,_bY_)} + function of_string(s) + {function _bV_(i) + {var _bW_=caml_string_get(s,i); + return runtime.caml_int_of_string + (caml_call2(Stdlib_String[1],1,_bW_))} + return caml_call2(Stdlib_Array[2],caml_ml_string_length(s),_bV_)} + var + st=caml_call1(Stdlib_Stream[4],l), + oc=caml_call1(Stdlib[60],cst_test_stream_dat); + write_stream(_j_,to_string,oc,st); + caml_call1(Stdlib[76],oc); + var + ic=caml_call1(Stdlib[79],cst_test_stream_dat$0), + st$0=read_stream(of_string,ic), + l$0=[0,0]; + function _bU_(i){l$0[1] = [0,i,l$0[1]];return 0} + caml_call2(Stdlib_Stream[8],_bU_,st$0); + caml_call1(Stdlib[93],ic); + return runtime.caml_equal(l,caml_call1(Stdlib_List[9],l$0[1]))}, + Bi_stream=[0,read_stream,write_stream,test]; + caml_register_global(114,Bi_stream,"Bi_stream"); + var + bool_tag=0, + int8_tag=1, + int16_tag=2, + int32_tag=3, + int64_tag=4, + float32_tag=11, + float64_tag=12, + uvint_tag=16, + svint_tag=17, + string_tag=18, + array_tag=19, + tuple_tag=20, + record_tag=21, + num_variant_tag=22, + variant_tag=23, + unit_tag=24, + table_tag=25, + shared_tag=26, + make_signed=function(x){return 1073741823 < x?x + 2147483648 | 0:x}, + hash_name= + function(s) + {var accu=[0,0],_bQ_=caml_ml_string_length(s) - 1 | 0,_bP_=0; + if(! (_bQ_ < 0)) + {var i=_bP_; + for(;;) + {var _bR_=caml_string_get(s,i); + accu[1] = (223 * accu[1] | 0) + _bR_ | 0; + var _bS_=i + 1 | 0; + if(_bQ_ !== i){var i=_bS_;continue} + break}} + accu[1] = accu[1] & 2147483647; + return make_signed(accu[1])}, + n$0=int_size - 31 | 0; + if(0 <= n$0) + {var + write_hashtag= + function(ob,h$0,has_arg) + {var h=h$0 << n$0 >>> n$0 | 0,pos=alloc(ob,4),s=ob[1]; + caml_bytes_unsafe_set + (s,pos + 3 | 0,caml_call1(Stdlib_Char[1],h & 255)); + var h$1=h >>> 8 | 0; + caml_bytes_unsafe_set + (s,pos + 2 | 0,caml_call1(Stdlib_Char[1],h$1 & 255)); + var h$2=h$1 >>> 8 | 0; + caml_bytes_unsafe_set + (s,pos + 1 | 0,caml_call1(Stdlib_Char[1],h$2 & 255)); + var h$3=h$2 >>> 8 | 0,_bO_=has_arg?h$3 | 128:h$3; + caml_bytes_unsafe_set(s,pos,caml_call1(Stdlib_Char[1],_bO_)); + return 0}, + string_of_hashtag= + function(h,has_arg) + {var ob=create$1(0,0,4); + write_hashtag(ob,h,has_arg); + return contents(ob)}, + read_hashtag= + function(ib,cont) + {var + i=read(ib,4), + s=ib[1], + x0=caml_bytes_get(s,i), + has_arg=128 <= x0?1:0, + x1=(x0 & 127) << 24, + x2=caml_bytes_get(s,i + 1 | 0) << 16, + x3=caml_bytes_get(s,i + 2 | 0) << 8, + x4=caml_bytes_get(s,i + 3 | 0), + h=make_signed(x1 | x2 | x3 | x4); + return caml_call3(cont,ib,h,has_arg)}, + read_field_hashtag= + function(ib) + {var i=read(ib,4),s=ib[1],x0=caml_bytes_unsafe_get(s,i); + if(x0 < 128)error(cst_Corrupted_data_invalid_fie); + var + x1=(x0 & 127) << 24, + x2=caml_bytes_unsafe_get(s,i + 1 | 0) << 16, + x3=caml_bytes_unsafe_get(s,i + 2 | 0) << 8, + x4=caml_bytes_unsafe_get(s,i + 3 | 0); + return make_signed(x1 | x2 | x3 | x4)}, + write_numtag= + function(ob,i,has_arg) + {var _bM_=i < 0?1:0,_bN_=_bM_ || (127 < i?1:0); + if(_bN_)error(cst_Corrupted_data_invalid_num); + var x=has_arg?i | 128:i; + return add_char(ob,caml_call1(Stdlib_Char[1],x))}, + read_numtag= + function(ib,cont) + {var i=read(ib,1),x=caml_bytes_get(ib[1],i),has_arg=128 <= x?1:0; + return caml_call3(cont,ib,x & 127,has_arg)}, + make_unhash= + function(l) + {var + _bE_=4 * caml_call1(Stdlib_List[1],l) | 0, + tbl=caml_call2(Stdlib_Hashtbl[1],0,_bE_); + function _bF_(s) + {var h=hash_name(s); + try + {var match=caml_call2(Stdlib_Hashtbl[6],tbl,h); + if(match) + {var s$0=match[1],_bI_=caml_string_notequal(s,s$0); + if(_bI_) + var + _bJ_=caml_call3(Stdlib_Printf[4],_k_,s,s$0), + _bK_=caml_call1(Stdlib[2],_bJ_); + else + var _bK_=_bI_; + return _bK_} + throw [0,Assert_failure,_l_]} + catch(_bL_) + {_bL_ = caml_wrap_exception(_bL_); + if(_bL_ === Stdlib[8]) + return caml_call3(Stdlib_Hashtbl[5],tbl,h,[0,s]); + throw _bL_}} + caml_call2(Stdlib_List[17],_bF_,l); + return function(h) + {try + {var _bG_=caml_call2(Stdlib_Hashtbl[6],tbl,h);return _bG_} + catch(_bH_) + {_bH_ = caml_wrap_exception(_bH_); + if(_bH_ === Stdlib[8])return 0; + throw _bH_}}}, + write_tag= + function(ob,x){return add_char(ob,caml_call1(Stdlib_Char[1],x))}, + write_untagged_unit=function(ob,param){return add_char(ob,0)}, + write_untagged_bool= + function(ob,x){var _bD_=x?1:0;return add_char(ob,_bD_)}, + write_untagged_char=function(ob,x){return add_char(ob,x)}, + write_untagged_int8= + function(ob,x){return add_char(ob,caml_call1(Stdlib_Char[1],x))}, + write_untagged_int16= + function(ob,x) + {add_char(ob,caml_call1(Stdlib_Char[1],x >>> 8 | 0)); + return add_char(ob,caml_call1(Stdlib_Char[1],x & 255))}, + write_untagged_int32= + function(ob,low) + {var high=low >>> 16 | 0; + add_char(ob,caml_call1(Stdlib_Char[1],high >>> 8 | 0)); + add_char(ob,caml_call1(Stdlib_Char[1],high & 255)); + add_char(ob,caml_call1(Stdlib_Char[1],(low >>> 8 | 0) & 255)); + return add_char(ob,caml_call1(Stdlib_Char[1],low & 255))}, + write_untagged_float32= + function(ob,x) + {return write_untagged_int32 + (ob,runtime.caml_int32_bits_of_float(x))}, + float_endianness= + [246, + function(_bC_) + {var match=caml_string_unsafe_get(1.,0); + if(63 === match)return 3305632; + if(match)throw [0,Assert_failure,_m_]; + return 624392470}], + read_untagged_float64= + function(ib) + {var + i=read(ib,8), + s=ib[1], + x=runtime.caml_obj_block(Stdlib_Obj[14],8), + _by_=caml_obj_tag(float_endianness), + _bz_= + 250 === _by_ + ?float_endianness[1] + :246 === _by_ + ?caml_call1(CamlinternalLazy[2],float_endianness) + :float_endianness; + if(624392470 <= _bz_) + {var j=0; + for(;;) + {caml_bytes_unsafe_set + (x,7 - j | 0,caml_bytes_unsafe_get(s,i + j | 0)); + var _bA_=j + 1 | 0; + if(7 !== j){var j=_bA_;continue} + break}} + else + {var j$0=0; + for(;;) + {caml_bytes_unsafe_set + (x,j$0,caml_bytes_unsafe_get(s,i + j$0 | 0)); + var _bB_=j$0 + 1 | 0; + if(7 !== j$0){var j$0=_bB_;continue} + break}} + return x}, + write_untagged_float64= + function(ob,x) + {var + i=alloc(ob,8), + s=ob[1], + _bu_=caml_obj_tag(float_endianness), + _bv_= + 250 === _bu_ + ?float_endianness[1] + :246 === _bu_ + ?caml_call1(CamlinternalLazy[2],float_endianness) + :float_endianness; + if(624392470 <= _bv_) + {var j=0; + for(;;) + {caml_bytes_unsafe_set + (s,i + j | 0,caml_string_unsafe_get(x,7 - j | 0)); + var _bw_=j + 1 | 0; + if(7 !== j){var j=_bw_;continue} + return 0}} + var j$0=0; + for(;;) + {caml_bytes_unsafe_set + (s,i + j$0 | 0,caml_string_unsafe_get(x,j$0)); + var _bx_=j$0 + 1 | 0; + if(7 !== j$0){var j$0=_bx_;continue} + return 0}}, + write_untagged_int64= + function(ob,x) + {return write_untagged_float64 + (ob,runtime.caml_int64_float_of_bits(x))}, + safety_test= + function(param) + {var + y=read_untagged_float64(from_string(0,0,s)), + x=1.00146962706651288; + if(1.00146962706651288 != y)throw [0,Assert_failure,_n_]; + var ob=create$1(0,0,8); + write_untagged_float64(ob,x); + var _bt_=caml_string_notequal(contents(ob),s); + if(_bt_)throw [0,Assert_failure,_o_]; + return _bt_}, + write_untagged_string= + function(ob,s) + {write_untagged_uvint(ob,caml_ml_string_length(s)); + return add_string(ob,s)}, + write_unit= + function(ob,param) + {write_tag(ob,unit_tag);return write_untagged_unit(ob,0)}, + write_bool= + function(ob,x) + {write_tag(ob,bool_tag);return write_untagged_bool(ob,x)}, + write_char= + function(ob,x) + {write_tag(ob,int8_tag);return write_untagged_char(ob,x)}, + write_int8= + function(ob,x) + {write_tag(ob,int8_tag);return write_untagged_int8(ob,x)}, + write_int16= + function(ob,x) + {write_tag(ob,int16_tag);return write_untagged_int16(ob,x)}, + write_int32= + function(ob,x) + {write_tag(ob,int32_tag);return write_untagged_int32(ob,x)}, + write_int64= + function(ob,x) + {write_tag(ob,int64_tag);return write_untagged_int64(ob,x)}, + write_float32= + function(ob,x) + {write_tag(ob,float32_tag);return write_untagged_float32(ob,x)}, + write_float64= + function(ob,x) + {write_tag(ob,float64_tag);return write_untagged_float64(ob,x)}, + write_string= + function(ob,x) + {write_tag(ob,string_tag);return write_untagged_string(ob,x)}, + write_uvint= + function(ob,x) + {write_tag(ob,uvint_tag);return write_untagged_uvint(ob,x)}, + write_svint= + function(ob,x) + {write_tag(ob,svint_tag);return write_untagged_svint(ob,x)}, + write_t= + function(ob,tagged,x) + {var tagged$0=tagged,x$0=x; + for(;;) + {if(typeof x$0 === "number") + {if(tagged$0)write_tag(ob,unit_tag); + return write_untagged_unit(ob,0)} + var _a__=x$0[1]; + if(708012133 <= _a__) + {if(847309489 <= _a__) + {if(928626971 === _a__) + {var x$1=x$0[2]; + if(tagged$0)write_tag(ob,float32_tag); + return write_untagged_float32(ob,x$1)} + if(951901561 <= _a__) + {if(1063160078 <= _a__) + {var x$2=x$0[2]; + if(tagged$0)write_tag(ob,uvint_tag); + return write_untagged_uvint(ob,x$2)} + var o=x$0[2]; + if(tagged$0)write_tag(ob,array_tag); + if(o) + {var + match=o[1], + a=match[2], + node_tag=match[1], + len=a.length - 1; + write_untagged_uvint(ob,len); + var _a$_=0 < len?1:0; + if(_a$_) + {write_tag(ob,node_tag); + var + _ba_=0, + _bb_=function(_bs_){return write_t(ob,_ba_,_bs_)}; + return caml_call2(Stdlib_Array[13],_bb_,a)} + return _a$_} + return write_untagged_uvint(ob,0)} + if(928627642 <= _a__) + {var x$3=x$0[2]; + if(tagged$0)write_tag(ob,float64_tag); + return write_untagged_float64(ob,x$3)} + var a$0=x$0[2]; + if(tagged$0)write_tag(ob,record_tag); + write_untagged_uvint(ob,a$0.length - 1); + var + _bc_= + function(param) + {var x=param[3],h=param[2]; + write_hashtag(ob,h,1); + return write_t(ob,1,x)}; + return caml_call2(Stdlib_Array[13],_bc_,a$0)} + if(737456202 <= _a__) + {if(815034505 <= _a__) + {var x$4=x$0[2]; + if(tagged$0)write_tag(ob,int8_tag); + return write_untagged_char(ob,x$4)} + var x$5=x$0[2]; + if(tagged$0)write_tag(ob,bool_tag); + return write_untagged_bool(ob,x$5)} + if(726928360 <= _a__) + {var a$1=x$0[2]; + if(tagged$0)write_tag(ob,tuple_tag); + write_untagged_uvint(ob,a$1.length - 1); + var + _bd_=1, + _be_=function(_br_){return write_t(ob,_bd_,_br_)}; + return caml_call2(Stdlib_Array[13],_be_,a$1)} + var match$0=x$0[2],x$6=match$0[3],h=match$0[2]; + if(tagged$0)write_tag(ob,variant_tag); + write_hashtag(ob,h,0 !== x$6?1:0); + if(x$6){var x$7=x$6[1],tagged$0=1,x$0=x$7;continue} + return 0} + if(-775957819 <= _a__) + {if(412180492 <= _a__) + {if(504440814 <= _a__) + {var o$0=x$0[2]; + if(tagged$0)write_tag(ob,table_tag); + if(o$0) + {var + match$1=o$0[1], + a$2=match$1[2], + fields=match$1[1], + row_num=a$2.length - 1; + write_untagged_uvint(ob,row_num); + var _bf_=0 < row_num?1:0; + if(_bf_) + {var col_num=fields.length - 1; + write_untagged_uvint(ob,col_num); + var + _bg_= + function(param) + {var tag=param[3],h=param[2]; + write_hashtag(ob,h,1); + return write_tag(ob,tag)}; + caml_call2(Stdlib_Array[13],_bg_,fields); + var _bh_=0 < row_num?1:0; + if(_bh_) + {var _bj_=row_num - 1 | 0,_bi_=0; + if(! (_bj_ < 0)) + {var i=_bi_; + for(;;) + {var ai=caml_check_bound(a$2,i)[1 + i]; + if(ai.length - 1 !== col_num) + caml_call1(Stdlib[1],cst_Bi_io_write_t_Malformed_Ta); + var _bn_=col_num - 1 | 0,_bm_=0; + if(! (_bn_ < 0)) + {var j=_bm_; + for(;;) + {write_t(ob,0,caml_check_bound(ai,j)[1 + j]); + var _bp_=j + 1 | 0; + if(_bn_ !== j){var j=_bp_;continue} + break}} + var _bo_=i + 1 | 0; + if(_bj_ !== i){var i=_bo_;continue} + break}} + var _bk_=0} + else + var _bk_=_bh_; + var _bl_=_bk_} + else + var _bl_=_bf_; + return _bl_} + return write_untagged_uvint(ob,0)} + var x$8=x$0[2]; + if(tagged$0)write_tag(ob,svint_tag); + return write_untagged_svint(ob,x$8)} + if(221365804 <= _a__) + {var match$2=x$0[2],x$9=match$2[2],i$0=match$2[1]; + if(tagged$0)write_tag(ob,num_variant_tag); + write_numtag(ob,i$0,0 !== x$9?1:0); + if(x$9){var x$10=x$9[1],tagged$0=1,x$0=x$10;continue} + return 0} + var x$11=x$0[2]; + if(tagged$0)write_tag(ob,shared_tag); + var + offset= + caml_call3 + (_a_[3],ob[7],[0,x$11,dummy_type_id],ob[4] + ob[3] | 0); + write_untagged_uvint(ob,offset); + var _bq_=0 === offset?1:0; + if(_bq_){var tagged$0=1,x$0=x$11;continue} + return _bq_} + if(-783416530 <= _a__) + {if(-783415859 <= _a__) + {var x$12=x$0[2]; + if(tagged$0)write_tag(ob,int64_tag); + return write_untagged_int64(ob,x$12)} + var x$13=x$0[2]; + if(tagged$0)write_tag(ob,int32_tag); + return write_untagged_int32(ob,x$13)} + if(-783416972 <= _a__) + {var x$14=x$0[2]; + if(tagged$0)write_tag(ob,int16_tag); + return write_untagged_int16(ob,x$14)} + var s=x$0[2]; + if(tagged$0)write_tag(ob,string_tag); + return write_untagged_string(ob,s)}}, + write_tree=function(ob,x){return write_t(ob,1,x)}, + string_of_tree= + function(x) + {var ob=create$1(0,0,1000);write_tree(ob,x);return contents(ob)}, + tag_of_tree= + function(x) + {if(typeof x === "number")return unit_tag; + var _a9_=x[1]; + return 708012133 <= _a9_ + ?847309489 <= _a9_ + ?928626971 === _a9_ + ?float32_tag + :951901561 <= _a9_ + ?1063160078 <= _a9_?uvint_tag:array_tag + :928627642 <= _a9_?float64_tag:record_tag + :737456202 <= _a9_ + ?815034505 <= _a9_?int8_tag:bool_tag + :726928360 <= _a9_?tuple_tag:variant_tag + :-775957819 <= _a9_ + ?412180492 <= _a9_ + ?504440814 <= _a9_?table_tag:svint_tag + :221365804 <= _a9_?num_variant_tag:shared_tag + :-783416530 <= _a9_ + ?-783415859 <= _a9_?int64_tag:int32_tag + :-783416972 <= _a9_?int16_tag:string_tag}, + read_tag=function(ib){return read_char(ib)}, + read_untagged_unit= + function(ib) + {var match=read_char(ib); + return match?error(cst_Corrupted_data_unit_value):0}, + read_untagged_bool= + function(ib) + {var match=read_char(ib); + return 1 === match + ?1 + :match?error(cst_Corrupted_data_bool_value):0}, + read_untagged_char=function(ib){return read_char(ib)}, + read_untagged_int8=function(ib){return read_char(ib)}, + read_untagged_int16= + function(ib) + {var i=read(ib,2),s=ib[1],_a8_=caml_bytes_get(s,i + 1 | 0); + return caml_bytes_get(s,i) << 8 | _a8_}, + read_untagged_int32= + function(ib) + {var + i=read(ib,4), + s=ib[1], + _a6_=caml_bytes_get(s,i + 1 | 0), + x1=caml_bytes_get(s,i) << 8 | _a6_, + _a7_=caml_bytes_get(s,i + 3 | 0), + x2=caml_bytes_get(s,i + 2 | 0) << 8 | _a7_; + return x1 << 16 | x2}, + read_untagged_float32= + function(ib) + {return runtime.caml_int32_float_of_bits(read_untagged_int32(ib))}, + read_untagged_int64= + function(ib) + {return runtime.caml_int64_bits_of_float + (read_untagged_float64(ib))}, + read_untagged_string= + function(ib) + {var + len=read_untagged_uvint(ib), + str=caml_create_bytes(len), + pos=[0,0], + rem=[0,len]; + for(;;) + {if(0 < rem[1]) + {var bytes_read=try_preread(ib,rem[1]); + if(0 === bytes_read) + error(cst_Corrupted_data_string); + else + {caml_call5 + (Stdlib_Bytes[11],ib[1],ib[2],str,pos[1],bytes_read); + ib[2] = ib[2] + bytes_read | 0; + pos[1] = pos[1] + bytes_read | 0; + rem[1] = rem[1] - bytes_read | 0} + continue} + return caml_call1(Stdlib_Bytes[6],str)}}, + read_unit=function(ib){read_untagged_unit(ib);return 948106916}, + read_bool=function(ib){return [0,737456202,read_untagged_bool(ib)]}, + read_int8=function(ib){return [0,815034505,read_untagged_char(ib)]}, + read_int16= + function(ib){return [0,-783416972,read_untagged_int16(ib)]}, + read_int32= + function(ib){return [0,-783416530,read_untagged_int32(ib)]}, + read_int64= + function(ib){return [0,-783415859,read_untagged_int64(ib)]}, + read_float32= + function(ib){return [0,928626971,read_untagged_float32(ib)]}, + read_float64= + function(ib){return [0,928627642,read_untagged_float64(ib)]}, + read_uvint= + function(ib){return [0,1063160078,read_untagged_uvint(ib)]}, + read_svint= + function(ib){return [0,412180492,read_untagged_svint(ib)]}, + read_string= + function(ib){return [0,-976970511,read_untagged_string(ib)]}, + read_tree= + function(opt,ib) + {if(opt)var sth=opt[1],unhash=sth;else var unhash=make_unhash(0); + function read_array(ib) + {var len=read_untagged_uvint(ib); + if(0 === len)return _p_; + var tag=read_tag(ib),read=reader_of_tag(tag); + function _a5_(param){return caml_call1(read,ib)} + return [0, + 951901561, + [0,[0,tag,caml_call2(Stdlib_Array[2],len,_a5_)]]]} + function reader_of_tag(param) + {if(! (26 < param >>> 0)) + switch(param) + {case 0:return read_bool; + case 1:return read_int8; + case 2:return read_int16; + case 3:return read_int32; + case 4:return read_int64; + case 11:return read_float32; + case 12:return read_float64; + case 16:return read_uvint; + case 17:return read_svint; + case 18:return read_string; + case 19:return read_array; + case 20:return read_tuple; + case 21:return read_record; + case 22:return read_num_variant; + case 23:return read_variant; + case 24:return read_unit; + case 25:return read_table; + case 26:return read_shared + } + return error(cst_Corrupted_data_invalid_tag)} + function read_tree(ib) + {return caml_call1(reader_of_tag(read_tag(ib)),ib)} + function read_tuple(ib) + {var len=read_untagged_uvint(ib); + function _a4_(param){return read_tree(ib)} + return [0,726928360,caml_call2(Stdlib_Array[2],len,_a4_)]} + function read_record(ib) + {var len=read_untagged_uvint(ib); + function _a3_(param) + {var + h=read_field_hashtag(ib), + name=caml_call1(unhash,h), + x=read_tree(ib); + return [0,name,h,x]} + return [0,847309489,caml_call2(Stdlib_Array[2],len,_a3_)]} + function read_num_variant_cont(ib,i,has_arg) + {var x=has_arg?[0,read_tree(ib)]:0; + return [0,221365804,[0,i,x]]} + function read_num_variant(ib) + {return read_numtag(ib,read_num_variant_cont)} + function read_variant_cont(ib,h,has_arg) + {var name=caml_call1(unhash,h),x=has_arg?[0,read_tree(ib)]:0; + return [0,708012133,[0,name,h,x]]} + function read_variant(ib) + {return read_hashtag(ib,read_variant_cont)} + function read_table(ib) + {var row_num=read_untagged_uvint(ib); + if(0 === row_num)return _q_; + var col_num=read_untagged_uvint(ib); + function _aZ_(param) + {var + h=read_field_hashtag(ib), + name=caml_call1(unhash,h), + tag=read_tag(ib); + return [0,name,h,tag]} + var fields=caml_call2(Stdlib_Array[2],col_num,_aZ_); + function _a0_(param) + {var tag=param[3];return reader_of_tag(tag)} + var readers=caml_call2(Stdlib_Array[15],_a0_,fields); + function _a1_(param) + {function _a2_(j) + {return caml_call1(caml_check_bound(readers,j)[1 + j],ib)} + return caml_call2(Stdlib_Array[2],col_num,_a2_)} + var a=caml_call2(Stdlib_Array[2],row_num,_a1_); + return [0,504440814,[0,[0,fields,a]]]} + function read_shared(ib) + {var pos=ib[4] + ib[2] | 0,offset=read_untagged_uvint(ib); + if(0 === offset) + {var r=[]; + runtime.caml_update_dummy(r,[0,-775957819,r]); + caml_call3(Rd[3],ib[7],[0,pos,dummy_type_id],r); + var x=read_tree(ib); + r[2] = x; + return r} + return caml_call2 + (Rd[4],ib[7],[0,pos - offset | 0,dummy_type_id])} + return read_tree(ib)}, + tree_of_string= + function(unhash,s){return read_tree(unhash,from_string(0,0,s))}, + skip_bytes=function(ib,n){read(ib,n);return 0}, + skip_unit=function(ib){return skip_bytes(ib,1)}, + skip_bool=function(ib){return skip_bytes(ib,1)}, + skip_int8=function(ib){return skip_bytes(ib,1)}, + skip_int16=function(ib){return skip_bytes(ib,2)}, + skip_int32=function(ib){return skip_bytes(ib,4)}, + skip_int64=function(ib){return skip_bytes(ib,8)}, + skip_float32=function(ib){return skip_bytes(ib,4)}, + skip_float64=function(ib){return skip_bytes(ib,8)}, + skip_uvint=function(ib){read_untagged_uvint(ib);return 0}, + skip_svint=function(ib){read_untagged_svint(ib);return 0}, + skip_string= + function(ib) + {var len=read_untagged_uvint(ib);return skip_bytes(ib,len)}, + skipper_of_tag= + function(param) + {if(! (25 < param >>> 0)) + switch(param) + {case 0:return skip_bool; + case 1:return skip_int8; + case 2:return skip_int16; + case 3:return skip_int32; + case 4:return skip_int64; + case 11:return skip_float32; + case 12:return skip_float64; + case 16:return skip_uvint; + case 17:return skip_svint; + case 18:return skip_string; + case 19:return skip_array; + case 20:return skip_tuple; + case 21:return skip_record; + case 22:return skip_num_variant; + case 23:return skip_variant; + case 24:return skip_unit; + case 25:return skip_table + } + return error(cst_Corrupted_data_invalid_tag$0)}, + skip_array= + function(ib) + {var len=read_untagged_uvint(ib); + if(0 === len)return 0; + var tag=read_tag(ib),read=skipper_of_tag(tag),_aX_=1; + if(! (len < 1)) + {var i=_aX_; + for(;;) + {caml_call1(read,ib); + var _aY_=i + 1 | 0; + if(len !== i){var i=_aY_;continue} + break}} + return 0}, + skip= + function(ib){return caml_call1(skipper_of_tag(read_tag(ib)),ib)}, + skip_tuple= + function(ib) + {var len=read_untagged_uvint(ib),_aV_=1; + if(! (len < 1)) + {var i=_aV_; + for(;;) + {skip(ib); + var _aW_=i + 1 | 0; + if(len !== i){var i=_aW_;continue} + break}} + return 0}, + skip_record= + function(ib) + {var len=read_untagged_uvint(ib),_aT_=1; + if(! (len < 1)) + {var i=_aT_; + for(;;) + {read_field_hashtag(ib); + skip(ib); + var _aU_=i + 1 | 0; + if(len !== i){var i=_aU_;continue} + break}} + return 0}, + skip_num_variant_cont= + function(ib,i,has_arg){return has_arg?skip(ib):has_arg}, + skip_num_variant= + function(ib){return read_numtag(ib,skip_num_variant_cont)}, + skip_variant_cont= + function(ib,h,has_arg){return has_arg?skip(ib):has_arg}, + skip_variant= + function(ib){return read_hashtag(ib,skip_variant_cont)}, + skip_table= + function(ib) + {var row_num=read_untagged_uvint(ib); + if(0 === row_num)return 0; + var col_num=read_untagged_uvint(ib); + function _aO_(param) + {read_field_hashtag(ib);return skipper_of_tag(read_tag(ib))} + var readers=caml_call2(Stdlib_Array[2],col_num,_aO_),_aP_=1; + if(! (row_num < 1)) + {var i=_aP_; + for(;;) + {var _aQ_=1; + if(! (col_num < 1)) + {var j=_aQ_; + for(;;) + {caml_call1(caml_check_bound(readers,j)[1 + j],ib); + var _aS_=j + 1 | 0; + if(col_num !== j){var j=_aS_;continue} + break}} + var _aR_=i + 1 | 0; + if(row_num !== i){var i=_aR_;continue} + break}} + return 0}, + array=Easy_format[2], + record=Easy_format[2], + _r_=Easy_format[2], + tuple= + [0, + 0, + _r_[2], + _r_[3], + _r_[4], + 0, + _r_[6], + 0, + _r_[8], + _r_[9], + _r_[10], + _r_[11], + _r_[12], + _r_[13], + _r_[14]], + map= + function(f,a) + {var len=a.length - 1; + if(0 === len) + var _aN_=[0]; + else + {var + r=caml_make_vect(len,caml_call1(f,a[1])), + _aL_=len - 1 | 0, + _aK_=1; + if(! (_aL_ < 1)) + {var i=_aK_; + for(;;) + {r[1 + i] = caml_call1(f,a[1 + i]); + var _aM_=i + 1 | 0; + if(_aL_ !== i){var i=_aM_;continue} + break}} + var _aN_=r} + return caml_call1(Stdlib_Array[11],_aN_)}, + format= + function(shared,x) + {var x$0=x; + for(;;) + {if(typeof x$0 === "number")return [0,cst_unit,Easy_format[1]]; + var _ad_=x$0[1]; + if(708012133 <= _ad_) + {if(847309489 <= _ad_) + {if(928626971 === _ad_) + {var x$1=x$0[2],_ae_=Easy_format[1]; + return [0,caml_call1(Stdlib[35],x$1),_ae_]} + if(951901561 <= _ad_) + {if(1063160078 <= _ad_) + {var x$2=x$0[2],_af_=Easy_format[1]; + return [0,caml_call1(Stdlib[33],x$2),_af_]} + var _ag_=x$0[2]; + if(_ag_) + {var match=_ag_[1],a=match[2]; + return [1, + [0,cst$3,cst$2,cst$1,array], + map(function(_aJ_){return format(shared,_aJ_)},a)]} + return [0,cst$4,Easy_format[1]]} + if(928627642 <= _ad_) + {var x$3=x$0[2],_ah_=Easy_format[1]; + return [0,caml_call1(Stdlib[35],x$3),_ah_]} + var a$0=x$0[2]; + return [1, + [0,cst$7,cst$6,cst$5,record], + map + (function(param) + {var x=param[3],h=param[2],o=param[1]; + if(o) + var s=o[1],s$0=caml_call2(Stdlib_Printf[4],_B_,s); + else + var s$0=caml_call2(Stdlib_Printf[4],_D_,h); + var + _aG_=format(shared,x), + _aH_=Easy_format[3], + _aI_=Easy_format[1]; + return [2, + [0,[0,caml_call2(Stdlib_Printf[4],_C_,s$0),_aI_],_aH_], + _aG_]}, + a$0)]} + if(737456202 <= _ad_) + {if(815034505 <= _ad_) + {var x$4=x$0[2],_ai_=Easy_format[1]; + return [0,caml_call2(Stdlib_Printf[4],_s_,x$4),_ai_]} + var + x$5=x$0[2], + _aj_=Easy_format[1], + _ak_=x$5?cst_true:cst_false; + return [0,_ak_,_aj_]} + if(726928360 <= _ad_) + {var a$1=x$0[2]; + return [1, + [0,cst$10,cst$9,cst$8,tuple], + map(function(_aF_){return format(shared,_aF_)},a$1)]} + var + match$0=x$0[2], + o=match$0[3], + h=match$0[2], + opt_name=match$0[1]; + if(opt_name) + var s=opt_name[1],name=caml_call2(Stdlib_Printf[4],_t_,s); + else + var name=caml_call2(Stdlib_Printf[4],_u_,h); + if(o) + {var + x$6=o[1], + _al_=format(shared,x$6), + _am_=Easy_format[3], + _an_=Easy_format[1]; + return [1, + [0,cst$14,cst$13,cst$12,tuple], + [0, + [2, + [0,[0,caml_call2(Stdlib[28],name,cst$11),_an_],_am_], + _al_], + 0]]} + var + _ao_=Easy_format[1], + _ap_=caml_call2(Stdlib[28],name,cst$15); + return [0,caml_call2(Stdlib[28],cst$16,_ap_),_ao_]} + if(-775957819 <= _ad_) + {if(412180492 <= _ad_) + {if(504440814 <= _ad_) + {var _aq_=x$0[2]; + if(_aq_) + {var + match$1=_aq_[1], + aa=match$1[2], + header=match$1[1], + _ar_= + function(header) + {return function(a) + {function _aE_(i,x) + {var + match=caml_check_bound(header,i)[1 + i], + h=match[2], + s=match[1]; + return [0,s,h,x]} + return [0,847309489,caml_call2(Stdlib_Array[16],_aE_,a)]}} + (header), + x$7= + [0, + 951901561, + [0,[0,record_tag,caml_call2(Stdlib_Array[15],_ar_,aa)]]], + x$0=x$7; + continue} + return [0,cst$17,Easy_format[1]]} + var x$8=x$0[2],_as_=Easy_format[1]; + return [0,caml_call1(Stdlib[33],x$8),_as_]} + if(221365804 <= _ad_) + {var + match$2=x$0[2], + o$0=match$2[2], + i=match$2[1], + suffix=0 === i?cst$18:caml_call1(Stdlib[33],i); + if(o$0) + {var + x$9=o$0[1], + _at_=Easy_format[1], + cons=[0,caml_call2(Stdlib[28],cst_Some,suffix),_at_], + _au_=format(shared,x$9); + return [2,[0,cons,Easy_format[3]],_au_]} + var _av_=Easy_format[1]; + return [0,caml_call2(Stdlib[28],cst_None,suffix),_av_]} + var x$10=x$0[2],p=shared[2],tbl=shared[1]; + p[1]++; + var + pos=p[1], + offset=caml_call3(_a_[3],tbl,[0,x$10,dummy_type_id],pos); + if(0 === offset) + {var + _aw_=format(shared,x$10), + _ax_=Easy_format[3], + _ay_=Easy_format[1]; + return [2, + [0,[0,caml_call2(Stdlib_Printf[4],_v_,pos),_ay_],_ax_], + _aw_]} + var _az_=Easy_format[1]; + return [0, + caml_call2(Stdlib_Printf[4],_w_,pos - offset | 0), + _az_]} + if(-783416530 <= _ad_) + {if(-783415859 <= _ad_) + {var x$11=x$0[2],_aA_=Easy_format[1]; + return [0,caml_call2(Stdlib_Printf[4],_x_,x$11),_aA_]} + var x$12=x$0[2],_aB_=Easy_format[1]; + return [0,caml_call2(Stdlib_Printf[4],_y_,x$12),_aB_]} + if(-783416972 <= _ad_) + {var x$13=x$0[2],_aC_=Easy_format[1]; + return [0,caml_call2(Stdlib_Printf[4],_z_,x$13),_aC_]} + var s$0=x$0[2],_aD_=Easy_format[1]; + return [0,caml_call2(Stdlib_Printf[4],_A_,s$0),_aD_]}}, + init=function(param){return [0,caml_call1(_a_[1],512),[0,0]]}, + view_of_tree= + function(t) + {var _ac_=format(init(0),t); + return caml_call3(Easy_format[4][4],0,0,_ac_)}, + print_view_of_tree= + function(t) + {var _ab_=format(init(0),t); + return caml_call3(Easy_format[4][6],0,0,_ab_)}, + output_view_of_tree= + function(oc,t) + {var _aa_=format(init(0),t); + return caml_call4(Easy_format[4][5],0,0,oc,_aa_)}, + view= + function(unhash,s){return view_of_tree(tree_of_string(unhash,s))}, + print_view= + function(unhash,s) + {return print_view_of_tree(tree_of_string(unhash,s))}, + output_view= + function(unhash,oc,s) + {return output_view_of_tree(oc,tree_of_string(unhash,s))}, + Bi_io= + [0, + bool_tag, + int8_tag, + int16_tag, + int32_tag, + int64_tag, + float32_tag, + float64_tag, + uvint_tag, + svint_tag, + string_tag, + array_tag, + tuple_tag, + record_tag, + num_variant_tag, + variant_tag, + unit_tag, + table_tag, + shared_tag, + write_tag, + read_tag, + hash_name, + write_hashtag, + string_of_hashtag, + read_hashtag, + read_field_hashtag, + make_unhash, + write_numtag, + read_numtag, + write_untagged_unit, + write_untagged_bool, + write_untagged_char, + write_untagged_int8, + write_untagged_int16, + write_untagged_int32, + write_untagged_int64, + write_untagged_float32, + write_untagged_float64, + write_untagged_string, + write_untagged_uvint, + write_untagged_svint, + write_unit, + write_bool, + write_char, + write_int8, + write_int16, + write_int32, + write_int64, + write_float32, + write_float64, + write_string, + write_uvint, + write_svint, + read_untagged_unit, + read_untagged_bool, + read_untagged_char, + read_untagged_int8, + read_untagged_int16, + read_untagged_int32, + read_untagged_int64, + read_untagged_float32, + read_untagged_float64, + read_untagged_string, + read_untagged_uvint, + read_untagged_svint, + skip, + write_tree, + string_of_tree, + read_tree, + tree_of_string, + tag_of_tree, + view_of_tree, + view, + print_view_of_tree, + print_view, + output_view_of_tree, + output_view, + safety_test]; + caml_register_global(118,Bi_io,"Bi_io"); + var + split= + function(s) + {var + acc=[0,0], + stop=[0,caml_ml_string_length(s)], + _Y_=stop[1] - 1 | 0; + if(! (_Y_ < 0)) + {var i=_Y_; + for(;;) + {if(44 === caml_string_get(s,i)) + {var start=i + 1 | 0,___=acc[1]; + acc[1] + = + [0, + caml_call3(Stdlib_String[15],s,start,stop[1] - start | 0), + ___]; + stop[1] = i} + var _$_=i - 1 | 0; + if(0 !== i){var i=_$_;continue} + break}} + var _Z_=acc[1]; + return [0,caml_call3(Stdlib_String[15],s,0,stop[1]),_Z_]}, + load_lines= + function(accu,s) + {var ic=caml_call1(Stdlib[79],s),l=[0,accu]; + try + {for(;;) + {var _W_=caml_call1(Stdlib_List[9],l[1]); + l[1] = [0,caml_call1(Stdlib[83],ic),_W_]; + continue}} + catch(_X_) + {_X_ = caml_wrap_exception(_X_); + if(_X_ === Stdlib[12]){caml_call1(Stdlib[93],ic);return l[1]} + throw _X_}}, + load= + function(ic) + {var buf=caml_call1(Stdlib_Buffer[1],1000); + try + {for(;;) + {var _U_=caml_call1(Stdlib[82],ic); + caml_call2(Stdlib_Buffer[12],buf,_U_); + continue}} + catch(_V_) + {_V_ = caml_wrap_exception(_V_); + if(_V_ === Stdlib[12])return caml_call1(Stdlib_Buffer[2],buf); + throw _V_}}, + symbol=Stdlib_Filename[4], + default_dict_path= + function(param) + {try + {var + _R_=Stdlib_Sys[4], + _S_= + caml_string_notequal(_R_,cst_Cygwin) + ?caml_string_notequal(_R_,cst_Unix) + ?caml_string_notequal(_R_,cst_Win32) + ?0 + :[0, + caml_call2 + (symbol,caml_sys_getenv(cst_HOMEPATH),cst_bdump_dict)] + :[0, + caml_call2 + (symbol,caml_sys_getenv(cst_HOME),cst_bdump_dict$0)] + :[0, + caml_call2 + (symbol,caml_sys_getenv(cst_HOME$0),cst_bdump_dict$1)]; + return _S_} + catch(_T_) + {_T_ = caml_wrap_exception(_T_); + if(_T_ === Stdlib[8])return 0; + throw _T_}}, + load_dictionary= + function(dic_file,accu) + {if(dic_file) + {var fn=dic_file[1]; + if(runtime.caml_sys_file_exists(fn)) + try + {var _Q_=load_lines(accu,fn);return _Q_} + catch(e) + {e = caml_wrap_exception(e); + var + _O_=caml_call1(Stdlib_Printexc[1],e), + _P_=caml_call3(Stdlib_Printf[4],_E_,fn,_O_); + return caml_call1(Stdlib[2],_P_)} + return accu} + return accu}, + write_uniq= + function(oc,a) + {var _J_=0 < a.length - 1?1:0; + if(_J_) + {var _K_=caml_check_bound(a,0)[1]; + caml_call3(Stdlib_Printf[1],oc,_F_,_K_); + var + _L_=caml_check_bound(a,0)[1], + _M_= + function(last,x) + {if(caml_string_notequal(last,x)) + caml_call3(Stdlib_Printf[1],oc,_G_,x); + return x}; + caml_call3(Stdlib_Array[17],_M_,_L_,a); + var _N_=0} + else + var _N_=_J_; + return _N_}, + save_dictionary= + function(dic_file,l) + {if(dic_file) + {var fn=dic_file[1],a=caml_call1(Stdlib_Array[12],l); + caml_call2(Stdlib_Array[32],Stdlib_String[9],a); + var + oc=caml_call1(Stdlib[60],fn), + finally$0=function(param){return caml_call1(Stdlib[77],oc)}; + try + {write_uniq(oc,a);var _I_=finally$0(0);return _I_} + catch(e){e = caml_wrap_exception(e);finally$0(0);throw e}} + return 0}, + Bi_dump= + [0, + split, + load_lines, + load, + symbol, + default_dict_path, + load_dictionary, + write_uniq, + save_dictionary]; + caml_register_global(122,Bi_dump,"Bi_dump"); + return} + throw [0,Assert_failure,_H_]} + r[1] = r[1] >>> 1 | 0; + c[1]++; + continue}} + (globalThis)); + + //# 1 "../../.js/yojson/yojson.cma.js" (function(globalThis) {"use strict"; @@ -31907,12 +33939,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, @@ -31936,13 +33968,39 @@ :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$10=caml_string_of_jsbytes(")"), + cst$1=caml_string_of_jsbytes(")"), cst_None=caml_string_of_jsbytes("None"), cst_Null$2=caml_string_of_jsbytes("`Null"), cst_Some$1=caml_string_of_jsbytes("(Some "), - cst$77=caml_string_of_jsbytes(")"), + cst$33=caml_string_of_jsbytes(")"), cst_None$1=caml_string_of_jsbytes("None"), cst_Unexpected_end_of_input$92= caml_string_of_jsbytes("Unexpected end of input"), @@ -32021,9 +34079,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$15=caml_string_of_jsbytes("-Infinity"), - cst_Infinity$16=caml_string_of_jsbytes("Infinity"), - cst_NaN$7=caml_string_of_jsbytes("NaN"), + cst_Infinity$21=caml_string_of_jsbytes("-Infinity"), + cst_Infinity$22=caml_string_of_jsbytes("Infinity"), + cst_NaN$10=caml_string_of_jsbytes("NaN"), cst_Expected_a_number_but_foun$1= caml_string_of_jsbytes ("Expected a number but found a string that doesn't even represent a number"), @@ -32126,7 +34184,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$78=caml_string_of_jsbytes("/*"), + cst$34=caml_string_of_jsbytes("/*"), cst_Unexpected_end_of_input$131= caml_string_of_jsbytes("Unexpected end of input"), cst_Invalid_token$14=caml_string_of_jsbytes("Invalid token"), @@ -32142,7 +34200,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$79=caml_string_of_jsbytes("/*"), + cst$35=caml_string_of_jsbytes("/*"), cst_Expected_or_but_found$42= caml_string_of_jsbytes("Expected ',' or '}' but found"), cst_Unexpected_end_of_input$135= @@ -32163,7 +34221,7 @@ caml_string_of_jsbytes("Expected '>' but found"), cst_Unexpected_end_of_input$139= caml_string_of_jsbytes("Unexpected end of input"), - cst$80=caml_string_of_jsbytes("*/"), + cst$36=caml_string_of_jsbytes("*/"), cst_Unterminated_comment$4=caml_string_of_jsbytes("Unterminated comment"), stream$1=[0,1], cst_Blank_input_data$4=caml_string_of_jsbytes("Blank input data"), @@ -32172,37 +34230,22 @@ 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_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_Root_is_not_an_object_or_a$3= + caml_string_of_jsbytes("Root is not an object or array"), + cst_true$3=caml_string_of_jsbytes("true"), + cst_false$3=caml_string_of_jsbytes("false"), + cst_null$5=caml_string_of_jsbytes("null"), cst_b$2=caml_string_of_jsbytes("\\b"), cst_t$2=caml_string_of_jsbytes("\\t"), cst_n$2=caml_string_of_jsbytes("\\n"), cst_f$2=caml_string_of_jsbytes("\\f"), cst_r$2=caml_string_of_jsbytes("\\r"), - cst$60=caml_string_of_jsbytes('\\"'), - cst$59=caml_string_of_jsbytes("\\\\"), + cst$32=caml_string_of_jsbytes('\\"'), + cst$31=caml_string_of_jsbytes("\\\\"), cst_u00$2=caml_string_of_jsbytes("\\u00"), cst_Null$1=caml_string_of_jsbytes("`Null"), cst_Some$0=caml_string_of_jsbytes("(Some "), - cst$55=caml_string_of_jsbytes(")"), + cst$27=caml_string_of_jsbytes(")"), cst_None$0=caml_string_of_jsbytes("None"), cst_Unexpected_end_of_input$44= caml_string_of_jsbytes("Unexpected end of input"), @@ -32281,9 +34324,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$13=caml_string_of_jsbytes("-Infinity"), - cst_Infinity$14=caml_string_of_jsbytes("Infinity"), - cst_NaN$6=caml_string_of_jsbytes("NaN"), + cst_Infinity$19=caml_string_of_jsbytes("-Infinity"), + cst_Infinity$20=caml_string_of_jsbytes("Infinity"), + cst_NaN$9=caml_string_of_jsbytes("NaN"), cst_Expected_a_number_but_foun$0= caml_string_of_jsbytes ("Expected a number but found a string that doesn't even represent a number"), @@ -32386,7 +34429,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$56=caml_string_of_jsbytes("/*"), + cst$28=caml_string_of_jsbytes("/*"), cst_Unexpected_end_of_input$83= caml_string_of_jsbytes("Unexpected end of input"), cst_Invalid_token$11=caml_string_of_jsbytes("Invalid token"), @@ -32402,7 +34445,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$57=caml_string_of_jsbytes("/*"), + cst$29=caml_string_of_jsbytes("/*"), cst_Expected_or_but_found$26= caml_string_of_jsbytes("Expected ',' or '}' but found"), cst_Unexpected_end_of_input$87= @@ -32423,7 +34466,7 @@ caml_string_of_jsbytes("Expected '>' but found"), cst_Unexpected_end_of_input$91= caml_string_of_jsbytes("Unexpected end of input"), - cst$58=caml_string_of_jsbytes("*/"), + cst$30=caml_string_of_jsbytes("*/"), cst_Unterminated_comment$2=caml_string_of_jsbytes("Unterminated comment"), cst_Expected_two_objects_check$0= caml_string_of_jsbytes("Expected two objects, check inputs"), @@ -32454,7 +34497,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$6=caml_string_of_jsbytes("null"), + cst_null$4=caml_string_of_jsbytes("null"), cst_object$0=caml_string_of_jsbytes("object"), cst_array$0=caml_string_of_jsbytes("array"), cst_bool$0=caml_string_of_jsbytes("bool"), @@ -32471,54 +34514,50 @@ 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_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= + cst_Root_is_not_an_object_or_a$2= + caml_string_of_jsbytes("Root is not an object or array"), + cst_NaN_value_not_allowed_in_s$7= caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$9= + cst_Infinity_value_not_allowed$15= caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$10= + cst_Infinity_value_not_allowed$16= caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - cst_NaN_value_not_allowed_in_s$3= + cst_NaN_value_not_allowed_in_s$6= caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_0$7=caml_string_of_jsbytes(".0"), - cst_Infinity_value_not_allowed$7= + cst_0$13=caml_string_of_jsbytes(".0"), + cst_Infinity_value_not_allowed$13= caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$8= + cst_Infinity_value_not_allowed$14= caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - 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_NaN_value_not_allowed_in_s$5= + caml_string_of_jsbytes("NaN value not allowed in standard JSON"), + cst_0$12=caml_string_of_jsbytes(".0"), + cst_Infinity_value_not_allowed$11= + caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$12= + caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), + cst_NaN$8=caml_string_of_jsbytes("NaN"), + cst_Infinity$17=caml_string_of_jsbytes("Infinity"), + cst_Infinity$18=caml_string_of_jsbytes("-Infinity"), + cst_0$11=caml_string_of_jsbytes(".0"), + cst_NaN$7=caml_string_of_jsbytes("NaN"), + cst_0$10=caml_string_of_jsbytes(".0"), + cst_Infinity$15=caml_string_of_jsbytes("Infinity"), + cst_Infinity$16=caml_string_of_jsbytes("-Infinity"), + cst_NaN$6=caml_string_of_jsbytes("NaN"), + cst_0$9=caml_string_of_jsbytes(".0"), + cst_Infinity$13=caml_string_of_jsbytes("Infinity"), + cst_Infinity$14=caml_string_of_jsbytes("-Infinity"), + cst_true$2=caml_string_of_jsbytes("true"), + cst_false$2=caml_string_of_jsbytes("false"), + cst_null$3=caml_string_of_jsbytes("null"), cst_b$1=caml_string_of_jsbytes("\\b"), cst_t$1=caml_string_of_jsbytes("\\t"), cst_n$1=caml_string_of_jsbytes("\\n"), cst_f$1=caml_string_of_jsbytes("\\f"), cst_r$1=caml_string_of_jsbytes("\\r"), - cst$38=caml_string_of_jsbytes('\\"'), - cst$37=caml_string_of_jsbytes("\\\\"), + cst$26=caml_string_of_jsbytes('\\"'), + cst$25=caml_string_of_jsbytes("\\\\"), cst_u00$1=caml_string_of_jsbytes("\\u00"), cst_Null$0=caml_string_of_jsbytes("`Null"), cst_Invalid_token=caml_string_of_jsbytes("Invalid token"), @@ -32597,9 +34636,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$7=caml_string_of_jsbytes("-Infinity"), - cst_Infinity$8=caml_string_of_jsbytes("Infinity"), - cst_NaN$3=caml_string_of_jsbytes("NaN"), + cst_Infinity$11=caml_string_of_jsbytes("-Infinity"), + cst_Infinity$12=caml_string_of_jsbytes("Infinity"), + cst_NaN$5=caml_string_of_jsbytes("NaN"), cst_Expected_a_number_but_foun= caml_string_of_jsbytes ("Expected a number but found a string that doesn't even represent a number"), @@ -32700,7 +34739,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$34=caml_string_of_jsbytes("/*"), + cst$22=caml_string_of_jsbytes("/*"), cst_Unexpected_end_of_input$38= caml_string_of_jsbytes("Unexpected end of input"), cst_Invalid_token$8=caml_string_of_jsbytes("Invalid token"), @@ -32712,7 +34751,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$35=caml_string_of_jsbytes("/*"), + cst$23=caml_string_of_jsbytes("/*"), cst_Expected_or_but_found$11= caml_string_of_jsbytes("Expected ',' or '}' but found"), cst_Unexpected_end_of_input$41= @@ -32725,7 +34764,7 @@ caml_string_of_jsbytes("Expected ':' but found"), cst_Unexpected_end_of_input$43= caml_string_of_jsbytes("Unexpected end of input"), - cst$36=caml_string_of_jsbytes("*/"), + cst$24=caml_string_of_jsbytes("*/"), cst_Unterminated_comment$0=caml_string_of_jsbytes("Unterminated comment"), cst_Expected_two_objects_check= caml_string_of_jsbytes("Expected two objects, check inputs"), @@ -32756,7 +34795,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$3=caml_string_of_jsbytes("null"), + cst_null$2=caml_string_of_jsbytes("null"), cst_object=caml_string_of_jsbytes("object"), cst_array=caml_string_of_jsbytes("array"), cst_bool=caml_string_of_jsbytes("bool"), @@ -32775,87 +34814,105 @@ 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_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_Root_is_not_an_object_or_a$1= + caml_string_of_jsbytes("Root is not an object or array"), + cst_NaN_value_not_allowed_in_s$4= + caml_string_of_jsbytes("NaN value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$9= + caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$10= + caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), + cst_NaN_value_not_allowed_in_s$3= + caml_string_of_jsbytes("NaN value not allowed in standard JSON"), + cst_0$8=caml_string_of_jsbytes(".0"), + cst_Infinity_value_not_allowed$7= + caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$8= + caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), cst_NaN_value_not_allowed_in_s$2= caml_string_of_jsbytes("NaN value not allowed in standard JSON"), + cst_0$7=caml_string_of_jsbytes(".0"), cst_Infinity_value_not_allowed$5= caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), cst_Infinity_value_not_allowed$6= caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - cst_NaN_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$4=caml_string_of_jsbytes("NaN"), + cst_Infinity$9=caml_string_of_jsbytes("Infinity"), + cst_Infinity$10=caml_string_of_jsbytes("-Infinity"), + cst_0$6=caml_string_of_jsbytes(".0"), + cst_NaN$3=caml_string_of_jsbytes("NaN"), + cst_0$5=caml_string_of_jsbytes(".0"), + cst_Infinity$7=caml_string_of_jsbytes("Infinity"), + cst_Infinity$8=caml_string_of_jsbytes("-Infinity"), cst_NaN$2=caml_string_of_jsbytes("NaN"), + cst_0$4=caml_string_of_jsbytes(".0"), cst_Infinity$5=caml_string_of_jsbytes("Infinity"), cst_Infinity$6=caml_string_of_jsbytes("-Infinity"), - cst_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_true$1=caml_string_of_jsbytes("true"), + cst_false$1=caml_string_of_jsbytes("false"), cst_null$1=caml_string_of_jsbytes("null"), cst_b$0=caml_string_of_jsbytes("\\b"), cst_t$0=caml_string_of_jsbytes("\\t"), cst_n$0=caml_string_of_jsbytes("\\n"), cst_f$0=caml_string_of_jsbytes("\\f"), cst_r$0=caml_string_of_jsbytes("\\r"), - cst$19=caml_string_of_jsbytes('\\"'), - cst$18=caml_string_of_jsbytes("\\\\"), + cst$21=caml_string_of_jsbytes('\\"'), + cst$20=caml_string_of_jsbytes("\\\\"), cst_u00$0=caml_string_of_jsbytes("\\u00"), cst_null$0=caml_string_of_jsbytes("null"), - cst$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$2=caml_string_of_jsbytes("}"), + cst$3=caml_string_of_jsbytes(","), + cst$4=caml_string_of_jsbytes("{"), + cst$5=caml_string_of_jsbytes("{}"), + cst$6=caml_string_of_jsbytes("]"), + cst$7=caml_string_of_jsbytes(","), + cst$8=caml_string_of_jsbytes("["), + cst$9=caml_string_of_jsbytes("[]"), + cst$10=caml_string_of_jsbytes("()"), + cst$11=caml_string_of_jsbytes(")"), + cst$12=caml_string_of_jsbytes(","), + cst$13=caml_string_of_jsbytes("("), + cst_true$0=caml_string_of_jsbytes("true"), + cst_false$0=caml_string_of_jsbytes("false"), + cst$14=caml_string_of_jsbytes(":"), + cst$15=caml_string_of_jsbytes("<"), + cst$16=caml_string_of_jsbytes(">"), + cst$17=caml_string_of_jsbytes(""), + cst$18=caml_string_of_jsbytes(">"), + cst$19=caml_string_of_jsbytes("<"), + cst_Root_is_not_an_object_or_a$0= + caml_string_of_jsbytes + ("Root is not an object or array as requested by the JSON standard"), + cst_Root_is_not_an_object_or_a= + caml_string_of_jsbytes("Root is not an object or array"), + cst_NaN_value_not_allowed_in_s$1= + caml_string_of_jsbytes("NaN value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$3= + caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$4= + caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), cst_NaN_value_not_allowed_in_s$0= caml_string_of_jsbytes("NaN value not allowed in standard JSON"), + cst_0$3=caml_string_of_jsbytes(".0"), cst_Infinity_value_not_allowed$1= caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), cst_Infinity_value_not_allowed$2= caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), cst_NaN_value_not_allowed_in_s= caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_0$1=caml_string_of_jsbytes(".0"), + cst_0$2=caml_string_of_jsbytes(".0"), cst_Infinity_value_not_allowed= caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), cst_Infinity_value_not_allowed$0= caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), + cst_NaN$1=caml_string_of_jsbytes("NaN"), + cst_Infinity$3=caml_string_of_jsbytes("Infinity"), + cst_Infinity$4=caml_string_of_jsbytes("-Infinity"), + cst_0$1=caml_string_of_jsbytes(".0"), cst_NaN$0=caml_string_of_jsbytes("NaN"), + cst_0$0=caml_string_of_jsbytes(".0"), cst_Infinity$1=caml_string_of_jsbytes("Infinity"), cst_Infinity$2=caml_string_of_jsbytes("-Infinity"), - cst_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"), @@ -32871,7 +34928,7 @@ cst$0=caml_string_of_jsbytes('\\"'), cst=caml_string_of_jsbytes("\\\\"), cst_u00=caml_string_of_jsbytes("\\u00"), - version=caml_string_of_jsbytes("2.0.2"), + version=caml_string_of_jsbytes("1.7.0"), cst_Yojson_Json_error=caml_string_of_jsbytes("Yojson.Json_error"), cst_Yojson_End_of_array=caml_string_of_jsbytes("Yojson.End_of_array"), cst_Yojson_End_of_object=caml_string_of_jsbytes("Yojson.End_of_object"), @@ -32948,41 +35005,46 @@ 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, - Stdlib_Buffer=global_data.Stdlib__Buffer, + Bi_outbuf=global_data.Bi_outbuf, Stdlib_String=global_data.Stdlib__String, Stdlib_List=global_data.Stdlib__List, Stdlib_Format=global_data.Stdlib__Format, Assert_failure=global_data.Assert_failure, Stdlib_Bytes=global_data.Stdlib__Bytes, + Stdlib_Stream=global_data.Stdlib__Stream, Stdlib_Printf=global_data.Stdlib__Printf, - Stdlib_Seq=global_data.Stdlib__Seq, + Easy_format=global_data.Easy_format, Stdlib_Char=global_data.Stdlib__Char, Stdlib_Lexing=global_data.Stdlib__Lexing, - Json_error=[248,cst_Yojson_Json_error,caml_fresh_oo_id(0)], - _V_= + _a_=[0,951901561,0], + _b_=[0,848054398,0], + _c_=[0,848054398,0], + ___= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _N_= + _S_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _B_= + _G_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _C_= + _H_= [0, [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], caml_string_of_jsbytes("(@[")], - _D_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _E_= + _I_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _J_= [0, [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(",@ ")], - _F_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _z_= + _K_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _E_= [0, [11, caml_string_of_jsbytes("`Assoc ("), @@ -32993,7 +35055,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Assoc (@[")], - _A_= + _F_= [0, [18, [1, @@ -33002,12 +35064,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _G_= + _L_= [0, [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], caml_string_of_jsbytes("@,]@]")], - _H_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _I_= + _M_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _N_= [0, [11, caml_string_of_jsbytes("`Floatlit ("), @@ -33018,34 +35080,34 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Floatlit (@[")], - _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("@,]@]")], + _O_=[0,[3,0,0],caml_string_of_jsbytes("%S")], _P_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], _Q_= + [0, + [11, + caml_string_of_jsbytes("`List ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`List (@[")], + _R_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _T_= + [0, + [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], + caml_string_of_jsbytes("@,]@]")], + _U_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _V_= [0, [11, caml_string_of_jsbytes("`Bool ("), @@ -33056,9 +35118,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Bool (@[")], - _R_=[0,[9,0,0],caml_string_of_jsbytes("%B")], - _S_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _T_= + _W_=[0,[9,0,0],caml_string_of_jsbytes("%B")], + _X_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _Y_= [0, [11, caml_string_of_jsbytes("`Tuple ("), @@ -33069,7 +35131,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Tuple (@[")], - _U_= + _Z_= [0, [18, [1, @@ -33078,12 +35140,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("@,]@]")], - _X_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _Y_= + _aa_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ab_= [0, [11, caml_string_of_jsbytes("`Variant ("), @@ -33094,18 +35156,18 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Variant (@[")], - _Z_= + _ac_= [0, [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], caml_string_of_jsbytes("(@[")], - ___=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _$_= + _ad_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _ae_= [0, [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(",@ ")], - _aa_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _ab_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _af_= + _af_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ag_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ak_= [0, [11, caml_string_of_jsbytes("`Float ("), @@ -33116,9 +35178,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Float (@[")], - _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_= + _al_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")], + _am_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _an_= [0, [11, caml_string_of_jsbytes("`Int ("), @@ -33129,9 +35191,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Int (@[")], - _aj_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], - _ak_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _al_= + _ao_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _ap_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _aq_= [0, [11, caml_string_of_jsbytes("`Stringlit ("), @@ -33142,9 +35204,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Stringlit (@[")], - _am_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _an_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _ao_= + _ar_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _as_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _at_= [0, [11, caml_string_of_jsbytes("`String ("), @@ -33155,9 +35217,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`String (@[")], - _ap_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _aq_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _ac_= + _au_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _av_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ah_= [0, [11, caml_string_of_jsbytes("`Intlit ("), @@ -33168,31 +35230,31 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Intlit (@[")], - _ad_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _ae_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _d2_= + _ai_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _aj_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _de_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _dU_= + _c8_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _dI_= + _cW_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _dJ_= + _cX_= [0, [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], caml_string_of_jsbytes("(@[")], - _dK_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _dL_= + _cY_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _cZ_= [0, [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(",@ ")], - _dM_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _dG_= + _c0_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cU_= [0, [11, caml_string_of_jsbytes("`Assoc ("), @@ -33203,7 +35265,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Assoc (@[")], - _dH_= + _cV_= [0, [18, [1, @@ -33212,12 +35274,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _dN_= + _c1_= [0, [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], caml_string_of_jsbytes("@,]@]")], - _dO_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _dP_= + _c2_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _c3_= [0, [11, caml_string_of_jsbytes("`Floatlit ("), @@ -33228,9 +35290,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Floatlit (@[")], - _dQ_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _dR_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _dS_= + _c4_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _c5_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _c6_= [0, [11, caml_string_of_jsbytes("`List ("), @@ -33241,7 +35303,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`List (@[")], - _dT_= + _c7_= [0, [18, [1, @@ -33250,12 +35312,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _dV_= + _c9_= [0, [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], caml_string_of_jsbytes("@,]@]")], - _dW_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _dX_= + _c__=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _c$_= [0, [11, caml_string_of_jsbytes("`Bool ("), @@ -33266,9 +35328,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Bool (@[")], - _dY_=[0,[9,0,0],caml_string_of_jsbytes("%B")], - _dZ_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _d0_= + _da_=[0,[9,0,0],caml_string_of_jsbytes("%B")], + _db_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dc_= [0, [11, caml_string_of_jsbytes("`Tuple ("), @@ -33279,7 +35341,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Tuple (@[")], - _d1_= + _dd_= [0, [18, [1, @@ -33288,12 +35350,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _d3_= + _df_= [0, [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], caml_string_of_jsbytes("@,]@]")], - _d4_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _d5_= + _dg_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dh_= [0, [11, caml_string_of_jsbytes("`Variant ("), @@ -33304,18 +35366,18 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Variant (@[")], - _d6_= + _di_= [0, [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], caml_string_of_jsbytes("(@[")], - _d7_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _d8_= + _dj_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _dk_= [0, [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(",@ ")], - _d9_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _d__=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _d$_= + _dl_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dm_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dn_= [0, [11, caml_string_of_jsbytes("`Stringlit ("), @@ -33326,9 +35388,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Stringlit (@[")], - _ea_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _eb_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _ec_= + _do_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _dp_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dq_= [0, [11, caml_string_of_jsbytes("`Intlit ("), @@ -33339,37 +35401,37 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Intlit (@[")], - _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_= + _dr_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _ds_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dE_=[0,737456202,1], + _dF_=[0,737456202,0], + _dG_=[0,928231259,caml_string_of_jsbytes("NaN")], + _dH_=[0,928231259,caml_string_of_jsbytes("Infinity")], + _dI_=[0,928231259,caml_string_of_jsbytes("-Infinity")], + _dB_= [0, [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[2,0,[12,39,0]]]]], caml_string_of_jsbytes("%s '%s%s'")], - _em_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], - _el_= + _dA_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], + _dz_= [0, [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], caml_string_of_jsbytes("%s '%s'")], - _eh_= + _dv_= [0, [11, caml_string_of_jsbytes("File "), [2,0,[11,caml_string_of_jsbytes(", line"),0]]], caml_string_of_jsbytes("File %s, line")], - _ei_= + _dw_= [0, [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], caml_string_of_jsbytes("byte %i")], - _ek_= + _dy_= [0, [11,caml_string_of_jsbytes("bytes "),[4,3,0,0,[12,45,[4,3,0,0,0]]]], caml_string_of_jsbytes("bytes %i-%i")], - _ej_= + _dx_= [0, [2, 0, @@ -33383,119 +35445,9 @@ caml_string_of_jsbytes(", "), [2,0,[11,caml_string_of_jsbytes(":\n"),[2,0,0]]]]]]], caml_string_of_jsbytes("%s %i, %s:\n%s")], - _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_= + _du_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13], + _dt_=[0,[15,0],caml_string_of_jsbytes("%a")], + _cR_= [0, [11, caml_string_of_jsbytes("src="), @@ -33509,29 +35461,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%!")], - _cz_= + _b4_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _cN_= + _cg_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _cE_= + _b9_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _cF_= + _b__= [0, [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], caml_string_of_jsbytes("(@[")], - _cG_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _cH_= + _b$_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _ca_= [0, [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(",@ ")], - _cI_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cC_= + _cb_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _b7_= [0, [11, caml_string_of_jsbytes("`Assoc ("), @@ -33542,7 +35494,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Assoc (@[")], - _cD_= + _b8_= [0, [18, [1, @@ -33551,12 +35503,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _cJ_= + _cc_= [0, [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], caml_string_of_jsbytes("@,]@]")], - _cK_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cL_= + _cd_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ce_= [0, [11, caml_string_of_jsbytes("`List ("), @@ -33567,7 +35519,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`List (@[")], - _cM_= + _cf_= [0, [18, [1, @@ -33576,12 +35528,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _cO_= + _ch_= [0, [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], caml_string_of_jsbytes("@,]@]")], - _cP_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cQ_= + _ci_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cj_= [0, [11, caml_string_of_jsbytes("`Bool ("), @@ -33592,9 +35544,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Bool (@[")], - _cR_=[0,[9,0,0],caml_string_of_jsbytes("%B")], - _cS_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cT_= + _ck_=[0,[9,0,0],caml_string_of_jsbytes("%B")], + _cl_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cm_= [0, [11, caml_string_of_jsbytes("`Variant ("), @@ -33605,18 +35557,18 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Variant (@[")], - _cU_= + _cn_= [0, [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], caml_string_of_jsbytes("(@[")], - _cV_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _cW_= + _co_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _cp_= [0, [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(",@ ")], - _cX_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cY_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cx_= + _cq_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cr_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _b2_= [0, [11, caml_string_of_jsbytes("`Tuple ("), @@ -33627,7 +35579,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Tuple (@[")], - _cy_= + _b3_= [0, [18, [1, @@ -33636,12 +35588,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _cA_= + _b5_= [0, [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], caml_string_of_jsbytes("@,]@]")], - _cB_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cZ_= + _b6_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cs_= [0, [11, caml_string_of_jsbytes("`Float ("), @@ -33652,9 +35604,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Float (@[")], - _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_= + _ct_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")], + _cu_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cv_= [0, [11, caml_string_of_jsbytes("`Int ("), @@ -33665,9 +35617,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Int (@[")], - _c3_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], - _c4_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _c5_= + _cw_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _cx_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cy_= [0, [11, caml_string_of_jsbytes("`Intlit ("), @@ -33678,9 +35630,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Intlit (@[")], - _c6_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _c7_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _c8_= + _cz_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _cA_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cB_= [0, [11, caml_string_of_jsbytes("`String ("), @@ -33691,34 +35643,34 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`String (@[")], - _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_= + _cC_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _cD_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cP_=[0,737456202,1], + _cQ_=[0,737456202,0], + _cM_= [0, [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[2,0,[12,39,0]]]]], caml_string_of_jsbytes("%s '%s%s'")], - _dg_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], - _df_= + _cL_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], + _cK_= [0, [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], caml_string_of_jsbytes("%s '%s'")], - _db_= + _cG_= [0, [11, caml_string_of_jsbytes("File "), [2,0,[11,caml_string_of_jsbytes(", line"),0]]], caml_string_of_jsbytes("File %s, line")], - _dc_= + _cH_= [0, [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], caml_string_of_jsbytes("byte %i")], - _de_= + _cJ_= [0, [11,caml_string_of_jsbytes("bytes "),[4,3,0,0,[12,45,[4,3,0,0,0]]]], caml_string_of_jsbytes("bytes %i-%i")], - _dd_= + _cI_= [0, [2, 0, @@ -33732,140 +35684,32 @@ caml_string_of_jsbytes(", "), [2,0,[11,caml_string_of_jsbytes(":\n"),[2,0,0]]]]]]], caml_string_of_jsbytes("%s %i, %s:\n%s")], - _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")], + _cF_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13], + _cE_=[0,[15,0],caml_string_of_jsbytes("%a")], + _b0_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _b1_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], _bZ_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _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_= + _bI_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _bJ_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")], + _bK_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")], + _bL_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")], + _bM_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")], + _bN_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")], + _bO_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")], + _bP_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")], + _bQ_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")], + _bR_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")], + _bS_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")], + _bT_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")], + _bU_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")], + _bV_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")], + _bW_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")], + _bX_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")], + _bY_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _bG_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _bH_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _bF_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _bC_= [0, [11, caml_string_of_jsbytes("src="), @@ -33879,25 +35723,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%!")], - _bs_= + _ba_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _bj_= + _a3_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _bk_= + _a4_= [0, [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], caml_string_of_jsbytes("(@[")], - _bl_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _bm_= + _a5_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _a6_= [0, [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(",@ ")], - _bn_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _bh_= + _a7_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _a1_= [0, [11, caml_string_of_jsbytes("`Assoc ("), @@ -33908,7 +35752,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Assoc (@[")], - _bi_= + _a2_= [0, [18, [1, @@ -33917,12 +35761,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _bo_= + _a8_= [0, [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], caml_string_of_jsbytes("@,]@]")], - _bp_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _bq_= + _a9_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _a__= [0, [11, caml_string_of_jsbytes("`List ("), @@ -33933,361 +35777,137 @@ 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(""),0], - caml_string_of_jsbytes("")]], - 0], - caml_string_of_jsbytes("@[")], - _ba_= + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _bb_= [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>]")], - _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("@]")], + [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], + caml_string_of_jsbytes("@,]@]")], + _bc_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], _bd_= - [0, - [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("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, - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0], - caml_string_of_jsbytes("@[")], - _au_= - [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>}")], - _av_=[0,[17,0,0],caml_string_of_jsbytes("@]")], - _aw_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0], - caml_string_of_jsbytes("@[")], - _ax_= - [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>]")], - _az_= - [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>]")], - _ay_=[0,[17,0,0],caml_string_of_jsbytes("@]")], - _aA_= - [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - 0], - caml_string_of_jsbytes("@[")], - _aB_= - [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>)")], - _aC_=[0,[17,0,0],caml_string_of_jsbytes("@]")], - _aD_= - [0, - [12, - 60, + caml_string_of_jsbytes("`Bool ("), [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_= + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Bool (@[")], + _be_=[0,[9,0,0],caml_string_of_jsbytes("%B")], + _bf_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bg_= [0, - [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_= + [11, + caml_string_of_jsbytes("`Float ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Float (@[")], + _bh_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")], + _bi_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bj_= [0, - [18, - [1, - [0, - [11,caml_string_of_jsbytes(""),0], - caml_string_of_jsbytes("")]], - [15,[17,0,0]]], - caml_string_of_jsbytes("@[%a@]")], - _as_= + [11, + caml_string_of_jsbytes("`Int ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Int (@[")], + _bk_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _bl_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bm_= [0, - [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_= + [11, + caml_string_of_jsbytes("`String ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`String (@[")], + _bn_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _bo_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bA_=[0,737456202,1], + _bB_=[0,737456202,0], + _bx_= + [0, + [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[2,0,[12,39,0]]]]], + caml_string_of_jsbytes("%s '%s%s'")], + _bw_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], + _bv_= + [0, + [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], + caml_string_of_jsbytes("%s '%s'")], + _br_= + [0, + [11, + caml_string_of_jsbytes("File "), + [2,0,[11,caml_string_of_jsbytes(", line"),0]]], + caml_string_of_jsbytes("File %s, line")], + _bs_= + [0, + [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], + caml_string_of_jsbytes("byte %i")], + _bu_= + [0, + [11,caml_string_of_jsbytes("bytes "),[4,3,0,0,[12,45,[4,3,0,0,0]]]], + caml_string_of_jsbytes("bytes %i-%i")], + _bt_= + [0, + [2, + 0, + [12, + 32, + [4, + 3, + 0, + 0, + [11, + caml_string_of_jsbytes(", "), + [2,0,[11,caml_string_of_jsbytes(":\n"),[2,0,0]]]]]]], + caml_string_of_jsbytes("%s %i, %s:\n%s")], + _bq_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13], + _bp_=[0,[15,0],caml_string_of_jsbytes("%a")], + _aZ_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _a0_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _aY_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _aH_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _aI_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")], + _aJ_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")], + _aK_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")], + _aL_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")], + _aM_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")], + _aN_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")], + _aO_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")], + _aP_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")], + _aQ_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")], + _aR_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")], + _aS_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")], + _aT_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")], + _aU_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")], + _aV_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")], + _aW_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")], + _aX_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _aF_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _aG_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _aE_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _aB_= [0, [11, caml_string_of_jsbytes("src="), @@ -34301,7 +35921,196 @@ 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%!")], - _a_=[0,caml_string_of_jsbytes("common.ml"),57,4]; + _aA_=[0,[2,0,[12,58,0]],caml_string_of_jsbytes("%s:")], + _aw_=[0,[15,0],caml_string_of_jsbytes("%a")], + _C_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _D_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _B_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _k_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _l_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")], + _m_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")], + _n_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")], + _o_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")], + _p_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")], + _q_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")], + _r_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")], + _s_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")], + _t_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")], + _u_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")], + _v_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")], + _w_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")], + _x_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")], + _y_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")], + _z_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")], + _A_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _i_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _j_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _h_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _e_= + [0, + [11, + caml_string_of_jsbytes("src="), + [3, + 0, + [11, + caml_string_of_jsbytes(" start="), + [4, + 3, + 0, + 0, + [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]], + caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")], + _d_=[0,caml_string_of_jsbytes("common.ml"),57,4]; + function biniou_of_json(param) + {if(typeof param === "number")return 948106916; + var _li_=param[1]; + if(708012133 <= _li_) + {if(726928360 === _li_) + {var l=param[2],_lj_=caml_call1(Stdlib_Array[12],l); + return [0, + 726928360, + caml_call2(Stdlib_Array[15],biniou_of_json,_lj_)]} + if(848054398 <= _li_) + {if(963043957 <= _li_) + {var + l$0=param[2], + _lk_=caml_call1(Stdlib_Array[12],l$0), + _ll_= + function(param) + {var x=param[2],s=param[1],_lu_=biniou_of_json(x); + return [0,[0,s],caml_call1(Bi_io[21],s),_lu_]}, + a=caml_call2(Stdlib_Array[15],_ll_,_lk_); + return [0,847309489,a]} + var l$1=param[2]; + if(l$1) + {var + _lm_=caml_call1(Stdlib_Array[12],l$1), + a$0=caml_call2(Stdlib_Array[15],biniou_of_json,_lm_), + _ln_=caml_check_bound(a$0,0)[1], + tag=caml_call1(Bi_io[70],_ln_); + try + {var _lp_=a$0.length - 1 - 1 | 0,_lo_=1; + if(! (_lp_ < 1)) + {var i=_lo_; + for(;;) + {var _lr_=caml_check_bound(a$0,i)[1 + i]; + if(caml_call1(Bi_io[70],_lr_) !== tag)throw Stdlib[3]; + var _ls_=i + 1 | 0; + if(_lp_ !== i){var i=_ls_;continue} + break}} + var _lq_=[0,951901561,[0,[0,tag,a$0]]]; + return _lq_} + catch(_lt_) + {_lt_ = caml_wrap_exception(_lt_); + if(_lt_ === Stdlib[3]) + return caml_call1(Stdlib[2],cst_Cannot_convert_heterogenou); + throw _lt_}} + return _a_} + if(737456202 <= _li_){var b=param[2];return [0,737456202,b]} + var match=param[2],o=match[2],s=match[1]; + if(o)var x=o[1],o$0=[0,biniou_of_json(x)];else var o$0=0; + return [0,708012133,[0,[0,s],caml_call1(Bi_io[21],s),o$0]]} + if(3654863 <= _li_) + {if(365180284 <= _li_){var f=param[2];return [0,928627642,f]} + var i$0=param[2]; + return [0,412180492,i$0]} + if(-752863768 <= _li_) + return caml_call1(Stdlib[2],cst_Cannot_convert_big_int_to_); + var s$0=param[2]; + return [0,-976970511,s$0]} + function json_of_biniou(x) + {if(typeof x === "number")return 870828711; + var _k3_=x[1]; + if(708012133 <= _k3_) + {if(847309489 <= _k3_) + {if(951901561 <= _k3_) + {if(1063160078 <= _k3_) + return caml_call1(Stdlib[2],cst_Cannot_convert_uvint_to_JS); + var _k4_=x[2]; + if(_k4_) + {var + match=_k4_[1], + a=match[2], + _k5_=caml_call2(Stdlib_Array[15],json_of_biniou,a); + return [0,848054398,caml_call1(Stdlib_Array[11],_k5_)]} + return _b_} + if(928626971 <= _k3_){var f=x[2];return [0,365180284,f]} + var + a$0=x[2], + _k6_= + function(param) + {var _lh_=param[1]; + if(_lh_) + {var x=param[3],s=_lh_[1];return [0,s,json_of_biniou(x)]} + return caml_call1(Stdlib[2],cst_Cannot_convert_hashed_fiel)}, + _k7_=caml_call2(Stdlib_Array[15],_k6_,a$0); + return [0,963043957,caml_call1(Stdlib_Array[11],_k7_)]} + if(737456202 <= _k3_) + {if(815034505 <= _k3_) + return caml_call1(Stdlib[2],cst_Cannot_convert_int8_to_JSO); + var b=x[2]; + return [0,737456202,b]} + if(726928360 <= _k3_) + {var a$1=x[2],_k8_=caml_call2(Stdlib_Array[15],json_of_biniou,a$1); + return [0,726928360,caml_call1(Stdlib_Array[11],_k8_)]} + var _k9_=x[2],_k__=_k9_[1]; + if(_k__) + {var _k$_=_k9_[3],_la_=_k__[1]; + if(_k$_) + {var x$0=_k$_[1]; + return [0,708012133,[0,_la_,[0,json_of_biniou(x$0)]]]} + return [0,708012133,[0,_la_,0]]} + return caml_call1(Stdlib[2],cst_Cannot_convert_hashed_vari)} + if(-775957819 <= _k3_) + {if(412180492 <= _k3_) + {if(504440814 <= _k3_) + {var _lb_=x[2]; + if(_lb_) + {var + match$0=_lb_[1], + rows=match$0[2], + header=match$0[1], + _lc_= + function(a) + {var n=header.length - 1; + if(a.length - 1 !== n) + caml_call1(Stdlib[2],cst_Malformed_biniou_table); + var l=[0,0],_le_=n - 1 | 0; + if(! (_le_ < 0)) + {var i=_le_; + for(;;) + {var + match=caml_check_bound(header,i)[1 + i], + o=match[1], + x=caml_check_bound(a,i)[1 + i]; + if(o) + {var s=o[1],_lf_=l[1]; + l[1] = [0,[0,s,json_of_biniou(x)],_lf_]} + else + caml_call1(Stdlib[2],cst_Cannot_convert_hashed_fiel$0); + var _lg_=i - 1 | 0; + if(0 !== i){var i=_lg_;continue} + break}} + return [0,963043957,l[1]]}, + _ld_=caml_call2(Stdlib_Array[15],_lc_,rows); + return [0,848054398,caml_call1(Stdlib_Array[11],_ld_)]} + return _c_} + var i=x[2]; + return [0,3654863,i]} + return 221365804 <= _k3_ + ?caml_call1(Stdlib[2],cst_Cannot_convert_num_variant) + :caml_call1(Stdlib[2],cst_Cannot_convert_shared_node)} + if(-783416530 <= _k3_) + return -783415859 <= _k3_ + ?caml_call1(Stdlib[2],cst_Cannot_convert_int64_to_JS) + :caml_call1(Stdlib[2],cst_Cannot_convert_int32_to_JS); + if(-783416972 <= _k3_) + return caml_call1(Stdlib[2],cst_Cannot_convert_int16_to_JS); + var s=x[2]; + return [0,-976970511,s]} + var Yojson_biniou=[0,biniou_of_json,json_of_biniou]; + caml_register_global(1022,Yojson_biniou,"Yojson_biniou"); + var Json_error=[248,cst_Yojson_Json_error,caml_fresh_oo_id(0)]; function json_error(s){throw [0,Json_error,s]} var End_of_array=[248,cst_Yojson_End_of_array,caml_fresh_oo_id(0)], @@ -34309,7 +36118,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=Stdlib_Buffer[12]; + {var add=Bi_outbuf[15]; function maxbits(n,x){return 0 === (x >>> n | 0)?1:0} if(maxbits(7,x))return caml_call2(add,buf,caml_call1(Stdlib_Char[1],x)); if(maxbits(11,x)) @@ -34352,55 +36161,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))} - throw [0,Assert_failure,_a_]} + throw [0,Assert_failure,_d_]} function utf8_of_surrogate_pair(buf,i,j) {var high10=i - 55296 | 0,low10=j - 56320 | 0; return utf8_of_code(buf,65536 + (high10 << 10 | low10) | 0)} + function is_object_or_array(x) + {if(typeof x !== "number") + {var _k2_=x[1],switch$0=0; + if(848054398 === _k2_ || 963043957 === _k2_)switch$0 = 1; + if(switch$0)return 1} + return 0} var Lexer_state=[0]; function init_lexer(buf,fname,opt,param) {if(opt)var sth=opt[1],lnum=sth;else var lnum=1; if(buf) var buf$0=buf[1],buf$1=buf$0; else - var buf$1=caml_call1(Stdlib_Buffer[1],256); + var buf$1=caml_call3(Bi_outbuf[3],0,0,256); return [0,buf$1,lnum,0,fname]} function hex(n) - {var _pl_=10 <= n?n + 87 | 0:n + 48 | 0; - return caml_call1(Stdlib_Char[1],_pl_)} + {var _k1_=10 <= n?n + 87 | 0:n + 48 | 0; + return caml_call1(Stdlib_Char[1],_k1_)} function write_special(src,start,stop,ob,str) - {caml_call4(Stdlib_Buffer[18],ob,src,start[1],stop - start[1] | 0); - caml_call2(Stdlib_Buffer[16],ob,str); + {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0); + caml_call2(Bi_outbuf[13],ob,str); start[1] = stop + 1 | 0; return 0} function finish_string(src,start,ob) {try {var - _pk_= + _k0_= caml_call4 - (Stdlib_Buffer[18], + (Bi_outbuf[14], ob, src, start[1], caml_ml_string_length(src) - start[1] | 0); - return _pk_} + return _k0_} catch(exc) {exc = caml_wrap_exception(exc); caml_call4 (Stdlib_Printf[3], - _b_, + _e_, src, start[1], caml_ml_string_length(src) - start[1] | 0); throw exc}} function write_string(ob,s) - {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_; + {caml_call2(Bi_outbuf[15],ob,34); + var start=[0,0],_kY_=caml_ml_string_length(s) - 1 | 0,_kX_=0; + if(! (_kY_ < 0)) + {var i$0=_kX_; for(;;) - {var c=caml_string_get(s,i); + {var c=caml_string_get(s,i$0); if(92 === c) - write_special(s,start,i,ob,cst); + write_special(s,start,i$0,ob,cst); else {var switch$0=0; if(35 <= c) @@ -34409,12 +36224,12 @@ if(8 <= c) {var switch$1=0; switch(c - 8 | 0) - {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 0:write_special(s,start,i$0,ob,cst_b);break; + case 1:write_special(s,start,i$0,ob,cst_t);break; + case 2:write_special(s,start,i$0,ob,cst_n);break; + case 4:write_special(s,start,i$0,ob,cst_f);break; + case 5:write_special(s,start,i$0,ob,cst_r);break; + case 26:write_special(s,start,i$0,ob,cst$0);break; case 24: case 25:switch$0 = 2;switch$1 = 1;break; default:switch$0 = 1;switch$1 = 1}} @@ -34423,52 +36238,52 @@ switch(switch$0) {case 2:break; case 1: - 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; + caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0); + var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1]; + caml_call5(Stdlib_Bytes[12],cst_u00,0,dst,i,4); + caml_bytes_set(dst,i + 4 | 0,hex(c >>> 4 | 0)); + caml_bytes_set(dst,i + 5 | 0,hex(c & 15)); + start[1] = i$0 + 1 | 0; break }} - var _pj_=i + 1 | 0; - if(_pi_ !== i){var i=_pj_;continue} + var _kZ_=i$0 + 1 | 0; + if(_kY_ !== i$0){var i$0=_kZ_;continue} break}} finish_string(s,start,ob); - return caml_call2(Stdlib_Buffer[12],ob,34)} + return caml_call2(Bi_outbuf[15],ob,34)} function json_string_of_string(s) - {var ob=caml_call1(Stdlib_Buffer[1],10); + {var ob=caml_call3(Bi_outbuf[3],0,0,10); write_string(ob,s); - return caml_call1(Stdlib_Buffer[2],ob)} + return caml_call1(Bi_outbuf[4],ob)} function write_null(ob,param) - {return caml_call2(Stdlib_Buffer[16],ob,cst_null)} + {return caml_call2(Bi_outbuf[13],ob,cst_null)} function write_bool(ob,x) - {var _pe_=x?cst_true:cst_false; - return caml_call2(Stdlib_Buffer[16],ob,_pe_)} + {var _kW_=x?cst_true:cst_false;return caml_call2(Bi_outbuf[13],ob,_kW_)} var - _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); + _f_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), + _g_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])), + max_digits=caml_call2(Stdlib[17],_g_,_f_); + function write_digits(s,pos,x) + {if(0 === x)return pos; var - n=caml_call1(Stdlib[18],d), - _pd_=caml_call1(Stdlib_Char[1],n + 48 | 0); - return caml_call2(Stdlib_Buffer[12],s,_pd_)} + d=x % 10 | 0, + pos$0=write_digits(s,pos,x / 10 | 0), + n=caml_call1(Stdlib[18],d); + caml_bytes_set(s,pos$0,caml_call1(Stdlib_Char[1],n + 48 | 0)); + return pos$0 + 1 | 0} function write_int(ob,x) - {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))} + {caml_call2(Bi_outbuf[9],ob,max_digits); + if(0 < x){ob[3] = write_digits(ob[1],ob[3],x);return 0} + if(0 <= x)return caml_call2(Bi_outbuf[15],ob,48); + var s=ob[1],pos=ob[3]; + caml_bytes_set(s,pos,45); + ob[3] = write_digits(s,pos + 1 | 0,x); + return 0} function float_needs_period(s) {try - {var _o$_=caml_ml_string_length(s) - 1 | 0,_o__=0; - if(! (_o$_ < 0)) - {var i=_o__; + {var _kS_=caml_ml_string_length(s) - 1 | 0,_kR_=0; + if(! (_kS_ < 0)) + {var i=_kR_; for(;;) {var match=caml_string_get(s,i),switch$0=0; if(48 <= match) @@ -34476,92 +36291,116 @@ else if(45 === match)switch$0 = 1; if(! switch$0)throw Stdlib[3]; - var _pb_=i + 1 | 0; - if(_o$_ !== i){var i=_pb_;continue} + var _kU_=i + 1 | 0; + if(_kS_ !== i){var i=_kU_;continue} break}} - var _pa_=1; - return _pa_} - catch(_pc_) - {_pc_ = caml_wrap_exception(_pc_); - if(_pc_ === Stdlib[3])return 0; - throw _pc_}} + var _kT_=1; + return _kT_} + catch(_kV_) + {_kV_ = caml_wrap_exception(_kV_); + if(_kV_ === Stdlib[3])return 0; + throw _kV_}} + function write_float_fast(ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var _kP_=0. < x?cst_Infinity:cst_Infinity$0; + return caml_call2(Bi_outbuf[13],ob,_kP_)} + if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN); + var s=caml_call2(Stdlib_Printf[4],_h_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _kQ_=float_needs_period(s); + return _kQ_?caml_call2(Bi_outbuf[13],ob,cst_0):_kQ_} function write_float(ob,x) {var match=caml_classify_float(x); if(3 === match) - {var _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 _kN_=0. < x?cst_Infinity$1:cst_Infinity$2; + return caml_call2(Bi_outbuf[13],ob,_kN_)} + if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$0); var - s1=caml_call2(Stdlib_Printf[4],_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_} + s1=caml_call2(Stdlib_Printf[4],_i_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_j_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _kO_=float_needs_period(s); + return _kO_?caml_call2(Bi_outbuf[13],ob,cst_0$0):_kO_} function write_normal_float_prec(significant_figures,ob,x) {var switcher=significant_figures - 1 | 0; if(15 < switcher >>> 0) - var s=caml_call2(Stdlib_Printf[4],_g_,x); + var s=caml_call2(Stdlib_Printf[4],_k_,x); else switch(switcher) - {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_} + {case 0:var s=caml_call2(Stdlib_Printf[4],_l_,x);break; + case 1:var s=caml_call2(Stdlib_Printf[4],_m_,x);break; + case 2:var s=caml_call2(Stdlib_Printf[4],_n_,x);break; + case 3:var s=caml_call2(Stdlib_Printf[4],_o_,x);break; + case 4:var s=caml_call2(Stdlib_Printf[4],_p_,x);break; + case 5:var s=caml_call2(Stdlib_Printf[4],_q_,x);break; + case 6:var s=caml_call2(Stdlib_Printf[4],_r_,x);break; + case 7:var s=caml_call2(Stdlib_Printf[4],_s_,x);break; + case 8:var s=caml_call2(Stdlib_Printf[4],_t_,x);break; + case 9:var s=caml_call2(Stdlib_Printf[4],_u_,x);break; + case 10:var s=caml_call2(Stdlib_Printf[4],_v_,x);break; + case 11:var s=caml_call2(Stdlib_Printf[4],_w_,x);break; + case 12:var s=caml_call2(Stdlib_Printf[4],_x_,x);break; + case 13:var s=caml_call2(Stdlib_Printf[4],_y_,x);break; + case 14:var s=caml_call2(Stdlib_Printf[4],_z_,x);break; + default:var s=caml_call2(Stdlib_Printf[4],_A_,x)} + caml_call2(Bi_outbuf[13],ob,s); + var _kM_=float_needs_period(s); + return _kM_?caml_call2(Bi_outbuf[13],ob,cst_0$1):_kM_} function write_float_prec(significant_figures,ob,x) {var match=caml_classify_float(x); if(3 === match) - {var _o6_=0. < x?cst_Infinity$1:cst_Infinity$2; - return caml_call2(Stdlib_Buffer[16],ob,_o6_)} + {var _kL_=0. < x?cst_Infinity$3:cst_Infinity$4; + return caml_call2(Bi_outbuf[13],ob,_kL_)} return 4 <= match - ?caml_call2(Stdlib_Buffer[16],ob,cst_NaN$0) + ?caml_call2(Bi_outbuf[13],ob,cst_NaN$1) :write_normal_float_prec(significant_figures,ob,x)} + function write_std_float_fast(ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var + _kJ_= + 0. < x + ?cst_Infinity_value_not_allowed + :cst_Infinity_value_not_allowed$0; + return json_error(_kJ_)} + if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s); + var s=caml_call2(Stdlib_Printf[4],_B_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _kK_=float_needs_period(s); + return _kK_?caml_call2(Bi_outbuf[13],ob,cst_0$2):_kK_} function write_std_float(ob,x) {var match=caml_classify_float(x); if(3 === match) {var - _o4_= + _kH_= 0. < x - ?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); + ?cst_Infinity_value_not_allowed$1 + :cst_Infinity_value_not_allowed$2; + return json_error(_kH_)} + if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$0); var - s1=caml_call2(Stdlib_Printf[4],_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_} + s1=caml_call2(Stdlib_Printf[4],_C_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_D_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _kI_=float_needs_period(s); + return _kI_?caml_call2(Bi_outbuf[13],ob,cst_0$3):_kI_} function write_std_float_prec(significant_figures,ob,x) {var match=caml_classify_float(x); if(3 === match) {var - _o3_= + _kG_= 0. < x - ?cst_Infinity_value_not_allowed$1 - :cst_Infinity_value_not_allowed$2; - return json_error(_o3_)} + ?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$0) + ?json_error(cst_NaN_value_not_allowed_in_s$1) :write_normal_float_prec(significant_figures,ob,x)} var - write_intlit=Stdlib_Buffer[16], - write_floatlit=Stdlib_Buffer[16], - write_stringlit=Stdlib_Buffer[16]; + write_intlit=Bi_outbuf[13], + write_floatlit=Bi_outbuf[13], + write_stringlit=Bi_outbuf[13]; function iter2(f_elt,f_sep,x,param$0) {if(param$0) {var l$0=param$0[2],y$0=param$0[1]; @@ -34576,370 +36415,349 @@ continue} return 0}} return 0} - 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 f_sep(ob){return caml_call2(Bi_outbuf[15],ob,44)} function write_tuple(ob,l) - {caml_call2(Stdlib_Buffer[12],ob,40); + {caml_call2(Bi_outbuf[15],ob,40); iter2(write_t,f_sep,ob,l); - return caml_call2(Stdlib_Buffer[12],ob,41)} + return caml_call2(Bi_outbuf[15],ob,41)} function write_list(ob,l) - {caml_call2(Stdlib_Buffer[12],ob,91); + {caml_call2(Bi_outbuf[15],ob,91); iter2(write_t,f_sep,ob,l); - return caml_call2(Stdlib_Buffer[12],ob,93)} + return caml_call2(Bi_outbuf[15],ob,93)} + function write_t(ob,x) + {if(typeof x === "number")return write_null(ob,0); + var _kF_=x[1]; + if(708012133 <= _kF_) + {if(737456202 <= _kF_) + {if(928231259 <= _kF_) + {if(963043957 <= _kF_){var l=x[2];return write_assoc(ob,l)} + var s=x[2]; + return caml_call2(Bi_outbuf[13],ob,s)} + if(848054398 <= _kF_){var l$0=x[2];return write_list(ob,l$0)} + var b=x[2]; + return write_bool(ob,b)} + if(726928360 <= _kF_){var l$1=x[2];return write_tuple(ob,l$1)} + var match=x[2],o=match[2],s$0=match[1]; + return write_variant(ob,s$0,o)} + if(-752863768 === _kF_) + {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)} + if(3654863 <= _kF_) + {if(365180284 <= _kF_){var f=x[2];return write_float(ob,f)} + var i=x[2]; + return write_int(ob,i)} + if(-375152890 <= _kF_) + {var s$2=x[2];return caml_call2(Bi_outbuf[13],ob,s$2)} + var s$3=x[2]; + return write_string(ob,s$3)} function write_assoc(ob,l) {function f_elt(ob,param) {var x=param[2],s=param[1]; write_string(ob,s); - caml_call2(Stdlib_Buffer[12],ob,58); + caml_call2(Bi_outbuf[15],ob,58); return write_t(ob,x)} - caml_call2(Stdlib_Buffer[12],ob,123); + caml_call2(Bi_outbuf[15],ob,123); iter2(f_elt,f_sep,ob,l); - return caml_call2(Stdlib_Buffer[12],ob,125)} - function write_t(ob,x) - {if(typeof x === "number")return write_null(ob,0); - var _o2_=x[1]; - if(708012133 <= _o2_) - {if(737456202 <= _o2_) - {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(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(-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 <= _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(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)} - return write_string(ob,s)} + 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(Stdlib_Buffer[12],ob,91); + {caml_call2(Bi_outbuf[15],ob,91); iter2(write_std_json,f_sep,ob,l); - return caml_call2(Stdlib_Buffer[12],ob,93)} + return caml_call2(Bi_outbuf[15],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(928231259 <= _o1_) - {if(963043957 <= _o1_) + 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(Stdlib_Buffer[12],ob,58); + caml_call2(Bi_outbuf[15],ob,58); return write_std_json(ob,x)}; - caml_call2(Stdlib_Buffer[12],ob,123); + caml_call2(Bi_outbuf[15],ob,123); iter2(f_elt,f_sep,ob,l); - return caml_call2(Stdlib_Buffer[12],ob,125)} + return caml_call2(Bi_outbuf[15],ob,125)} var s=x[2]; - return caml_call2(Stdlib_Buffer[16],ob,s)} - if(848054398 <= _o1_) + return caml_call2(Bi_outbuf[13],ob,s)} + if(848054398 <= _kE_) {var l$0=x[2]; - caml_call2(Stdlib_Buffer[12],ob,91); + caml_call2(Bi_outbuf[15],ob,91); iter2(write_std_json,f_sep,ob,l$0); - return caml_call2(Stdlib_Buffer[12],ob,93)} + return caml_call2(Bi_outbuf[15],ob,93)} var b=x[2]; return write_bool(ob,b)} - if(726928360 <= _o1_){var l$1=x[2];return write_std_tuple(ob,l$1)} + 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 === _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)} + if(-752863768 === _kE_) + {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)} + if(3654863 <= _kE_) + {if(365180284 <= _kE_){var f=x[2];return write_std_float(ob,f)} var i=x[2]; return write_int(ob,i)} - if(-375152890 <= _o1_) - {var s$2=x[2];return caml_call2(Stdlib_Buffer[16],ob,s$2)} + if(-375152890 <= _kE_) + {var s$2=x[2];return caml_call2(Bi_outbuf[13],ob,s$2)} var s$3=x[2]; return write_string(ob,s$3)} - function 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) + function write_std_variant(ob,s,o) + {if(o) + {var x=o[1]; + caml_call2(Bi_outbuf[15],ob,91); + write_string(ob,s); + caml_call2(Bi_outbuf[15],ob,44); + write_std_json(ob,x); + return caml_call2(Bi_outbuf[15],ob,93)} + return write_string(ob,s)} + function to_outbuf(opt,ob,x) + {if(opt)var sth=opt[1],std=sth;else var std=0; + return std + ?is_object_or_array(x) + ?write_std_json(ob,x) + :json_error(cst_Root_is_not_an_object_or_a) + :write_t(ob,x)} + function to_string(buf,opt,std,x) {if(opt)var sth=opt[1],len=sth;else var len=256; - if(_oZ_)var sth$0=_oZ_[1],suf=sth$0;else var suf=cst$2; if(buf) - {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} else - 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); + var ob$0=caml_call3(Bi_outbuf[3],0,0,len); + to_outbuf(std,ob$0,x); + var s=caml_call1(Bi_outbuf[4],ob$0); + caml_call1(Bi_outbuf[19],ob$0); return s} - function to_channel(buf,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} + function to_channel(buf,len,std,oc,x) + {if(buf) + var ob=buf[1],ob$0=ob; else - 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} + var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); + to_outbuf(std,ob$0,x); + return caml_call1(Bi_outbuf[6],ob$0)} + function to_output(buf,len,std,out,x) + {if(buf) + var ob=buf[1],ob$0=ob; else - var ob$0=caml_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); + var ob$0=caml_call3(Bi_outbuf[7],len,0,out); + to_outbuf(std,ob$0,x); + return caml_call1(Bi_outbuf[8],ob$0)} + function to_file(len,std,file,x) + {var oc=caml_call1(Stdlib[60],file); try - {to_channel(0,len,[0,suf],std,oc,x); - var _oV_=caml_call1(Stdlib[76],oc); - return _oV_} + {to_channel(0,len,std,oc,x); + var _kD_=caml_call1(Stdlib[76],oc); + return _kD_} catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} - function 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) + function stream_to_outbuf(std,ob,st) + {function _kB_(_kC_){return to_outbuf(std,ob,_kC_)} + return caml_call2(Stdlib_Stream[8],_kB_,st)} + function stream_to_string(buf,opt,std,st) {if(opt)var sth=opt[1],len=sth;else var len=256; - if(_oR_)var sth$0=_oR_[1],suf=sth$0;else var suf=cst$7; if(buf) - {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} else - 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); + var ob$0=caml_call3(Bi_outbuf[3],0,0,len); + stream_to_outbuf(std,ob$0,st); + var s=caml_call1(Bi_outbuf[4],ob$0); + caml_call1(Bi_outbuf[19],ob$0); return s} - function 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} + function stream_to_channel(buf,len,std,oc,st) + {if(buf) + var ob=buf[1],ob$0=ob; else - 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); + var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); + stream_to_outbuf(std,ob$0,st); + return caml_call1(Bi_outbuf[6],ob$0)} + function stream_to_file(len,std,file,st) + {var oc=caml_call1(Stdlib[60],file); try - {seq_to_channel(0,len,[0,suf],std,oc,st); - var _oO_=caml_call1(Stdlib[76],oc); - return _oO_} + {stream_to_channel(0,len,std,oc,st); + var _kA_=caml_call1(Stdlib[76],oc); + return _kA_} catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} function sort(x) {if(typeof x !== "number") - {var _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 _kr_=x[1]; + if(726928361 <= _kr_) + {if(848054398 === _kr_) + {var l=x[2],_ks_=caml_call2(Stdlib_List[21],sort,l); + return [0,848054398,caml_call1(Stdlib_List[9],_ks_)]} + if(963043957 === _kr_) {var l$0=x[2], - _oH_= + _kt_= function(param){var v=param[2],k=param[1];return [0,k,sort(v)]}, - _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]; + _ku_=caml_call2(Stdlib_List[21],_kt_,l$0), + l$1=caml_call1(Stdlib_List[9],_ku_), + _kv_= + function(param,_kz_) + {var b=_kz_[1],a=param[1]; return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_oJ_,l$1)]}} + return [0,963043957,caml_call2(Stdlib_List[57],_kv_,l$1)]}} else - if(708012133 === _oF_) - {var _oK_=x[2],_oL_=_oK_[2]; - if(_oL_) - {var v=_oL_[1],k=_oK_[1],v$0=sort(v); + if(708012133 === _kr_) + {var _kw_=x[2],_kx_=_kw_[2]; + if(_kx_) + {var v=_kx_[1],k=_kw_[1],v$0=sort(v); return v === v$0?x:[0,708012133,[0,k,[0,v$0]]]}} else - if(726928360 <= _oF_) - {var l$2=x[2],_oM_=caml_call2(Stdlib_List[21],sort,l$2); - return [0,726928360,caml_call1(Stdlib_List[9],_oM_)]}} + if(726928360 <= _kr_) + {var l$2=x[2],_ky_=caml_call2(Stdlib_List[21],sort,l$2); + return [0,726928360,caml_call1(Stdlib_List[9],_ky_)]}} return x} function pp(fmt,param) {if(typeof param === "number") return caml_call2(Stdlib_Format[13],fmt,cst_Null); - var _oy_=param[1]; - if(708012133 <= _oy_) - {if(737456202 <= _oy_) - {if(928231259 <= _oy_) - {if(963043957 <= _oy_) + 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,_z_); - caml_call2(Stdlib_Format[129],fmt,_A_); + caml_call2(Stdlib_Format[129],fmt,_E_); + caml_call2(Stdlib_Format[129],fmt,_F_); var - _oz_=0, - _oA_= + _kl_=0, + _km_= 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_); + 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,_F_); + caml_call2(Stdlib_Format[129],fmt,_K_); 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_)} + 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,_I_); - caml_call3(Stdlib_Format[129],fmt,_J_,x); - return caml_call2(Stdlib_Format[129],fmt,_K_)} - if(848054398 <= _oy_) + 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,_L_); - caml_call2(Stdlib_Format[129],fmt,_M_); + caml_call2(Stdlib_Format[129],fmt,_Q_); + caml_call2(Stdlib_Format[129],fmt,_R_); var - _oB_=0, - _oC_= + _kn_=0, + _ko_= function(sep,x) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_N_); + {if(sep)caml_call2(Stdlib_Format[129],fmt,_S_); 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_)} + caml_call3(Stdlib_List[25],_ko_,_kn_,xs$0); + caml_call2(Stdlib_Format[129],fmt,_T_); + return caml_call2(Stdlib_Format[129],fmt,_U_)} var x$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_Q_); - caml_call3(Stdlib_Format[129],fmt,_R_,x$0); - return caml_call2(Stdlib_Format[129],fmt,_S_)} - if(726928360 <= _oy_) + 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,_T_); - caml_call2(Stdlib_Format[129],fmt,_U_); + caml_call2(Stdlib_Format[129],fmt,_Y_); + caml_call2(Stdlib_Format[129],fmt,_Z_); var - _oD_=0, - _oE_= + _kp_=0, + _kq_= function(sep,e) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_V_); + {if(sep)caml_call2(Stdlib_Format[129],fmt,___); 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_)} + caml_call3(Stdlib_List[25],_kq_,_kp_,tup); + caml_call2(Stdlib_Format[129],fmt,_$_); + return caml_call2(Stdlib_Format[129],fmt,_aa_)} var match=param[2],value=match[2],name=match[1]; - caml_call2(Stdlib_Format[129],fmt,_Y_); - caml_call2(Stdlib_Format[129],fmt,_Z_); - caml_call3(Stdlib_Format[129],fmt,___,name); - caml_call2(Stdlib_Format[129],fmt,_$_); + 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$10)} + caml_call2(Stdlib_Format[13],fmt,cst$1)} 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(-752863768 === _oy_) + caml_call2(Stdlib_Format[129],fmt,_af_); + return caml_call2(Stdlib_Format[129],fmt,_ag_)} + if(-752863768 === _kk_) {var x$2=param[2]; - caml_call2(Stdlib_Format[129],fmt,_ac_); - caml_call3(Stdlib_Format[129],fmt,_ad_,x$2); - return caml_call2(Stdlib_Format[129],fmt,_ae_)} - if(3654863 <= _oy_) - {if(365180284 <= _oy_) + caml_call2(Stdlib_Format[129],fmt,_ah_); + caml_call3(Stdlib_Format[129],fmt,_ai_,x$2); + return caml_call2(Stdlib_Format[129],fmt,_aj_)} + if(3654863 <= _kk_) + {if(365180284 <= _kk_) {var x$3=param[2]; - caml_call2(Stdlib_Format[129],fmt,_af_); - caml_call3(Stdlib_Format[129],fmt,_ag_,x$3); - return caml_call2(Stdlib_Format[129],fmt,_ah_)} + caml_call2(Stdlib_Format[129],fmt,_ak_); + caml_call3(Stdlib_Format[129],fmt,_al_,x$3); + return caml_call2(Stdlib_Format[129],fmt,_am_)} var x$4=param[2]; - caml_call2(Stdlib_Format[129],fmt,_ai_); - caml_call3(Stdlib_Format[129],fmt,_aj_,x$4); - return caml_call2(Stdlib_Format[129],fmt,_ak_)} - if(-375152890 <= _oy_) + caml_call2(Stdlib_Format[129],fmt,_an_); + caml_call3(Stdlib_Format[129],fmt,_ao_,x$4); + return caml_call2(Stdlib_Format[129],fmt,_ap_)} + if(-375152890 <= _kk_) {var x$5=param[2]; - caml_call2(Stdlib_Format[129],fmt,_al_); - caml_call3(Stdlib_Format[129],fmt,_am_,x$5); - return caml_call2(Stdlib_Format[129],fmt,_an_)} + caml_call2(Stdlib_Format[129],fmt,_aq_); + caml_call3(Stdlib_Format[129],fmt,_ar_,x$5); + return caml_call2(Stdlib_Format[129],fmt,_as_)} var x$6=param[2]; - caml_call2(Stdlib_Format[129],fmt,_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)} + caml_call2(Stdlib_Format[129],fmt,_at_); + caml_call3(Stdlib_Format[129],fmt,_au_,x$6); + return caml_call2(Stdlib_Format[129],fmt,_av_)} + function show(x){return caml_call3(Stdlib_Format[133],_aw_,pp,x)} function equal(a,b) {var a$0=a,b$0=b; for(;;) {if(typeof a$0 === "number") {if(870828711 === a$0 && 870828711 === b$0)return 1} else - {var _or_=a$0[1]; - if(708012133 <= _or_) + {var _kd_=a$0[1]; + if(708012133 <= _kd_) {var switch$0=0; - if(848054398 <= _or_) - {if(928231259 === _or_) + if(848054398 <= _kd_) + {if(928231259 === _kd_) {if(typeof b$0 !== "number" && 928231259 === b$0[1]) {var b$1=b$0[2],a$1=a$0[2];return caml_equal(a$1,b$1)}} else - if(963043957 === _or_) + if(963043957 === _kd_) {if(typeof b$0 !== "number" && 963043957 === b$0[1]) {var ys=b$0[2], xs=a$0[2], compare_keys= - function(param,_ox_) - {var key=_ox_[1],key$0=param[1]; + function(param,_kj_) + {var key=_kj_[1],key$0=param[1]; return caml_call2(Stdlib_String[9],key$0,key)}, xs$0=caml_call2(Stdlib_List[57],compare_keys,xs), ys$0=caml_call2(Stdlib_List[57],compare_keys,ys); try {var - _os_= - function(param,_ow_) + _ke_= + function(param,_ki_) {var - value=_ow_[2], - key=_ow_[1], + value=_ki_[2], + key=_ki_[1], value$0=param[2], key$0=param[1], match=caml_string_equal(key$0,key); return match?equal(value$0,value):0}, - result=caml_call3(Stdlib_List[34],_os_,xs$0,ys$0); + result=caml_call3(Stdlib_List[34],_ke_,xs$0,ys$0); return result} - catch(_ov_) - {_ov_ = caml_wrap_exception(_ov_); - if(_ov_[1] === Stdlib[6])return 0; - throw _ov_}}} + catch(_kh_) + {_kh_ = caml_wrap_exception(_kh_); + if(_kh_[1] === Stdlib[6])return 0; + throw _kh_}}} else if (! - (848054399 <= _or_) + (848054399 <= _kd_) && typeof b$0 !== @@ -34950,17 +36768,17 @@ b$0[1]) {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} else - if(726928360 === _or_) + if(726928360 === _kd_) {if(typeof b$0 !== "number" && 726928360 === b$0[1]) {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} else - if(737456202 === _or_) + if(737456202 === _kd_) {if(typeof b$0 !== "number" && 737456202 === b$0[1]) {var b$2=b$0[2],a$2=a$0[2];return caml_equal(a$2,b$2)}} else if (! - (708012134 <= _or_) + (708012134 <= _kd_) && typeof b$0 !== @@ -34970,9 +36788,9 @@ === b$0[1]) {var - _ot_=b$0[2], - value=_ot_[2], - name=_ot_[1], + _kf_=b$0[2], + value=_kf_[2], + name=_kf_[1], match=a$0[2], value$0=match[2], name$0=match[1], @@ -34989,23 +36807,23 @@ try {var result$0=caml_call3(Stdlib_List[34],equal,xs$1,ys$1); return result$0} - catch(_ou_) - {_ou_ = caml_wrap_exception(_ou_); - if(_ou_[1] === Stdlib[6])return 0; - throw _ou_}} + catch(_kg_) + {_kg_ = caml_wrap_exception(_kg_); + if(_kg_[1] === Stdlib[6])return 0; + throw _kg_}} else - if(-375152890 <= _or_) - {if(3654863 === _or_) + if(-375152890 <= _kd_) + {if(3654863 === _kd_) {if(typeof b$0 !== "number" && 3654863 === b$0[1]) {var b$4=b$0[2],a$4=a$0[2];return caml_equal(a$4,b$4)}} else - if(365180284 === _or_) + if(365180284 === _kd_) {if(typeof b$0 !== "number" && 365180284 === b$0[1]) {var b$5=b$0[2],a$5=a$0[2];return caml_equal(a$5,b$5)}} else if (! - (-375152889 <= _or_) + (-375152889 <= _kd_) && typeof b$0 !== @@ -35016,14 +36834,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 === _or_) + if(-976970511 === _kd_) {if(typeof b$0 !== "number" && -976970511 === b$0[1]) {var b$7=b$0[2],a$7=a$0[2];return caml_equal(a$7,b$7)}} else if (-752863768 === - _or_ + _kd_ && typeof b$0 !== @@ -35034,175 +36852,180 @@ b$0[1]) {var b$8=b$0[2],a$8=a$0[2];return caml_equal(a$8,b$8)}} return 0}} - 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 + array=Easy_format[2], + record=Easy_format[2], + _ax_=Easy_format[2], + tuple= + [0, + 0, + _ax_[2], + _ax_[3], + _ax_[4], + 0, + _ax_[6], + 0, + _ax_[8], + _ax_[9], + _ax_[10], + _ax_[11], + _ax_[12], + _ax_[13], + _ax_[14]], + _ay_=Easy_format[2], + variant= + [0, + _ay_[1], + _ay_[2], + _ay_[3], + _ay_[4], + 0, + _ay_[6], + _ay_[7], + _ay_[8], + _ay_[9], + _ay_[10], + _ay_[11], + _ay_[12], + _ay_[13], + _ay_[14]]; + function _az_(std,x) {var x$0=x; for(;;) - {if(typeof x$0 === "number") - return caml_call2(Stdlib_Format[13],out,cst_null$0); - var _nJ_=x$0[1]; - if(708012133 <= _nJ_) - {if(737456202 <= _nJ_) - {if(928231259 <= _nJ_) - {if(963043957 <= _nJ_) - {var _nK_=x$0[2]; - if(_nK_) - {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_} - return caml_call2(Stdlib_Format[13],out,cst$12)} - var s=x$0[2]; - return caml_call2(Stdlib_Format[13],out,s)} - if(848054398 <= _nJ_) - {var _nO_=x$0[2]; - if(_nO_) - {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_} - return caml_call2(Stdlib_Format[13],out,cst$15)} - var x$1=x$0[2]; - return caml_call2(Stdlib_Format[25],out,x$1)} - if(726928360 <= _nJ_) - {var l=x$0[2]; + {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 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) + 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 - 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_)} - 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$6=x$0[2]; + _jX_= + function(param) + {var + x=param[2], + name=param[1], + _j$_=json_string_of_string(name), + s=caml_call2(Stdlib_Printf[4],_aA_,_j$_), + _ka_=_az_(std,x); + return [2,[0,[0,s,Easy_format[1]],Easy_format[3]],_ka_]}; + return [1, + [0,cst$4,cst$3,cst$2,record], + caml_call2(Stdlib_List[19],_jX_,_jW_)]} + return [0,cst$5,Easy_format[1]]}} + else + {if(3654863 === _jT_) + {var x$3=x$0[2],_j1_=Easy_format[1]; + return [0,caml_call1(Stdlib[33],x$3),_j1_]} + if(365180284 <= _jT_) + {if(708012133 <= _jT_) + {var _j2_=x$0[2],_j3_=_j2_[2],_j4_=_j2_[1]; + if(_j3_) + {var x$4=_j3_[1]; + if(std) + {var + x$5=[0,848054398,[0,[0,-976970511,_j4_],[0,x$4,0]]], + x$0=x$5; + continue} + var + _j5_=json_string_of_string(_j4_), + _j6_=caml_call2(Stdlib[28],_j5_,cst$14), + op=caml_call2(Stdlib[28],cst$15,_j6_); + return [1,[0,op,cst$17,cst$16,variant],[0,_az_(std,x$4),0]]} + if(std){var x$6=[0,-976970511,_j4_],x$0=x$6;continue} + var + _j7_=Easy_format[1], + _j8_=json_string_of_string(_j4_), + _j9_=caml_call2(Stdlib[28],_j8_,cst$18); + return [0,caml_call2(Stdlib[28],cst$19,_j9_),_j7_]} + var x$7=x$0[2]; if(std) - {var ob$0=caml_call1(Stdlib_Buffer[1],20); - write_std_float(ob$0,x$6); - var s$1=caml_call1(Stdlib_Buffer[2],ob$0)} + {var ob$0=caml_call3(Bi_outbuf[3],0,0,20); + write_std_float(ob$0,x$7); + var s$0=caml_call1(Bi_outbuf[4],ob$0)} else - {var ob=caml_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)} - var x$7=x$0[2],_nI_=caml_call1(Stdlib[33],x$7); - return caml_call2(Stdlib_Format[13],out,_nI_)} - 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_)}} - function pp$0(opt,out,x) + {var ob=caml_call3(Bi_outbuf[3],0,0,20); + write_float(ob,x$7); + var s$0=caml_call1(Bi_outbuf[4],ob)} + return [0,s$0,Easy_format[1]]} + if(! (-752863768 <= _jT_)) + {var s$1=x$0[2],_j__=Easy_format[1]; + return [0,json_string_of_string(s$1),_j__]}} + var s=x$0[2]; + return [0,s,Easy_format[1]]}} + function format(opt,x) {if(opt)var sth=opt[1],std=sth;else var std=0; - 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)} + if(std && ! is_object_or_array(x)) + return json_error(cst_Root_is_not_an_object_or_a$0); + return _az_(std,x)} + function to_string$0(std,x) + {var _jS_=format(std,x);return caml_call3(Easy_format[4][4],0,0,_jS_)} + function to_channel$0(std,oc,x) + {var _jR_=format(std,x);return caml_call4(Easy_format[4][5],0,0,oc,_jR_)} + function pretty_format(std,x){return format(std,x)} + function pretty_print(std,out,x) + {var _jQ_=pretty_format(std,x); + return caml_call2(Easy_format[4][2],out,_jQ_)} + function pretty_to_string(std,x){return to_string$0(std,x)} + function pretty_to_channel(std,oc,x){return to_channel$0(std,oc,x)} function hex$0(n) - {var _nx_=10 <= n?n + 87 | 0:n + 48 | 0; - return caml_call1(Stdlib_Char[1],_nx_)} + {var _jP_=10 <= n?n + 87 | 0:n + 48 | 0; + return caml_call1(Stdlib_Char[1],_jP_)} function write_special$0(src,start,stop,ob,str) - {caml_call4(Stdlib_Buffer[18],ob,src,start[1],stop - start[1] | 0); - caml_call2(Stdlib_Buffer[16],ob,str); + {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0); + caml_call2(Bi_outbuf[13],ob,str); start[1] = stop + 1 | 0; return 0} function finish_string$0(src,start,ob) {try {var - _nw_= + _jO_= caml_call4 - (Stdlib_Buffer[18], + (Bi_outbuf[14], ob, src, start[1], caml_ml_string_length(src) - start[1] | 0); - return _nw_} + return _jO_} catch(exc) {exc = caml_wrap_exception(exc); caml_call4 (Stdlib_Printf[3], - _aJ_, + _aB_, src, start[1], caml_ml_string_length(src) - start[1] | 0); throw exc}} function write_string$0(ob,s) - {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_; + {caml_call2(Bi_outbuf[15],ob,34); + var start=[0,0],_jM_=caml_ml_string_length(s) - 1 | 0,_jL_=0; + if(! (_jM_ < 0)) + {var i$0=_jL_; for(;;) - {var c=caml_string_get(s,i); + {var c=caml_string_get(s,i$0); if(92 === c) - write_special$0(s,start,i,ob,cst$18); + write_special$0(s,start,i$0,ob,cst$20); else {var switch$0=0; if(35 <= c) @@ -35211,12 +37034,12 @@ if(8 <= c) {var switch$1=0; switch(c - 8 | 0) - {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 0:write_special$0(s,start,i$0,ob,cst_b$0);break; + case 1:write_special$0(s,start,i$0,ob,cst_t$0);break; + case 2:write_special$0(s,start,i$0,ob,cst_n$0);break; + case 4:write_special$0(s,start,i$0,ob,cst_f$0);break; + case 5:write_special$0(s,start,i$0,ob,cst_r$0);break; + case 26:write_special$0(s,start,i$0,ob,cst$21);break; case 24: case 25:switch$0 = 2;switch$1 = 1;break; default:switch$0 = 1;switch$1 = 1}} @@ -35225,52 +37048,49 @@ switch(switch$0) {case 2:break; case 1: - 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; + caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0); + var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1]; + caml_call5(Stdlib_Bytes[12],cst_u00$0,0,dst,i,4); + caml_bytes_set(dst,i + 4 | 0,hex$0(c >>> 4 | 0)); + caml_bytes_set(dst,i + 5 | 0,hex$0(c & 15)); + start[1] = i$0 + 1 | 0; break }} - var _nv_=i + 1 | 0; - if(_nu_ !== i){var i=_nv_;continue} + var _jN_=i$0 + 1 | 0; + if(_jM_ !== i$0){var i$0=_jN_;continue} break}} finish_string$0(s,start,ob); - return caml_call2(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)} + return caml_call2(Bi_outbuf[15],ob,34)} function write_null$0(ob,param) - {return caml_call2(Stdlib_Buffer[16],ob,cst_null$1)} + {return caml_call2(Bi_outbuf[13],ob,cst_null$1)} function write_bool$0(ob,x) - {var _nq_=x?cst_true$0:cst_false$0; - return caml_call2(Stdlib_Buffer[16],ob,_nq_)} + {var _jK_=x?cst_true$1:cst_false$1; + return caml_call2(Bi_outbuf[13],ob,_jK_)} var - _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); + _aC_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), + _aD_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])), + max_digits$0=caml_call2(Stdlib[17],_aD_,_aC_); + function write_digits$0(s,pos,x) + {if(0 === x)return pos; var - n=caml_call1(Stdlib[18],d), - _np_=caml_call1(Stdlib_Char[1],n + 48 | 0); - return caml_call2(Stdlib_Buffer[12],s,_np_)} + d=x % 10 | 0, + pos$0=write_digits$0(s,pos,x / 10 | 0), + n=caml_call1(Stdlib[18],d); + caml_bytes_set(s,pos$0,caml_call1(Stdlib_Char[1],n + 48 | 0)); + return pos$0 + 1 | 0} function write_int$0(ob,x) - {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))} + {caml_call2(Bi_outbuf[9],ob,max_digits$0); + if(0 < x){ob[3] = write_digits$0(ob[1],ob[3],x);return 0} + if(0 <= x)return caml_call2(Bi_outbuf[15],ob,48); + var s=ob[1],pos=ob[3]; + caml_bytes_set(s,pos,45); + ob[3] = write_digits$0(s,pos + 1 | 0,x); + return 0} function float_needs_period$0(s) {try - {var _nl_=caml_ml_string_length(s) - 1 | 0,_nk_=0; - if(! (_nl_ < 0)) - {var i=_nk_; + {var _jG_=caml_ml_string_length(s) - 1 | 0,_jF_=0; + if(! (_jG_ < 0)) + {var i=_jF_; for(;;) {var match=caml_string_get(s,i),switch$0=0; if(48 <= match) @@ -35278,87 +37098,111 @@ else if(45 === match)switch$0 = 1; if(! switch$0)throw Stdlib[3]; - var _nn_=i + 1 | 0; - if(_nl_ !== i){var i=_nn_;continue} + var _jI_=i + 1 | 0; + if(_jG_ !== i){var i=_jI_;continue} break}} - var _nm_=1; - return _nm_} - catch(_no_) - {_no_ = caml_wrap_exception(_no_); - if(_no_ === Stdlib[3])return 0; - throw _no_}} + var _jH_=1; + return _jH_} + catch(_jJ_) + {_jJ_ = caml_wrap_exception(_jJ_); + if(_jJ_ === Stdlib[3])return 0; + throw _jJ_}} + function write_float_fast$0(ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var _jD_=0. < x?cst_Infinity$5:cst_Infinity$6; + return caml_call2(Bi_outbuf[13],ob,_jD_)} + if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$2); + var s=caml_call2(Stdlib_Printf[4],_aE_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _jE_=float_needs_period$0(s); + return _jE_?caml_call2(Bi_outbuf[13],ob,cst_0$4):_jE_} function write_float$0(ob,x) {var match=caml_classify_float(x); if(3 === match) - {var _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 _jB_=0. < x?cst_Infinity$7:cst_Infinity$8; + return caml_call2(Bi_outbuf[13],ob,_jB_)} + if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$3); var - s1=caml_call2(Stdlib_Printf[4],_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_} + s1=caml_call2(Stdlib_Printf[4],_aF_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_aG_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _jC_=float_needs_period$0(s); + return _jC_?caml_call2(Bi_outbuf[13],ob,cst_0$5):_jC_} function write_normal_float_prec$0(significant_figures,ob,x) {var switcher=significant_figures - 1 | 0; if(15 < switcher >>> 0) - var s=caml_call2(Stdlib_Printf[4],_aO_,x); + var s=caml_call2(Stdlib_Printf[4],_aH_,x); else switch(switcher) - {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_} + {case 0:var s=caml_call2(Stdlib_Printf[4],_aI_,x);break; + case 1:var s=caml_call2(Stdlib_Printf[4],_aJ_,x);break; + case 2:var s=caml_call2(Stdlib_Printf[4],_aK_,x);break; + case 3:var s=caml_call2(Stdlib_Printf[4],_aL_,x);break; + case 4:var s=caml_call2(Stdlib_Printf[4],_aM_,x);break; + case 5:var s=caml_call2(Stdlib_Printf[4],_aN_,x);break; + case 6:var s=caml_call2(Stdlib_Printf[4],_aO_,x);break; + case 7:var s=caml_call2(Stdlib_Printf[4],_aP_,x);break; + case 8:var s=caml_call2(Stdlib_Printf[4],_aQ_,x);break; + case 9:var s=caml_call2(Stdlib_Printf[4],_aR_,x);break; + case 10:var s=caml_call2(Stdlib_Printf[4],_aS_,x);break; + case 11:var s=caml_call2(Stdlib_Printf[4],_aT_,x);break; + case 12:var s=caml_call2(Stdlib_Printf[4],_aU_,x);break; + case 13:var s=caml_call2(Stdlib_Printf[4],_aV_,x);break; + case 14:var s=caml_call2(Stdlib_Printf[4],_aW_,x);break; + default:var s=caml_call2(Stdlib_Printf[4],_aX_,x)} + caml_call2(Bi_outbuf[13],ob,s); + var _jA_=float_needs_period$0(s); + return _jA_?caml_call2(Bi_outbuf[13],ob,cst_0$6):_jA_} function write_float_prec$0(significant_figures,ob,x) {var match=caml_classify_float(x); if(3 === match) - {var _ng_=0. < x?cst_Infinity$5:cst_Infinity$6; - return caml_call2(Stdlib_Buffer[16],ob,_ng_)} + {var _jz_=0. < x?cst_Infinity$9:cst_Infinity$10; + return caml_call2(Bi_outbuf[13],ob,_jz_)} return 4 <= match - ?caml_call2(Stdlib_Buffer[16],ob,cst_NaN$2) + ?caml_call2(Bi_outbuf[13],ob,cst_NaN$4) :write_normal_float_prec$0(significant_figures,ob,x)} + function write_std_float_fast$0(ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var + _jx_= + 0. < x + ?cst_Infinity_value_not_allowed$5 + :cst_Infinity_value_not_allowed$6; + return json_error(_jx_)} + if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$2); + var s=caml_call2(Stdlib_Printf[4],_aY_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _jy_=float_needs_period$0(s); + return _jy_?caml_call2(Bi_outbuf[13],ob,cst_0$7):_jy_} function write_std_float$0(ob,x) {var match=caml_classify_float(x); if(3 === match) {var - _ne_= + _jv_= 0. < x - ?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); + ?cst_Infinity_value_not_allowed$7 + :cst_Infinity_value_not_allowed$8; + return json_error(_jv_)} + if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$3); var - s1=caml_call2(Stdlib_Printf[4],_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_} + s1=caml_call2(Stdlib_Printf[4],_aZ_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_a0_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _jw_=float_needs_period$0(s); + return _jw_?caml_call2(Bi_outbuf[13],ob,cst_0$8):_jw_} function write_std_float_prec$0(significant_figures,ob,x) {var match=caml_classify_float(x); if(3 === match) {var - _nd_= + _ju_= 0. < x - ?cst_Infinity_value_not_allowed$5 - :cst_Infinity_value_not_allowed$6; - return json_error(_nd_)} + ?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$2) + ?json_error(cst_NaN_value_not_allowed_in_s$4) :write_normal_float_prec$0(significant_figures,ob,x)} function iter2$0(f_elt,f_sep,x,param$0) {if(param$0) @@ -35374,333 +37218,227 @@ continue} return 0}} return 0} - function f_sep$0(ob){return caml_call2(Stdlib_Buffer[12],ob,44)} + function f_sep$0(ob){return caml_call2(Bi_outbuf[15],ob,44)} function write_list$0(ob,l) - {caml_call2(Stdlib_Buffer[12],ob,91); + {caml_call2(Bi_outbuf[15],ob,91); iter2$0(write_t$0,f_sep$0,ob,l); - return caml_call2(Stdlib_Buffer[12],ob,93)} + return caml_call2(Bi_outbuf[15],ob,93)} + function write_t$0(ob,x) + {if(typeof x === "number")return write_null$0(ob,0); + var _jt_=x[1]; + if(365180284 <= _jt_) + {if(848054398 <= _jt_) + {if(963043957 <= _jt_){var l=x[2];return write_assoc$0(ob,l)} + var l$0=x[2]; + return write_list$0(ob,l$0)} + if(737456202 <= _jt_){var b=x[2];return write_bool$0(ob,b)} + var f=x[2]; + return write_float$0(ob,f)} + if(3654863 <= _jt_){var i=x[2];return write_int$0(ob,i)} + var s=x[2]; + return write_string$0(ob,s)} function write_assoc$0(ob,l) {function f_elt(ob,param) {var x=param[2],s=param[1]; write_string$0(ob,s); - caml_call2(Stdlib_Buffer[12],ob,58); + caml_call2(Bi_outbuf[15],ob,58); return write_t$0(ob,x)} - caml_call2(Stdlib_Buffer[12],ob,123); + caml_call2(Bi_outbuf[15],ob,123); iter2$0(f_elt,f_sep$0,ob,l); - 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(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)} - if(3654863 <= _nc_){var i=x[2];return write_int$0(ob,i)} - var s=x[2]; - return write_string$0(ob,s)} + return caml_call2(Bi_outbuf[15],ob,125)} function write_std_json$0(ob,x) {if(typeof x === "number")return write_null$0(ob,0); - var _nb_=x[1]; - if(365180284 <= _nb_) - {if(848054398 <= _nb_) - {if(963043957 <= _nb_) + 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(Stdlib_Buffer[12],ob,58); + caml_call2(Bi_outbuf[15],ob,58); return write_std_json$0(ob,x)}; - caml_call2(Stdlib_Buffer[12],ob,123); + caml_call2(Bi_outbuf[15],ob,123); iter2$0(f_elt,f_sep$0,ob,l); - return caml_call2(Stdlib_Buffer[12],ob,125)} + return caml_call2(Bi_outbuf[15],ob,125)} var l$0=x[2]; - caml_call2(Stdlib_Buffer[12],ob,91); + caml_call2(Bi_outbuf[15],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)} + 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 <= _nb_){var i=x[2];return write_int$0(ob,i)} + 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_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) + function to_outbuf$0(opt,ob,x) + {if(opt)var sth=opt[1],std=sth;else var std=0; + return std + ?is_object_or_array(x) + ?write_std_json$0(ob,x) + :json_error(cst_Root_is_not_an_object_or_a$1) + :write_t$0(ob,x)} + function to_string$1(buf,opt,std,x) {if(opt)var sth=opt[1],len=sth;else var len=256; - if(_m$_)var sth$0=_m$_[1],suf=sth$0;else var suf=cst$21; if(buf) - {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} else - 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); + var ob$0=caml_call3(Bi_outbuf[3],0,0,len); + to_outbuf$0(std,ob$0,x); + var s=caml_call1(Bi_outbuf[4],ob$0); + caml_call1(Bi_outbuf[19],ob$0); return s} - function to_channel$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} + function to_channel$1(buf,len,std,oc,x) + {if(buf) + var ob=buf[1],ob$0=ob; else - 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} + var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); + to_outbuf$0(std,ob$0,x); + return caml_call1(Bi_outbuf[6],ob$0)} + function to_output$0(buf,len,std,out,x) + {if(buf) + var ob=buf[1],ob$0=ob; else - var ob$0=caml_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); + var ob$0=caml_call3(Bi_outbuf[7],len,0,out); + to_outbuf$0(std,ob$0,x); + return caml_call1(Bi_outbuf[8],ob$0)} + function to_file$0(len,std,file,x) + {var oc=caml_call1(Stdlib[60],file); try - {to_channel$0(0,len,[0,suf],std,oc,x); - var _m7_=caml_call1(Stdlib[76],oc); - return _m7_} + {to_channel$1(0,len,std,oc,x); + var _jr_=caml_call1(Stdlib[76],oc); + return _jr_} catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} - function 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) + function stream_to_outbuf$0(std,ob,st) + {function _jp_(_jq_){return to_outbuf$0(std,ob,_jq_)} + return caml_call2(Stdlib_Stream[8],_jp_,st)} + function stream_to_string$0(buf,opt,std,st) {if(opt)var sth=opt[1],len=sth;else var len=256; - if(_m3_)var sth$0=_m3_[1],suf=sth$0;else var suf=cst$26; if(buf) - {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} else - 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); + var ob$0=caml_call3(Bi_outbuf[3],0,0,len); + stream_to_outbuf$0(std,ob$0,st); + var s=caml_call1(Bi_outbuf[4],ob$0); + caml_call1(Bi_outbuf[19],ob$0); return s} - function 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} + function stream_to_channel$0(buf,len,std,oc,st) + {if(buf) + var ob=buf[1],ob$0=ob; else - 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); + var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); + stream_to_outbuf$0(std,ob$0,st); + return caml_call1(Bi_outbuf[6],ob$0)} + function stream_to_file$0(len,std,file,st) + {var oc=caml_call1(Stdlib[60],file); try - {seq_to_channel$0(0,len,[0,suf],std,oc,st); - var _m0_=caml_call1(Stdlib[76],oc); - return _m0_} + {stream_to_channel$0(0,len,std,oc,st); + var _jo_=caml_call1(Stdlib[76],oc); + return _jo_} catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} function sort$0(x) {if(typeof x !== "number") - {var _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 _ji_=x[1]; + if(848054398 === _ji_) + {var l=x[2],_jj_=caml_call2(Stdlib_List[21],sort$0,l); + return [0,848054398,caml_call1(Stdlib_List[9],_jj_)]} + if(963043957 === _ji_) {var l$0=x[2], - _mW_= + _jk_= function(param){var v=param[2],k=param[1];return [0,k,sort$0(v)]}, - _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]; + _jl_=caml_call2(Stdlib_List[21],_jk_,l$0), + l$1=caml_call1(Stdlib_List[9],_jl_), + _jm_= + function(param,_jn_) + {var b=_jn_[1],a=param[1]; return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_mY_,l$1)]}} + return [0,963043957,caml_call2(Stdlib_List[57],_jm_,l$1)]}} return x} - 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(848054398 <= _mq_) - {if(963043957 <= _mq_) - {var _mr_=x[2]; - if(_mr_) - {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_} - return caml_call2(Stdlib_Format[13],out,cst$30)} - var _mv_=x[2]; - if(_mv_) - {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_} - return caml_call2(Stdlib_Format[13],out,cst$33)} - 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(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_)} - 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) + function pp$0(fmt,param) {if(typeof param === "number") return caml_call2(Stdlib_Format[13],fmt,cst_Null$0); - var _mg_=param[1]; - if(365180284 <= _mg_) - {if(848054398 <= _mg_) - {if(963043957 <= _mg_) + var _jd_=param[1]; + if(365180284 <= _jd_) + {if(848054398 <= _jd_) + {if(963043957 <= _jd_) {var xs=param[2]; - caml_call2(Stdlib_Format[129],fmt,_bh_); - caml_call2(Stdlib_Format[129],fmt,_bi_); + caml_call2(Stdlib_Format[129],fmt,_a1_); + caml_call2(Stdlib_Format[129],fmt,_a2_); var - _mh_=0, - _mi_= + _je_=0, + _jf_= 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_); + 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],_mi_,_mh_,xs); - caml_call2(Stdlib_Format[129],fmt,_bo_); - return caml_call2(Stdlib_Format[129],fmt,_bp_)} + 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,_bq_); - caml_call2(Stdlib_Format[129],fmt,_br_); + caml_call2(Stdlib_Format[129],fmt,_a__); + caml_call2(Stdlib_Format[129],fmt,_a$_); var - _mj_=0, - _mk_= + _jg_=0, + _jh_= function(sep,x) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_bs_); - pp$2(fmt,x); + {if(sep)caml_call2(Stdlib_Format[129],fmt,_ba_); + pp$0(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_) + 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,_bv_); - caml_call3(Stdlib_Format[129],fmt,_bw_,x); - return caml_call2(Stdlib_Format[129],fmt,_bx_)} + 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,_by_); - caml_call3(Stdlib_Format[129],fmt,_bz_,x$0); - return caml_call2(Stdlib_Format[129],fmt,_bA_)} - if(3654863 <= _mg_) + 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,_bB_); - caml_call3(Stdlib_Format[129],fmt,_bC_,x$1); - return caml_call2(Stdlib_Format[129],fmt,_bD_)} + 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,_bE_); - caml_call3(Stdlib_Format[129],fmt,_bF_,x$2); - return caml_call2(Stdlib_Format[129],fmt,_bG_)} - function show$0(x){return caml_call3(Stdlib_Format[133],_bH_,pp$2,x)} + caml_call2(Stdlib_Format[129],fmt,_bm_); + caml_call3(Stdlib_Format[129],fmt,_bn_,x$2); + return caml_call2(Stdlib_Format[129],fmt,_bo_)} + function show$0(x){return caml_call3(Stdlib_Format[133],_bp_,pp$0,x)} function equal$0(a,b) {if(typeof a === "number") {if(870828711 === a && 870828711 === b)return 1} else - {var _ma_=a[1]; - if(365180285 <= _ma_) - {if(737456202 === _ma_) + {var _i9_=a[1]; + if(365180285 <= _i9_) + {if(737456202 === _i9_) {if(typeof b !== "number" && 737456202 === b[1]) {var b$0=b[2],a$0=a[2];return caml_equal(a$0,b$0)}} else - if(848054398 === _ma_) + if(848054398 === _i9_) {if(typeof b !== "number" && 848054398 === b[1]) {var ys=b[2],xs=a[2]; try {var result=caml_call3(Stdlib_List[34],equal$0,xs,ys); return result} - catch(_mc_) - {_mc_ = caml_wrap_exception(_mc_); - if(_mc_[1] === Stdlib[6])return 0; - throw _mc_}}} + catch(_i$_) + {_i$_ = caml_wrap_exception(_i$_); + if(_i$_[1] === Stdlib[6])return 0; + throw _i$_}}} else if (963043957 === - _ma_ + _i9_ && typeof b !== @@ -35713,49 +37451,47 @@ ys$0=b[2], xs$0=a[2], compare_keys= - function(param,_mf_) - {var key=_mf_[1],key$0=param[1]; + function(param,_jc_) + {var key=_jc_[1],key$0=param[1]; return caml_call2(Stdlib_String[9],key$0,key)}, xs$1=caml_call2(Stdlib_List[57],compare_keys,xs$0), ys$1=caml_call2(Stdlib_List[57],compare_keys,ys$0); try {var - _mb_= - function(param,_me_) + _i__= + function(param,_jb_) {var - value=_me_[2], - key=_me_[1], + value=_jb_[2], + key=_jb_[1], value$0=param[2], key$0=param[1], match=caml_string_equal(key$0,key); return match?equal$0(value$0,value):0}, - result$0=caml_call3(Stdlib_List[34],_mb_,xs$1,ys$1); + result$0=caml_call3(Stdlib_List[34],_i__,xs$1,ys$1); return result$0} - catch(_md_) - {_md_ = caml_wrap_exception(_md_); - if(_md_[1] === Stdlib[6])return 0; - throw _md_}}} + catch(_ja_) + {_ja_ = caml_wrap_exception(_ja_); + if(_ja_[1] === Stdlib[6])return 0; + throw _ja_}}} else - if(-976970511 === _ma_) + if(-976970511 === _i9_) {if(typeof b !== "number" && -976970511 === b[1]) {var b$1=b[2],a$1=a[2];return caml_equal(a$1,b$1)}} else - if(3654863 === _ma_) + if(3654863 === _i9_) {if(typeof b !== "number" && 3654863 === b[1]) {var b$2=b[2],a$2=a[2];return caml_equal(a$2,b$2)}} else if - (365180284 <= _ma_ && typeof b !== "number" && 365180284 === b[1]) + (365180284 <= _i9_ && typeof b !== "number" && 365180284 === b[1]) {var b$3=b[2],a$3=a[2];return caml_equal(a$3,b$3)}} return 0} - function pretty_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)} + function pretty_format$0(std,x){return format(std,x)} + function pretty_print$0(std,out,x) + {var _i8_=pretty_format$0(std,x); + return caml_call2(Easy_format[4][2],out,_i8_)} + function pretty_to_string$0(std,x){return to_string$0(std,x)} + function pretty_to_channel$0(std,oc,x){return to_channel$0(std,oc,x)} var from_channel=Stdlib_Lexing[2], from_string=Stdlib_Lexing[3], @@ -35770,43 +37506,43 @@ if(! (71 <= c))return (c - 65 | 0) + 10 | 0} else if(! (9 < c - 48 >>> 0))return c - 48 | 0; - throw [0,Assert_failure,_bI_]} + throw [0,Assert_failure,_bq_]} function custom_error(descr,v,lexbuf) {var offs=lexbuf[4] - 1 | 0, bol=v[3], pos1=((offs + lexbuf[5] | 0) - bol | 0) - 1 | 0, pos2=caml_call2(Stdlib[17],pos1,(offs + lexbuf[6] | 0) - bol | 0), - _l5_=v[4]; - if(_l5_) - var s=_l5_[1],file_line=caml_call2(Stdlib_Printf[4],_bJ_,s); + _i7_=v[4]; + if(_i7_) + var s=_i7_[1],file_line=caml_call2(Stdlib_Printf[4],_br_,s); else var file_line=cst_Line; var bytes= pos1 === pos2 - ?caml_call2(Stdlib_Printf[4],_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); + ?caml_call2(Stdlib_Printf[4],_bs_,pos1 + 1 | 0) + :caml_call3(Stdlib_Printf[4],_bu_,pos1 + 1 | 0,pos2 + 1 | 0), + msg=caml_call5(Stdlib_Printf[4],_bt_,file_line,v[2],bytes,descr); return json_error(msg)} function lexer_error(descr,v,lexbuf) - {var _l4_=caml_call1(lexeme,lexbuf); + {var _i6_=caml_call1(lexeme,lexbuf); return custom_error - (caml_call3(Stdlib_Printf[4],_bN_,descr,_l4_),v,lexbuf)} - var read_junk=[0,function(param){throw [0,Assert_failure,_bO_]}]; + (caml_call3(Stdlib_Printf[4],_bv_,descr,_i6_),v,lexbuf)} + var read_junk=[0,function(param){throw [0,Assert_failure,_bw_]}]; function long_error(descr,v,lexbuf) {var junk=caml_call1(lexeme,lexbuf), extra_junk=caml_call1(read_junk[1],lexbuf); return custom_error - (caml_call4(Stdlib_Printf[4],_bP_,descr,junk,extra_junk), + (caml_call4(Stdlib_Printf[4],_bx_,descr,junk,extra_junk), v, lexbuf)} var - _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, + _by_=0 === (Stdlib[20] % 10 | 0)?0:1, + min10=(Stdlib[20] / 10 | 0) - _by_ | 0, + _bz_=0 === (Stdlib[19] % 10 | 0)?0:1, + max10=(Stdlib[19] / 10 | 0) + _bz_ | 0, Int_overflow=[248,cst_Yojson_Basic_Int_overflow,caml_fresh_oo_id(0)]; function extract_positive_int(lexbuf) {var @@ -35814,15 +37550,15 @@ stop=lexbuf[6], s=lexbuf[2], n=[0,0], - _l1_=stop - 1 | 0; - if(! (_l1_ < start)) + _i3_=stop - 1 | 0; + if(! (_i3_ < start)) {var i=start; for(;;) {if(max10 <= n[1])throw Int_overflow; - 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} + var _i4_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) + _i4_ | 0; + var _i5_=i + 1 | 0; + if(_i3_ !== i){var i=_i5_;continue} break}} if(0 <= n[1])return n[1]; throw Int_overflow} @@ -35832,15 +37568,15 @@ stop=lexbuf[6], s=lexbuf[2], n=[0,0], - _lY_=stop - 1 | 0; - if(! (_lY_ < start)) + _i0_=stop - 1 | 0; + if(! (_i0_ < start)) {var i=start; for(;;) {if(n[1] <= min10)throw Int_overflow; - 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} + var _i1_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) - _i1_ | 0; + var _i2_=i + 1 | 0; + if(_i0_ !== i){var i=_i2_;continue} break}} if(0 < n[1])throw Int_overflow; return n[1]} @@ -35848,13 +37584,209 @@ {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(Stdlib_Buffer[19],buf,lexbuf[2],lexbuf[5],len)} + return caml_call4(Bi_outbuf[12],buf,lexbuf[2],lexbuf[5],len)} + function read_colon(v,lexbuf) + {var ocaml_lex_state=297; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error(cst_Expected_but_found$8,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$28,v,lexbuf)}}} + function read_object_sep(v,lexbuf) + {var ocaml_lex_state=292; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_object; + case 2:return long_error(cst_Expected_or_but_found$8,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$27,v,lexbuf)}}} + function read_object_end(lexbuf) + {var ocaml_lex_state=290; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_object; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_array_sep(v,lexbuf) + {var ocaml_lex_state=257; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_array; + case 2:return long_error(cst_Expected_or_but_found$1,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$21,v,lexbuf)}}} + function read_array_end(lexbuf) + {var ocaml_lex_state=255; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_array; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function finish_escaped_char(v,lexbuf) + {var ocaml_lex_state=68; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(8 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + var c=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5]); + return caml_call2(Bi_outbuf[15],v[1],c); + case 1:return caml_call2(Bi_outbuf[15],v[1],8); + case 2:return caml_call2(Bi_outbuf[15],v[1],12); + case 3:return caml_call2(Bi_outbuf[15],v[1],10); + case 4:return caml_call2(Bi_outbuf[15],v[1],13); + case 5:return caml_call2(Bi_outbuf[15],v[1],9); + case 6: + var + a=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 1 | 0), + b=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 2 | 0), + c$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 3 | 0), + d=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 4 | 0), + _iU_=hex$1(d), + _iV_=hex$1(c$0) << 4, + _iW_=hex$1(b) << 8, + x=hex$1(a) << 12 | _iW_ | _iV_ | _iU_; + if(55296 <= x && ! (56319 < x)) + {var ocaml_lex_state$1=82; + for(;;) + {var + ocaml_lex_state$2= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$1,lexbuf); + if(2 < ocaml_lex_state$2 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$1=ocaml_lex_state$2; + continue} + switch(ocaml_lex_state$2) + {case 0: + var + a$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 2 | 0), + b$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 3 | 0), + c$1=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 4 | 0), + d$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 5 | 0), + _iX_=hex$1(d$0), + _iY_=hex$1(c$1) << 4, + _iZ_=hex$1(b$0) << 8, + y=hex$1(a$0) << 12 | _iZ_ | _iY_ | _iX_; + if(56320 <= y && ! (57343 < y)) + return utf8_of_surrogate_pair(v[1],x,y); + return long_error(cst_Invalid_low_surrogate_for_,v,lexbuf); + case 1: + return long_error(cst_Missing_escape_sequence_re,v,lexbuf); + default: + return custom_error(cst_Unexpected_end_of_input$3,v,lexbuf)}}} + return utf8_of_code(v[1],x); + case 7:return long_error(cst_Invalid_escape_sequence,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$2,v,lexbuf)}}} + function finish_string$1(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=58; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call1(Bi_outbuf[4],v[1]); + case 1:finish_escaped_char(v,lexbuf);continue a; + case 2:add_lexeme(v[1],lexbuf);continue a; + default: + return custom_error(cst_Unexpected_end_of_input$0,v,lexbuf)}}}} + function read_ident(v,lexbuf) + {var ocaml_lex_state=237; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Bi_outbuf[19],v[1]);return finish_string$1(v,lexbuf); + case 1: + var s=caml_call3(sub_lexeme,lexbuf,lexbuf[5],lexbuf[6]);return s; + case 2:return long_error(cst_Expected_string_or_identif,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$17,v,lexbuf)}}} + function finish_comment(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=125; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error(cst_Unterminated_comment,v,lexbuf); + case 2:newline(v,lexbuf);continue a; + default:continue a}}}} + function read_space(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=133; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:newline(v,lexbuf);continue a; + case 1:finish_comment(v,lexbuf);continue a; + case 2:newline(v,lexbuf);continue a; + case 3:continue a; + default:return 0}}}} function read_json$2(counter,v,lexbuf) - {var _lX_=0; + {var _iT_=0; if(counter < 50) {var counter$0=counter + 1 | 0; - return ocaml_lex_read_json_rec(counter$0,v,lexbuf,_lX_)} - return caml_trampoline_return(ocaml_lex_read_json_rec,[0,v,lexbuf,_lX_])} + 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(;;) @@ -35866,31 +37798,31 @@ var ocaml_lex_state$0=ocaml_lex_state$1; continue} switch(ocaml_lex_state$1) - {case 0:return _bS_; - case 1:return _bT_; + {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(Stdlib_Buffer[8],v[1]); + caml_call1(Bi_outbuf[19],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) + {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 _lW_} + throw _iS_} case 8: try - {var _lO_=[0,3654863,extract_negative_int(lexbuf)];return _lO_} - catch(_lV_) - {_lV_ = caml_wrap_exception(_lV_); - if(_lV_ === Int_overflow) + {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 _lV_} + throw _iR_} case 9: return [0, 365180284, @@ -35904,8 +37836,8 @@ 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_]; + 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); @@ -35914,33 +37846,33 @@ 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_]; + var _iM_=acc[1]; + acc[1] = [0,[0,field_name$0,read_json(v,lexbuf)],_iM_]; continue}} - catch(_lU_) - {_lU_ = caml_wrap_exception(_lU_); - if(_lU_ === End_of_object) + catch(_iQ_) + {_iQ_ = caml_wrap_exception(_iQ_); + if(_iQ_ === End_of_object) return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; - throw _lU_} + throw _iQ_} 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_]; + 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 _lS_=acc$0[1]; - acc$0[1] = [0,read_json(v,lexbuf),_lS_]; + var _iO_=acc$0[1]; + acc$0[1] = [0,read_json(v,lexbuf),_iO_]; continue}} - catch(_lT_) - {_lT_ = caml_wrap_exception(_lT_); - if(_lT_ === End_of_array) + catch(_iP_) + {_iP_ = caml_wrap_exception(_iP_); + if(_iP_ === End_of_array) return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; - throw _lT_} + 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: @@ -35969,24 +37901,6 @@ 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=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(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)}}}} function map_string(v,f,lexbuf) {a: for(;;) @@ -36001,72 +37915,12 @@ continue} 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_); + 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_escaped_char(v,lexbuf) - {var ocaml_lex_state=68; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(8 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - var c=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5]); - return caml_call2(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), - _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 - ocaml_lex_state$2= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$1,lexbuf); - if(2 < ocaml_lex_state$2 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$1=ocaml_lex_state$2; - continue} - switch(ocaml_lex_state$2) - {case 0: - var - a$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 2 | 0), - b$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 3 | 0), - c$1=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 4 | 0), - d$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 5 | 0), - _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: - return long_error(cst_Missing_escape_sequence_re,v,lexbuf); - default: - return custom_error(cst_Unexpected_end_of_input$3,v,lexbuf)}}} - return utf8_of_code(v[1],x); - case 7:return long_error(cst_Invalid_escape_sequence,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$2,v,lexbuf)}}} function finish_stringlit(v,lexbuf) {var ocaml_lex_state=91; for(;;) @@ -36085,6 +37939,20 @@ 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(;;) @@ -36118,20 +37986,6 @@ {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_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 read_comma(v,lexbuf) {var ocaml_lex_state=115; for(;;) @@ -36158,27 +38012,10 @@ continue} switch(ocaml_lex_state$0) {case 0:return -154522342; - case 1:caml_call1(Stdlib_Buffer[8],v[1]);return -589953938; + case 1:caml_call1(Bi_outbuf[19],v[1]);return -589953938; case 2:return -124528282; case 3:return long_error(cst_Expected_or_but_found$0,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$9,v,lexbuf)}}} - function finish_comment(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=125; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error(cst_Unterminated_comment,v,lexbuf); - case 2:newline(v,lexbuf);continue a; - default:continue a}}}} function read_eof(lexbuf) {var ocaml_lex_state=131; for(;;) @@ -36190,24 +38027,6 @@ caml_call1(lexbuf[1],lexbuf); var ocaml_lex_state=ocaml_lex_state$0; continue}} - 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_null(v,lexbuf) {var ocaml_lex_state=140; for(;;) @@ -36263,26 +38082,26 @@ switch(ocaml_lex_state$1) {case 0: try - {var _lA_=extract_positive_int(lexbuf);return _lA_} - catch(_lF_) - {_lF_ = caml_wrap_exception(_lF_); - if(_lF_ === Int_overflow) + {var _iC_=extract_positive_int(lexbuf);return _iC_} + catch(_iH_) + {_iH_ = caml_wrap_exception(_iH_); + if(_iH_ === Int_overflow) return lexer_error(cst_Int_overflow$1,v,lexbuf); - throw _lF_} + throw _iH_} case 1: try - {var _lB_=extract_negative_int(lexbuf);return _lB_} - catch(_lE_) - {_lE_ = caml_wrap_exception(_lE_); - if(_lE_ === Int_overflow) + {var _iD_=extract_negative_int(lexbuf);return _iD_} + catch(_iG_) + {_iG_ = caml_wrap_exception(_iG_); + if(_iG_ === Int_overflow) return lexer_error(cst_Int_overflow$2,v,lexbuf); - throw _lE_} + throw _iG_} case 2: - caml_call1(Stdlib_Buffer[8],v[1]); + caml_call1(Bi_outbuf[19],v[1]); var s=finish_string$1(v,lexbuf); try - {var _lC_=caml_int_of_string(s);return _lC_} - catch(_lD_) + {var _iE_=caml_int_of_string(s);return _iE_} + catch(_iF_) {return custom_error(cst_Expected_an_integer_but_fo,v,lexbuf)} case 3:return long_error(cst_Expected_integer_but_found,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$12,v,lexbuf)}}} @@ -36300,15 +38119,15 @@ switch(ocaml_lex_state$1) {case 0: try - {var _lw_=caml_int_of_string(caml_call1(lexeme,lexbuf)); - return _lw_} - catch(_lz_){return lexer_error(cst_Int32_overflow,v,lexbuf)} + {var _iy_=caml_int_of_string(caml_call1(lexeme,lexbuf)); + return _iy_} + catch(_iB_){return lexer_error(cst_Int32_overflow,v,lexbuf)} case 1: - caml_call1(Stdlib_Buffer[8],v[1]); + caml_call1(Bi_outbuf[19],v[1]); var s=finish_string$1(v,lexbuf); try - {var _lx_=caml_int_of_string(s);return _lx_} - catch(_ly_) + {var _iz_=caml_int_of_string(s);return _iz_} + catch(_iA_) {return custom_error(cst_Expected_an_int32_but_foun,v,lexbuf)} case 2:return long_error(cst_Expected_int32_but_found,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$13,v,lexbuf)}}} @@ -36327,15 +38146,15 @@ switch(ocaml_lex_state$1) {case 0: try - {var _ls_=caml_int64_of_string(caml_call1(lexeme,lexbuf)); - return _ls_} - catch(_lv_){return lexer_error(cst_Int32_overflow$0,v,lexbuf)} + {var _iu_=caml_int64_of_string(caml_call1(lexeme,lexbuf)); + return _iu_} + catch(_ix_){return lexer_error(cst_Int32_overflow$0,v,lexbuf)} case 1: - caml_call1(Stdlib_Buffer[8],v[1]); + caml_call1(Bi_outbuf[19],v[1]); var s=finish_string$1(v,lexbuf); try - {var _lt_=caml_int64_of_string(s);return _lt_} - catch(_lu_) + {var _iv_=caml_int64_of_string(s);return _iv_} + catch(_iw_) {return custom_error(cst_Expected_an_int64_but_foun,v,lexbuf)} case 2:return long_error(cst_Expected_int64_but_found,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$14,v,lexbuf)}}} @@ -36357,14 +38176,14 @@ case 2:return Stdlib[23]; case 3:return caml_float_of_string(caml_call1(lexeme,lexbuf)); case 4: - caml_call1(Stdlib_Buffer[8],v[1]); + caml_call1(Bi_outbuf[19],v[1]); var s=finish_string$1(v,lexbuf); try - {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) + {var _is_=caml_float_of_string(s);return _is_} + catch(_it_) + {return caml_string_notequal(s,cst_Infinity$11) + ?caml_string_notequal(s,cst_Infinity$12) + ?caml_string_notequal(s,cst_NaN$5) ?custom_error(cst_Expected_a_number_but_foun,v,lexbuf) :Stdlib[24] :Stdlib[22] @@ -36385,26 +38204,9 @@ continue} switch(ocaml_lex_state$0) {case 0: - caml_call1(Stdlib_Buffer[8],v[1]);return finish_string$1(v,lexbuf); + caml_call1(Bi_outbuf[19],v[1]);return finish_string$1(v,lexbuf); case 1:return long_error(cst_Expected_but_found$2,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$16,v,lexbuf)}}} - function read_ident(v,lexbuf) - {var ocaml_lex_state=237; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - caml_call1(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)}}} function map_ident(v,f,lexbuf) {var ocaml_lex_state=242; for(;;) @@ -36416,15 +38218,10 @@ var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) - {case 0: - caml_call1(Stdlib_Buffer[8],v[1]);return map_string(v,f,lexbuf); + {case 0:caml_call1(Bi_outbuf[19],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); + var len=lexbuf[6] - lexbuf[5] | 0,_ir_=lexbuf[5]; + return caml_call3(f,caml_call1(Stdlib_Bytes[6],lexbuf[2]),_ir_,len); case 2:return long_error(cst_Expected_string_or_identif$0,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$18,v,lexbuf)}}} function ocaml_lex_read_sequence_rec @@ -36451,10 +38248,10 @@ read_space(v,lexbuf); acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); continue}} - catch(_lp_) - {_lp_ = caml_wrap_exception(_lp_); - if(_lp_ === End_of_array)return acc[1]; - throw _lp_} + catch(_iq_) + {_iq_ = caml_wrap_exception(_iq_); + if(_iq_ === End_of_array)return acc[1]; + throw _iq_} case 1:return long_error(cst_Expected_but_found$3,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$19,v,lexbuf)}}} function read_sequence(read_cell,init_acc,v,lexbuf) @@ -36475,49 +38272,23 @@ try {read_space(v,lexbuf); read_array_end(lexbuf); - var _lm_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_lm_]; + var _in_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_in_]; for(;;) {read_space(v,lexbuf); read_array_sep(v,lexbuf); read_space(v,lexbuf); - var _ln_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_ln_]; + var _io_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_io_]; continue}} - catch(_lo_) - {_lo_ = caml_wrap_exception(_lo_); - if(_lo_ === End_of_array)return acc[1]; - throw _lo_} + catch(_ip_) + {_ip_ = caml_wrap_exception(_ip_); + if(_ip_ === End_of_array)return acc[1]; + throw _ip_} case 1:return long_error(cst_Expected_but_found$4,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$20,v,lexbuf)}}} function read_list_rev(read_cell,v,lexbuf) {return ocaml_lex_read_list_rev_rec(read_cell,v,lexbuf,251)} - function read_array_end(lexbuf) - {var ocaml_lex_state=255; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_array; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function 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_tuple(read_cell,init_acc,v,lexbuf) {var ocaml_lex_state=262; for(;;) @@ -36628,10 +38399,10 @@ read_space(v,lexbuf); acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf); continue}} - catch(_ll_) - {_ll_ = caml_wrap_exception(_ll_); - if(_ll_ === End_of_object)return acc[1]; - throw _ll_} + catch(_im_) + {_im_ = caml_wrap_exception(_im_); + if(_im_ === End_of_object)return acc[1]; + throw _im_} case 1:return long_error(cst_Expected_but_found$6,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$25,v,lexbuf)}}} function read_abstract_fields(read_key,read_field,init_acc,v,lexbuf) @@ -36651,46 +38422,6 @@ {case 0:return 0; case 1:return long_error(cst_Expected_but_found$7,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$26,v,lexbuf)}}} - function read_object_end(lexbuf) - {var ocaml_lex_state=290; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_object; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_object_sep(v,lexbuf) - {var ocaml_lex_state=292; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_object; - case 2:return long_error(cst_Expected_or_but_found$8,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$27,v,lexbuf)}}} - function read_colon(v,lexbuf) - {var ocaml_lex_state=297; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error(cst_Expected_but_found$8,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$28,v,lexbuf)}}} function start_any_tuple(v,lexbuf) {var ocaml_lex_state=301; for(;;) @@ -36776,12 +38507,27 @@ {case 0:return 0; case 1:return long_error(cst_Invalid_string_literal$0,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$35,v,lexbuf)}}} + function skip_ident(v,lexbuf) + {var ocaml_lex_state=394; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return finish_skip_stringlit(v,lexbuf); + case 1:return 0; + case 2:return long_error(cst_Expected_string_or_identif$1,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$37,v,lexbuf)}}} function skip_json$2(counter,v,lexbuf) - {var _lk_=322; + {var _il_=322; if(counter < 50) {var counter$0=counter + 1 | 0; - return ocaml_lex_skip_json_rec(counter$0,v,lexbuf,_lk_)} - return caml_trampoline_return(ocaml_lex_skip_json_rec,[0,v,lexbuf,_lk_])} + return ocaml_lex_skip_json_rec(counter$0,v,lexbuf,_il_)} + return caml_trampoline_return(ocaml_lex_skip_json_rec,[0,v,lexbuf,_il_])} function ocaml_lex_skip_json_rec(counter,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -36821,10 +38567,10 @@ read_space(v,lexbuf); skip_json(v,lexbuf); continue}} - catch(_lj_) - {_lj_ = caml_wrap_exception(_lj_); - if(_lj_ === End_of_object)return 0; - throw _lj_} + catch(_ik_) + {_ik_ = caml_wrap_exception(_ik_); + if(_ik_ === End_of_object)return 0; + throw _ik_} case 10: try {read_space(v,lexbuf); @@ -36836,10 +38582,10 @@ read_space(v,lexbuf); skip_json(v,lexbuf); continue}} - catch(_li_) - {_li_ = caml_wrap_exception(_li_); - if(_li_ === End_of_array)return 0; - throw _li_} + catch(_ij_) + {_ij_ = caml_wrap_exception(_ij_); + if(_ij_ === End_of_array)return 0; + throw _ij_} case 11:return long_error(cst_Invalid_token$3,v,lexbuf); case 12:return long_error(cst_Invalid_token$4,v,lexbuf); case 13: @@ -36885,8 +38631,40 @@ 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 skip_ident(v,lexbuf) - {var ocaml_lex_state=394; + 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= @@ -36896,10 +38674,71 @@ 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)}}} + {case 0:return caml_call2(Bi_outbuf[15],v[1],44); + case 1:caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array; + case 2:return long_error(cst_Expected_or_but_found$12,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$42,v,lexbuf)}}} + function buffer_array_end(v,lexbuf) + {var ocaml_lex_state=485; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_object_sep(v,lexbuf) + {var ocaml_lex_state=480; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],44); + case 1:caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object; + case 2:return long_error(cst_Expected_or_but_found$11,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$41,v,lexbuf)}}} + function buffer_object_end(v,lexbuf) + {var ocaml_lex_state=478; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_space(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=471; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:add_lexeme(v[1],lexbuf);newline(v,lexbuf);continue a; + case 1: + caml_call2(Bi_outbuf[13],v[1],cst$23); + finish_buffer_comment(v,lexbuf); + continue a; + case 2: + caml_call2(Bi_outbuf[15],v[1],10);newline(v,lexbuf);continue a; + case 3:add_lexeme(v[1],lexbuf);continue a; + default:return 0}}}} function finish_buffer_stringlit(v,lexbuf) {var ocaml_lex_state=450; for(;;) @@ -36912,17 +38751,31 @@ continue} switch(ocaml_lex_state$0) {case 0: - caml_call2(Stdlib_Buffer[12],v[1],34); - return add_lexeme(v[1],lexbuf); + caml_call2(Bi_outbuf[15],v[1],34);return add_lexeme(v[1],lexbuf); case 1:return long_error(cst_Invalid_string_literal$1,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$39,v,lexbuf)}}} + function buffer_ident(v,lexbuf) + {var ocaml_lex_state=466; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return finish_buffer_stringlit(v,lexbuf); + case 1:return add_lexeme(v[1],lexbuf); + case 2:return long_error(cst_Expected_string_or_identif$2,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$40,v,lexbuf)}}} function buffer_json$2(counter,v,lexbuf) - {var _lh_=399; + {var _ii_=399; if(counter < 50) {var counter$0=counter + 1 | 0; - return ocaml_lex_buffer_json_rec(counter$0,v,lexbuf,_lh_)} + return ocaml_lex_buffer_json_rec(counter$0,v,lexbuf,_ii_)} return caml_trampoline_return - (ocaml_lex_buffer_json_rec,[0,v,lexbuf,_lh_])} + (ocaml_lex_buffer_json_rec,[0,v,lexbuf,_ii_])} function ocaml_lex_buffer_json_rec(counter,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -36938,7 +38791,7 @@ case 1:return finish_buffer_stringlit(v,lexbuf); case 2: try - {caml_call2(Stdlib_Buffer[12],v[1],123); + {caml_call2(Bi_outbuf[15],v[1],123); buffer_space(v,lexbuf); buffer_object_end(v,lexbuf); buffer_ident(v,lexbuf); @@ -36956,13 +38809,13 @@ buffer_space(v,lexbuf); buffer_json(v,lexbuf); continue}} - catch(_lg_) - {_lg_ = caml_wrap_exception(_lg_); - if(_lg_ === End_of_object)return 0; - throw _lg_} + catch(_ih_) + {_ih_ = caml_wrap_exception(_ih_); + if(_ih_ === End_of_object)return 0; + throw _ih_} case 3: try - {caml_call2(Stdlib_Buffer[12],v[1],91); + {caml_call2(Bi_outbuf[15],v[1],91); buffer_space(v,lexbuf); buffer_array_end(v,lexbuf); buffer_json(v,lexbuf); @@ -36972,10 +38825,10 @@ buffer_space(v,lexbuf); buffer_json(v,lexbuf); continue}} - catch(_lf_) - {_lf_ = caml_wrap_exception(_lf_); - if(_lf_ === End_of_array)return 0; - throw _lf_} + catch(_ig_) + {_ig_ = caml_wrap_exception(_ig_); + if(_ig_ === End_of_array)return 0; + throw _ig_} case 4:return long_error(cst_Invalid_token$6,v,lexbuf); case 5:return long_error(cst_Invalid_token$7,v,lexbuf); case 6: @@ -36985,14 +38838,14 @@ return buffer_json$2(counter$0,v,lexbuf)} return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); case 7: - caml_call2(Stdlib_Buffer[16],v[1],cst$34); + caml_call2(Bi_outbuf[13],v[1],cst$22); finish_buffer_comment(v,lexbuf); if(counter < 50) {var counter$1=counter + 1 | 0; return buffer_json$2(counter$1,v,lexbuf)} return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); case 8: - caml_call2(Stdlib_Buffer[12],v[1],10); + caml_call2(Bi_outbuf[15],v[1],10); newline(v,lexbuf); if(counter < 50) {var counter$2=counter + 1 | 0; @@ -37009,133 +38862,6 @@ 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) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return finish_buffer_stringlit(v,lexbuf); - case 1:return add_lexeme(v[1],lexbuf); - case 2:return long_error(cst_Expected_string_or_identif$2,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$40,v,lexbuf)}}} - function buffer_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(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}}}} - 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; - continue}} - function buffer_object_sep(v,lexbuf) - {var ocaml_lex_state=480; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(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)}}} - 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; - continue}} - 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(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)}}} - 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(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)}}} - 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(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}}}} function junk(lexbuf) {var ocaml_lex_state=513; for(;;) @@ -37152,8 +38878,8 @@ 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 _le_=read_list_rev(read_cell,v,lexbuf); - return caml_call1(Stdlib_List[9],_le_)} + {var _if_=read_list_rev(read_cell,v,lexbuf); + return caml_call1(Stdlib_List[9],_if_)} function read_array(read_cell,v,lexbuf) {var l=read_list_rev(read_cell,v,lexbuf); if(l) @@ -37163,21 +38889,21 @@ 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_; + _ic_=len - 2 | 0; + if(! (_ic_ < 0)) + {var i=_ic_; for(;;) - {var _lc_=caml_call1(Stdlib_List[5],r[1]); - caml_check_bound(a,i)[1 + i] = _lc_; + {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 _ld_=i - 1 | 0; - if(0 !== i){var i=_ld_;continue} + var _ie_=i - 1 | 0; + if(0 !== i){var i=_ie_;continue} break}} return a} return [0]} function read_fields(read_field,init_acc,v) - {return function(_la_) - {return read_abstract_fields(read_ident,read_field,init_acc,v,_la_)}} + {return function(_ib_) + {return read_abstract_fields(read_ident,read_field,init_acc,v,_ib_)}} function from_lexbuf(v,opt,lexbuf) {if(opt)var sth=opt[1],stream=sth;else var stream=0; read_space(v,lexbuf); @@ -37193,23 +38919,23 @@ {var lexbuf=caml_call2(from_string,0,s), v=init_lexer(buf,fname,lnum,0), - _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$_}} + _h$_=from_lexbuf(v,0,lexbuf); + return _h$_} + catch(_ia_) + {_ia_ = caml_wrap_exception(_ia_); + if(_ia_ === End_of_input)return json_error(cst_Blank_input_data); + throw _ia_}} function from_channel$0(buf,fname,lnum,ic) {try {var lexbuf=caml_call2(from_channel,0,ic), v=init_lexer(buf,fname,lnum,0), - _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_}} + _h9_=from_lexbuf(v,0,lexbuf); + return _h9_} + catch(_h__) + {_h__ = caml_wrap_exception(_h__); + if(_h__ === End_of_input)return json_error(cst_Blank_input_data$0); + throw _h__}} function from_file(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); try @@ -37218,11 +38944,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 seq_from_lexbuf(v,opt,lexbuf) + function stream_from_lexbuf(v,opt,lexbuf) {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - function f(param) + function f(i) {try - {var _k7_=[0,from_lexbuf(v,stream,lexbuf),f];return _k7_} + {var _h8_=[0,from_lexbuf(v,stream,lexbuf)];return _h8_} catch(e) {e = caml_wrap_exception(e); if(e === End_of_input){caml_call1(fin,0);return 0} @@ -37231,80 +38957,77 @@ catch(fin_e) {fin_e = caml_wrap_exception(fin_e);throw [0,Finally,e,fin_e]} throw e}} - return f} - function seq_from_string(buf,fname,lnum,s) + return caml_call1(Stdlib_Stream[3],f)} + function stream_from_string(buf,fname,lnum,s) {var v=init_lexer(buf,fname,lnum,0); - return seq_from_lexbuf(v,0,caml_call2(from_string,0,s))} - function seq_from_channel(buf,fin,fname,lnum,ic) + return stream_from_lexbuf(v,0,caml_call2(from_string,0,s))} + function stream_from_channel(buf,fin,fname,lnum,ic) {var lexbuf=caml_call2(from_channel,0,ic),v=init_lexer(buf,fname,lnum,0); - return seq_from_lexbuf(v,fin,lexbuf)} - function seq_from_file(buf,fname,lnum,file) + return stream_from_lexbuf(v,fin,lexbuf)} + function stream_from_file(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); function fin(param){return caml_call1(Stdlib[93],ic)} var fname$0=fname || [0,file], lexbuf=caml_call2(from_channel,0,ic), v=init_lexer(buf,fname$0,lnum,0); - return seq_from_lexbuf(v,[0,fin],lexbuf)} - function lineseq_from_channel(buf,opt,fname,_kZ_,ic) + return stream_from_lexbuf(v,[0,fin],lexbuf)} + function linestream_from_channel(buf,opt,fname,_h6_,ic) {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - if(_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) + if(_h6_)var sth$0=_h6_[1],lnum0=sth$0;else var lnum0=1; + var buf$0=buf || [0,caml_call3(Bi_outbuf[3],0,0,256)]; + function f(i) {try {var line=caml_call1(Stdlib[83],ic), - _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_} + lnum=lnum0 + i | 0, + _h7_=[0,[0,826371656,from_string$0(buf$0,fname,[0,lnum],line)]]; + return _h7_} catch(e) {e = caml_wrap_exception(e); - 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) + return e === Stdlib[12]?(caml_call1(fin,0),0):[0,[0,3458171,e]]}} + return caml_call1(Stdlib_Stream[3],f)} + function linestream_from_file(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); function fin(param){return caml_call1(Stdlib[93],ic)} var fname$0=fname || [0,file]; - return lineseq_from_channel(buf,[0,fin],fname$0,lnum,ic)} + return linestream_from_channel(buf,[0,fin],fname$0,lnum,ic)} function prettify(std,s) {return pretty_to_string$0(std,from_string$0(0,0,0,s))} - function compact(std,s) - {return to_string$0(0,0,0,0,from_string$0(0,0,0,s))} + function compact(std,s){return to_string$1(0,0,0,from_string$0(0,0,0,s))} + function validate_json(path,value){return 0} var Type_error=[248,cst_Yojson_Basic_Util_Type_err,caml_fresh_oo_id(0)]; function typerr(msg,js) {if(typeof js === "number") - var _kY_=cst_null$3; + var _h5_=cst_null$2; else var - _kX_=js[1], - _kY_= - 708012133 <= _kX_ - ?726928360 === _kX_ + _h4_=js[1], + _h5_= + 708012133 <= _h4_ + ?726928360 === _h4_ ?cst_tuple - :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]} + :848054398 <= _h4_ + ?963043957 <= _h4_?cst_object:cst_array + :737456202 <= _h4_?cst_bool:cst_variant + :3654863 <= _h4_ + ?365180284 <= _h4_?cst_float:cst_int + :-752863768 <= _h4_?cst_intlit:cst_string; + throw [0,Type_error,caml_call2(Stdlib[28],msg,_h5_),js]} var Undefined=[248,cst_Yojson_Basic_Util_Undefine,caml_fresh_oo_id(0)]; + function symbol(_h3_,_h2_){return caml_call1(_h2_,_h3_)} function assoc(name,obj) {try - {var _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_}} + {var _h0_=caml_call2(Stdlib_List[46],name,obj);return _h0_} + catch(_h1_) + {_h1_ = caml_wrap_exception(_h1_); + if(_h1_ === Stdlib[8])return 870828711; + throw _h1_}} function member(name,js) {if(typeof js !== "number" && 963043957 === js[1]) {var obj=js[2];return assoc(name,obj)} - var _kU_=caml_call2(Stdlib[28],name,cst_of_non_object_type); - return typerr(caml_call2(Stdlib[28],cst_Can_t_get_member,_kU_),js)} + var _hZ_=caml_call2(Stdlib[28],name,cst_of_non_object_type); + return typerr(caml_call2(Stdlib[28],cst_Can_t_get_member,_hZ_),js)} function index(i,js) {if(typeof js !== "number" && 848054398 === js[1]) {var @@ -37314,13 +39037,13 @@ if(0 <= wrapped_index && ! (len <= wrapped_index)) return caml_call2(Stdlib_List[7],l,wrapped_index); var - _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]} + _hX_=caml_call1(Stdlib[33],i), + _hY_=caml_call2(Stdlib[28],_hX_,cst_out_of_bounds); + throw [0,Undefined,caml_call2(Stdlib[28],cst_Index,_hY_),js]} var - _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)} + _hV_=caml_call1(Stdlib[33],i), + _hW_=caml_call2(Stdlib[28],_hV_,cst_of_non_array_type); + return typerr(caml_call2(Stdlib[28],cst_Can_t_get_index,_hW_),js)} function map(f,js) {if(typeof js !== "number" && 848054398 === js[1]) {var l=js[2];return [0,848054398,caml_call2(Stdlib_List[19],f,l)]} @@ -37341,17 +39064,17 @@ return typerr(cst_Expected_bool_or_null_got,js)} function to_number(js) {if(typeof js !== "number") - {var _kP_=js[1]; - if(3654863 === _kP_){var i=js[2];return i} - if(365180284 === _kP_){var f=js[2];return f}} + {var _hU_=js[1]; + if(3654863 === _hU_){var i=js[2];return i} + if(365180284 === _hU_){var f=js[2];return f}} return typerr(cst_Expected_number_got,js)} function to_number_option(js) {if(typeof js === "number") {if(870828711 === js)return 0} else - {var _kO_=js[1]; - if(3654863 === _kO_){var i=js[2];return [0,i]} - if(365180284 === _kO_){var f=js[2];return [0,f]}} + {var _hT_=js[1]; + if(3654863 === _hT_){var i=js[2];return [0,i]} + if(365180284 === _hT_){var f=js[2];return [0,f]}} return typerr(cst_Expected_number_or_null_go,js)} function to_float(js) {if(typeof js !== "number" && 365180284 === js[1]){var f=js[2];return f} @@ -37374,7 +39097,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$1(js) + function to_string$2(js) {if(typeof js !== "number" && -976970511 === js[1]){var s=js[2];return s} return typerr(cst_Expected_string_got,js)} function to_string_option(js) @@ -37417,8 +39140,8 @@ {if(typeof param !== "number" && 848054398 === param[1]) {var l=param[2]; try - {var _kM_=[0,caml_call2(Stdlib_List[7],l,i)];return _kM_} - catch(_kN_){return 0}} + {var _hR_=[0,caml_call2(Stdlib_List[7],l,i)];return _hR_} + catch(_hS_){return 0}} return 0}, l)} function filter_list(l) @@ -37434,8 +39157,8 @@ {if(typeof param !== "number" && 963043957 === param[1]) {var l=param[2]; try - {var _kK_=[0,caml_call2(Stdlib_List[46],k,l)];return _kK_} - catch(_kL_){return 0}} + {var _hP_=[0,caml_call2(Stdlib_List[46],k,l)];return _hP_} + catch(_hQ_){return 0}} return 0}, l)} function filter_assoc(l) @@ -37470,9 +39193,9 @@ {return filter_map (function(param) {if(typeof param !== "number") - {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]}} + {var _hO_=param[1]; + if(3654863 === _hO_){var x=param[2];return [0,x]} + if(365180284 === _hO_){var x$0=param[2];return [0,x$0]}} return 0}, l)} function filter_string(l) @@ -37483,13 +39206,13 @@ return 0}, l)} function keys(o) - {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 _hM_(param){var key=param[1];return key} + var _hN_=caml_call1(Stdlib_List[19],_hM_); + return symbol(to_assoc(o),_hN_)} function values(o) - {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 _hK_(param){var value=param[2];return value} + var _hL_=caml_call1(Stdlib_List[19],_hK_); + return symbol(to_assoc(o),_hL_)} function combine(first,second) {if (typeof first @@ -37512,65 +39235,65 @@ throw [0,Stdlib[6],cst_Expected_two_objects_check]} function to_basic(x) {if(typeof x !== "number") - {var _ky_=x[1]; - if(726928360 <= _ky_) - {if(737456202 !== _ky_) - {if(963043957 <= _ky_) + {var _hD_=x[1]; + if(726928360 <= _hD_) + {if(737456202 !== _hD_) + {if(963043957 <= _hD_) {var l=x[2], - _kz_= + _hE_= function(param) {var v=param[2],k=param[1];return [0,k,to_basic(v)]}, - _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_)]}} + _hF_=caml_call2(Stdlib_List[21],_hE_,l); + return [0,963043957,caml_call1(Stdlib_List[9],_hF_)]} + var l$0=x[2],_hG_=caml_call2(Stdlib_List[21],to_basic,l$0); + return [0,848054398,caml_call1(Stdlib_List[9],_hG_)]}} else - {if(-752863768 === _ky_){var s=x[2];return [0,-976970511,s]} - if(708012133 <= _ky_) - {var _kC_=x[2],_kD_=_kC_[2],_kE_=_kC_[1]; - if(_kD_) - {var v=_kD_[1]; - return [0,848054398,[0,[0,-976970511,_kE_],[0,to_basic(v),0]]]} - return [0,-976970511,_kE_]}}} + {if(-752863768 === _hD_){var s=x[2];return [0,-976970511,s]} + if(708012133 <= _hD_) + {var _hH_=x[2],_hI_=_hH_[2],_hJ_=_hH_[1]; + if(_hI_) + {var v=_hI_[1]; + return [0,848054398,[0,[0,-976970511,_hJ_],[0,to_basic(v),0]]]} + return [0,-976970511,_hJ_]}}} return x} function hex$2(n) - {var _kx_=10 <= n?n + 87 | 0:n + 48 | 0; - return caml_call1(Stdlib_Char[1],_kx_)} + {var _hC_=10 <= n?n + 87 | 0:n + 48 | 0; + return caml_call1(Stdlib_Char[1],_hC_)} function write_special$1(src,start,stop,ob,str) - {caml_call4(Stdlib_Buffer[18],ob,src,start[1],stop - start[1] | 0); - caml_call2(Stdlib_Buffer[16],ob,str); + {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0); + caml_call2(Bi_outbuf[13],ob,str); start[1] = stop + 1 | 0; return 0} function finish_string$2(src,start,ob) {try {var - _kw_= + _hB_= caml_call4 - (Stdlib_Buffer[18], + (Bi_outbuf[14], ob, src, start[1], caml_ml_string_length(src) - start[1] | 0); - return _kw_} + return _hB_} catch(exc) {exc = caml_wrap_exception(exc); caml_call4 (Stdlib_Printf[3], - _bU_, + _bC_, src, start[1], caml_ml_string_length(src) - start[1] | 0); throw exc}} function write_string$1(ob,s) - {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_; + {caml_call2(Bi_outbuf[15],ob,34); + var start=[0,0],_hz_=caml_ml_string_length(s) - 1 | 0,_hy_=0; + if(! (_hz_ < 0)) + {var i$0=_hy_; for(;;) - {var c=caml_string_get(s,i); + {var c=caml_string_get(s,i$0); if(92 === c) - write_special$1(s,start,i,ob,cst$37); + write_special$1(s,start,i$0,ob,cst$25); else {var switch$0=0; if(35 <= c) @@ -37579,12 +39302,12 @@ if(8 <= c) {var switch$1=0; switch(c - 8 | 0) - {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 0:write_special$1(s,start,i$0,ob,cst_b$1);break; + case 1:write_special$1(s,start,i$0,ob,cst_t$1);break; + case 2:write_special$1(s,start,i$0,ob,cst_n$1);break; + case 4:write_special$1(s,start,i$0,ob,cst_f$1);break; + case 5:write_special$1(s,start,i$0,ob,cst_r$1);break; + case 26:write_special$1(s,start,i$0,ob,cst$26);break; case 24: case 25:switch$0 = 2;switch$1 = 1;break; default:switch$0 = 1;switch$1 = 1}} @@ -37593,52 +39316,49 @@ switch(switch$0) {case 2:break; case 1: - 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; + caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0); + var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1]; + caml_call5(Stdlib_Bytes[12],cst_u00$1,0,dst,i,4); + caml_bytes_set(dst,i + 4 | 0,hex$2(c >>> 4 | 0)); + caml_bytes_set(dst,i + 5 | 0,hex$2(c & 15)); + start[1] = i$0 + 1 | 0; break }} - var _kv_=i + 1 | 0; - if(_ku_ !== i){var i=_kv_;continue} + var _hA_=i$0 + 1 | 0; + if(_hz_ !== i$0){var i$0=_hA_;continue} break}} finish_string$2(s,start,ob); - return caml_call2(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)} + return caml_call2(Bi_outbuf[15],ob,34)} function write_null$1(ob,param) - {return caml_call2(Stdlib_Buffer[16],ob,cst_null$4)} + {return caml_call2(Bi_outbuf[13],ob,cst_null$3)} function write_bool$1(ob,x) - {var _kq_=x?cst_true$1:cst_false$1; - return caml_call2(Stdlib_Buffer[16],ob,_kq_)} + {var _hx_=x?cst_true$2:cst_false$2; + return caml_call2(Bi_outbuf[13],ob,_hx_)} var - _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); + _bD_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), + _bE_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])), + max_digits$1=caml_call2(Stdlib[17],_bE_,_bD_); + function write_digits$1(s,pos,x) + {if(0 === x)return pos; var - n=caml_call1(Stdlib[18],d), - _kp_=caml_call1(Stdlib_Char[1],n + 48 | 0); - return caml_call2(Stdlib_Buffer[12],s,_kp_)} + d=x % 10 | 0, + pos$0=write_digits$1(s,pos,x / 10 | 0), + n=caml_call1(Stdlib[18],d); + caml_bytes_set(s,pos$0,caml_call1(Stdlib_Char[1],n + 48 | 0)); + return pos$0 + 1 | 0} function write_int$1(ob,x) - {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))} + {caml_call2(Bi_outbuf[9],ob,max_digits$1); + if(0 < x){ob[3] = write_digits$1(ob[1],ob[3],x);return 0} + if(0 <= x)return caml_call2(Bi_outbuf[15],ob,48); + var s=ob[1],pos=ob[3]; + caml_bytes_set(s,pos,45); + ob[3] = write_digits$1(s,pos + 1 | 0,x); + return 0} function float_needs_period$1(s) {try - {var _kl_=caml_ml_string_length(s) - 1 | 0,_kk_=0; - if(! (_kl_ < 0)) - {var i=_kk_; + {var _ht_=caml_ml_string_length(s) - 1 | 0,_hs_=0; + if(! (_ht_ < 0)) + {var i=_hs_; for(;;) {var match=caml_string_get(s,i),switch$0=0; if(48 <= match) @@ -37646,89 +39366,113 @@ else if(45 === match)switch$0 = 1; if(! switch$0)throw Stdlib[3]; - var _kn_=i + 1 | 0; - if(_kl_ !== i){var i=_kn_;continue} + var _hv_=i + 1 | 0; + if(_ht_ !== i){var i=_hv_;continue} break}} - var _km_=1; - return _km_} - catch(_ko_) - {_ko_ = caml_wrap_exception(_ko_); - if(_ko_ === Stdlib[3])return 0; - throw _ko_}} + var _hu_=1; + return _hu_} + catch(_hw_) + {_hw_ = caml_wrap_exception(_hw_); + if(_hw_ === Stdlib[3])return 0; + throw _hw_}} + function write_float_fast$1(ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var _hq_=0. < x?cst_Infinity$13:cst_Infinity$14; + return caml_call2(Bi_outbuf[13],ob,_hq_)} + if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$6); + var s=caml_call2(Stdlib_Printf[4],_bF_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _hr_=float_needs_period$1(s); + return _hr_?caml_call2(Bi_outbuf[13],ob,cst_0$9):_hr_} function write_float$1(ob,x) {var match=caml_classify_float(x); if(3 === match) - {var _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 _ho_=0. < x?cst_Infinity$15:cst_Infinity$16; + return caml_call2(Bi_outbuf[13],ob,_ho_)} + if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$7); var - s1=caml_call2(Stdlib_Printf[4],_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_} + s1=caml_call2(Stdlib_Printf[4],_bG_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_bH_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _hp_=float_needs_period$1(s); + return _hp_?caml_call2(Bi_outbuf[13],ob,cst_0$10):_hp_} function write_normal_float_prec$1(significant_figures,ob,x) {var switcher=significant_figures - 1 | 0; if(15 < switcher >>> 0) - var s=caml_call2(Stdlib_Printf[4],_bZ_,x); + var s=caml_call2(Stdlib_Printf[4],_bI_,x); else switch(switcher) - {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_} + {case 0:var s=caml_call2(Stdlib_Printf[4],_bJ_,x);break; + case 1:var s=caml_call2(Stdlib_Printf[4],_bK_,x);break; + case 2:var s=caml_call2(Stdlib_Printf[4],_bL_,x);break; + case 3:var s=caml_call2(Stdlib_Printf[4],_bM_,x);break; + case 4:var s=caml_call2(Stdlib_Printf[4],_bN_,x);break; + case 5:var s=caml_call2(Stdlib_Printf[4],_bO_,x);break; + case 6:var s=caml_call2(Stdlib_Printf[4],_bP_,x);break; + case 7:var s=caml_call2(Stdlib_Printf[4],_bQ_,x);break; + case 8:var s=caml_call2(Stdlib_Printf[4],_bR_,x);break; + case 9:var s=caml_call2(Stdlib_Printf[4],_bS_,x);break; + case 10:var s=caml_call2(Stdlib_Printf[4],_bT_,x);break; + case 11:var s=caml_call2(Stdlib_Printf[4],_bU_,x);break; + case 12:var s=caml_call2(Stdlib_Printf[4],_bV_,x);break; + case 13:var s=caml_call2(Stdlib_Printf[4],_bW_,x);break; + case 14:var s=caml_call2(Stdlib_Printf[4],_bX_,x);break; + default:var s=caml_call2(Stdlib_Printf[4],_bY_,x)} + caml_call2(Bi_outbuf[13],ob,s); + var _hn_=float_needs_period$1(s); + return _hn_?caml_call2(Bi_outbuf[13],ob,cst_0$11):_hn_} function write_float_prec$1(significant_figures,ob,x) {var match=caml_classify_float(x); if(3 === match) - {var _kg_=0. < x?cst_Infinity$11:cst_Infinity$12; - return caml_call2(Stdlib_Buffer[16],ob,_kg_)} + {var _hm_=0. < x?cst_Infinity$17:cst_Infinity$18; + return caml_call2(Bi_outbuf[13],ob,_hm_)} return 4 <= match - ?caml_call2(Stdlib_Buffer[16],ob,cst_NaN$5) + ?caml_call2(Bi_outbuf[13],ob,cst_NaN$8) :write_normal_float_prec$1(significant_figures,ob,x)} + function write_std_float_fast$1(ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var + _hk_= + 0. < x + ?cst_Infinity_value_not_allowed$11 + :cst_Infinity_value_not_allowed$12; + return json_error(_hk_)} + if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$5); + var s=caml_call2(Stdlib_Printf[4],_bZ_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _hl_=float_needs_period$1(s); + return _hl_?caml_call2(Bi_outbuf[13],ob,cst_0$12):_hl_} function write_std_float$1(ob,x) {var match=caml_classify_float(x); if(3 === match) {var - _ke_= + _hi_= 0. < x - ?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); + ?cst_Infinity_value_not_allowed$13 + :cst_Infinity_value_not_allowed$14; + return json_error(_hi_)} + if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$6); var - s1=caml_call2(Stdlib_Printf[4],_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_} + s1=caml_call2(Stdlib_Printf[4],_b0_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_b1_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _hj_=float_needs_period$1(s); + return _hj_?caml_call2(Bi_outbuf[13],ob,cst_0$13):_hj_} function write_std_float_prec$1(significant_figures,ob,x) {var match=caml_classify_float(x); if(3 === match) {var - _kd_= + _hh_= 0. < x - ?cst_Infinity_value_not_allowed$9 - :cst_Infinity_value_not_allowed$10; - return json_error(_kd_)} + ?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$4) + ?json_error(cst_NaN_value_not_allowed_in_s$7) :write_normal_float_prec$1(significant_figures,ob,x)} - var write_intlit$0=Stdlib_Buffer[16]; + var write_intlit$0=Bi_outbuf[13]; function iter2$1(f_elt,f_sep,x,param$0) {if(param$0) {var l$0=param$0[2],y$0=param$0[1]; @@ -37743,440 +39487,300 @@ continue} return 0}} return 0} - 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 f_sep$1(ob){return caml_call2(Bi_outbuf[15],ob,44)} function write_tuple$0(ob,l) - {caml_call2(Stdlib_Buffer[12],ob,40); + {caml_call2(Bi_outbuf[15],ob,40); iter2$1(write_t$1,f_sep$1,ob,l); - return caml_call2(Stdlib_Buffer[12],ob,41)} + return caml_call2(Bi_outbuf[15],ob,41)} function write_list$1(ob,l) - {caml_call2(Stdlib_Buffer[12],ob,91); + {caml_call2(Bi_outbuf[15],ob,91); iter2$1(write_t$1,f_sep$1,ob,l); - return caml_call2(Stdlib_Buffer[12],ob,93)} + return caml_call2(Bi_outbuf[15],ob,93)} + function write_t$1(ob,x) + {if(typeof x === "number")return write_null$1(ob,0); + var _hg_=x[1]; + if(708012133 <= _hg_) + {if(726928360 === _hg_){var l=x[2];return write_tuple$0(ob,l)} + if(848054398 <= _hg_) + {if(963043957 <= _hg_){var l$0=x[2];return write_assoc$1(ob,l$0)} + var l$1=x[2]; + return write_list$1(ob,l$1)} + if(737456202 <= _hg_){var b=x[2];return write_bool$1(ob,b)} + var match=x[2],o=match[2],s=match[1]; + return write_variant$0(ob,s,o)} + if(3654863 <= _hg_) + {if(365180284 <= _hg_){var f=x[2];return write_float$1(ob,f)} + var i=x[2]; + return write_int$1(ob,i)} + if(-752863768 <= _hg_) + {var s$0=x[2];return caml_call2(Bi_outbuf[13],ob,s$0)} + var s$1=x[2]; + return write_string$1(ob,s$1)} function write_assoc$1(ob,l) {function f_elt(ob,param) {var x=param[2],s=param[1]; write_string$1(ob,s); - caml_call2(Stdlib_Buffer[12],ob,58); + caml_call2(Bi_outbuf[15],ob,58); return write_t$1(ob,x)} - caml_call2(Stdlib_Buffer[12],ob,123); + caml_call2(Bi_outbuf[15],ob,123); iter2$1(f_elt,f_sep$1,ob,l); - 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) - {var x=o[1]; - caml_call2(Stdlib_Buffer[12],ob,91); - write_string$1(ob,s); - caml_call2(Stdlib_Buffer[12],ob,44); - write_std_json$1(ob,x); - return caml_call2(Stdlib_Buffer[12],ob,93)} - return write_string$1(ob,s)} + return caml_call2(Bi_outbuf[15],ob,125)} + function write_variant$0(ob,s,o) + {caml_call2(Bi_outbuf[15],ob,60); + write_string$1(ob,s); + if(o){var x=o[1];caml_call2(Bi_outbuf[15],ob,58);write_t$1(ob,x)} + return caml_call2(Bi_outbuf[15],ob,62)} function write_std_tuple$0(ob,l) - {caml_call2(Stdlib_Buffer[12],ob,91); + {caml_call2(Bi_outbuf[15],ob,91); iter2$1(write_std_json$1,f_sep$1,ob,l); - return caml_call2(Stdlib_Buffer[12],ob,93)} + return caml_call2(Bi_outbuf[15],ob,93)} function write_std_json$1(ob,x) {if(typeof x === "number")return write_null$1(ob,0); - var _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 _hf_=x[1]; + if(708012133 <= _hf_) + {if(726928360 === _hf_){var l=x[2];return write_std_tuple$0(ob,l)} + if(848054398 <= _hf_) + {if(963043957 <= _hf_) {var l$0=x[2], f_elt= function(ob,param) {var x=param[2],s=param[1]; write_string$1(ob,s); - caml_call2(Stdlib_Buffer[12],ob,58); + caml_call2(Bi_outbuf[15],ob,58); return write_std_json$1(ob,x)}; - caml_call2(Stdlib_Buffer[12],ob,123); + caml_call2(Bi_outbuf[15],ob,123); iter2$1(f_elt,f_sep$1,ob,l$0); - return caml_call2(Stdlib_Buffer[12],ob,125)} + return caml_call2(Bi_outbuf[15],ob,125)} var l$1=x[2]; - caml_call2(Stdlib_Buffer[12],ob,91); + caml_call2(Bi_outbuf[15],ob,91); iter2$1(write_std_json$1,f_sep$1,ob,l$1); - return caml_call2(Stdlib_Buffer[12],ob,93)} - if(737456202 <= _kb_){var b=x[2];return write_bool$1(ob,b)} + return caml_call2(Bi_outbuf[15],ob,93)} + if(737456202 <= _hf_){var b=x[2];return write_bool$1(ob,b)} var match=x[2],o=match[2],s=match[1]; return write_std_variant$0(ob,s,o)} - if(3654863 <= _kb_) - {if(365180284 <= _kb_){var f=x[2];return write_std_float$1(ob,f)} + if(3654863 <= _hf_) + {if(365180284 <= _hf_){var f=x[2];return write_std_float$1(ob,f)} var i=x[2]; return write_int$1(ob,i)} - if(-752863768 <= _kb_) - {var s$0=x[2];return caml_call2(Stdlib_Buffer[16],ob,s$0)} + if(-752863768 <= _hf_) + {var s$0=x[2];return caml_call2(Bi_outbuf[13],ob,s$0)} var s$1=x[2]; return write_string$1(ob,s$1)} - function 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) + function write_std_variant$0(ob,s,o) + {if(o) + {var x=o[1]; + caml_call2(Bi_outbuf[15],ob,91); + write_string$1(ob,s); + caml_call2(Bi_outbuf[15],ob,44); + write_std_json$1(ob,x); + return caml_call2(Bi_outbuf[15],ob,93)} + return write_string$1(ob,s)} + function to_outbuf$1(opt,ob,x) + {if(opt)var sth=opt[1],std=sth;else var std=0; + return std + ?is_object_or_array(x) + ?write_std_json$1(ob,x) + :json_error(cst_Root_is_not_an_object_or_a$2) + :write_t$1(ob,x)} + function to_string$3(buf,opt,std,x) {if(opt)var sth=opt[1],len=sth;else var len=256; - if(_j$_)var sth$0=_j$_[1],suf=sth$0;else var suf=cst$40; if(buf) - {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} else - 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); + var ob$0=caml_call3(Bi_outbuf[3],0,0,len); + to_outbuf$1(std,ob$0,x); + var s=caml_call1(Bi_outbuf[4],ob$0); + caml_call1(Bi_outbuf[19],ob$0); return s} - function to_channel$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} + function to_channel$2(buf,len,std,oc,x) + {if(buf) + var ob=buf[1],ob$0=ob; else - 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} + var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); + to_outbuf$1(std,ob$0,x); + return caml_call1(Bi_outbuf[6],ob$0)} + function to_output$1(buf,len,std,out,x) + {if(buf) + var ob=buf[1],ob$0=ob; else - var ob$0=caml_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); + var ob$0=caml_call3(Bi_outbuf[7],len,0,out); + to_outbuf$1(std,ob$0,x); + return caml_call1(Bi_outbuf[8],ob$0)} + function to_file$1(len,std,file,x) + {var oc=caml_call1(Stdlib[60],file); try - {to_channel$1(0,len,[0,suf],std,oc,x); - var _j7_=caml_call1(Stdlib[76],oc); - return _j7_} + {to_channel$2(0,len,std,oc,x); + var _he_=caml_call1(Stdlib[76],oc); + return _he_} catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} - function 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) + function stream_to_outbuf$1(std,ob,st) + {function _hc_(_hd_){return to_outbuf$1(std,ob,_hd_)} + return caml_call2(Stdlib_Stream[8],_hc_,st)} + function stream_to_string$1(buf,opt,std,st) {if(opt)var sth=opt[1],len=sth;else var len=256; - if(_j3_)var sth$0=_j3_[1],suf=sth$0;else var suf=cst$45; if(buf) - {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} else - 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); + var ob$0=caml_call3(Bi_outbuf[3],0,0,len); + stream_to_outbuf$1(std,ob$0,st); + var s=caml_call1(Bi_outbuf[4],ob$0); + caml_call1(Bi_outbuf[19],ob$0); return s} - function 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} + function stream_to_channel$1(buf,len,std,oc,st) + {if(buf) + var ob=buf[1],ob$0=ob; else - 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); + var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); + stream_to_outbuf$1(std,ob$0,st); + return caml_call1(Bi_outbuf[6],ob$0)} + function stream_to_file$1(len,std,file,st) + {var oc=caml_call1(Stdlib[60],file); try - {seq_to_channel$1(0,len,[0,suf],std,oc,st); - var _j0_=caml_call1(Stdlib[76],oc); - return _j0_} + {stream_to_channel$1(0,len,std,oc,st); + var _hb_=caml_call1(Stdlib[76],oc); + return _hb_} catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} function sort$1(x) {if(typeof x !== "number") - {var _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 _g4_=x[1]; + if(726928361 <= _g4_) + {if(848054398 === _g4_) + {var l=x[2],_g5_=caml_call2(Stdlib_List[21],sort$1,l); + return [0,848054398,caml_call1(Stdlib_List[9],_g5_)]} + if(963043957 === _g4_) {var l$0=x[2], - _jT_= + _g6_= function(param) {var v=param[2],k=param[1];return [0,k,sort$1(v)]}, - _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]; + _g7_=caml_call2(Stdlib_List[21],_g6_,l$0), + l$1=caml_call1(Stdlib_List[9],_g7_), + _g8_= + function(param,_ha_) + {var b=_ha_[1],a=param[1]; return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_jV_,l$1)]}} + return [0,963043957,caml_call2(Stdlib_List[57],_g8_,l$1)]}} else - if(708012133 === _jR_) - {var _jW_=x[2],_jX_=_jW_[2]; - if(_jX_) - {var v=_jX_[1],k=_jW_[1],v$0=sort$1(v); + if(708012133 === _g4_) + {var _g9_=x[2],_g__=_g9_[2]; + if(_g__) + {var v=_g__[1],k=_g9_[1],v$0=sort$1(v); return v === v$0?x:[0,708012133,[0,k,[0,v$0]]]}} else - if(726928360 <= _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_)]}} + if(726928360 <= _g4_) + {var l$2=x[2],_g$_=caml_call2(Stdlib_List[21],sort$1,l$2); + return [0,726928360,caml_call1(Stdlib_List[9],_g$_)]}} return x} - function pp_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(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_) - {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_} - return caml_call2(Stdlib_Format[13],out,cst$51)} - var _jg_=x$0[2]; - if(_jg_) - {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_} - return caml_call2(Stdlib_Format[13],out,cst$54)} - 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_)} - if(3654863 <= _i9_) - {if(365180284 <= _i9_) - {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)} - var x$7=x$0[2],_i8_=caml_call1(Stdlib[33],x$7); - return caml_call2(Stdlib_Format[13],out,_i8_)} - 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_)}} - 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) + function pp$1(fmt,param) {if(typeof param === "number") return caml_call2(Stdlib_Format[13],fmt,cst_Null$1); - var _iX_=param[1]; - if(708012133 <= _iX_) - {if(726928360 === _iX_) + var _gX_=param[1]; + if(708012133 <= _gX_) + {if(726928360 === _gX_) {var tup=param[2]; - caml_call2(Stdlib_Format[129],fmt,_cx_); - caml_call2(Stdlib_Format[129],fmt,_cy_); + caml_call2(Stdlib_Format[129],fmt,_b2_); + caml_call2(Stdlib_Format[129],fmt,_b3_); var - _iY_=0, - _iZ_= + _gY_=0, + _gZ_= function(sep,e) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_cz_); - pp$4(fmt,e); + {if(sep)caml_call2(Stdlib_Format[129],fmt,_b4_); + pp$1(fmt,e); return 1}; - 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_) + caml_call3(Stdlib_List[25],_gZ_,_gY_,tup); + caml_call2(Stdlib_Format[129],fmt,_b5_); + return caml_call2(Stdlib_Format[129],fmt,_b6_)} + if(848054398 <= _gX_) + {if(963043957 <= _gX_) {var xs=param[2]; - caml_call2(Stdlib_Format[129],fmt,_cC_); - caml_call2(Stdlib_Format[129],fmt,_cD_); + caml_call2(Stdlib_Format[129],fmt,_b7_); + caml_call2(Stdlib_Format[129],fmt,_b8_); var - _i0_=0, - _i1_= + _g0_=0, + _g1_= function(sep,param) {var value=param[2],key=param[1]; - 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_); + if(sep)caml_call2(Stdlib_Format[129],fmt,_b9_); + caml_call2(Stdlib_Format[129],fmt,_b__); + caml_call3(Stdlib_Format[129],fmt,_b$_,key); + caml_call2(Stdlib_Format[129],fmt,_ca_); + pp$1(fmt,value); + caml_call2(Stdlib_Format[129],fmt,_cb_); return 1}; - caml_call3(Stdlib_List[25],_i1_,_i0_,xs); - caml_call2(Stdlib_Format[129],fmt,_cJ_); - return caml_call2(Stdlib_Format[129],fmt,_cK_)} + caml_call3(Stdlib_List[25],_g1_,_g0_,xs); + caml_call2(Stdlib_Format[129],fmt,_cc_); + return caml_call2(Stdlib_Format[129],fmt,_cd_)} var xs$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_cL_); - caml_call2(Stdlib_Format[129],fmt,_cM_); + caml_call2(Stdlib_Format[129],fmt,_ce_); + caml_call2(Stdlib_Format[129],fmt,_cf_); var - _i2_=0, - _i3_= + _g2_=0, + _g3_= function(sep,x) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_cN_); - pp$4(fmt,x); + {if(sep)caml_call2(Stdlib_Format[129],fmt,_cg_); + pp$1(fmt,x); return 1}; - 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_) + caml_call3(Stdlib_List[25],_g3_,_g2_,xs$0); + caml_call2(Stdlib_Format[129],fmt,_ch_); + return caml_call2(Stdlib_Format[129],fmt,_ci_)} + if(737456202 <= _gX_) {var x=param[2]; - caml_call2(Stdlib_Format[129],fmt,_cQ_); - caml_call3(Stdlib_Format[129],fmt,_cR_,x); - return caml_call2(Stdlib_Format[129],fmt,_cS_)} + caml_call2(Stdlib_Format[129],fmt,_cj_); + caml_call3(Stdlib_Format[129],fmt,_ck_,x); + return caml_call2(Stdlib_Format[129],fmt,_cl_)} var match=param[2],value=match[2],name=match[1]; - caml_call2(Stdlib_Format[129],fmt,_cT_); - caml_call2(Stdlib_Format[129],fmt,_cU_); - caml_call3(Stdlib_Format[129],fmt,_cV_,name); - caml_call2(Stdlib_Format[129],fmt,_cW_); + caml_call2(Stdlib_Format[129],fmt,_cm_); + caml_call2(Stdlib_Format[129],fmt,_cn_); + caml_call3(Stdlib_Format[129],fmt,_co_,name); + caml_call2(Stdlib_Format[129],fmt,_cp_); if(value) {var x$0=value[1]; caml_call2(Stdlib_Format[13],fmt,cst_Some$0); - pp$4(fmt,x$0); - caml_call2(Stdlib_Format[13],fmt,cst$55)} + pp$1(fmt,x$0); + caml_call2(Stdlib_Format[13],fmt,cst$27)} else caml_call2(Stdlib_Format[13],fmt,cst_None$0); - caml_call2(Stdlib_Format[129],fmt,_cX_); - return caml_call2(Stdlib_Format[129],fmt,_cY_)} - if(3654863 <= _iX_) - {if(365180284 <= _iX_) + caml_call2(Stdlib_Format[129],fmt,_cq_); + return caml_call2(Stdlib_Format[129],fmt,_cr_)} + if(3654863 <= _gX_) + {if(365180284 <= _gX_) {var x$1=param[2]; - caml_call2(Stdlib_Format[129],fmt,_cZ_); - caml_call3(Stdlib_Format[129],fmt,_c0_,x$1); - return caml_call2(Stdlib_Format[129],fmt,_c1_)} + caml_call2(Stdlib_Format[129],fmt,_cs_); + caml_call3(Stdlib_Format[129],fmt,_ct_,x$1); + return caml_call2(Stdlib_Format[129],fmt,_cu_)} var x$2=param[2]; - caml_call2(Stdlib_Format[129],fmt,_c2_); - caml_call3(Stdlib_Format[129],fmt,_c3_,x$2); - return caml_call2(Stdlib_Format[129],fmt,_c4_)} - if(-752863768 <= _iX_) + caml_call2(Stdlib_Format[129],fmt,_cv_); + caml_call3(Stdlib_Format[129],fmt,_cw_,x$2); + return caml_call2(Stdlib_Format[129],fmt,_cx_)} + if(-752863768 <= _gX_) {var x$3=param[2]; - caml_call2(Stdlib_Format[129],fmt,_c5_); - caml_call3(Stdlib_Format[129],fmt,_c6_,x$3); - return caml_call2(Stdlib_Format[129],fmt,_c7_)} + caml_call2(Stdlib_Format[129],fmt,_cy_); + caml_call3(Stdlib_Format[129],fmt,_cz_,x$3); + return caml_call2(Stdlib_Format[129],fmt,_cA_)} var x$4=param[2]; - caml_call2(Stdlib_Format[129],fmt,_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)} + caml_call2(Stdlib_Format[129],fmt,_cB_); + caml_call3(Stdlib_Format[129],fmt,_cC_,x$4); + return caml_call2(Stdlib_Format[129],fmt,_cD_)} + function show$1(x){return caml_call3(Stdlib_Format[133],_cE_,pp$1,x)} function equal$1(a,b) {var a$0=a,b$0=b; for(;;) {if(typeof a$0 === "number") {if(870828711 === a$0 && 870828711 === b$0)return 1} else - {var _iQ_=a$0[1]; - if(708012133 <= _iQ_) + {var _gQ_=a$0[1]; + if(708012133 <= _gQ_) {var switch$0=0; - if(737456203 <= _iQ_) - {if(848054398 === _iQ_) + if(737456203 <= _gQ_) + {if(848054398 === _gQ_) {if(typeof b$0 !== "number" && 848054398 === b$0[1]) {var ys=b$0[2],xs=a$0[2];switch$0 = 1}} else if (963043957 === - _iQ_ + _gQ_ && typeof b$0 !== @@ -38189,38 +39793,38 @@ ys$0=b$0[2], xs$0=a$0[2], compare_keys= - function(param,_iW_) - {var key=_iW_[1],key$0=param[1]; + function(param,_gW_) + {var key=_gW_[1],key$0=param[1]; return caml_call2(Stdlib_String[9],key$0,key)}, xs$1=caml_call2(Stdlib_List[57],compare_keys,xs$0), ys$1=caml_call2(Stdlib_List[57],compare_keys,ys$0); try {var - _iR_= - function(param,_iV_) + _gR_= + function(param,_gV_) {var - value=_iV_[2], - key=_iV_[1], + value=_gV_[2], + key=_gV_[1], value$0=param[2], key$0=param[1], match=caml_string_equal(key$0,key); return match?equal$1(value$0,value):0}, - result$0=caml_call3(Stdlib_List[34],_iR_,xs$1,ys$1); + result$0=caml_call3(Stdlib_List[34],_gR_,xs$1,ys$1); return result$0} - catch(_iU_) - {_iU_ = caml_wrap_exception(_iU_); - if(_iU_[1] === Stdlib[6])return 0; - throw _iU_}}} + catch(_gU_) + {_gU_ = caml_wrap_exception(_gU_); + if(_gU_[1] === Stdlib[6])return 0; + throw _gU_}}} else - if(726928360 === _iQ_) + if(726928360 === _gQ_) {if(typeof b$0 !== "number" && 726928360 === b$0[1]) {var ys=b$0[2],xs=a$0[2];switch$0 = 1}} else - if(708012134 <= _iQ_) + if(708012134 <= _gQ_) {if (737456202 <= - _iQ_ + _gQ_ && typeof b$0 !== @@ -38233,9 +39837,9 @@ else if(typeof b$0 !== "number" && 708012133 === b$0[1]) {var - _iS_=b$0[2], - value=_iS_[2], - name=_iS_[1], + _gS_=b$0[2], + value=_gS_[2], + name=_gS_[1], match=a$0[2], value$0=match[2], name$0=match[1], @@ -38252,20 +39856,20 @@ try {var result=caml_call3(Stdlib_List[34],equal$1,xs,ys); return result} - catch(_iT_) - {_iT_ = caml_wrap_exception(_iT_); - if(_iT_[1] === Stdlib[6])return 0; - throw _iT_}} + catch(_gT_) + {_gT_ = caml_wrap_exception(_gT_); + if(_gT_[1] === Stdlib[6])return 0; + throw _gT_}} else - if(-752863767 <= _iQ_) - {if(3654863 === _iQ_) + if(-752863767 <= _gQ_) + {if(3654863 === _gQ_) {if(typeof b$0 !== "number" && 3654863 === b$0[1]) {var b$3=b$0[2],a$3=a$0[2];return caml_equal(a$3,b$3)}} else if (365180284 === - _iQ_ + _gQ_ && typeof b$0 !== @@ -38276,14 +39880,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 === _iQ_) + if(-976970511 === _gQ_) {if(typeof b$0 !== "number" && -976970511 === b$0[1]) {var b$5=b$0[2],a$5=a$0[2];return caml_equal(a$5,b$5)}} else if (-752863768 <= - _iQ_ + _gQ_ && typeof b$0 !== @@ -38294,14 +39898,12 @@ 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_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)} + function pretty_format$1(std,x){return format(std,x)} + function pretty_print$1(std,out,x) + {var _gP_=pretty_format$1(std,x); + return caml_call2(Easy_format[4][2],out,_gP_)} + function pretty_to_string$1(std,x){return to_string$0(std,x)} + function pretty_to_channel$1(std,oc,x){return to_channel$0(std,oc,x)} var from_channel$1=Stdlib_Lexing[2], from_string$1=Stdlib_Lexing[3], @@ -38316,43 +39918,43 @@ if(! (71 <= c))return (c - 65 | 0) + 10 | 0} else if(! (9 < c - 48 >>> 0))return c - 48 | 0; - throw [0,Assert_failure,_da_]} + throw [0,Assert_failure,_cF_]} function custom_error$0(descr,v,lexbuf) {var offs=lexbuf[4] - 1 | 0, bol=v[3], pos1=((offs + lexbuf[5] | 0) - bol | 0) - 1 | 0, pos2=caml_call2(Stdlib[17],pos1,(offs + lexbuf[6] | 0) - bol | 0), - _iJ_=v[4]; - if(_iJ_) - var s=_iJ_[1],file_line=caml_call2(Stdlib_Printf[4],_db_,s); + _gO_=v[4]; + if(_gO_) + var s=_gO_[1],file_line=caml_call2(Stdlib_Printf[4],_cG_,s); else var file_line=cst_Line$0; var bytes= pos1 === pos2 - ?caml_call2(Stdlib_Printf[4],_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); + ?caml_call2(Stdlib_Printf[4],_cH_,pos1 + 1 | 0) + :caml_call3(Stdlib_Printf[4],_cJ_,pos1 + 1 | 0,pos2 + 1 | 0), + msg=caml_call5(Stdlib_Printf[4],_cI_,file_line,v[2],bytes,descr); return json_error(msg)} function lexer_error$0(descr,v,lexbuf) - {var _iI_=caml_call1(lexeme$0,lexbuf); + {var _gN_=caml_call1(lexeme$0,lexbuf); return custom_error$0 - (caml_call3(Stdlib_Printf[4],_df_,descr,_iI_),v,lexbuf)} - var read_junk$0=[0,function(param){throw [0,Assert_failure,_dg_]}]; + (caml_call3(Stdlib_Printf[4],_cK_,descr,_gN_),v,lexbuf)} + var read_junk$0=[0,function(param){throw [0,Assert_failure,_cL_]}]; function long_error$0(descr,v,lexbuf) {var junk=caml_call1(lexeme$0,lexbuf), extra_junk=caml_call1(read_junk$0[1],lexbuf); return custom_error$0 - (caml_call4(Stdlib_Printf[4],_dh_,descr,junk,extra_junk), + (caml_call4(Stdlib_Printf[4],_cM_,descr,junk,extra_junk), v, lexbuf)} var - _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, + _cN_=0 === (Stdlib[20] % 10 | 0)?0:1, + min10$0=(Stdlib[20] / 10 | 0) - _cN_ | 0, + _cO_=0 === (Stdlib[19] % 10 | 0)?0:1, + max10$0=(Stdlib[19] / 10 | 0) + _cO_ | 0, Int_overflow$0=[248,cst_Yojson_Safe_Int_overflow,caml_fresh_oo_id(0)]; function extract_positive_int$0(lexbuf) {var @@ -38360,15 +39962,15 @@ stop=lexbuf[6], s=lexbuf[2], n=[0,0], - _iF_=stop - 1 | 0; - if(! (_iF_ < start)) + _gK_=stop - 1 | 0; + if(! (_gK_ < start)) {var i=start; for(;;) {if(max10$0 <= n[1])throw Int_overflow$0; - 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} + var _gL_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) + _gL_ | 0; + var _gM_=i + 1 | 0; + if(_gK_ !== i){var i=_gM_;continue} break}} if(0 <= n[1])return n[1]; throw Int_overflow$0} @@ -38378,15 +39980,15 @@ stop=lexbuf[6], s=lexbuf[2], n=[0,0], - _iC_=stop - 1 | 0; - if(! (_iC_ < start)) + _gH_=stop - 1 | 0; + if(! (_gH_ < start)) {var i=start; for(;;) {if(n[1] <= min10$0)throw Int_overflow$0; - 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} + var _gI_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) - _gI_ | 0; + var _gJ_=i + 1 | 0; + if(_gH_ !== i){var i=_gJ_;continue} break}} if(0 < n[1])throw Int_overflow$0; return n[1]} @@ -38394,14 +39996,261 @@ {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(Stdlib_Buffer[19],buf,lexbuf[2],lexbuf[5],len)} + return caml_call4(Bi_outbuf[12],buf,lexbuf[2],lexbuf[5],len)} + function read_colon$0(v,lexbuf) + {var ocaml_lex_state=297; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$0(cst_Expected_but_found$23,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$73,v,lexbuf)}}} + function read_object_sep$0(v,lexbuf) + {var ocaml_lex_state=292; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_object; + case 2:return long_error$0(cst_Expected_or_but_found$22,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$72,v,lexbuf)}}} + function read_object_end$0(lexbuf) + {var ocaml_lex_state=290; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_object; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_tuple_sep$0(v,lexbuf) + {var ocaml_lex_state=271; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_tuple; + case 2:return long_error$0(cst_Expected_or_but_found$18,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$68,v,lexbuf)}}} + function read_tuple_end$0(lexbuf) + {var ocaml_lex_state=266; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_tuple; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_array_sep$0(v,lexbuf) + {var ocaml_lex_state=257; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_array; + case 2:return long_error$0(cst_Expected_or_but_found$15,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$66,v,lexbuf)}}} + function read_array_end$0(lexbuf) + {var ocaml_lex_state=255; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_array; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function finish_escaped_char$0(v,lexbuf) + {var ocaml_lex_state=68; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(8 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + var c=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5]); + return caml_call2(Bi_outbuf[15],v[1],c); + case 1:return caml_call2(Bi_outbuf[15],v[1],8); + case 2:return caml_call2(Bi_outbuf[15],v[1],12); + case 3:return caml_call2(Bi_outbuf[15],v[1],10); + case 4:return caml_call2(Bi_outbuf[15],v[1],13); + case 5:return caml_call2(Bi_outbuf[15],v[1],9); + case 6: + var + a=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 1 | 0), + b=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 2 | 0), + c$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 3 | 0), + d=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 4 | 0), + _gB_=hex$3(d), + _gC_=hex$3(c$0) << 4, + _gD_=hex$3(b) << 8, + x=hex$3(a) << 12 | _gD_ | _gC_ | _gB_; + if(55296 <= x && ! (56319 < x)) + {var ocaml_lex_state$1=82; + for(;;) + {var + ocaml_lex_state$2= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$1,lexbuf); + if(2 < ocaml_lex_state$2 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$1=ocaml_lex_state$2; + continue} + switch(ocaml_lex_state$2) + {case 0: + var + a$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 2 | 0), + b$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 3 | 0), + c$1=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 4 | 0), + d$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 5 | 0), + _gE_=hex$3(d$0), + _gF_=hex$3(c$1) << 4, + _gG_=hex$3(b$0) << 8, + y=hex$3(a$0) << 12 | _gG_ | _gF_ | _gE_; + if(56320 <= y && ! (57343 < y)) + return utf8_of_surrogate_pair(v[1],x,y); + return long_error$0 + (cst_Invalid_low_surrogate_for_$0,v,lexbuf); + case 1: + return long_error$0 + (cst_Missing_escape_sequence_re$0,v,lexbuf); + default: + return custom_error$0 + (cst_Unexpected_end_of_input$48,v,lexbuf)}}} + return utf8_of_code(v[1],x); + case 7:return long_error$0(cst_Invalid_escape_sequence$0,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$47,v,lexbuf)}}} + function finish_string$3(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=58; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call1(Bi_outbuf[4],v[1]); + case 1:finish_escaped_char$0(v,lexbuf);continue a; + case 2:add_lexeme$0(v[1],lexbuf);continue a; + default: + return custom_error$0(cst_Unexpected_end_of_input$45,v,lexbuf)}}}} + function read_ident$0(v,lexbuf) + {var ocaml_lex_state=237; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Bi_outbuf[19],v[1]);return finish_string$3(v,lexbuf); + case 1: + var s=caml_call3(sub_lexeme$0,lexbuf,lexbuf[5],lexbuf[6]);return s; + case 2: + return long_error$0(cst_Expected_string_or_identif$3,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$62,v,lexbuf)}}} + function finish_comment$0(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=125; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$0(cst_Unterminated_comment$1,v,lexbuf); + case 2:newline$0(v,lexbuf);continue a; + default:continue a}}}} + function read_space$0(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=133; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:newline$0(v,lexbuf);continue a; + case 1:finish_comment$0(v,lexbuf);continue a; + case 2:newline$0(v,lexbuf);continue a; + case 3:continue a; + default:return 0}}}} + function read_gt$0(v,lexbuf) + {var ocaml_lex_state=111; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$0(cst_Expected_but_found$15,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$52,v,lexbuf)}}} function read_json$3(counter,v,lexbuf) - {var _iB_=0; + {var _gA_=0; if(counter < 50) {var counter$0=counter + 1 | 0; - return ocaml_lex_read_json_rec$0(counter$0,v,lexbuf,_iB_)} + 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,_iB_])} + (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(;;) @@ -38413,31 +40262,31 @@ var ocaml_lex_state$0=ocaml_lex_state$1; continue} switch(ocaml_lex_state$1) - {case 0:return _dk_; - case 1:return _dl_; + {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(Stdlib_Buffer[8],v[1]); + caml_call1(Bi_outbuf[19],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) + {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 _iA_} + throw _gz_} 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) + {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 _iz_} + throw _gy_} case 9: return [0, 365180284, @@ -38451,8 +40300,8 @@ 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_]; + 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); @@ -38461,52 +40310,52 @@ 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_]; + var _gq_=acc[1]; + acc[1] = [0,[0,field_name$0,read_json$0(v,lexbuf)],_gq_]; continue}} - catch(_iy_) - {_iy_ = caml_wrap_exception(_iy_); - if(_iy_ === End_of_object) + catch(_gx_) + {_gx_ = caml_wrap_exception(_gx_); + if(_gx_ === End_of_object) return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; - throw _iy_} + throw _gx_} 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_]; + 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 _it_=acc$0[1]; - acc$0[1] = [0,read_json$0(v,lexbuf),_it_]; + var _gs_=acc$0[1]; + acc$0[1] = [0,read_json$0(v,lexbuf),_gs_]; continue}} - catch(_ix_) - {_ix_ = caml_wrap_exception(_ix_); - if(_ix_ === End_of_array) + catch(_gw_) + {_gw_ = caml_wrap_exception(_gw_); + if(_gw_ === End_of_array) return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; - throw _ix_} + throw _gw_} 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_]; + 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 _iv_=acc$1[1]; - acc$1[1] = [0,read_json$0(v,lexbuf),_iv_]; + var _gu_=acc$1[1]; + acc$1[1] = [0,read_json$0(v,lexbuf),_gu_]; continue}} - catch(_iw_) - {_iw_ = caml_wrap_exception(_iw_); - if(_iw_ === End_of_tuple) + catch(_gv_) + {_gv_ = caml_wrap_exception(_gv_); + if(_gv_ === End_of_tuple) return [0,726928360,caml_call1(Stdlib_List[9],acc$1[1])]; - throw _iw_} + throw _gv_} case 13: read_space$0(v,lexbuf); var cons=read_ident$0(v,lexbuf); @@ -38537,129 +40386,6 @@ 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=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(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)}}}} - 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],_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)}}}} - function finish_escaped_char$0(v,lexbuf) - {var ocaml_lex_state=68; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(8 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - var c=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5]); - return caml_call2(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), - _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 - ocaml_lex_state$2= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$1,lexbuf); - if(2 < ocaml_lex_state$2 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$1=ocaml_lex_state$2; - continue} - switch(ocaml_lex_state$2) - {case 0: - var - a$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 2 | 0), - b$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 3 | 0), - c$1=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 4 | 0), - d$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 5 | 0), - _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); - case 1: - return long_error$0 - (cst_Missing_escape_sequence_re$0,v,lexbuf); - default: - return custom_error$0 - (cst_Unexpected_end_of_input$48,v,lexbuf)}}} - return utf8_of_code(v[1],x); - case 7:return long_error$0(cst_Invalid_escape_sequence$0,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$47,v,lexbuf)}}} - function finish_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 finish_variant$0(v,lexbuf) {var ocaml_lex_state=102; for(;;) @@ -38680,6 +40406,47 @@ 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(;;) @@ -38695,21 +40462,6 @@ 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_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_comma$0(v,lexbuf) {var ocaml_lex_state=115; for(;;) @@ -38737,28 +40489,11 @@ continue} switch(ocaml_lex_state$0) {case 0:return -154522342; - case 1:caml_call1(Stdlib_Buffer[8],v[1]);return -589953938; + case 1:caml_call1(Bi_outbuf[19],v[1]);return -589953938; case 2:return -124528282; case 3:return long_error$0(cst_Expected_or_but_found$14,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$54,v,lexbuf)}}} - function finish_comment$0(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=125; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$0(cst_Unterminated_comment$1,v,lexbuf); - case 2:newline$0(v,lexbuf);continue a; - default:continue a}}}} function read_eof$0(lexbuf) {var ocaml_lex_state=131; for(;;) @@ -38770,24 +40505,6 @@ caml_call1(lexbuf[1],lexbuf); var ocaml_lex_state=ocaml_lex_state$0; continue}} - 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_null$0(v,lexbuf) {var ocaml_lex_state=140; for(;;) @@ -38846,26 +40563,26 @@ switch(ocaml_lex_state$1) {case 0: try - {var _ib_=extract_positive_int$0(lexbuf);return _ib_} - catch(_ig_) - {_ig_ = caml_wrap_exception(_ig_); - if(_ig_ === Int_overflow$0) + {var _gg_=extract_positive_int$0(lexbuf);return _gg_} + catch(_gl_) + {_gl_ = caml_wrap_exception(_gl_); + if(_gl_ === Int_overflow$0) return lexer_error$0(cst_Int_overflow$3,v,lexbuf); - throw _ig_} + throw _gl_} case 1: try - {var _ic_=extract_negative_int$0(lexbuf);return _ic_} - catch(_if_) - {_if_ = caml_wrap_exception(_if_); - if(_if_ === Int_overflow$0) + {var _gh_=extract_negative_int$0(lexbuf);return _gh_} + catch(_gk_) + {_gk_ = caml_wrap_exception(_gk_); + if(_gk_ === Int_overflow$0) return lexer_error$0(cst_Int_overflow$4,v,lexbuf); - throw _if_} + throw _gk_} case 2: - caml_call1(Stdlib_Buffer[8],v[1]); + caml_call1(Bi_outbuf[19],v[1]); var s=finish_string$3(v,lexbuf); try - {var _id_=caml_int_of_string(s);return _id_} - catch(_ie_) + {var _gi_=caml_int_of_string(s);return _gi_} + catch(_gj_) {return custom_error$0(cst_Expected_an_integer_but_fo$0,v,lexbuf)} case 3: return long_error$0(cst_Expected_integer_but_found$0,v,lexbuf); @@ -38886,15 +40603,15 @@ switch(ocaml_lex_state$1) {case 0: try - {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)} + {var _gc_=caml_int_of_string(caml_call1(lexeme$0,lexbuf)); + return _gc_} + catch(_gf_){return lexer_error$0(cst_Int32_overflow$1,v,lexbuf)} case 1: - caml_call1(Stdlib_Buffer[8],v[1]); + caml_call1(Bi_outbuf[19],v[1]); var s=finish_string$3(v,lexbuf); try - {var _h__=caml_int_of_string(s);return _h__} - catch(_h$_) + {var _gd_=caml_int_of_string(s);return _gd_} + catch(_ge_) {return custom_error$0(cst_Expected_an_int32_but_foun$0,v,lexbuf)} case 2:return long_error$0(cst_Expected_int32_but_found$0,v,lexbuf); default: @@ -38914,15 +40631,15 @@ switch(ocaml_lex_state$1) {case 0: try - {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)} + {var _f__=caml_int64_of_string(caml_call1(lexeme$0,lexbuf)); + return _f__} + catch(_gb_){return lexer_error$0(cst_Int32_overflow$2,v,lexbuf)} case 1: - caml_call1(Stdlib_Buffer[8],v[1]); + caml_call1(Bi_outbuf[19],v[1]); var s=finish_string$3(v,lexbuf); try - {var _h6_=caml_int64_of_string(s);return _h6_} - catch(_h7_) + {var _f$_=caml_int64_of_string(s);return _f$_} + catch(_ga_) {return custom_error$0(cst_Expected_an_int64_but_foun$0,v,lexbuf)} case 2:return long_error$0(cst_Expected_int64_but_found$0,v,lexbuf); default: @@ -38945,14 +40662,14 @@ case 2:return Stdlib[23]; case 3:return caml_float_of_string(caml_call1(lexeme$0,lexbuf)); case 4: - caml_call1(Stdlib_Buffer[8],v[1]); + caml_call1(Bi_outbuf[19],v[1]); var s=finish_string$3(v,lexbuf); try - {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) + {var _f8_=caml_float_of_string(s);return _f8_} + catch(_f9_) + {return caml_string_notequal(s,cst_Infinity$19) + ?caml_string_notequal(s,cst_Infinity$20) + ?caml_string_notequal(s,cst_NaN$9) ?custom_error$0(cst_Expected_a_number_but_foun$0,v,lexbuf) :Stdlib[24] :Stdlib[22] @@ -38975,29 +40692,10 @@ continue} switch(ocaml_lex_state$0) {case 0: - caml_call1(Stdlib_Buffer[8],v[1]);return finish_string$3(v,lexbuf); + caml_call1(Bi_outbuf[19],v[1]);return finish_string$3(v,lexbuf); case 1:return long_error$0(cst_Expected_but_found$17,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$61,v,lexbuf)}}} - function read_ident$0(v,lexbuf) - {var ocaml_lex_state=237; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - caml_call1(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)}}} function map_ident$0(v,f,lexbuf) {var ocaml_lex_state=242; for(;;) @@ -39010,14 +40708,10 @@ continue} switch(ocaml_lex_state$0) {case 0: - caml_call1(Stdlib_Buffer[8],v[1]);return map_string$0(v,f,lexbuf); + caml_call1(Bi_outbuf[19],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); + 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: @@ -39046,10 +40740,10 @@ read_space$0(v,lexbuf); acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); continue}} - catch(_h2_) - {_h2_ = caml_wrap_exception(_h2_); - if(_h2_ === End_of_array)return acc[1]; - throw _h2_} + catch(_f6_) + {_f6_ = caml_wrap_exception(_f6_); + if(_f6_ === End_of_array)return acc[1]; + throw _f6_} case 1:return long_error$0(cst_Expected_but_found$18,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$64,v,lexbuf)}}} @@ -39071,51 +40765,24 @@ try {read_space$0(v,lexbuf); read_array_end$0(lexbuf); - var _hZ_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_hZ_]; + var _f3_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_f3_]; for(;;) {read_space$0(v,lexbuf); read_array_sep$0(v,lexbuf); read_space$0(v,lexbuf); - var _h0_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_h0_]; + var _f4_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_f4_]; continue}} - catch(_h1_) - {_h1_ = caml_wrap_exception(_h1_); - if(_h1_ === End_of_array)return acc[1]; - throw _h1_} + catch(_f5_) + {_f5_ = caml_wrap_exception(_f5_); + if(_f5_ === End_of_array)return acc[1]; + throw _f5_} case 1:return long_error$0(cst_Expected_but_found$19,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$65,v,lexbuf)}}} function read_list_rev$0(read_cell,v,lexbuf) {return ocaml_lex_read_list_rev_rec$0(read_cell,v,lexbuf,251)} - function read_array_end$0(lexbuf) - {var ocaml_lex_state=255; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_array; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function 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 ocaml_lex_read_tuple_rec (read_cell,init_acc,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; @@ -39142,26 +40809,15 @@ acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf); pos[1]++; continue}} - catch(_hY_) - {_hY_ = caml_wrap_exception(_hY_); - if(_hY_ === End_of_tuple)return acc[1]; - throw _hY_} + catch(_f2_) + {_f2_ = caml_wrap_exception(_f2_); + if(_f2_ === End_of_tuple)return acc[1]; + throw _f2_} case 1:return long_error$0(cst_Expected_but_found$20,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$67,v,lexbuf)}}} function read_tuple$0(read_cell,init_acc,v,lexbuf) {return ocaml_lex_read_tuple_rec(read_cell,init_acc,v,lexbuf,262)} - function read_tuple_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_tuple_end2$0(v,std,lexbuf) {var ocaml_lex_state=268; for(;;) @@ -39180,22 +40836,6 @@ 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) - {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_sep2$0(v,std,lexbuf) {var ocaml_lex_state=276; for(;;) @@ -39249,10 +40889,10 @@ read_space$0(v,lexbuf); acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf); continue}} - catch(_hX_) - {_hX_ = caml_wrap_exception(_hX_); - if(_hX_ === End_of_object)return acc[1]; - throw _hX_} + catch(_f1_) + {_f1_ = caml_wrap_exception(_f1_); + if(_f1_ === End_of_object)return acc[1]; + throw _f1_} case 1:return long_error$0(cst_Expected_but_found$21,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$70,v,lexbuf)}}} @@ -39274,48 +40914,6 @@ case 1:return long_error$0(cst_Expected_but_found$22,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$71,v,lexbuf)}}} - function read_object_end$0(lexbuf) - {var ocaml_lex_state=290; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_object; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_object_sep$0(v,lexbuf) - {var ocaml_lex_state=292; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_object; - case 2:return long_error$0(cst_Expected_or_but_found$22,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$72,v,lexbuf)}}} - function read_colon$0(v,lexbuf) - {var ocaml_lex_state=297; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$0(cst_Expected_but_found$23,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$73,v,lexbuf)}}} function start_any_tuple$0(v,lexbuf) {var ocaml_lex_state=301; for(;;) @@ -39392,25 +40990,6 @@ case 1:return long_error$0(cst_Expected_but_found$27,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$78,v,lexbuf)}}} - function finish_skip_variant$0(v,lexbuf) - {var ocaml_lex_state=389; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - skip_json$0(v,lexbuf); - read_space$0(v,lexbuf); - return read_gt$0(v,lexbuf); - case 1:return 0; - case 2:return long_error$0(cst_Expected_or_but_found$24,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$81,v,lexbuf)}}} function finish_skip_stringlit$0(v,lexbuf) {var ocaml_lex_state=378; for(;;) @@ -39426,13 +41005,30 @@ case 1:return long_error$0(cst_Invalid_string_literal$3,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$80,v,lexbuf)}}} + function skip_ident$0(v,lexbuf) + {var ocaml_lex_state=394; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return finish_skip_stringlit$0(v,lexbuf); + case 1:return 0; + case 2: + return long_error$0(cst_Expected_string_or_identif$5,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$82,v,lexbuf)}}} function skip_json$3(counter,v,lexbuf) - {var _hW_=322; + {var _f0_=322; if(counter < 50) {var counter$0=counter + 1 | 0; - return ocaml_lex_skip_json_rec$0(counter$0,v,lexbuf,_hW_)} + 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,_hW_])} + (ocaml_lex_skip_json_rec$0,[0,v,lexbuf,_f0_])} function ocaml_lex_skip_json_rec$0(counter,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -39472,10 +41068,10 @@ read_space$0(v,lexbuf); skip_json$0(v,lexbuf); continue}} - catch(_hV_) - {_hV_ = caml_wrap_exception(_hV_); - if(_hV_ === End_of_object)return 0; - throw _hV_} + catch(_fZ_) + {_fZ_ = caml_wrap_exception(_fZ_); + if(_fZ_ === End_of_object)return 0; + throw _fZ_} case 10: try {read_space$0(v,lexbuf); @@ -39487,10 +41083,10 @@ read_space$0(v,lexbuf); skip_json$0(v,lexbuf); continue}} - catch(_hU_) - {_hU_ = caml_wrap_exception(_hU_); - if(_hU_ === End_of_array)return 0; - throw _hU_} + catch(_fY_) + {_fY_ = caml_wrap_exception(_fY_); + if(_fY_ === End_of_array)return 0; + throw _fY_} case 11: try {read_space$0(v,lexbuf); @@ -39502,10 +41098,10 @@ read_space$0(v,lexbuf); skip_json$0(v,lexbuf); continue}} - catch(_hT_) - {_hT_ = caml_wrap_exception(_hT_); - if(_hT_ === End_of_tuple)return 0; - throw _hT_} + catch(_fX_) + {_fX_ = caml_wrap_exception(_fX_); + if(_fX_ === End_of_tuple)return 0; + throw _fX_} case 12: read_space$0(v,lexbuf); skip_ident$0(v,lexbuf); @@ -39538,25 +41134,8 @@ 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 skip_ident$0(v,lexbuf) - {var ocaml_lex_state=394; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return finish_skip_stringlit$0(v,lexbuf); - case 1:return 0; - case 2: - return long_error$0(cst_Expected_string_or_identif$5,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$82,v,lexbuf)}}} - function finish_buffer_variant(v,lexbuf) - {var ocaml_lex_state=461; + function finish_skip_variant$0(v,lexbuf) + {var ocaml_lex_state=389; for(;;) {var ocaml_lex_state$0= @@ -39567,27 +41146,152 @@ continue} switch(ocaml_lex_state$0) {case 0: - 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) - {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(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)}} - 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); + 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$85,v,lexbuf)}}} + return custom_error$0(cst_Unexpected_end_of_input$81,v,lexbuf)}}} + function finish_buffer_comment$0(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=507; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[13],v[1],cst$30); + case 1:return long_error$0(cst_Unterminated_comment$2,v,lexbuf); + case 2: + caml_call2(Bi_outbuf[15],v[1],10);newline$0(v,lexbuf);continue a; + default:add_lexeme$0(v[1],lexbuf);continue a}}}} + function buffer_colon$0(v,lexbuf) + {var ocaml_lex_state=499; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],58); + case 1:return long_error$0(cst_Expected_but_found$28,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$90,v,lexbuf)}}} + function buffer_tuple_sep(v,lexbuf) + {var ocaml_lex_state=494; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],44); + case 1:caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple; + case 2:return long_error$0(cst_Expected_or_but_found$28,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$89,v,lexbuf)}}} + function buffer_tuple_end(v,lexbuf) + {var ocaml_lex_state=492; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_array_sep$0(v,lexbuf) + {var ocaml_lex_state=487; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],44); + case 1:caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array; + case 2:return long_error$0(cst_Expected_or_but_found$27,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$88,v,lexbuf)}}} + function buffer_array_end$0(v,lexbuf) + {var ocaml_lex_state=485; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_object_sep$0(v,lexbuf) + {var ocaml_lex_state=480; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],44); + case 1:caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object; + case 2:return long_error$0(cst_Expected_or_but_found$26,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$87,v,lexbuf)}}} + function buffer_object_end$0(v,lexbuf) + {var ocaml_lex_state=478; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_space$0(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=471; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:add_lexeme$0(v[1],lexbuf);newline$0(v,lexbuf);continue a; + case 1: + caml_call2(Bi_outbuf[13],v[1],cst$29); + finish_buffer_comment$0(v,lexbuf); + continue a; + case 2: + caml_call2(Bi_outbuf[15],v[1],10);newline$0(v,lexbuf);continue a; + case 3:add_lexeme$0(v[1],lexbuf);continue a; + default:return 0}}}} function finish_buffer_stringlit$0(v,lexbuf) {var ocaml_lex_state=450; for(;;) @@ -39600,124 +41304,10 @@ continue} switch(ocaml_lex_state$0) {case 0: - caml_call2(Stdlib_Buffer[12],v[1],34); - return add_lexeme$0(v[1],lexbuf); + 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_json$3(counter,v,lexbuf) - {var _hS_=399; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return ocaml_lex_buffer_json_rec$0(counter$0,v,lexbuf,_hS_)} - return caml_trampoline_return - (ocaml_lex_buffer_json_rec$0,[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(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); - if(11 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0:return add_lexeme$0(v[1],lexbuf); - case 1:return finish_buffer_stringlit$0(v,lexbuf); - case 2: - try - {caml_call2(Stdlib_Buffer[12],v[1],123); - buffer_space$0(v,lexbuf); - buffer_object_end$0(v,lexbuf); - buffer_ident$0(v,lexbuf); - buffer_space$0(v,lexbuf); - buffer_colon$0(v,lexbuf); - buffer_space$0(v,lexbuf); - buffer_json$0(v,lexbuf); - for(;;) - {buffer_space$0(v,lexbuf); - buffer_object_sep$0(v,lexbuf); - buffer_space$0(v,lexbuf); - buffer_ident$0(v,lexbuf); - buffer_space$0(v,lexbuf); - buffer_colon$0(v,lexbuf); - buffer_space$0(v,lexbuf); - buffer_json$0(v,lexbuf); - continue}} - catch(_hR_) - {_hR_ = caml_wrap_exception(_hR_); - if(_hR_ === End_of_object)return 0; - throw _hR_} - case 3: - try - {caml_call2(Stdlib_Buffer[12],v[1],91); - buffer_space$0(v,lexbuf); - buffer_array_end$0(v,lexbuf); - buffer_json$0(v,lexbuf); - for(;;) - {buffer_space$0(v,lexbuf); - buffer_array_sep$0(v,lexbuf); - buffer_space$0(v,lexbuf); - buffer_json$0(v,lexbuf); - continue}} - catch(_hQ_) - {_hQ_ = caml_wrap_exception(_hQ_); - if(_hQ_ === End_of_array)return 0; - throw _hQ_} - case 4: - try - {caml_call2(Stdlib_Buffer[12],v[1],40); - buffer_space$0(v,lexbuf); - buffer_tuple_end(v,lexbuf); - buffer_json$0(v,lexbuf); - for(;;) - {buffer_space$0(v,lexbuf); - buffer_tuple_sep(v,lexbuf); - buffer_space$0(v,lexbuf); - buffer_json$0(v,lexbuf); - continue}} - catch(_hP_) - {_hP_ = caml_wrap_exception(_hP_); - if(_hP_ === End_of_tuple)return 0; - throw _hP_} - case 5: - 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]); - case 7: - 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]); - case 8: - 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]); - case 9: - add_lexeme$0(v[1],lexbuf); - if(counter < 50) - {var counter$3=counter + 1 | 0; - return buffer_json$3(counter$3,v,lexbuf)} - return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); - case 10: - return custom_error$0(cst_Unexpected_end_of_input$83,v,lexbuf); - default:return long_error$0(cst_Invalid_token$11,v,lexbuf)}}} - function buffer_json$0(v,lexbuf) - {return caml_trampoline(buffer_json$3(0,v,lexbuf))} function buffer_ident$0(v,lexbuf) {var ocaml_lex_state=466; for(;;) @@ -39735,44 +41325,121 @@ return long_error$0(cst_Expected_string_or_identif$6,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$86,v,lexbuf)}}} - function buffer_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(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}}}} - function buffer_object_end$0(v,lexbuf) - {var ocaml_lex_state=478; + function buffer_json$3(counter,v,lexbuf) + {var _fW_=399; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return ocaml_lex_buffer_json_rec$0(counter$0,v,lexbuf,_fW_)} + return caml_trampoline_return + (ocaml_lex_buffer_json_rec$0,[0,v,lexbuf,_fW_])} + function ocaml_lex_buffer_json_rec$0(counter,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; for(;;) {var - ocaml_lex_state$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; - continue}} - function buffer_object_sep$0(v,lexbuf) - {var ocaml_lex_state=480; + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); + if(11 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0:return add_lexeme$0(v[1],lexbuf); + case 1:return finish_buffer_stringlit$0(v,lexbuf); + case 2: + try + {caml_call2(Bi_outbuf[15],v[1],123); + buffer_space$0(v,lexbuf); + buffer_object_end$0(v,lexbuf); + buffer_ident$0(v,lexbuf); + buffer_space$0(v,lexbuf); + buffer_colon$0(v,lexbuf); + buffer_space$0(v,lexbuf); + buffer_json$0(v,lexbuf); + for(;;) + {buffer_space$0(v,lexbuf); + buffer_object_sep$0(v,lexbuf); + buffer_space$0(v,lexbuf); + buffer_ident$0(v,lexbuf); + buffer_space$0(v,lexbuf); + buffer_colon$0(v,lexbuf); + buffer_space$0(v,lexbuf); + buffer_json$0(v,lexbuf); + continue}} + catch(_fV_) + {_fV_ = caml_wrap_exception(_fV_); + if(_fV_ === End_of_object)return 0; + throw _fV_} + case 3: + try + {caml_call2(Bi_outbuf[15],v[1],91); + buffer_space$0(v,lexbuf); + buffer_array_end$0(v,lexbuf); + buffer_json$0(v,lexbuf); + for(;;) + {buffer_space$0(v,lexbuf); + buffer_array_sep$0(v,lexbuf); + buffer_space$0(v,lexbuf); + buffer_json$0(v,lexbuf); + continue}} + catch(_fU_) + {_fU_ = caml_wrap_exception(_fU_); + if(_fU_ === End_of_array)return 0; + throw _fU_} + case 4: + try + {caml_call2(Bi_outbuf[15],v[1],40); + buffer_space$0(v,lexbuf); + buffer_tuple_end(v,lexbuf); + buffer_json$0(v,lexbuf); + for(;;) + {buffer_space$0(v,lexbuf); + buffer_tuple_sep(v,lexbuf); + buffer_space$0(v,lexbuf); + buffer_json$0(v,lexbuf); + continue}} + catch(_fT_) + {_fT_ = caml_wrap_exception(_fT_); + if(_fT_ === End_of_tuple)return 0; + throw _fT_} + case 5: + caml_call2(Bi_outbuf[15],v[1],60); + buffer_space$0(v,lexbuf); + buffer_ident$0(v,lexbuf); + buffer_space$0(v,lexbuf); + return finish_buffer_variant(v,lexbuf); + case 6: + add_lexeme$0(v[1],lexbuf); + if(counter < 50) + {var counter$0=counter + 1 | 0; + return buffer_json$3(counter$0,v,lexbuf)} + return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); + case 7: + caml_call2(Bi_outbuf[13],v[1],cst$28); + finish_buffer_comment$0(v,lexbuf); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return buffer_json$3(counter$1,v,lexbuf)} + return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); + case 8: + caml_call2(Bi_outbuf[15],v[1],10); + newline$0(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return buffer_json$3(counter$2,v,lexbuf)} + return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); + case 9: + add_lexeme$0(v[1],lexbuf); + if(counter < 50) + {var counter$3=counter + 1 | 0; + return buffer_json$3(counter$3,v,lexbuf)} + return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); + case 10: + return custom_error$0(cst_Unexpected_end_of_input$83,v,lexbuf); + default:return long_error$0(cst_Invalid_token$11,v,lexbuf)}}} + function buffer_json$0(v,lexbuf) + {return caml_trampoline(buffer_json$3(0,v,lexbuf))} + function finish_buffer_variant(v,lexbuf) + {var ocaml_lex_state=461; for(;;) {var ocaml_lex_state$0= @@ -39782,102 +41449,28 @@ var ocaml_lex_state=ocaml_lex_state$0; continue} 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); + {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$87,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(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; - 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(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)}}} - 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; - continue}} - 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(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)}}} - 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(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)}}} - 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(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}}}} + return custom_error$0(cst_Unexpected_end_of_input$85,v,lexbuf)}}} function junk$0(lexbuf) {var ocaml_lex_state=513; for(;;) @@ -39894,8 +41487,8 @@ 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 _hO_=read_list_rev$0(read_cell,v,lexbuf); - return caml_call1(Stdlib_List[9],_hO_)} + {var _fS_=read_list_rev$0(read_cell,v,lexbuf); + return caml_call1(Stdlib_List[9],_fS_)} function read_array$0(read_cell,v,lexbuf) {var l=read_list_rev$0(read_cell,v,lexbuf); if(l) @@ -39905,21 +41498,21 @@ 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_; + _fP_=len - 2 | 0; + if(! (_fP_ < 0)) + {var i=_fP_; for(;;) - {var _hM_=caml_call1(Stdlib_List[5],r[1]); - caml_check_bound(a,i)[1 + i] = _hM_; + {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 _hN_=i - 1 | 0; - if(0 !== i){var i=_hN_;continue} + var _fR_=i - 1 | 0; + if(0 !== i){var i=_fR_;continue} break}} return a} return [0]} function read_fields$0(read_field,init_acc,v) - {return function(_hK_) - {return read_abstract_fields$0(read_ident$0,read_field,init_acc,v,_hK_)}} + {return function(_fO_) + {return read_abstract_fields$0(read_ident$0,read_field,init_acc,v,_fO_)}} function from_lexbuf$0(v,opt,lexbuf) {if(opt)var sth=opt[1],stream=sth;else var stream=0; read_space$0(v,lexbuf); @@ -39935,23 +41528,23 @@ {var lexbuf=caml_call2(from_string$1,0,s), v=init_lexer(buf,fname,lnum,0), - _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_}} + _fM_=from_lexbuf$0(v,0,lexbuf); + return _fM_} + catch(_fN_) + {_fN_ = caml_wrap_exception(_fN_); + if(_fN_ === End_of_input)return json_error(cst_Blank_input_data$1); + throw _fN_}} function from_channel$2(buf,fname,lnum,ic) {try {var lexbuf=caml_call2(from_channel$1,0,ic), v=init_lexer(buf,fname,lnum,0), - _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_}} + _fK_=from_lexbuf$0(v,0,lexbuf); + return _fK_} + catch(_fL_) + {_fL_ = caml_wrap_exception(_fL_); + if(_fL_ === End_of_input)return json_error(cst_Blank_input_data$2); + throw _fL_}} function from_file$0(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); try @@ -39960,11 +41553,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 seq_from_lexbuf$0(v,opt,lexbuf) + function stream_from_lexbuf$0(v,opt,lexbuf) {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - function f(param) + function f(i) {try - {var _hF_=[0,from_lexbuf$0(v,stream$0,lexbuf),f];return _hF_} + {var _fJ_=[0,from_lexbuf$0(v,stream$0,lexbuf)];return _fJ_} catch(e) {e = caml_wrap_exception(e); if(e === End_of_input){caml_call1(fin,0);return 0} @@ -39973,82 +41566,80 @@ catch(fin_e) {fin_e = caml_wrap_exception(fin_e);throw [0,Finally$0,e,fin_e]} throw e}} - return f} - function seq_from_string$0(buf,fname,lnum,s) + return caml_call1(Stdlib_Stream[3],f)} + function stream_from_string$0(buf,fname,lnum,s) {var v=init_lexer(buf,fname,lnum,0); - return seq_from_lexbuf$0(v,0,caml_call2(from_string$1,0,s))} - function seq_from_channel$0(buf,fin,fname,lnum,ic) + return stream_from_lexbuf$0(v,0,caml_call2(from_string$1,0,s))} + function stream_from_channel$0(buf,fin,fname,lnum,ic) {var lexbuf=caml_call2(from_channel$1,0,ic), v=init_lexer(buf,fname,lnum,0); - return seq_from_lexbuf$0(v,fin,lexbuf)} - function seq_from_file$0(buf,fname,lnum,file) + return stream_from_lexbuf$0(v,fin,lexbuf)} + function stream_from_file$0(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); function fin(param){return caml_call1(Stdlib[93],ic)} var fname$0=fname || [0,file], lexbuf=caml_call2(from_channel$1,0,ic), v=init_lexer(buf,fname$0,lnum,0); - return seq_from_lexbuf$0(v,[0,fin],lexbuf)} - function lineseq_from_channel$0(buf,opt,fname,_hx_,ic) + return stream_from_lexbuf$0(v,[0,fin],lexbuf)} + function linestream_from_channel$0(buf,opt,fname,_fH_,ic) {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - if(_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) + if(_fH_)var sth$0=_fH_[1],lnum0=sth$0;else var lnum0=1; + var buf$0=buf || [0,caml_call3(Bi_outbuf[3],0,0,256)]; + function f(i) {try {var line=caml_call1(Stdlib[83],ic), - _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_} + lnum=lnum0 + i | 0, + _fI_=[0,[0,826371656,from_string$2(buf$0,fname,[0,lnum],line)]]; + return _fI_} catch(e) {e = caml_wrap_exception(e); - 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) + return e === Stdlib[12]?(caml_call1(fin,0),0):[0,[0,3458171,e]]}} + return caml_call1(Stdlib_Stream[3],f)} + function linestream_from_file$0(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); function fin(param){return caml_call1(Stdlib[93],ic)} var fname$0=fname || [0,file]; - return lineseq_from_channel$0(buf,[0,fin],fname$0,lnum,ic)} + return linestream_from_channel$0(buf,[0,fin],fname$0,lnum,ic)} function prettify$0(std,s) {return pretty_to_string$1(std,from_string$2(0,0,0,s))} function compact$0(std,s) - {return to_string$2(0,0,0,0,from_string$2(0,0,0,s))} + {return to_string$3(0,0,0,from_string$2(0,0,0,s))} + function validate_json$0(path,value){return 0} var Type_error$0=[248,cst_Yojson_Safe_Util_Type_erro,caml_fresh_oo_id(0)]; function typerr$0(msg,js) {if(typeof js === "number") - var _hw_=cst_null$6; + var _fG_=cst_null$4; else var - _hv_=js[1], - _hw_= - 708012133 <= _hv_ - ?726928360 === _hv_ + _fF_=js[1], + _fG_= + 708012133 <= _fF_ + ?726928360 === _fF_ ?cst_tuple$0 - :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]} + :848054398 <= _fF_ + ?963043957 <= _fF_?cst_object$0:cst_array$0 + :737456202 <= _fF_?cst_bool$0:cst_variant$0 + :3654863 <= _fF_ + ?365180284 <= _fF_?cst_float$0:cst_int$0 + :-752863768 <= _fF_?cst_intlit$0:cst_string$0; + throw [0,Type_error$0,caml_call2(Stdlib[28],msg,_fG_),js]} var Undefined$0=[248,cst_Yojson_Safe_Util_Undefined,caml_fresh_oo_id(0)]; + function symbol$0(_fE_,_fD_){return caml_call1(_fD_,_fE_)} function assoc$0(name,obj) {try - {var _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_}} + {var _fB_=caml_call2(Stdlib_List[46],name,obj);return _fB_} + catch(_fC_) + {_fC_ = caml_wrap_exception(_fC_); + if(_fC_ === Stdlib[8])return 870828711; + throw _fC_}} function member$0(name,js) {if(typeof js !== "number" && 963043957 === js[1]) {var obj=js[2];return assoc$0(name,obj)} - var _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)} + var _fA_=caml_call2(Stdlib[28],name,cst_of_non_object_type$0); + return typerr$0(caml_call2(Stdlib[28],cst_Can_t_get_member$0,_fA_),js)} function index$0(i,js) {if(typeof js !== "number" && 848054398 === js[1]) {var @@ -40058,13 +41649,13 @@ if(0 <= wrapped_index && ! (len <= wrapped_index)) return caml_call2(Stdlib_List[7],l,wrapped_index); var - _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]} + _fy_=caml_call1(Stdlib[33],i), + _fz_=caml_call2(Stdlib[28],_fy_,cst_out_of_bounds$0); + throw [0,Undefined$0,caml_call2(Stdlib[28],cst_Index$0,_fz_),js]} var - _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)} + _fw_=caml_call1(Stdlib[33],i), + _fx_=caml_call2(Stdlib[28],_fw_,cst_of_non_array_type$0); + return typerr$0(caml_call2(Stdlib[28],cst_Can_t_get_index$0,_fx_),js)} function map$0(f,js) {if(typeof js !== "number" && 848054398 === js[1]) {var l=js[2];return [0,848054398,caml_call2(Stdlib_List[19],f,l)]} @@ -40085,17 +41676,17 @@ return typerr$0(cst_Expected_bool_or_null_got$0,js)} function to_number$0(js) {if(typeof js !== "number") - {var _hn_=js[1]; - if(3654863 === _hn_){var i=js[2];return i} - if(365180284 === _hn_){var f=js[2];return f}} + {var _fv_=js[1]; + if(3654863 === _fv_){var i=js[2];return i} + if(365180284 === _fv_){var f=js[2];return f}} return typerr$0(cst_Expected_number_got$0,js)} function to_number_option$0(js) {if(typeof js === "number") {if(870828711 === js)return 0} else - {var _hm_=js[1]; - if(3654863 === _hm_){var i=js[2];return [0,i]} - if(365180284 === _hm_){var f=js[2];return [0,f]}} + {var _fu_=js[1]; + if(3654863 === _fu_){var i=js[2];return [0,i]} + if(365180284 === _fu_){var f=js[2];return [0,f]}} return typerr$0(cst_Expected_number_or_null_go$0,js)} function to_float$0(js) {if(typeof js !== "number" && 365180284 === js[1]){var f=js[2];return f} @@ -40118,7 +41709,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$3(js) + function to_string$4(js) {if(typeof js !== "number" && -976970511 === js[1]){var s=js[2];return s} return typerr$0(cst_Expected_string_got$0,js)} function to_string_option$0(js) @@ -40161,8 +41752,8 @@ {if(typeof param !== "number" && 848054398 === param[1]) {var l=param[2]; try - {var _hk_=[0,caml_call2(Stdlib_List[7],l,i)];return _hk_} - catch(_hl_){return 0}} + {var _fs_=[0,caml_call2(Stdlib_List[7],l,i)];return _fs_} + catch(_ft_){return 0}} return 0}, l)} function filter_list$0(l) @@ -40178,8 +41769,8 @@ {if(typeof param !== "number" && 963043957 === param[1]) {var l=param[2]; try - {var _hi_=[0,caml_call2(Stdlib_List[46],k,l)];return _hi_} - catch(_hj_){return 0}} + {var _fq_=[0,caml_call2(Stdlib_List[46],k,l)];return _fq_} + catch(_fr_){return 0}} return 0}, l)} function filter_assoc$0(l) @@ -40214,9 +41805,9 @@ {return filter_map$0 (function(param) {if(typeof param !== "number") - {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]}} + {var _fp_=param[1]; + if(3654863 === _fp_){var x=param[2];return [0,x]} + if(365180284 === _fp_){var x$0=param[2];return [0,x$0]}} return 0}, l)} function filter_string$0(l) @@ -40227,13 +41818,13 @@ return 0}, l)} function keys$0(o) - {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 _fn_(param){var key=param[1];return key} + var _fo_=caml_call1(Stdlib_List[19],_fn_); + return symbol$0(to_assoc$0(o),_fo_)} function values$0(o) - {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 _fl_(param){var value=param[2];return value} + var _fm_=caml_call1(Stdlib_List[19],_fl_); + return symbol$0(to_assoc$0(o),_fm_)} function combine$0(first,second) {if (typeof first @@ -40255,42 +41846,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 _hc_=10 <= n?n + 87 | 0:n + 48 | 0; - return caml_call1(Stdlib_Char[1],_hc_)} + {var _fk_=10 <= n?n + 87 | 0:n + 48 | 0; + return caml_call1(Stdlib_Char[1],_fk_)} function write_special$2(src,start,stop,ob,str) - {caml_call4(Stdlib_Buffer[18],ob,src,start[1],stop - start[1] | 0); - caml_call2(Stdlib_Buffer[16],ob,str); + {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0); + caml_call2(Bi_outbuf[13],ob,str); start[1] = stop + 1 | 0; return 0} function finish_string$4(src,start,ob) {try {var - _hb_= + _fj_= caml_call4 - (Stdlib_Buffer[18], + (Bi_outbuf[14], ob, src, start[1], caml_ml_string_length(src) - start[1] | 0); - return _hb_} + return _fj_} catch(exc) {exc = caml_wrap_exception(exc); caml_call4 (Stdlib_Printf[3], - _dm_, + _cR_, src, start[1], caml_ml_string_length(src) - start[1] | 0); throw exc}} function write_string$2(ob,s) - {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__; + {caml_call2(Bi_outbuf[15],ob,34); + var start=[0,0],_fh_=caml_ml_string_length(s) - 1 | 0,_fg_=0; + if(! (_fh_ < 0)) + {var i$0=_fg_; for(;;) - {var c=caml_string_get(s,i); + {var c=caml_string_get(s,i$0); if(92 === c) - write_special$2(s,start,i,ob,cst$59); + write_special$2(s,start,i$0,ob,cst$31); else {var switch$0=0; if(35 <= c) @@ -40299,12 +41890,12 @@ if(8 <= c) {var switch$1=0; switch(c - 8 | 0) - {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 0:write_special$2(s,start,i$0,ob,cst_b$2);break; + case 1:write_special$2(s,start,i$0,ob,cst_t$2);break; + case 2:write_special$2(s,start,i$0,ob,cst_n$2);break; + case 4:write_special$2(s,start,i$0,ob,cst_f$2);break; + case 5:write_special$2(s,start,i$0,ob,cst_r$2);break; + case 26:write_special$2(s,start,i$0,ob,cst$32);break; case 24: case 25:switch$0 = 2;switch$1 = 1;break; default:switch$0 = 1;switch$1 = 1}} @@ -40313,37 +41904,32 @@ switch(switch$0) {case 2:break; case 1: - 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; + caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0); + var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1]; + caml_call5(Stdlib_Bytes[12],cst_u00$2,0,dst,i,4); + caml_bytes_set(dst,i + 4 | 0,hex$4(c >>> 4 | 0)); + caml_bytes_set(dst,i + 5 | 0,hex$4(c & 15)); + start[1] = i$0 + 1 | 0; break }} - var _ha_=i + 1 | 0; - if(_g$_ !== i){var i=_ha_;continue} + var _fi_=i$0 + 1 | 0; + if(_fh_ !== i$0){var i$0=_fi_;continue} break}} finish_string$4(s,start,ob); - return caml_call2(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)} + return caml_call2(Bi_outbuf[15],ob,34)} function write_null$2(ob,param) - {return caml_call2(Stdlib_Buffer[16],ob,cst_null$7)} + {return caml_call2(Bi_outbuf[13],ob,cst_null$5)} function write_bool$2(ob,x) - {var _g7_=x?cst_true$2:cst_false$2; - return caml_call2(Stdlib_Buffer[16],ob,_g7_)} + {var _ff_=x?cst_true$3:cst_false$3; + return caml_call2(Bi_outbuf[13],ob,_ff_)} var - _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_); + _cS_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), + _cT_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])); + caml_call2(Stdlib[17],_cT_,_cS_); var - write_intlit$1=Stdlib_Buffer[16], - write_floatlit$0=Stdlib_Buffer[16], - write_stringlit$0=Stdlib_Buffer[16]; + write_intlit$1=Bi_outbuf[13], + write_floatlit$0=Bi_outbuf[13], + write_stringlit$0=Bi_outbuf[13]; function iter2$2(f_elt,f_sep,x,param$0) {if(param$0) {var l$0=param$0[2],y$0=param$0[1]; @@ -40358,424 +41944,294 @@ continue} return 0}} return 0} - 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 f_sep$2(ob){return caml_call2(Bi_outbuf[15],ob,44)} function write_tuple$1(ob,l) - {caml_call2(Stdlib_Buffer[12],ob,40); + {caml_call2(Bi_outbuf[15],ob,40); iter2$2(write_t$2,f_sep$2,ob,l); - return caml_call2(Stdlib_Buffer[12],ob,41)} + return caml_call2(Bi_outbuf[15],ob,41)} function write_list$2(ob,l) - {caml_call2(Stdlib_Buffer[12],ob,91); + {caml_call2(Bi_outbuf[15],ob,91); iter2$2(write_t$2,f_sep$2,ob,l); - return caml_call2(Stdlib_Buffer[12],ob,93)} + return caml_call2(Bi_outbuf[15],ob,93)} + function write_t$2(ob,x) + {if(typeof x === "number")return write_null$2(ob,0); + var _fe_=x[1]; + if(737456202 <= _fe_) + {if(928231259 <= _fe_) + {if(963043957 <= _fe_){var l=x[2];return write_assoc$2(ob,l)} + var s=x[2]; + return caml_call2(Bi_outbuf[13],ob,s)} + if(848054398 <= _fe_){var l$0=x[2];return write_list$2(ob,l$0)} + var b=x[2]; + return write_bool$2(ob,b)} + if(708012133 <= _fe_) + {if(726928360 <= _fe_){var l$1=x[2];return write_tuple$1(ob,l$1)} + var match=x[2],o=match[2],s$0=match[1]; + return write_variant$1(ob,s$0,o)} + if(-375152890 <= _fe_) + {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)} + var s$2=x[2]; + return caml_call2(Bi_outbuf[13],ob,s$2)} function write_assoc$2(ob,l) {function f_elt(ob,param) {var x=param[2],s=param[1]; write_string$2(ob,s); - caml_call2(Stdlib_Buffer[12],ob,58); + caml_call2(Bi_outbuf[15],ob,58); return write_t$2(ob,x)} - caml_call2(Stdlib_Buffer[12],ob,123); + caml_call2(Bi_outbuf[15],ob,123); iter2$2(f_elt,f_sep$2,ob,l); - 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) - {var x=o[1]; - caml_call2(Stdlib_Buffer[12],ob,91); - write_string$2(ob,s); - caml_call2(Stdlib_Buffer[12],ob,44); - write_std_json$2(ob,x); - return caml_call2(Stdlib_Buffer[12],ob,93)} - return write_string$2(ob,s)} + return caml_call2(Bi_outbuf[15],ob,125)} + function write_variant$1(ob,s,o) + {caml_call2(Bi_outbuf[15],ob,60); + write_string$2(ob,s); + if(o){var x=o[1];caml_call2(Bi_outbuf[15],ob,58);write_t$2(ob,x)} + return caml_call2(Bi_outbuf[15],ob,62)} function write_std_tuple$1(ob,l) - {caml_call2(Stdlib_Buffer[12],ob,91); + {caml_call2(Bi_outbuf[15],ob,91); iter2$2(write_std_json$2,f_sep$2,ob,l); - return caml_call2(Stdlib_Buffer[12],ob,93)} + return caml_call2(Bi_outbuf[15],ob,93)} function write_std_json$2(ob,x) {if(typeof x === "number")return write_null$2(ob,0); - var _g5_=x[1]; - if(737456202 <= _g5_) - {if(928231259 <= _g5_) - {if(963043957 <= _g5_) + var _fd_=x[1]; + if(737456202 <= _fd_) + {if(928231259 <= _fd_) + {if(963043957 <= _fd_) {var l=x[2], f_elt= function(ob,param) {var x=param[2],s=param[1]; write_string$2(ob,s); - caml_call2(Stdlib_Buffer[12],ob,58); + caml_call2(Bi_outbuf[15],ob,58); return write_std_json$2(ob,x)}; - caml_call2(Stdlib_Buffer[12],ob,123); + caml_call2(Bi_outbuf[15],ob,123); iter2$2(f_elt,f_sep$2,ob,l); - return caml_call2(Stdlib_Buffer[12],ob,125)} + return caml_call2(Bi_outbuf[15],ob,125)} var s=x[2]; - return caml_call2(Stdlib_Buffer[16],ob,s)} - if(848054398 <= _g5_) + return caml_call2(Bi_outbuf[13],ob,s)} + if(848054398 <= _fd_) {var l$0=x[2]; - caml_call2(Stdlib_Buffer[12],ob,91); + caml_call2(Bi_outbuf[15],ob,91); iter2$2(write_std_json$2,f_sep$2,ob,l$0); - return caml_call2(Stdlib_Buffer[12],ob,93)} + return caml_call2(Bi_outbuf[15],ob,93)} var b=x[2]; return write_bool$2(ob,b)} - if(708012133 <= _g5_) - {if(726928360 <= _g5_){var l$1=x[2];return write_std_tuple$1(ob,l$1)} + if(708012133 <= _fd_) + {if(726928360 <= _fd_){var l$1=x[2];return write_std_tuple$1(ob,l$1)} var match=x[2],o=match[2],s$0=match[1]; return write_std_variant$1(ob,s$0,o)} - if(-375152890 <= _g5_) - {var s$1=x[2];return caml_call2(Stdlib_Buffer[16],ob,s$1)} + if(-375152890 <= _fd_) + {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)} var s$2=x[2]; - return caml_call2(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) + return caml_call2(Bi_outbuf[13],ob,s$2)} + function write_std_variant$1(ob,s,o) + {if(o) + {var x=o[1]; + caml_call2(Bi_outbuf[15],ob,91); + write_string$2(ob,s); + caml_call2(Bi_outbuf[15],ob,44); + write_std_json$2(ob,x); + return caml_call2(Bi_outbuf[15],ob,93)} + return write_string$2(ob,s)} + function to_outbuf$2(opt,ob,x) + {if(opt)var sth=opt[1],std=sth;else var std=0; + return std + ?is_object_or_array(x) + ?write_std_json$2(ob,x) + :json_error(cst_Root_is_not_an_object_or_a$3) + :write_t$2(ob,x)} + function to_string$5(buf,opt,std,x) {if(opt)var sth=opt[1],len=sth;else var len=256; - if(_g3_)var sth$0=_g3_[1],suf=sth$0;else var suf=cst$62; if(buf) - {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} else - 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); + var ob$0=caml_call3(Bi_outbuf[3],0,0,len); + to_outbuf$2(std,ob$0,x); + var s=caml_call1(Bi_outbuf[4],ob$0); + caml_call1(Bi_outbuf[19],ob$0); return s} - function to_channel$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} + function to_channel$3(buf,len,std,oc,x) + {if(buf) + var ob=buf[1],ob$0=ob; else - 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} + var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); + to_outbuf$2(std,ob$0,x); + return caml_call1(Bi_outbuf[6],ob$0)} + function to_output$2(buf,len,std,out,x) + {if(buf) + var ob=buf[1],ob$0=ob; else - var ob$0=caml_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); + var ob$0=caml_call3(Bi_outbuf[7],len,0,out); + to_outbuf$2(std,ob$0,x); + return caml_call1(Bi_outbuf[8],ob$0)} + function to_file$2(len,std,file,x) + {var oc=caml_call1(Stdlib[60],file); try - {to_channel$2(0,len,[0,suf],std,oc,x); - var _gZ_=caml_call1(Stdlib[76],oc); - return _gZ_} + {to_channel$3(0,len,std,oc,x); + var _fc_=caml_call1(Stdlib[76],oc); + return _fc_} catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} - function 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) + function stream_to_outbuf$2(std,ob,st) + {function _fa_(_fb_){return to_outbuf$2(std,ob,_fb_)} + return caml_call2(Stdlib_Stream[8],_fa_,st)} + function stream_to_string$2(buf,opt,std,st) {if(opt)var sth=opt[1],len=sth;else var len=256; - if(_gV_)var sth$0=_gV_[1],suf=sth$0;else var suf=cst$67; if(buf) - {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} else - 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); + var ob$0=caml_call3(Bi_outbuf[3],0,0,len); + stream_to_outbuf$2(std,ob$0,st); + var s=caml_call1(Bi_outbuf[4],ob$0); + caml_call1(Bi_outbuf[19],ob$0); return s} - function 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} + function stream_to_channel$2(buf,len,std,oc,st) + {if(buf) + var ob=buf[1],ob$0=ob; else - 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); + var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); + stream_to_outbuf$2(std,ob$0,st); + return caml_call1(Bi_outbuf[6],ob$0)} + function stream_to_file$2(len,std,file,st) + {var oc=caml_call1(Stdlib[60],file); try - {seq_to_channel$2(0,len,[0,suf],std,oc,st); - var _gS_=caml_call1(Stdlib[76],oc); - return _gS_} + {stream_to_channel$2(0,len,std,oc,st); + var _e$_=caml_call1(Stdlib[76],oc); + return _e$_} catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} function sort$2(x) {if(typeof x !== "number") - {var _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 _e2_=x[1]; + if(726928361 <= _e2_) + {if(848054398 === _e2_) + {var l=x[2],_e3_=caml_call2(Stdlib_List[21],sort$2,l); + return [0,848054398,caml_call1(Stdlib_List[9],_e3_)]} + if(963043957 === _e2_) {var l$0=x[2], - _gL_= + _e4_= function(param) {var v=param[2],k=param[1];return [0,k,sort$2(v)]}, - _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]; + _e5_=caml_call2(Stdlib_List[21],_e4_,l$0), + l$1=caml_call1(Stdlib_List[9],_e5_), + _e6_= + function(param,_e__) + {var b=_e__[1],a=param[1]; return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_gN_,l$1)]}} + return [0,963043957,caml_call2(Stdlib_List[57],_e6_,l$1)]}} else - if(708012133 === _gJ_) - {var _gO_=x[2],_gP_=_gO_[2]; - if(_gP_) - {var v=_gP_[1],k=_gO_[1],v$0=sort$2(v); + if(708012133 === _e2_) + {var _e7_=x[2],_e8_=_e7_[2]; + if(_e8_) + {var v=_e8_[1],k=_e7_[1],v$0=sort$2(v); return v === v$0?x:[0,708012133,[0,k,[0,v$0]]]}} else - if(726928360 <= _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_)]}} + if(726928360 <= _e2_) + {var l$2=x[2],_e9_=caml_call2(Stdlib_List[21],sort$2,l$2); + return [0,726928360,caml_call1(Stdlib_List[9],_e9_)]}} return x} - function pp_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 _f3_=x$0[2]; - if(_f3_) - {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_} - return caml_call2(Stdlib_Format[13],out,cst$71)} - var s=x$0[2]; - return caml_call2(Stdlib_Format[13],out,s)} - if(848054398 <= _f2_) - {var _f7_=x$0[2]; - if(_f7_) - {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$_} - return caml_call2(Stdlib_Format[13],out,cst$74)} - var x$1=x$0[2]; - return caml_call2(Stdlib_Format[25],out,x$1)} - if(708012133 <= _f2_) - {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_)} - 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)}} - 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) + function pp$2(fmt,param) {if(typeof param === "number") return caml_call2(Stdlib_Format[13],fmt,cst_Null$2); - var _fR_=param[1]; - if(737456202 <= _fR_) - {if(928231259 <= _fR_) - {if(963043957 <= _fR_) + var _eV_=param[1]; + if(737456202 <= _eV_) + {if(928231259 <= _eV_) + {if(963043957 <= _eV_) {var xs=param[2]; - caml_call2(Stdlib_Format[129],fmt,_dG_); - caml_call2(Stdlib_Format[129],fmt,_dH_); + caml_call2(Stdlib_Format[129],fmt,_cU_); + caml_call2(Stdlib_Format[129],fmt,_cV_); var - _fS_=0, - _fT_= + _eW_=0, + _eX_= function(sep,param) {var value=param[2],key=param[1]; - 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_); + if(sep)caml_call2(Stdlib_Format[129],fmt,_cW_); + caml_call2(Stdlib_Format[129],fmt,_cX_); + caml_call3(Stdlib_Format[129],fmt,_cY_,key); + caml_call2(Stdlib_Format[129],fmt,_cZ_); + pp$2(fmt,value); + caml_call2(Stdlib_Format[129],fmt,_c0_); return 1}; - caml_call3(Stdlib_List[25],_fT_,_fS_,xs); - caml_call2(Stdlib_Format[129],fmt,_dN_); - return caml_call2(Stdlib_Format[129],fmt,_dO_)} + caml_call3(Stdlib_List[25],_eX_,_eW_,xs); + caml_call2(Stdlib_Format[129],fmt,_c1_); + return caml_call2(Stdlib_Format[129],fmt,_c2_)} var x=param[2]; - caml_call2(Stdlib_Format[129],fmt,_dP_); - caml_call3(Stdlib_Format[129],fmt,_dQ_,x); - return caml_call2(Stdlib_Format[129],fmt,_dR_)} - if(848054398 <= _fR_) + caml_call2(Stdlib_Format[129],fmt,_c3_); + caml_call3(Stdlib_Format[129],fmt,_c4_,x); + return caml_call2(Stdlib_Format[129],fmt,_c5_)} + if(848054398 <= _eV_) {var xs$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_dS_); - caml_call2(Stdlib_Format[129],fmt,_dT_); + caml_call2(Stdlib_Format[129],fmt,_c6_); + caml_call2(Stdlib_Format[129],fmt,_c7_); var - _fU_=0, - _fV_= + _eY_=0, + _eZ_= function(sep,x) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_dU_); - pp$6(fmt,x); + {if(sep)caml_call2(Stdlib_Format[129],fmt,_c8_); + pp$2(fmt,x); return 1}; - caml_call3(Stdlib_List[25],_fV_,_fU_,xs$0); - caml_call2(Stdlib_Format[129],fmt,_dV_); - return caml_call2(Stdlib_Format[129],fmt,_dW_)} + caml_call3(Stdlib_List[25],_eZ_,_eY_,xs$0); + caml_call2(Stdlib_Format[129],fmt,_c9_); + return caml_call2(Stdlib_Format[129],fmt,_c__)} var x$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_dX_); - caml_call3(Stdlib_Format[129],fmt,_dY_,x$0); - return caml_call2(Stdlib_Format[129],fmt,_dZ_)} - if(708012133 <= _fR_) - {if(726928360 <= _fR_) + caml_call2(Stdlib_Format[129],fmt,_c$_); + caml_call3(Stdlib_Format[129],fmt,_da_,x$0); + return caml_call2(Stdlib_Format[129],fmt,_db_)} + if(708012133 <= _eV_) + {if(726928360 <= _eV_) {var tup=param[2]; - caml_call2(Stdlib_Format[129],fmt,_d0_); - caml_call2(Stdlib_Format[129],fmt,_d1_); + caml_call2(Stdlib_Format[129],fmt,_dc_); + caml_call2(Stdlib_Format[129],fmt,_dd_); var - _fW_=0, - _fX_= + _e0_=0, + _e1_= function(sep,e) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_d2_); - pp$6(fmt,e); + {if(sep)caml_call2(Stdlib_Format[129],fmt,_de_); + pp$2(fmt,e); return 1}; - caml_call3(Stdlib_List[25],_fX_,_fW_,tup); - caml_call2(Stdlib_Format[129],fmt,_d3_); - return caml_call2(Stdlib_Format[129],fmt,_d4_)} + caml_call3(Stdlib_List[25],_e1_,_e0_,tup); + caml_call2(Stdlib_Format[129],fmt,_df_); + return caml_call2(Stdlib_Format[129],fmt,_dg_)} var match=param[2],value=match[2],name=match[1]; - caml_call2(Stdlib_Format[129],fmt,_d5_); - caml_call2(Stdlib_Format[129],fmt,_d6_); - caml_call3(Stdlib_Format[129],fmt,_d7_,name); - caml_call2(Stdlib_Format[129],fmt,_d8_); + caml_call2(Stdlib_Format[129],fmt,_dh_); + caml_call2(Stdlib_Format[129],fmt,_di_); + caml_call3(Stdlib_Format[129],fmt,_dj_,name); + caml_call2(Stdlib_Format[129],fmt,_dk_); if(value) {var x$1=value[1]; caml_call2(Stdlib_Format[13],fmt,cst_Some$1); - pp$6(fmt,x$1); - caml_call2(Stdlib_Format[13],fmt,cst$77)} + pp$2(fmt,x$1); + caml_call2(Stdlib_Format[13],fmt,cst$33)} else caml_call2(Stdlib_Format[13],fmt,cst_None$1); - caml_call2(Stdlib_Format[129],fmt,_d9_); - return caml_call2(Stdlib_Format[129],fmt,_d__)} - if(-375152890 <= _fR_) + caml_call2(Stdlib_Format[129],fmt,_dl_); + return caml_call2(Stdlib_Format[129],fmt,_dm_)} + if(-375152890 <= _eV_) {var x$2=param[2]; - caml_call2(Stdlib_Format[129],fmt,_d$_); - caml_call3(Stdlib_Format[129],fmt,_ea_,x$2); - return caml_call2(Stdlib_Format[129],fmt,_eb_)} + caml_call2(Stdlib_Format[129],fmt,_dn_); + caml_call3(Stdlib_Format[129],fmt,_do_,x$2); + return caml_call2(Stdlib_Format[129],fmt,_dp_)} var x$3=param[2]; - caml_call2(Stdlib_Format[129],fmt,_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)} + caml_call2(Stdlib_Format[129],fmt,_dq_); + caml_call3(Stdlib_Format[129],fmt,_dr_,x$3); + return caml_call2(Stdlib_Format[129],fmt,_ds_)} + function show$2(x){return caml_call3(Stdlib_Format[133],_dt_,pp$2,x)} function equal$2(a,b) {var a$0=a,b$0=b; for(;;) {if(typeof a$0 === "number") {if(870828711 === a$0 && 870828711 === b$0)return 1} else - {var _fK_=a$0[1],switch$0=0; - if(726928361 <= _fK_) - {if(848054399 <= _fK_) - {if(928231259 === _fK_) + {var _eO_=a$0[1],switch$0=0; + if(726928361 <= _eO_) + {if(848054399 <= _eO_) + {if(928231259 === _eO_) {if(typeof b$0 !== "number" && 928231259 === b$0[1]) {var b$1=b$0[2],a$1=a$0[2];return caml_equal(a$1,b$1)}} else if (963043957 === - _fK_ + _eO_ && typeof b$0 !== @@ -40788,37 +42244,37 @@ ys=b$0[2], xs=a$0[2], compare_keys= - function(param,_fQ_) - {var key=_fQ_[1],key$0=param[1]; + function(param,_eU_) + {var key=_eU_[1],key$0=param[1]; return caml_call2(Stdlib_String[9],key$0,key)}, xs$0=caml_call2(Stdlib_List[57],compare_keys,xs), ys$0=caml_call2(Stdlib_List[57],compare_keys,ys); try {var - _fL_= - function(param,_fP_) + _eP_= + function(param,_eT_) {var - value=_fP_[2], - key=_fP_[1], + value=_eT_[2], + key=_eT_[1], value$0=param[2], key$0=param[1], match=caml_string_equal(key$0,key); return match?equal$2(value$0,value):0}, - result=caml_call3(Stdlib_List[34],_fL_,xs$0,ys$0); + result=caml_call3(Stdlib_List[34],_eP_,xs$0,ys$0); return result} - catch(_fO_) - {_fO_ = caml_wrap_exception(_fO_); - if(_fO_[1] === Stdlib[6])return 0; - throw _fO_}}} + catch(_eS_) + {_eS_ = caml_wrap_exception(_eS_); + if(_eS_[1] === Stdlib[6])return 0; + throw _eS_}}} else - if(737456202 === _fK_) + if(737456202 === _eO_) {if(typeof b$0 !== "number" && 737456202 === b$0[1]) {var b$2=b$0[2],a$2=a$0[2];return caml_equal(a$2,b$2)}} else if (848054398 <= - _fK_ + _eO_ && typeof b$0 !== @@ -40829,13 +42285,13 @@ b$0[1]) {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} else - if(-375152889 <= _fK_) - {if(708012133 === _fK_) + if(-375152889 <= _eO_) + {if(708012133 === _eO_) {if(typeof b$0 !== "number" && 708012133 === b$0[1]) {var - _fM_=b$0[2], - value=_fM_[2], - name=_fM_[1], + _eQ_=b$0[2], + value=_eQ_[2], + name=_eQ_[1], match=a$0[2], value$0=match[2], name$0=match[1], @@ -40852,7 +42308,7 @@ if (726928360 <= - _fK_ + _eO_ && typeof b$0 !== @@ -40863,14 +42319,14 @@ b$0[1]) {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} else - if(-752863768 === _fK_) + if(-752863768 === _eO_) {if(typeof b$0 !== "number" && -752863768 === b$0[1]) {var b$4=b$0[2],a$4=a$0[2];return caml_equal(a$4,b$4)}} else if (-375152890 <= - _fK_ + _eO_ && typeof b$0 !== @@ -40884,19 +42340,17 @@ try {var result$0=caml_call3(Stdlib_List[34],equal$2,xs$1,ys$1); return result$0} - catch(_fN_) - {_fN_ = caml_wrap_exception(_fN_); - if(_fN_[1] === Stdlib[6])return 0; - throw _fN_}} + catch(_eR_) + {_eR_ = caml_wrap_exception(_eR_); + if(_eR_[1] === Stdlib[6])return 0; + throw _eR_}} return 0}} - 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)} + function pretty_format$2(std,x){return format(std,x)} + function pretty_print$2(std,out,x) + {var _eN_=pretty_format$2(std,x); + return caml_call2(Easy_format[4][2],out,_eN_)} + function pretty_to_string$2(std,x){return to_string$0(std,x)} + function pretty_to_channel$2(std,oc,x){return to_channel$0(std,oc,x)} var from_channel$3=Stdlib_Lexing[2], from_string$3=Stdlib_Lexing[3], @@ -40911,43 +42365,43 @@ if(! (71 <= c))return (c - 65 | 0) + 10 | 0} else if(! (9 < c - 48 >>> 0))return c - 48 | 0; - throw [0,Assert_failure,_eg_]} + throw [0,Assert_failure,_du_]} function custom_error$1(descr,v,lexbuf) {var offs=lexbuf[4] - 1 | 0, bol=v[3], pos1=((offs + lexbuf[5] | 0) - bol | 0) - 1 | 0, pos2=caml_call2(Stdlib[17],pos1,(offs + lexbuf[6] | 0) - bol | 0), - _fD_=v[4]; - if(_fD_) - var s=_fD_[1],file_line=caml_call2(Stdlib_Printf[4],_eh_,s); + _eM_=v[4]; + if(_eM_) + var s=_eM_[1],file_line=caml_call2(Stdlib_Printf[4],_dv_,s); else var file_line=cst_Line$1; var bytes= pos1 === pos2 - ?caml_call2(Stdlib_Printf[4],_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); + ?caml_call2(Stdlib_Printf[4],_dw_,pos1 + 1 | 0) + :caml_call3(Stdlib_Printf[4],_dy_,pos1 + 1 | 0,pos2 + 1 | 0), + msg=caml_call5(Stdlib_Printf[4],_dx_,file_line,v[2],bytes,descr); return json_error(msg)} function lexer_error$1(descr,v,lexbuf) - {var _fC_=caml_call1(lexeme$1,lexbuf); + {var _eL_=caml_call1(lexeme$1,lexbuf); return custom_error$1 - (caml_call3(Stdlib_Printf[4],_el_,descr,_fC_),v,lexbuf)} - var read_junk$1=[0,function(param){throw [0,Assert_failure,_em_]}]; + (caml_call3(Stdlib_Printf[4],_dz_,descr,_eL_),v,lexbuf)} + var read_junk$1=[0,function(param){throw [0,Assert_failure,_dA_]}]; function long_error$1(descr,v,lexbuf) {var junk=caml_call1(lexeme$1,lexbuf), extra_junk=caml_call1(read_junk$1[1],lexbuf); return custom_error$1 - (caml_call4(Stdlib_Printf[4],_en_,descr,junk,extra_junk), + (caml_call4(Stdlib_Printf[4],_dB_,descr,junk,extra_junk), v, lexbuf)} var - _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, + _dC_=0 === (Stdlib[20] % 10 | 0)?0:1, + min10$1=(Stdlib[20] / 10 | 0) - _dC_ | 0, + _dD_=0 === (Stdlib[19] % 10 | 0)?0:1, + max10$1=(Stdlib[19] / 10 | 0) + _dD_ | 0, Int_overflow$1=[248,cst_Yojson_Raw_Int_overflow,caml_fresh_oo_id(0)]; function extract_positive_int$1(lexbuf) {var @@ -40955,15 +42409,15 @@ stop=lexbuf[6], s=lexbuf[2], n=[0,0], - _fz_=stop - 1 | 0; - if(! (_fz_ < start)) + _eI_=stop - 1 | 0; + if(! (_eI_ < start)) {var i=start; for(;;) {if(max10$1 <= n[1])throw Int_overflow$1; - 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} + var _eJ_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) + _eJ_ | 0; + var _eK_=i + 1 | 0; + if(_eI_ !== i){var i=_eK_;continue} break}} if(0 <= n[1])return n[1]; throw Int_overflow$1} @@ -40975,15 +42429,15 @@ stop=lexbuf[6], s=lexbuf[2], n=[0,0], - _fw_=stop - 1 | 0; - if(! (_fw_ < start)) + _eF_=stop - 1 | 0; + if(! (_eF_ < start)) {var i=start; for(;;) {if(n[1] <= min10$1)throw Int_overflow$1; - 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} + var _eG_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) - _eG_ | 0; + var _eH_=i + 1 | 0; + if(_eF_ !== i){var i=_eH_;continue} break}} if(0 < n[1])throw Int_overflow$1; return n[1]} @@ -40993,14 +42447,280 @@ {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(Stdlib_Buffer[19],buf,lexbuf[2],lexbuf[5],len)} + return caml_call4(Bi_outbuf[12],buf,lexbuf[2],lexbuf[5],len)} + function read_colon$1(v,lexbuf) + {var ocaml_lex_state=297; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$1(cst_Expected_but_found$39,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$121,v,lexbuf)}}} + function read_object_sep$1(v,lexbuf) + {var ocaml_lex_state=292; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_object; + case 2:return long_error$1(cst_Expected_or_but_found$38,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$120,v,lexbuf)}}} + function read_object_end$1(lexbuf) + {var ocaml_lex_state=290; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_object; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_tuple_sep$1(v,lexbuf) + {var ocaml_lex_state=271; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_tuple; + case 2:return long_error$1(cst_Expected_or_but_found$34,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$116,v,lexbuf)}}} + function read_tuple_end$1(lexbuf) + {var ocaml_lex_state=266; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_tuple; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_array_sep$1(v,lexbuf) + {var ocaml_lex_state=257; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_array; + case 2:return long_error$1(cst_Expected_or_but_found$31,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$114,v,lexbuf)}}} + function read_array_end$1(lexbuf) + {var ocaml_lex_state=255; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_array; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function finish_escaped_char$1(v,lexbuf) + {var ocaml_lex_state=68; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(8 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + var c=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5]); + return caml_call2(Bi_outbuf[15],v[1],c); + case 1:return caml_call2(Bi_outbuf[15],v[1],8); + case 2:return caml_call2(Bi_outbuf[15],v[1],12); + case 3:return caml_call2(Bi_outbuf[15],v[1],10); + case 4:return caml_call2(Bi_outbuf[15],v[1],13); + case 5:return caml_call2(Bi_outbuf[15],v[1],9); + case 6: + var + a=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 1 | 0), + b=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 2 | 0), + c$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 3 | 0), + d=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 4 | 0), + _ez_=hex$5(d), + _eA_=hex$5(c$0) << 4, + _eB_=hex$5(b) << 8, + x=hex$5(a) << 12 | _eB_ | _eA_ | _ez_; + if(55296 <= x && ! (56319 < x)) + {var ocaml_lex_state$1=82; + for(;;) + {var + ocaml_lex_state$2= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$1,lexbuf); + if(2 < ocaml_lex_state$2 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$1=ocaml_lex_state$2; + continue} + switch(ocaml_lex_state$2) + {case 0: + var + a$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 2 | 0), + b$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 3 | 0), + c$1=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 4 | 0), + d$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 5 | 0), + _eC_=hex$5(d$0), + _eD_=hex$5(c$1) << 4, + _eE_=hex$5(b$0) << 8, + y=hex$5(a$0) << 12 | _eE_ | _eD_ | _eC_; + if(56320 <= y && ! (57343 < y)) + return utf8_of_surrogate_pair(v[1],x,y); + return long_error$1 + (cst_Invalid_low_surrogate_for_$1,v,lexbuf); + case 1: + return long_error$1 + (cst_Missing_escape_sequence_re$1,v,lexbuf); + default: + return custom_error$1 + (cst_Unexpected_end_of_input$96,v,lexbuf)}}} + return utf8_of_code(v[1],x); + case 7:return long_error$1(cst_Invalid_escape_sequence$1,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$95,v,lexbuf)}}} + function finish_string$5(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=58; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call1(Bi_outbuf[4],v[1]); + case 1:finish_escaped_char$1(v,lexbuf);continue a; + case 2:add_lexeme$1(v[1],lexbuf);continue a; + default: + return custom_error$1(cst_Unexpected_end_of_input$93,v,lexbuf)}}}} + function read_ident$1(v,lexbuf) + {var ocaml_lex_state=237; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Bi_outbuf[19],v[1]);return finish_string$5(v,lexbuf); + case 1: + var s=caml_call3(sub_lexeme$1,lexbuf,lexbuf[5],lexbuf[6]);return s; + case 2: + return long_error$1(cst_Expected_string_or_identif$7,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$110,v,lexbuf)}}} + function finish_comment$1(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=125; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$1(cst_Unterminated_comment$3,v,lexbuf); + case 2:newline$1(v,lexbuf);continue a; + default:continue a}}}} + function read_space$1(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=133; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:newline$1(v,lexbuf);continue a; + case 1:finish_comment$1(v,lexbuf);continue a; + case 2:newline$1(v,lexbuf);continue a; + case 3:continue a; + default:return 0}}}} + function read_gt$1(v,lexbuf) + {var ocaml_lex_state=111; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$1(cst_Expected_but_found$31,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$100,v,lexbuf)}}} + function finish_stringlit$1(v,lexbuf) + {var ocaml_lex_state=91; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + var len=lexbuf[6] - lexbuf[5] | 0,s=caml_create_bytes(len + 1 | 0); + caml_bytes_set(s,0,34); + caml_call5(Stdlib_Bytes[11],lexbuf[2],lexbuf[5],s,1,len); + return caml_call1(Stdlib_Bytes[6],s); + case 1:return long_error$1(cst_Invalid_string_literal$5,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$97,v,lexbuf)}}} function read_json$4(counter,v,lexbuf) - {var _fv_=0; + {var _ey_=0; if(counter < 50) {var counter$0=counter + 1 | 0; - return ocaml_lex_read_json_rec$1(counter$0,v,lexbuf,_fv_)} + 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,_fv_])} + (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(;;) @@ -41012,12 +42732,12 @@ var ocaml_lex_state$0=ocaml_lex_state$1; continue} switch(ocaml_lex_state$1) - {case 0:return _eq_; - case 1:return _er_; + {case 0:return _dE_; + case 1:return _dF_; case 2:return 870828711; - case 3:return _es_; - case 4:return _et_; - case 5:return _eu_; + 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); @@ -41031,8 +42751,8 @@ 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_]; + 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); @@ -41041,52 +42761,52 @@ 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_]; + var _eq_=acc[1]; + acc[1] = [0,[0,field_name$0,read_json$1(v,lexbuf)],_eq_]; continue}} - catch(_fu_) - {_fu_ = caml_wrap_exception(_fu_); - if(_fu_ === End_of_object) + catch(_ex_) + {_ex_ = caml_wrap_exception(_ex_); + if(_ex_ === End_of_object) return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; - throw _fu_} + throw _ex_} 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_]; + 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 _fp_=acc$0[1]; - acc$0[1] = [0,read_json$1(v,lexbuf),_fp_]; + var _es_=acc$0[1]; + acc$0[1] = [0,read_json$1(v,lexbuf),_es_]; continue}} - catch(_ft_) - {_ft_ = caml_wrap_exception(_ft_); - if(_ft_ === End_of_array) + catch(_ew_) + {_ew_ = caml_wrap_exception(_ew_); + if(_ew_ === End_of_array) return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; - throw _ft_} + throw _ew_} 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_]; + 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 _fr_=acc$1[1]; - acc$1[1] = [0,read_json$1(v,lexbuf),_fr_]; + var _eu_=acc$1[1]; + acc$1[1] = [0,read_json$1(v,lexbuf),_eu_]; continue}} - catch(_fs_) - {_fs_ = caml_wrap_exception(_fs_); - if(_fs_ === End_of_tuple) + catch(_ev_) + {_ev_ = caml_wrap_exception(_ev_); + if(_ev_ === End_of_tuple) return [0,726928360,caml_call1(Stdlib_List[9],acc$1[1])]; - throw _fs_} + throw _ev_} case 13: read_space$1(v,lexbuf); var cons=read_ident$1(v,lexbuf); @@ -41117,129 +42837,6 @@ 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=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(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)}}}} - 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],_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)}}}} - function finish_escaped_char$1(v,lexbuf) - {var ocaml_lex_state=68; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(8 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - var c=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5]); - return caml_call2(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), - _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 - ocaml_lex_state$2= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$1,lexbuf); - if(2 < ocaml_lex_state$2 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$1=ocaml_lex_state$2; - continue} - switch(ocaml_lex_state$2) - {case 0: - var - a$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 2 | 0), - b$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 3 | 0), - c$1=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 4 | 0), - d$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 5 | 0), - _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); - case 1: - return long_error$1 - (cst_Missing_escape_sequence_re$1,v,lexbuf); - default: - return custom_error$1 - (cst_Unexpected_end_of_input$96,v,lexbuf)}}} - return utf8_of_code(v[1],x); - case 7:return long_error$1(cst_Invalid_escape_sequence$1,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$95,v,lexbuf)}}} - function finish_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 finish_variant$1(v,lexbuf) {var ocaml_lex_state=102; for(;;) @@ -41260,6 +42857,28 @@ 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(;;) @@ -41275,21 +42894,6 @@ 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_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 read_comma$1(v,lexbuf) {var ocaml_lex_state=115; for(;;) @@ -41317,28 +42921,11 @@ continue} switch(ocaml_lex_state$0) {case 0:return -154522342; - case 1:caml_call1(Stdlib_Buffer[8],v[1]);return -589953938; + case 1:caml_call1(Bi_outbuf[19],v[1]);return -589953938; case 2:return -124528282; case 3:return long_error$1(cst_Expected_or_but_found$30,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$102,v,lexbuf)}}} - function finish_comment$1(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=125; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$1(cst_Unterminated_comment$3,v,lexbuf); - case 2:newline$1(v,lexbuf);continue a; - default:continue a}}}} function read_eof$1(lexbuf) {var ocaml_lex_state=131; for(;;) @@ -41350,24 +42937,6 @@ caml_call1(lexbuf[1],lexbuf); var ocaml_lex_state=ocaml_lex_state$0; continue}} - 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_null$1(v,lexbuf) {var ocaml_lex_state=140; for(;;) @@ -41426,26 +42995,26 @@ switch(ocaml_lex_state$1) {case 0: try - {var _e$_=extract_positive_int$1(lexbuf);return _e$_} - catch(_fe_) - {_fe_ = caml_wrap_exception(_fe_); - if(_fe_ === Int_overflow$1) + {var _ei_=extract_positive_int$1(lexbuf);return _ei_} + catch(_en_) + {_en_ = caml_wrap_exception(_en_); + if(_en_ === Int_overflow$1) return lexer_error$1(cst_Int_overflow$5,v,lexbuf); - throw _fe_} + throw _en_} case 1: try - {var _fa_=extract_negative_int$1(lexbuf);return _fa_} - catch(_fd_) - {_fd_ = caml_wrap_exception(_fd_); - if(_fd_ === Int_overflow$1) + {var _ej_=extract_negative_int$1(lexbuf);return _ej_} + catch(_em_) + {_em_ = caml_wrap_exception(_em_); + if(_em_ === Int_overflow$1) return lexer_error$1(cst_Int_overflow$6,v,lexbuf); - throw _fd_} + throw _em_} case 2: - caml_call1(Stdlib_Buffer[8],v[1]); + caml_call1(Bi_outbuf[19],v[1]); var s=finish_string$5(v,lexbuf); try - {var _fb_=caml_int_of_string(s);return _fb_} - catch(_fc_) + {var _ek_=caml_int_of_string(s);return _ek_} + catch(_el_) {return custom_error$1(cst_Expected_an_integer_but_fo$1,v,lexbuf)} case 3: return long_error$1(cst_Expected_integer_but_found$1,v,lexbuf); @@ -41466,15 +43035,15 @@ switch(ocaml_lex_state$1) {case 0: try - {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)} + {var _ee_=caml_int_of_string(caml_call1(lexeme$1,lexbuf)); + return _ee_} + catch(_eh_){return lexer_error$1(cst_Int32_overflow$3,v,lexbuf)} case 1: - caml_call1(Stdlib_Buffer[8],v[1]); + caml_call1(Bi_outbuf[19],v[1]); var s=finish_string$5(v,lexbuf); try - {var _e8_=caml_int_of_string(s);return _e8_} - catch(_e9_) + {var _ef_=caml_int_of_string(s);return _ef_} + catch(_eg_) {return custom_error$1(cst_Expected_an_int32_but_foun$1,v,lexbuf)} case 2:return long_error$1(cst_Expected_int32_but_found$1,v,lexbuf); default: @@ -41494,15 +43063,15 @@ switch(ocaml_lex_state$1) {case 0: try - {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)} + {var _ea_=caml_int64_of_string(caml_call1(lexeme$1,lexbuf)); + return _ea_} + catch(_ed_){return lexer_error$1(cst_Int32_overflow$4,v,lexbuf)} case 1: - caml_call1(Stdlib_Buffer[8],v[1]); + caml_call1(Bi_outbuf[19],v[1]); var s=finish_string$5(v,lexbuf); try - {var _e4_=caml_int64_of_string(s);return _e4_} - catch(_e5_) + {var _eb_=caml_int64_of_string(s);return _eb_} + catch(_ec_) {return custom_error$1(cst_Expected_an_int64_but_foun$1,v,lexbuf)} case 2:return long_error$1(cst_Expected_int64_but_found$1,v,lexbuf); default: @@ -41525,14 +43094,14 @@ case 2:return Stdlib[23]; case 3:return caml_float_of_string(caml_call1(lexeme$1,lexbuf)); case 4: - caml_call1(Stdlib_Buffer[8],v[1]); + caml_call1(Bi_outbuf[19],v[1]); var s=finish_string$5(v,lexbuf); try - {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) + {var _d__=caml_float_of_string(s);return _d__} + catch(_d$_) + {return caml_string_notequal(s,cst_Infinity$21) + ?caml_string_notequal(s,cst_Infinity$22) + ?caml_string_notequal(s,cst_NaN$10) ?custom_error$1(cst_Expected_a_number_but_foun$1,v,lexbuf) :Stdlib[24] :Stdlib[22] @@ -41555,29 +43124,10 @@ continue} switch(ocaml_lex_state$0) {case 0: - caml_call1(Stdlib_Buffer[8],v[1]);return finish_string$5(v,lexbuf); + caml_call1(Bi_outbuf[19],v[1]);return finish_string$5(v,lexbuf); case 1:return long_error$1(cst_Expected_but_found$33,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$109,v,lexbuf)}}} - function read_ident$1(v,lexbuf) - {var ocaml_lex_state=237; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - caml_call1(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)}}} function map_ident$1(v,f,lexbuf) {var ocaml_lex_state=242; for(;;) @@ -41590,14 +43140,10 @@ continue} switch(ocaml_lex_state$0) {case 0: - caml_call1(Stdlib_Buffer[8],v[1]);return map_string$1(v,f,lexbuf); + caml_call1(Bi_outbuf[19],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); + 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: @@ -41626,10 +43172,10 @@ read_space$1(v,lexbuf); acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); continue}} - catch(_e0_) - {_e0_ = caml_wrap_exception(_e0_); - if(_e0_ === End_of_array)return acc[1]; - throw _e0_} + catch(_d8_) + {_d8_ = caml_wrap_exception(_d8_); + if(_d8_ === End_of_array)return acc[1]; + throw _d8_} case 1:return long_error$1(cst_Expected_but_found$34,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$112,v,lexbuf)}}} @@ -41651,51 +43197,24 @@ try {read_space$1(v,lexbuf); read_array_end$1(lexbuf); - var _eX_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_eX_]; + var _d5_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_d5_]; for(;;) {read_space$1(v,lexbuf); read_array_sep$1(v,lexbuf); read_space$1(v,lexbuf); - var _eY_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_eY_]; + var _d6_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_d6_]; continue}} - catch(_eZ_) - {_eZ_ = caml_wrap_exception(_eZ_); - if(_eZ_ === End_of_array)return acc[1]; - throw _eZ_} + catch(_d7_) + {_d7_ = caml_wrap_exception(_d7_); + if(_d7_ === End_of_array)return acc[1]; + throw _d7_} case 1:return long_error$1(cst_Expected_but_found$35,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$113,v,lexbuf)}}} function read_list_rev$1(read_cell,v,lexbuf) {return ocaml_lex_read_list_rev_rec$1(read_cell,v,lexbuf,251)} - function read_array_end$1(lexbuf) - {var ocaml_lex_state=255; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_array; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function 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 ocaml_lex_read_tuple_rec$0 (read_cell,init_acc,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; @@ -41722,26 +43241,15 @@ acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf); pos[1]++; continue}} - catch(_eW_) - {_eW_ = caml_wrap_exception(_eW_); - if(_eW_ === End_of_tuple)return acc[1]; - throw _eW_} + catch(_d4_) + {_d4_ = caml_wrap_exception(_d4_); + if(_d4_ === End_of_tuple)return acc[1]; + throw _d4_} case 1:return long_error$1(cst_Expected_but_found$36,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$115,v,lexbuf)}}} function read_tuple$1(read_cell,init_acc,v,lexbuf) {return ocaml_lex_read_tuple_rec$0(read_cell,init_acc,v,lexbuf,262)} - function read_tuple_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_tuple_end2$1(v,std,lexbuf) {var ocaml_lex_state=268; for(;;) @@ -41760,22 +43268,6 @@ 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) - {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_sep2$1(v,std,lexbuf) {var ocaml_lex_state=276; for(;;) @@ -41829,10 +43321,10 @@ read_space$1(v,lexbuf); acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf); continue}} - catch(_eV_) - {_eV_ = caml_wrap_exception(_eV_); - if(_eV_ === End_of_object)return acc[1]; - throw _eV_} + catch(_d3_) + {_d3_ = caml_wrap_exception(_d3_); + if(_d3_ === End_of_object)return acc[1]; + throw _d3_} case 1:return long_error$1(cst_Expected_but_found$37,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$118,v,lexbuf)}}} @@ -41854,48 +43346,6 @@ case 1:return long_error$1(cst_Expected_but_found$38,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$119,v,lexbuf)}}} - function read_object_end$1(lexbuf) - {var ocaml_lex_state=290; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_object; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_object_sep$1(v,lexbuf) - {var ocaml_lex_state=292; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_object; - case 2:return long_error$1(cst_Expected_or_but_found$38,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$120,v,lexbuf)}}} - function read_colon$1(v,lexbuf) - {var ocaml_lex_state=297; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$1(cst_Expected_but_found$39,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$121,v,lexbuf)}}} function start_any_tuple$1(v,lexbuf) {var ocaml_lex_state=301; for(;;) @@ -41972,25 +43422,6 @@ case 1:return long_error$1(cst_Expected_but_found$43,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$126,v,lexbuf)}}} - function finish_skip_variant$1(v,lexbuf) - {var ocaml_lex_state=389; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - skip_json$1(v,lexbuf); - read_space$1(v,lexbuf); - return read_gt$1(v,lexbuf); - case 1:return 0; - case 2:return long_error$1(cst_Expected_or_but_found$40,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$129,v,lexbuf)}}} function finish_skip_stringlit$1(v,lexbuf) {var ocaml_lex_state=378; for(;;) @@ -42006,13 +43437,30 @@ case 1:return long_error$1(cst_Invalid_string_literal$6,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$128,v,lexbuf)}}} + function skip_ident$1(v,lexbuf) + {var ocaml_lex_state=394; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return finish_skip_stringlit$1(v,lexbuf); + case 1:return 0; + case 2: + return long_error$1(cst_Expected_string_or_identif$9,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$130,v,lexbuf)}}} function skip_json$4(counter,v,lexbuf) - {var _eU_=322; + {var _d2_=322; if(counter < 50) {var counter$0=counter + 1 | 0; - return ocaml_lex_skip_json_rec$1(counter$0,v,lexbuf,_eU_)} + 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,_eU_])} + (ocaml_lex_skip_json_rec$1,[0,v,lexbuf,_d2_])} function ocaml_lex_skip_json_rec$1(counter,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -42052,10 +43500,10 @@ read_space$1(v,lexbuf); skip_json$1(v,lexbuf); continue}} - catch(_eT_) - {_eT_ = caml_wrap_exception(_eT_); - if(_eT_ === End_of_object)return 0; - throw _eT_} + catch(_d1_) + {_d1_ = caml_wrap_exception(_d1_); + if(_d1_ === End_of_object)return 0; + throw _d1_} case 10: try {read_space$1(v,lexbuf); @@ -42067,10 +43515,10 @@ read_space$1(v,lexbuf); skip_json$1(v,lexbuf); continue}} - catch(_eS_) - {_eS_ = caml_wrap_exception(_eS_); - if(_eS_ === End_of_array)return 0; - throw _eS_} + catch(_d0_) + {_d0_ = caml_wrap_exception(_d0_); + if(_d0_ === End_of_array)return 0; + throw _d0_} case 11: try {read_space$1(v,lexbuf); @@ -42082,10 +43530,10 @@ read_space$1(v,lexbuf); skip_json$1(v,lexbuf); continue}} - catch(_eR_) - {_eR_ = caml_wrap_exception(_eR_); - if(_eR_ === End_of_tuple)return 0; - throw _eR_} + catch(_dZ_) + {_dZ_ = caml_wrap_exception(_dZ_); + if(_dZ_ === End_of_tuple)return 0; + throw _dZ_} case 12: read_space$1(v,lexbuf); skip_ident$1(v,lexbuf); @@ -42118,25 +43566,8 @@ 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 skip_ident$1(v,lexbuf) - {var ocaml_lex_state=394; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return finish_skip_stringlit$1(v,lexbuf); - case 1:return 0; - case 2: - return long_error$1(cst_Expected_string_or_identif$9,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$130,v,lexbuf)}}} - function finish_buffer_variant$0(v,lexbuf) - {var ocaml_lex_state=461; + function finish_skip_variant$1(v,lexbuf) + {var ocaml_lex_state=389; for(;;) {var ocaml_lex_state$0= @@ -42147,28 +43578,152 @@ continue} switch(ocaml_lex_state$0) {case 0: - 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) - {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(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)}} - 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); + 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$133,v,lexbuf)}}} + return custom_error$1(cst_Unexpected_end_of_input$129,v,lexbuf)}}} + function finish_buffer_comment$1(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=507; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[13],v[1],cst$36); + case 1:return long_error$1(cst_Unterminated_comment$4,v,lexbuf); + case 2: + caml_call2(Bi_outbuf[15],v[1],10);newline$1(v,lexbuf);continue a; + default:add_lexeme$1(v[1],lexbuf);continue a}}}} + function buffer_colon$1(v,lexbuf) + {var ocaml_lex_state=499; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],58); + case 1:return long_error$1(cst_Expected_but_found$44,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$138,v,lexbuf)}}} + function buffer_tuple_sep$0(v,lexbuf) + {var ocaml_lex_state=494; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],44); + case 1:caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple; + case 2:return long_error$1(cst_Expected_or_but_found$44,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$137,v,lexbuf)}}} + function buffer_tuple_end$0(v,lexbuf) + {var ocaml_lex_state=492; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_array_sep$1(v,lexbuf) + {var ocaml_lex_state=487; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],44); + case 1:caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array; + case 2:return long_error$1(cst_Expected_or_but_found$43,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$136,v,lexbuf)}}} + function buffer_array_end$1(v,lexbuf) + {var ocaml_lex_state=485; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_object_sep$1(v,lexbuf) + {var ocaml_lex_state=480; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],44); + case 1:caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object; + case 2:return long_error$1(cst_Expected_or_but_found$42,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$135,v,lexbuf)}}} + function buffer_object_end$1(v,lexbuf) + {var ocaml_lex_state=478; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_space$1(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=471; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:add_lexeme$1(v[1],lexbuf);newline$1(v,lexbuf);continue a; + case 1: + caml_call2(Bi_outbuf[13],v[1],cst$35); + finish_buffer_comment$1(v,lexbuf); + continue a; + case 2: + caml_call2(Bi_outbuf[15],v[1],10);newline$1(v,lexbuf);continue a; + case 3:add_lexeme$1(v[1],lexbuf);continue a; + default:return 0}}}} function finish_buffer_stringlit$1(v,lexbuf) {var ocaml_lex_state=450; for(;;) @@ -42181,124 +43736,10 @@ continue} switch(ocaml_lex_state$0) {case 0: - caml_call2(Stdlib_Buffer[12],v[1],34); - return add_lexeme$1(v[1],lexbuf); + 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_json$4(counter,v,lexbuf) - {var _eQ_=399; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return ocaml_lex_buffer_json_rec$1(counter$0,v,lexbuf,_eQ_)} - return caml_trampoline_return - (ocaml_lex_buffer_json_rec$1,[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(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); - if(11 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0:return add_lexeme$1(v[1],lexbuf); - case 1:return finish_buffer_stringlit$1(v,lexbuf); - case 2: - try - {caml_call2(Stdlib_Buffer[12],v[1],123); - buffer_space$1(v,lexbuf); - buffer_object_end$1(v,lexbuf); - buffer_ident$1(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_colon$1(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_json$1(v,lexbuf); - for(;;) - {buffer_space$1(v,lexbuf); - buffer_object_sep$1(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_ident$1(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_colon$1(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_json$1(v,lexbuf); - continue}} - catch(_eP_) - {_eP_ = caml_wrap_exception(_eP_); - if(_eP_ === End_of_object)return 0; - throw _eP_} - case 3: - try - {caml_call2(Stdlib_Buffer[12],v[1],91); - buffer_space$1(v,lexbuf); - buffer_array_end$1(v,lexbuf); - buffer_json$1(v,lexbuf); - for(;;) - {buffer_space$1(v,lexbuf); - buffer_array_sep$1(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_json$1(v,lexbuf); - continue}} - catch(_eO_) - {_eO_ = caml_wrap_exception(_eO_); - if(_eO_ === End_of_array)return 0; - throw _eO_} - case 4: - try - {caml_call2(Stdlib_Buffer[12],v[1],40); - buffer_space$1(v,lexbuf); - buffer_tuple_end$0(v,lexbuf); - buffer_json$1(v,lexbuf); - for(;;) - {buffer_space$1(v,lexbuf); - buffer_tuple_sep$0(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_json$1(v,lexbuf); - continue}} - catch(_eN_) - {_eN_ = caml_wrap_exception(_eN_); - if(_eN_ === End_of_tuple)return 0; - throw _eN_} - case 5: - 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]); - case 7: - 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]); - case 8: - 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]); - case 9: - add_lexeme$1(v[1],lexbuf); - if(counter < 50) - {var counter$3=counter + 1 | 0; - return buffer_json$4(counter$3,v,lexbuf)} - return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); - case 10: - return custom_error$1(cst_Unexpected_end_of_input$131,v,lexbuf); - default:return long_error$1(cst_Invalid_token$14,v,lexbuf)}}} - function buffer_json$1(v,lexbuf) - {return caml_trampoline(buffer_json$4(0,v,lexbuf))} function buffer_ident$1(v,lexbuf) {var ocaml_lex_state=466; for(;;) @@ -42316,44 +43757,121 @@ return long_error$1(cst_Expected_string_or_identif$10,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$134,v,lexbuf)}}} - function buffer_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(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}}}} - function buffer_object_end$1(v,lexbuf) - {var ocaml_lex_state=478; + function buffer_json$4(counter,v,lexbuf) + {var _dY_=399; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return ocaml_lex_buffer_json_rec$1(counter$0,v,lexbuf,_dY_)} + return caml_trampoline_return + (ocaml_lex_buffer_json_rec$1,[0,v,lexbuf,_dY_])} + function ocaml_lex_buffer_json_rec$1(counter,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; for(;;) {var - ocaml_lex_state$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; - continue}} - function buffer_object_sep$1(v,lexbuf) - {var ocaml_lex_state=480; + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); + if(11 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0:return add_lexeme$1(v[1],lexbuf); + case 1:return finish_buffer_stringlit$1(v,lexbuf); + case 2: + try + {caml_call2(Bi_outbuf[15],v[1],123); + buffer_space$1(v,lexbuf); + buffer_object_end$1(v,lexbuf); + buffer_ident$1(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_colon$1(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_json$1(v,lexbuf); + for(;;) + {buffer_space$1(v,lexbuf); + buffer_object_sep$1(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_ident$1(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_colon$1(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_json$1(v,lexbuf); + continue}} + catch(_dX_) + {_dX_ = caml_wrap_exception(_dX_); + if(_dX_ === End_of_object)return 0; + throw _dX_} + case 3: + try + {caml_call2(Bi_outbuf[15],v[1],91); + buffer_space$1(v,lexbuf); + buffer_array_end$1(v,lexbuf); + buffer_json$1(v,lexbuf); + for(;;) + {buffer_space$1(v,lexbuf); + buffer_array_sep$1(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_json$1(v,lexbuf); + continue}} + catch(_dW_) + {_dW_ = caml_wrap_exception(_dW_); + if(_dW_ === End_of_array)return 0; + throw _dW_} + case 4: + try + {caml_call2(Bi_outbuf[15],v[1],40); + buffer_space$1(v,lexbuf); + buffer_tuple_end$0(v,lexbuf); + buffer_json$1(v,lexbuf); + for(;;) + {buffer_space$1(v,lexbuf); + buffer_tuple_sep$0(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_json$1(v,lexbuf); + continue}} + catch(_dV_) + {_dV_ = caml_wrap_exception(_dV_); + if(_dV_ === End_of_tuple)return 0; + throw _dV_} + case 5: + caml_call2(Bi_outbuf[15],v[1],60); + buffer_space$1(v,lexbuf); + buffer_ident$1(v,lexbuf); + buffer_space$1(v,lexbuf); + return finish_buffer_variant$0(v,lexbuf); + case 6: + add_lexeme$1(v[1],lexbuf); + if(counter < 50) + {var counter$0=counter + 1 | 0; + return buffer_json$4(counter$0,v,lexbuf)} + return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); + case 7: + caml_call2(Bi_outbuf[13],v[1],cst$34); + finish_buffer_comment$1(v,lexbuf); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return buffer_json$4(counter$1,v,lexbuf)} + return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); + case 8: + caml_call2(Bi_outbuf[15],v[1],10); + newline$1(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return buffer_json$4(counter$2,v,lexbuf)} + return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); + case 9: + add_lexeme$1(v[1],lexbuf); + if(counter < 50) + {var counter$3=counter + 1 | 0; + return buffer_json$4(counter$3,v,lexbuf)} + return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); + case 10: + return custom_error$1(cst_Unexpected_end_of_input$131,v,lexbuf); + default:return long_error$1(cst_Invalid_token$14,v,lexbuf)}}} + function buffer_json$1(v,lexbuf) + {return caml_trampoline(buffer_json$4(0,v,lexbuf))} + function finish_buffer_variant$0(v,lexbuf) + {var ocaml_lex_state=461; for(;;) {var ocaml_lex_state$0= @@ -42363,102 +43881,29 @@ var ocaml_lex_state=ocaml_lex_state$0; continue} 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); + {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$135,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(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; - 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(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)}}} - 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; - continue}} - 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(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)}}} - 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(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)}}} - 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(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}}}} + return custom_error$1(cst_Unexpected_end_of_input$133,v,lexbuf)}}} function junk$1(lexbuf) {var ocaml_lex_state=513; for(;;) @@ -42475,8 +43920,8 @@ 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 _eM_=read_list_rev$1(read_cell,v,lexbuf); - return caml_call1(Stdlib_List[9],_eM_)} + {var _dU_=read_list_rev$1(read_cell,v,lexbuf); + return caml_call1(Stdlib_List[9],_dU_)} function read_array$1(read_cell,v,lexbuf) {var l=read_list_rev$1(read_cell,v,lexbuf); if(l) @@ -42486,21 +43931,21 @@ 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_; + _dR_=len - 2 | 0; + if(! (_dR_ < 0)) + {var i=_dR_; for(;;) - {var _eK_=caml_call1(Stdlib_List[5],r[1]); - caml_check_bound(a,i)[1 + i] = _eK_; + {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 _eL_=i - 1 | 0; - if(0 !== i){var i=_eL_;continue} + var _dT_=i - 1 | 0; + if(0 !== i){var i=_dT_;continue} break}} return a} return [0]} function read_fields$1(read_field,init_acc,v) - {return function(_eI_) - {return read_abstract_fields$1(read_ident$1,read_field,init_acc,v,_eI_)}} + {return function(_dQ_) + {return read_abstract_fields$1(read_ident$1,read_field,init_acc,v,_dQ_)}} function from_lexbuf$1(v,opt,lexbuf) {if(opt)var sth=opt[1],stream=sth;else var stream=0; read_space$1(v,lexbuf); @@ -42516,23 +43961,23 @@ {var lexbuf=caml_call2(from_string$3,0,s), v=init_lexer(buf,fname,lnum,0), - _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_}} + _dO_=from_lexbuf$1(v,0,lexbuf); + return _dO_} + catch(_dP_) + {_dP_ = caml_wrap_exception(_dP_); + if(_dP_ === End_of_input)return json_error(cst_Blank_input_data$3); + throw _dP_}} function from_channel$4(buf,fname,lnum,ic) {try {var lexbuf=caml_call2(from_channel$3,0,ic), v=init_lexer(buf,fname,lnum,0), - _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_}} + _dM_=from_lexbuf$1(v,0,lexbuf); + return _dM_} + catch(_dN_) + {_dN_ = caml_wrap_exception(_dN_); + if(_dN_ === End_of_input)return json_error(cst_Blank_input_data$4); + throw _dN_}} function from_file$1(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); try @@ -42541,11 +43986,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 seq_from_lexbuf$1(v,opt,lexbuf) + function stream_from_lexbuf$1(v,opt,lexbuf) {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - function f(param) + function f(i) {try - {var _eD_=[0,from_lexbuf$1(v,stream$1,lexbuf),f];return _eD_} + {var _dL_=[0,from_lexbuf$1(v,stream$1,lexbuf)];return _dL_} catch(e) {e = caml_wrap_exception(e); if(e === End_of_input){caml_call1(fin,0);return 0} @@ -42554,51 +43999,48 @@ catch(fin_e) {fin_e = caml_wrap_exception(fin_e);throw [0,Finally$1,e,fin_e]} throw e}} - return f} - function seq_from_string$1(buf,fname,lnum,s) + return caml_call1(Stdlib_Stream[3],f)} + function stream_from_string$1(buf,fname,lnum,s) {var v=init_lexer(buf,fname,lnum,0); - return seq_from_lexbuf$1(v,0,caml_call2(from_string$3,0,s))} - function seq_from_channel$1(buf,fin,fname,lnum,ic) + return stream_from_lexbuf$1(v,0,caml_call2(from_string$3,0,s))} + function stream_from_channel$1(buf,fin,fname,lnum,ic) {var lexbuf=caml_call2(from_channel$3,0,ic), v=init_lexer(buf,fname,lnum,0); - return seq_from_lexbuf$1(v,fin,lexbuf)} - function seq_from_file$1(buf,fname,lnum,file) + return stream_from_lexbuf$1(v,fin,lexbuf)} + function stream_from_file$1(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); function fin(param){return caml_call1(Stdlib[93],ic)} var fname$0=fname || [0,file], lexbuf=caml_call2(from_channel$3,0,ic), v=init_lexer(buf,fname$0,lnum,0); - return seq_from_lexbuf$1(v,[0,fin],lexbuf)} - function lineseq_from_channel$1(buf,opt,fname,_ev_,ic) + return stream_from_lexbuf$1(v,[0,fin],lexbuf)} + function linestream_from_channel$1(buf,opt,fname,_dJ_,ic) {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - if(_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) + if(_dJ_)var sth$0=_dJ_[1],lnum0=sth$0;else var lnum0=1; + var buf$0=buf || [0,caml_call3(Bi_outbuf[3],0,0,256)]; + function f(i) {try {var line=caml_call1(Stdlib[83],ic), - _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_} + lnum=lnum0 + i | 0, + _dK_=[0,[0,826371656,from_string$4(buf$0,fname,[0,lnum],line)]]; + return _dK_} catch(e) {e = caml_wrap_exception(e); - 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) + return e === Stdlib[12]?(caml_call1(fin,0),0):[0,[0,3458171,e]]}} + return caml_call1(Stdlib_Stream[3],f)} + function linestream_from_file$1(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); function fin(param){return caml_call1(Stdlib[93],ic)} var fname$0=fname || [0,file]; - return lineseq_from_channel$1(buf,[0,fin],fname$0,lnum,ic)} + return linestream_from_channel$1(buf,[0,fin],fname$0,lnum,ic)} function prettify$1(std,s) {return pretty_to_string$2(std,from_string$4(0,0,0,s))} function compact$1(std,s) - {return to_string$4(0,0,0,0,from_string$4(0,0,0,s))} + {return to_string$5(0,0,0,from_string$4(0,0,0,s))} + function validate_json$1(path,value){return 0} var Yojson= [0, @@ -42612,15 +44054,15 @@ End_of_tuple, End_of_input, [0, - to_string$0, - to_channel$0, + to_string$1, + to_channel$1, to_output$0, to_file$0, - to_buffer$0, - seq_to_string$0, - seq_to_channel$0, - seq_to_file$0, - seq_to_buffer$0, + to_outbuf$0, + stream_to_string$0, + stream_to_channel$0, + stream_to_file$0, + stream_to_outbuf$0, write_t$0, sort$0, write_null$0, @@ -42628,6 +44070,8 @@ 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, @@ -42635,9 +44079,10 @@ write_list$0, write_t$0, write_std_json$0, - pp$2, + pp$0, show$0, equal$0, + pretty_format$0, pretty_print$0, pretty_to_string$0, pretty_to_channel$0, @@ -42649,12 +44094,12 @@ from_file, init_lexer, from_lexbuf, - seq_from_string, - seq_from_channel, - seq_from_file, - seq_from_lexbuf, - lineseq_from_channel, - lineseq_from_file, + stream_from_string, + stream_from_channel, + stream_from_file, + stream_from_lexbuf, + linestream_from_channel, + linestream_from_file, read_json, finish_string$1, read_string, @@ -42707,9 +44152,11 @@ read_json, skip_json, buffer_json, + validate_json, [0, Type_error, Undefined, + symbol, keys, values, combine, @@ -42727,7 +44174,7 @@ to_int, to_int_option, to_list, - to_string$1, + to_string$2, to_string_option, convert_each, filter_map, @@ -42742,19 +44189,19 @@ filter_number, filter_string]], [0, - pp$4, + pp$1, show$1, equal$1, to_basic, - to_string$2, - to_channel$1, + to_string$3, + to_channel$2, to_output$1, to_file$1, - to_buffer$1, - seq_to_string$1, - seq_to_channel$1, - seq_to_file$1, - seq_to_buffer$1, + to_outbuf$1, + stream_to_string$1, + stream_to_channel$1, + stream_to_file$1, + stream_to_outbuf$1, write_t$1, sort$1, write_null$1, @@ -42762,6 +44209,8 @@ 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, @@ -42774,6 +44223,7 @@ 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, @@ -42785,12 +44235,12 @@ from_file$0, init_lexer, from_lexbuf$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, + stream_from_string$0, + stream_from_channel$0, + stream_from_file$0, + stream_from_lexbuf$0, + linestream_from_channel$0, + linestream_from_file$0, read_json$0, finish_string$3, read_string$0, @@ -42843,9 +44293,11 @@ 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, @@ -42863,7 +44315,7 @@ to_int$0, to_int_option$0, to_list$0, - to_string$3, + to_string$4, to_string_option$0, convert_each$0, filter_map$0, @@ -42878,18 +44330,18 @@ filter_number$0, filter_string$0]], [0, - pp$6, + pp$2, show$2, equal$2, - to_string$4, - to_channel$2, + to_string$5, + to_channel$3, to_output$2, to_file$2, - to_buffer$2, - seq_to_string$2, - seq_to_channel$2, - seq_to_file$2, - seq_to_buffer$2, + to_outbuf$2, + stream_to_string$2, + stream_to_channel$2, + stream_to_file$2, + stream_to_outbuf$2, write_t$2, sort$2, write_null$2, @@ -42905,6 +44357,7 @@ 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, @@ -42916,12 +44369,12 @@ from_file$1, init_lexer, from_lexbuf$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, + stream_from_string$1, + stream_from_channel$1, + stream_from_file$1, + stream_from_lexbuf$1, + linestream_from_channel$1, + linestream_from_file$1, read_json$1, finish_string$5, read_string$1, @@ -42973,7 +44426,8 @@ read_colon$1, read_json$1, skip_json$1, - buffer_json$1], + buffer_json$1, + validate_json$1], pp, show, equal, @@ -42981,11 +44435,11 @@ to_channel, to_output, to_file, - to_buffer, - seq_to_string, - seq_to_channel, - seq_to_file, - seq_to_buffer, + to_outbuf, + stream_to_string, + stream_to_channel, + stream_to_file, + stream_to_outbuf, write_t, sort, write_null, @@ -42993,6 +44447,8 @@ write_int, write_float, write_std_float, + write_float_fast, + write_std_float_fast, write_float_prec, write_std_float_prec, write_string, @@ -43007,10 +44463,11 @@ write_std_variant, write_t, write_std_json, + pretty_format, pretty_print, pretty_to_string, pretty_to_channel]; - runtime.caml_register_global(1068,Yojson,"Yojson"); + caml_register_global(1035,Yojson,"Yojson"); return} (globalThis)); @@ -44329,32 +45786,6 @@ (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], @@ -44397,6 +45828,32 @@ 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])} @@ -44599,7 +46056,7 @@ value=param[2], name$1=param[1], _bI_=yojson_of_runtime_value(value), - _bJ_=caml_call5(Yojson[11][5],0,0,0,0,_bI_), + _bJ_=caml_call4(Yojson[11][5],0,0,0,_bI_), _bK_=caml_call2(Stdlib_String[6],cst$13,name$1); return caml_call3(Stdlib_Printf[4],_$_,_bK_,_bJ_); default: @@ -44620,24 +46077,66 @@ {return 2 === caml_call1(Stdlib_List[1],infos)?1:0} function is_var_def(name) {return 2 === caml_call1(Stdlib_List[1],name)?1:0} + function parse_fun_call(events) + {var + match= + take_while + (function(param) + {if(2 === param[0]) + {var + name=param[1], + _bA_=3 === caml_call1(Stdlib_List[1],name)?1:0; + if(_bA_) + {var _bB_=caml_call2(Stdlib_List[7],name,2); + return caml_call2(Stdlib_String[10],cst_input,_bB_)} + return _bA_} + return 0}, + events), + _bw_=match[2]; + if(_bw_) + {var _bx_=_bw_[1]; + if(0 === _bx_[0]) + {var rest=_bw_[2],infos=_bx_[1],inputs=match[1]; + if(is_function_call(infos)) + {var + _by_= + function(param) + {if(2 === param[0]) + {var value=param[2],name=param[1];return [0,0,name,value,0]} + throw [0,Assert_failure,_ac_]}, + fun_inputs=caml_call2(Stdlib_ListLabels[19],_by_,inputs), + body_ctx=parse_events([0,empty,0,rest]), + body_rev=caml_call1(Stdlib_List[9],body_ctx[2]), + output=caml_call1(Stdlib_List[5],body_rev), + _bz_=caml_call1(Stdlib_List[6],body_rev), + body=caml_call1(Stdlib_List[9],_bz_), + rest$0=body_ctx[3]; + if(0 === output[0]) + var var_def=output[1],output$0=var_def; + else + var + output$0= + caml_call1(Stdlib[2],cst_Missing_function_output_va); + return [0,rest$0,[0,infos,fun_inputs,body,output$0]]}}} + return caml_call1(Stdlib[2],cst_Invalid_start_of_function_)} function parse_events(ctx) {var ctx$0=ctx; a: for(;;) - {var _a3_=ctx$0[3]; - if(_a3_) - {var _a4_=_a3_[1]; - switch(_a4_[0]) + {var _aX_=ctx$0[3]; + if(_aX_) + {var _aY_=_aX_[1]; + switch(_aY_[0]) {case 0: - var rest=_a3_[2],infos=_a4_[1]; + var rest=_aX_[2],infos=_aY_[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 _aZ_=infos[2]; + if(_aZ_) + {var _a0_=_aZ_[2]; + if(_a0_ && ! _a0_[2]) {var - var_name=_a5_[1], + 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) @@ -44655,16 +46154,16 @@ 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]; + 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=_a3_[2],name=_a4_[1]; + 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 _a__=rest$1[1]; - if(0 === _a__[0]) - {var infos$0=_a__[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]), @@ -44675,42 +46174,42 @@ continue}}} break; default: - var _a$_=_a3_[2]; - if(_a$_) - {var _ba_=_a$_[1]; - if(2 === _ba_[0]) + var _a5_=_aX_[2]; + if(_a5_) + {var _a6_=_a5_[1]; + if(2 === _a6_[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_) + 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 - _a2_=caml_call2(Stdlib_List[7],name$0,1), - _bb_=caml_call2(Stdlib_String[14],_a2_,46); + _aW_=caml_call2(Stdlib_List[7],name$0,1), + _a7_=caml_call2(Stdlib_String[14],_aW_,46); else - var _bb_=_a1_; - if(_bb_) + var _a7_=_aV_; + if(_a7_) {if(name$0) - {var _bc_=name$0[2]; - if(_bc_ && ! _bc_[2]) + {var _a8_=name$0[2]; + if(_a8_ && ! _a8_[2]) {var - var_dot_subscope_var_name=_bc_[1], - _bd_= + 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],_bd_,0), - _bf_=ctx$0[1], + name$1=caml_call2(Stdlib_List[7],_a9_,0), + _a$_=ctx$0[1], v=[0,[0,pos],name$0,value,0], - _be_=ctx$0[2], - match=caml_call2(StringMap[29],name$1,_bf_); + _a__=ctx$0[2], + match=caml_call2(StringMap[29],name$1,_a$_); if(match) var ls=match[1], - _bB_=caml_call3(StringMap[4],name$1,[0,v,ls],_bf_); + _bv_=caml_call3(StringMap[4],name$1,[0,v,ls],_a$_); 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; + 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)} @@ -44719,19 +46218,19 @@ switch$0 = 1; else {var - _aZ_=3 === caml_call1(Stdlib_List[1],name$0)?1:0, - _a0_= - _aZ_ + _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)) - :_aZ_; - if(_a0_) + :_aT_; + if(_aU_) switch$0 = 1; else if(rest$3) - {var _bg_=rest$3[1]; - if(0 === _bg_[0]) - {var infos$1=_bg_[1]; + {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]), @@ -44742,11 +46241,11 @@ 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]; + _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), @@ -44758,44 +46257,44 @@ 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 _bd_=rest$4[1]; + if(2 === _bd_[0]) var rest$6=rest$4[2], - value$0=_bj_[2], - name$2=_bj_[1], + 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 - _bk_= + _be_= (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]} + _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 - _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=_by_[2], - rest$5=_by_[1]; + _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; @@ -44810,53 +46309,11 @@ 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_)} - var _bz_=ctx$0[3],_bA_=caml_call1(Stdlib_List[9],ctx$0[2]); - return [0,ctx$0[1],_bA_,_bz_]}} - function parse_fun_call(events) - {var - match= - take_while - (function(param) - {if(2 === param[0]) - {var - name=param[1], - _aX_=3 === caml_call1(Stdlib_List[1],name)?1:0; - if(_aX_) - {var _aY_=caml_call2(Stdlib_List[7],name,2); - return caml_call2(Stdlib_String[10],cst_input,_aY_)} - return _aX_} - return 0}, - events), - _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 - _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],_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), - _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; - else - var - output$0= - caml_call1(Stdlib[2],cst_Missing_function_output_va); - return [0,rest$0,[0,infos,fun_inputs,body,output$0]]}}} - return caml_call1(Stdlib[2],cst_Invalid_start_of_function_)} + _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) @@ -45323,26 +46780,17 @@ 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("4.1.0"), - 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,version,git_version], + Sys=[0], Exn=[248,cst_Jsoo_runtime_Error_Exn,runtime.caml_fresh_oo_id(0)]; caml_call2(Stdlib_Callback[2],cst_jsError,[0,Exn,[0]]); function raise(exn){throw exn} @@ -45357,8 +46805,8 @@ Bigstring=[0], Typed_array=[0,Bigstring], Int64=[0], - Jsoo_runtime$0=[0,Js,Sys,Error,For_compatibility_only,Typed_array,Int64]; - caml_register_global(8,Jsoo_runtime$0,"Jsoo_runtime"); + Jsoo_runtime=[0,Js,Sys,Error,For_compatibility_only,Typed_array,Int64]; + runtime.caml_register_global(4,Jsoo_runtime,"Jsoo_runtime"); return} (globalThis)); @@ -45760,7 +47208,6 @@ 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"), @@ -45804,10 +47251,6 @@ 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"), @@ -45924,7 +47367,7 @@ cst_Ff_Ii_Ll_Ee= caml_string_of_jsbytes ("^([Ff][Ii][Ll][Ee])://([^\\?#]*)(\\?([^#]*))?(#(.*))?$"), - s=caml_string_of_jsbytes("4.1.0"), + s=caml_string_of_jsbytes("4.0.0"), git_version=caml_string_of_jsbytes(""), cst$38=caml_string_of_jsbytes(""), cst$41=caml_string_of_jsbytes("+"), @@ -46438,31 +47881,32 @@ Stdlib_List=global_data.Stdlib__List, Stdlib_Array=global_data.Stdlib__Array, Stdlib_Uchar=global_data.Stdlib__Uchar, - 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__"); + Stdlib_Printf=global_data.Stdlib__Printf, + Stdlib_Obj=global_data.Stdlib__Obj, + Js_of_ocaml=[0]; + caml_register_global(1635,Js_of_ocaml,"Js_of_ocaml__"); var Poly=[0], _g_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom.ml"),351,67], _h_=[0,caml_string_of_jsbytes("transparent")], _i_=[0,caml_string_of_jsbytes("native")], - _m_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom_html.ml"),2894,58], - _l_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom_html.ml"),2893,61], + _m_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom_html.ml"),2850,58], + _l_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom_html.ml"),2849,61], _k_= [0, [11, caml_string_of_jsbytes("getElementById_exn: "), [3,0,[11,caml_string_of_jsbytes(" not found"),0]]], caml_string_of_jsbytes("getElementById_exn: %S not found")], - _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], + _o_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/form.ml"),178,13], + _n_=[0,1], + _p_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/regexp.ml"),34,64], + _q_=[0,caml_string_of_jsbytes(""),0], + _ck_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], _cl_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], _cm_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], _cn_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _co_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _b8_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], _b9_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], _b__=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], _b$_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], @@ -46476,8 +47920,7 @@ _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")], - _ck_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _b8_= + _b7_= caml_list_of_js_array ([caml_string_of_jsbytes("aliceblue"), caml_string_of_jsbytes("antiquewhite"), @@ -46626,17 +48069,17 @@ caml_string_of_jsbytes("whitesmoke"), caml_string_of_jsbytes("yellow"), caml_string_of_jsbytes("yellowgreen")]), - _b7_= + _b6_= [0, [12,35,[4,8,[0,2,2],0,[4,8,[0,2,2],0,[4,8,[0,2,2],0,0]]]], caml_string_of_jsbytes("#%02X%02X%02X")], - _b1_= + _b0_= [0, [11, caml_string_of_jsbytes("rgb("), [4,0,0,0,[12,44,[4,0,0,0,[12,44,[4,0,0,0,[12,41,0]]]]]]], caml_string_of_jsbytes("rgb(%d,%d,%d)")], - _b2_= + _b1_= [0, [11, caml_string_of_jsbytes("rgb("), @@ -46646,7 +48089,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%%)")], - _b3_= + _b2_= [0, [11, caml_string_of_jsbytes("rgba("), @@ -46656,7 +48099,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)")], - _b4_= + _b3_= [0, [11, caml_string_of_jsbytes("rgba("), @@ -46668,7 +48111,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)")], - _b5_= + _b4_= [0, [11, caml_string_of_jsbytes("hsl("), @@ -46678,7 +48121,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%%)")], - _b6_= + _b5_= [0, [11, caml_string_of_jsbytes("hsla("), @@ -46696,153 +48139,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)")], - _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], + _x_=[0,240,248,255], + _y_=[0,250,235,215], + _z_=[0,0,255,255], + _A_=[0,127,255,212], + _B_=[0,240,255,255], + _C_=[0,245,245,220], + _D_=[0,255,228,196], + _E_=[0,0,0,0], + _F_=[0,255,235,205], + _G_=[0,0,0,255], + _H_=[0,138,43,226], + _I_=[0,165,42,42], + _J_=[0,222,184,135], + _K_=[0,95,158,160], + _L_=[0,127,255,0], + _M_=[0,210,105,30], + _N_=[0,255,127,80], + _O_=[0,100,149,237], + _P_=[0,255,248,220], + _Q_=[0,220,20,60], + _R_=[0,0,255,255], + _S_=[0,0,0,139], + _T_=[0,0,139,139], + _U_=[0,184,134,11], + _V_=[0,169,169,169], + _W_=[0,0,100,0], + _X_=[0,169,169,169], + _Y_=[0,189,183,107], + _Z_=[0,139,0,139], + ___=[0,85,107,47], + _$_=[0,255,140,0], + _aa_=[0,153,50,204], + _ab_=[0,139,0,0], + _ac_=[0,233,150,122], + _ad_=[0,143,188,143], + _ae_=[0,72,61,139], + _af_=[0,47,79,79], _ag_=[0,47,79,79], - _ah_=[0,47,79,79], - _ai_=[0,0,206,209], - _aj_=[0,148,0,211], - _ak_=[0,255,20,147], - _al_=[0,0,191,255], + _ah_=[0,0,206,209], + _ai_=[0,148,0,211], + _aj_=[0,255,20,147], + _ak_=[0,0,191,255], + _al_=[0,105,105,105], _am_=[0,105,105,105], - _an_=[0,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], + _an_=[0,30,144,255], + _ao_=[0,178,34,34], + _ap_=[0,255,250,240], + _aq_=[0,34,139,34], + _ar_=[0,255,0,255], + _as_=[0,220,220,220], + _at_=[0,248,248,255], + _au_=[0,255,215,0], + _av_=[0,218,165,32], + _aw_=[0,128,128,128], _ax_=[0,128,128,128], - _ay_=[0,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], + _ay_=[0,0,128,0], + _az_=[0,173,255,47], + _aA_=[0,240,255,240], + _aB_=[0,255,105,180], + _aC_=[0,205,92,92], + _aD_=[0,75,0,130], + _aE_=[0,255,255,240], + _aF_=[0,240,230,140], + _aG_=[0,230,230,250], + _aH_=[0,255,240,245], + _aI_=[0,124,252,0], + _aJ_=[0,255,250,205], + _aK_=[0,173,216,230], + _aL_=[0,240,128,128], + _aM_=[0,224,255,255], + _aN_=[0,250,250,210], + _aO_=[0,211,211,211], + _aP_=[0,144,238,144], + _aQ_=[0,211,211,211], + _aR_=[0,255,182,193], + _aS_=[0,255,160,122], + _aT_=[0,32,178,170], + _aU_=[0,135,206,250], + _aV_=[0,119,136,153], _aW_=[0,119,136,153], - _aX_=[0,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], + _aX_=[0,176,196,222], + _aY_=[0,255,255,224], + _aZ_=[0,0,255,0], + _a0_=[0,50,205,50], + _a1_=[0,250,240,230], + _a2_=[0,255,0,255], + _a3_=[0,128,0,0], + _a4_=[0,102,205,170], + _a5_=[0,0,0,205], + _a6_=[0,186,85,211], + _a7_=[0,147,112,219], + _a8_=[0,60,179,113], + _a9_=[0,123,104,238], + _a__=[0,0,250,154], + _a$_=[0,72,209,204], + _ba_=[0,199,21,133], + _bb_=[0,25,25,112], + _bc_=[0,245,255,250], + _bd_=[0,255,228,225], + _be_=[0,255,228,181], + _bf_=[0,255,222,173], + _bg_=[0,0,0,128], + _bh_=[0,253,245,230], + _bi_=[0,128,128,0], + _bj_=[0,107,142,35], + _bk_=[0,255,165,0], + _bl_=[0,255,69,0], + _bm_=[0,218,112,214], + _bn_=[0,238,232,170], + _bo_=[0,152,251,152], + _bp_=[0,175,238,238], + _bq_=[0,219,112,147], + _br_=[0,255,239,213], + _bs_=[0,255,218,185], + _bt_=[0,205,133,63], + _bu_=[0,255,192,203], + _bv_=[0,221,160,221], + _bw_=[0,176,224,230], + _bx_=[0,128,0,128], + _by_=[0,255,0,0], + _bz_=[0,188,143,143], + _bA_=[0,65,105,225], + _bB_=[0,139,69,19], + _bC_=[0,250,128,114], + _bD_=[0,244,164,96], + _bE_=[0,46,139,87], + _bF_=[0,255,245,238], + _bG_=[0,160,82,45], + _bH_=[0,192,192,192], + _bI_=[0,135,206,235], + _bJ_=[0,106,90,205], + _bK_=[0,112,128,144], _bL_=[0,112,128,144], - _bM_=[0,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]; + _bM_=[0,255,250,250], + _bN_=[0,0,255,127], + _bO_=[0,70,130,180], + _bP_=[0,210,180,140], + _bQ_=[0,0,128,128], + _bR_=[0,216,191,216], + _bS_=[0,255,99,71], + _bT_=[0,64,224,208], + _bU_=[0,238,130,238], + _bV_=[0,245,222,179], + _bW_=[0,255,255,255], + _bX_=[0,245,245,245], + _bY_=[0,255,255,0], + _bZ_=[0,154,205,50]; function symbol(x,y){return x < y?1:0} function symbol$0(x,y){return x <= y?1:0} function symbol$1(x,y){return x !== y?1:0} @@ -47050,21 +48493,21 @@ equal$2, max$0, min$0]; - caml_register_global(1656,Js_of_ocaml_Import,"Js_of_ocaml__Import"); + caml_register_global(1638,Js_of_ocaml_Import,"Js_of_ocaml__Import"); var global=globalThis,Unsafe=[0,global],no_handler=null,t39=undefined; - function return$0(_g2_){return _g2_} + function return$0(_gO_){return _gO_} function map$0(x,f){return x == no_handler?no_handler:caml_call1(f,x)} function bind(x,f){return x == no_handler?no_handler:caml_call1(f,x)} function test(x){return 1 - (x == no_handler?1:0)} function iter$0(x,f) - {var _g1_=1 - (x == no_handler?1:0);return _g1_?caml_call1(f,x):_g1_} + {var _gN_=1 - (x == no_handler?1:0);return _gN_?caml_call1(f,x):_gN_} function case$0(x,f,g) {return x == no_handler?caml_call1(f,0):caml_call1(g,x)} function get(x,f){return x == no_handler?caml_call1(f,0):x} function option(x){if(x){var x$0=x[1];return x$0}return no_handler} function to_option(x) - {function _g0_(x){return [0,x]} - return case$0(x,function(param){return 0},_g0_)} + {function _gM_(x){return [0,x]} + return case$0(x,function(param){return 0},_gM_)} var Opt= [0, @@ -47078,18 +48521,18 @@ get, option, to_option]; - function return$1(_gZ_){return _gZ_} + function return$1(_gL_){return _gL_} function map$1(x,f){return x === t39?t39:caml_call1(f,x)} function bind$0(x,f){return x === t39?t39:caml_call1(f,x)} function test$0(x){return x !== t39?1:0} function iter$1(x,f) - {var _gY_=x !== t39?1:0;return _gY_?caml_call1(f,x):_gY_} + {var _gK_=x !== t39?1:0;return _gK_?caml_call1(f,x):_gK_} function case$1(x,f,g){return x === t39?caml_call1(f,0):caml_call1(g,x)} function get$0(x,f){return x === t39?caml_call1(f,0):x} function option$0(x){if(x){var x$0=x[1];return x$0}return t39} function to_option$0(x) - {function _gX_(x){return [0,x]} - return case$1(x,function(param){return 0},_gX_)} + {function _gJ_(x){return [0,x]} + return case$1(x,function(param){return 0},_gJ_)} var Optdef= [0, @@ -47104,20 +48547,16 @@ option$0, to_option$0]; function coerce(x,f,g) - {function _gV_(param){return caml_call1(g,x)} - var _gW_=caml_call1(f,x); - return caml_call2(Opt[8],_gW_,_gV_)} + {function _gH_(param){return caml_call1(g,x)} + var _gI_=caml_call1(f,x); + return caml_call2(Opt[8],_gI_,_gH_)} function coerce_opt(x,f,g) - {function _gT_(param){return caml_call1(g,x)} - var _gU_=caml_call2(Opt[4],x,f); - return caml_call2(Opt[8],_gU_,_gT_)} + {function _gF_(param){return caml_call1(g,x)} + var _gG_=caml_call2(Opt[4],x,f); + return caml_call2(Opt[8],_gG_,_gF_)} var - t38=true, + t25=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; @@ -47134,10 +48573,10 @@ {return a.map (caml_js_wrap_callback (function(x,idx,param){return caml_call2(f,idx,x)}))} - function str_array(_gS_){return _gS_} - function match_result(_gR_){return _gR_} + function str_array(_gE_){return _gE_} + function match_result(_gD_){return _gD_} var - t116=Unsafe[1].Date, + t122=Unsafe[1].Date, math=Unsafe[1].Math, error_constr=Unsafe[1].Error, include=Jsoo_runtime[3], @@ -47148,8 +48587,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 _gQ_=caml_call2(Opt[3],e.stack,caml_string_of_jsstring); - return caml_call1(Opt[10],_gQ_)} + {var _gC_=caml_call2(Opt[3],e.stack,caml_string_of_jsstring); + return caml_call1(Opt[10],_gC_)} function to_string(e){return caml_string_of_jsstring(e.toString())} function raise_js_error(e){return caml_call1(raise,e)} function string_of_error(e){return to_string(e)} @@ -47183,10 +48622,10 @@ t27=object_keys(obj), t26= caml_js_wrap_callback - (function(key,param,_gP_){return export_js(key,obj[key])}); + (function(key,param,_gB_){return export_js(key,obj[key])}); return t27.forEach(t26)} var _c_=runtime.caml_js_error_of_exception; - function _d_(_gO_){return _gO_} + function _d_(_gA_){return _gA_} var _e_= [0, @@ -47198,24 +48637,20 @@ attach_js_backtrace, of_exn, Error, - function(_gN_){return _gN_}, + function(_gz_){return _gz_}, _d_]; - function _f_(_gM_){return _gM_} + function _f_(_gy_){return _gy_} var Js_of_ocaml_Js= [0, no_handler, - function(_gL_){return _gL_}, + function(_gx_){return _gx_}, t39, _f_, Opt, Optdef, - t38, + t25, t4, - nfd, - nfc, - nfkd, - nfkc, string_constr, t11, t11, @@ -47229,15 +48664,15 @@ array_mapi, str_array, match_result, - t116, - t116, - t116, - t116, - t116, - t116, - t116, - t116, - t116, + t122, + t122, + t122, + t122, + t122, + t122, + t122, + t122, + t122, math, error_constr, _e_, @@ -47261,12 +48696,12 @@ attach_js_backtrace, _c_, Error]; - caml_register_global(1660,Js_of_ocaml_Js,"Js_of_ocaml__Js"); + caml_register_global(1642,Js_of_ocaml_Js,"Js_of_ocaml__Js"); function list_of_nodeList(nodeList) {var length=nodeList.length,acc=0,i=0; for(;;) {if(caml_call2(symbol$5,i,length)) - {var _gK_=nodeList.item(i),match=caml_call1(Opt[10],_gK_); + {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} @@ -47330,14 +48765,14 @@ return t20})} function invoke_handler(f,this$0,event){return f.call(this$0,event)} function eventTarget(e) - {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_); + {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 _gI_=function(param){throw [0,Assert_failure,_g_]}; - return caml_call2(Opt[8],t27.parentNode,_gI_)} + {var _gu_=function(param){throw [0,Assert_failure,_g_]}; + return caml_call2(Opt[8],t27.parentNode,_gu_)} return t27} return t27} function make$0(s){return caml_jsstring_of_string(s)} @@ -47348,9 +48783,9 @@ t34="on".concat(t47), t35= function(e) - {var _gE_=[0,t48,e,[0]]; - return function(_gF_,_gG_) - {return runtime.caml_js_call(_gE_,_gF_,_gG_)}}; + {var _gq_=[0,t48,e,[0]]; + return function(_gr_,_gs_) + {return runtime.caml_js_call(_gq_,_gr_,_gs_)}}; t50.attachEvent(t34,t35); return function(param){return t50.detachEvent(t34,t35)}} var t49={}; @@ -47399,7 +48834,7 @@ removeEventListener, preventDefault, createCustomEvent]; - caml_register_global(1663,Js_of_ocaml_Dom,"Js_of_ocaml__Dom"); + caml_register_global(1645,Js_of_ocaml_Dom,"Js_of_ocaml__Dom"); var arrayBuffer=Unsafe[1].ArrayBuffer, int8Array_inBuffer=Unsafe[1].Int8Array, @@ -47475,7 +48910,7 @@ runtime.bigstring_of_typed_array], [0,of_arrayBuffer,caml_string_of_array]]; caml_register_global - (1664,Js_of_ocaml_Typed_array,"Js_of_ocaml__Typed_array"); + (1646,Js_of_ocaml_Typed_array,"Js_of_ocaml__Typed_array"); var t3=Unsafe[1].Blob; function filter_map(f,param) {var param$0=param; @@ -47487,13 +48922,13 @@ continue} return 0}} function blob_raw(contentType,endings,a) - {var _gA_=0; + {var _gm_=0; if(endings) - var _gB_=116179762 <= endings[1]?_h_:_i_,_gC_=_gB_; + var _gn_=116179762 <= endings[1]?_h_:_i_,_go_=_gn_; else - var _gC_=0; + var _go_=0; var - _gD_=[0,[0,cst_type,contentType],[0,[0,cst_endings,_gC_],_gA_]], + _gp_=[0,[0,cst_type,contentType],[0,[0,cst_endings,_go_],_gm_]], options= filter_map (function(param) @@ -47501,7 +48936,7 @@ if(v) {var v$0=v[1];return [0,[0,name,caml_jsstring_of_string(v$0)]]} return 0}, - _gD_), + _gp_), options$0= options ?runtime.caml_js_object(caml_call1(Stdlib_Array[12],options)) @@ -47511,18 +48946,18 @@ 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 _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} + {function _gk_(param) + {var _gl_=param[1]; + if(155580615 === _gl_){var s=param[2];return s} + if(486041214 <= _gl_) + {if(1037850489 <= _gl_){var a=param[2];return a} var a$0=param[2]; return a$0} - if(288368849 <= _gz_) + if(288368849 <= _gl_) {var s$0=param[2];return caml_jsstring_of_string(s$0)} var b=param[2]; return b} - var l$0=caml_call2(Stdlib_List[19],_gy_,l); + var l$0=caml_call2(Stdlib_List[19],_gk_,l); return blob_raw(contentType,endings,caml_call1(Stdlib_Array[12],l$0))} function filename(file) {var match=caml_call1(Optdef[10],file.name); @@ -47548,12 +48983,12 @@ [0, blob_from_string, blob_from_any, - [0,document,blob,function(_gx_){return _gx_},string,arrayBuffer$0], + [0,document,blob,function(_gj_){return _gj_},string,arrayBuffer$0], ReaderEvent, filename, fileReader, addEventListener]; - caml_register_global(1666,Js_of_ocaml_File,"Js_of_ocaml__File"); + caml_register_global(1648,Js_of_ocaml_File,"Js_of_ocaml__File"); var onIE=runtime.caml_js_on_ie(0) | 0, click=caml_call1(Event[1],cst_click), @@ -47570,7 +49005,6 @@ 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), @@ -47614,10 +49048,6 @@ 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), @@ -47648,10 +49078,99 @@ 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 _gv_(o){return o} - function _gw_(param) + {function _gh_(o){return o} + function _gi_(param) {var t8=loc.protocol,t7=loc.hostname,t9=loc.port; if (caml_call2(symbol$8,t8.length,0) @@ -47662,29 +49181,29 @@ 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,_gw_,_gv_)} + return caml_call3(Optdef[7],loc.origin,_gi_,_gh_)} var _j_=Unsafe[1],t87=_j_.document; function getElementById(id) - {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 _ge_(pnode){return pnode} + function _gf_(param){throw Stdlib[8]} + var t15=caml_jsstring_of_string(id),_gg_=t87.getElementById(t15); + return caml_call3(Opt[7],_gg_,_gf_,_ge_)} function getElementById_exn(id) - {function _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 _ga_(pnode){return pnode} + function _gb_(param) + {var _gd_=caml_call2(Stdlib_Printf[4],_k_,id); + return caml_call1(Stdlib[2],_gd_)} + var t17=caml_jsstring_of_string(id),_gc_=t87.getElementById(t17); + return caml_call3(Opt[7],_gc_,_gb_,_ga_)} function getElementById_opt(id) - {var t19=caml_jsstring_of_string(id),_gn_=t87.getElementById(t19); - return caml_call1(Opt[10],_gn_)} + {var t19=caml_jsstring_of_string(id),_f$_=t87.getElementById(t19); + return caml_call1(Opt[10],_f$_)} function getElementById_coerce(id,coerce) - {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 _f7_(e) + {var _f__=caml_call1(coerce,e);return caml_call1(Opt[10],_f__)} + function _f8_(param){return 0} + var t21=caml_jsstring_of_string(id),_f9_=t87.getElementById(t21); + return caml_call3(Opt[7],_f9_,_f8_,_f7_)} function opt_iter(x,f){if(x){var v=x[1];return caml_call1(f,v)}return 0} function createElement(t24,name) {var t23=caml_jsstring_of_string(name);return t24.createElement(t23)} @@ -47693,19 +49212,19 @@ function unsafeCreateElementEx(type,name,doc,elt) {for(;;) {if(0 === type && 0 === name)return createElement(doc,elt); - var _gd_=createElementSyntax[1]; - if(785140586 === _gd_) + var _f1_=createElementSyntax[1]; + if(785140586 === _f1_) {try {var el=t87.createElement(''), - _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_; + _f4_=el.tagName.toLowerCase() === "input"?1:0, + _f5_=_f4_?el.name === "x"?1:0:_f4_, + _f2_=_f5_} + catch(_f6_){var _f2_=0} + var _f3_=_f2_?982028505:-1003883683; + createElementSyntax[1] = _f3_; continue} - if(982028505 <= _gd_) + if(982028505 <= _f1_) {var t40=new array_length(); t40.push("<",caml_jsstring_of_string(elt)); opt_iter @@ -47826,8 +49345,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,_gc_=caml_jsstring_of_string(tag); - return t56.toLowerCase() === _gc_?e:no_handler} + {var t56=e.tagName,_f0_=caml_jsstring_of_string(tag); + return t56.toLowerCase() === _f0_?e:no_handler} function a(e){return unsafeCoerce(cst_a$0,e)} function area(e){return unsafeCoerce(cst_area$0,e)} function base(e){return unsafeCoerce(cst_base$0,e)} @@ -47902,27 +49421,27 @@ function messageEvent(ev) {return unsafeCoerceEvent(Unsafe[1].MessageEvent,ev)} function eventRelatedTarget(e) - {function _f$_(param) + {function _fX_(param) {var match=caml_string_of_jsstring(e.type); if(caml_string_notequal(match,cst_mouseout$0)) {if(caml_string_notequal(match,cst_mouseover$0))return no_handler; - var _ga_=function(param){throw [0,Assert_failure,_l_]}; - return caml_call2(Optdef[8],e.fromElement,_ga_)} - function _gb_(param){throw [0,Assert_failure,_m_]} - return caml_call2(Optdef[8],e.toElement,_gb_)} - return caml_call2(Optdef[8],e.relatedTarget,_f$_)} + var _fY_=function(param){throw [0,Assert_failure,_l_]}; + return caml_call2(Optdef[8],e.fromElement,_fY_)} + function _fZ_(param){throw [0,Assert_failure,_m_]} + return caml_call2(Optdef[8],e.toElement,_fZ_)} + return caml_call2(Optdef[8],e.relatedTarget,_fX_)} function eventAbsolutePosition(e) {var t70=t87.body,t71=t87.documentElement; return [0, (e.clientX + t70.scrollLeft | 0) + t71.scrollLeft | 0, (e.clientY + t70.scrollTop | 0) + t71.scrollTop | 0]} function eventAbsolutePosition$0(e) - {function _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 _fT_(x) + {function _fV_(y){return [0,x,y]} + function _fW_(param){return eventAbsolutePosition(e)} + return caml_call3(Optdef[7],e.pageY,_fW_,_fV_)} + function _fU_(param){return eventAbsolutePosition(e)} + return caml_call3(Optdef[7],e.pageX,_fU_,_fT_)} function elementClientPosition(e) {var t80=e.getBoundingClientRect(),t81=t87.body,t82=t87.documentElement; return [0, @@ -47934,32 +49453,43 @@ t88.scrollLeft + t89.scrollLeft | 0, t88.scrollTop + t89.scrollTop | 0]} function buttonPressed(ev) - {function _f5_(x){return x} - function _f6_(param) + {function _fR_(x){return x} + function _fS_(param) {var match=ev.button,switcher=match - 1 | 0; if(! (3 < switcher >>> 0)) switch(switcher) {case 0:return 1;case 1:return 3;case 2:break;default:return 2} return 0} - return caml_call3(Optdef[7],ev.which,_f6_,_f5_)} + return caml_call3(Optdef[7],ev.which,_fS_,_fR_)} function addMousewheelEventListenerWith(e,capture,once,passive,h) - {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)}))} + {var t96=createDiv(t87); + t96.setAttribute("onmousewheel","return;"); + if(typeof t96.onmousewheel === "function") + {var + _fN_= + handler + (function(e) + {function _fP_(param){return 0} + var + dx= + (- caml_call2(Optdef[8],e.wheelDeltaX,_fP_) | 0) / 40 | 0; + function _fQ_(param){return e.wheelDelta} + var + dy= + (- caml_call2(Optdef[8],e.wheelDeltaY,_fQ_) | 0) / 40 | 0; + return caml_call3(h,e,dx,dy)}); + return addEventListenerWithOptions + (e,Event$0[14],capture,once,passive,_fN_)} + var + _fO_= + handler + (function(e) + {var d=e.detail; + return e.axis === e.HORIZONTAL + ?caml_call3(h,e,d,0) + :caml_call3(h,e,0,d)}); + return addEventListenerWithOptions + (e,Event$0[15],capture,once,passive,_fO_)} function addMousewheelEventListener(e,h,capt) {return addMousewheelEventListenerWith(e,[0,capt],0,0,h)} function f(v) @@ -48193,9 +49723,9 @@ function try_key_code_normal(param) {var switcher=param - 8 | 0; if(! (214 < switcher >>> 0)) - {var _f2_=switcher; - if(67 <= _f2_) - switch(_f2_) + {var _fM_=switcher; + if(67 <= _fM_) + switch(_fM_) {case 67:return 11; case 68:return 12; case 69:return 13; @@ -48239,7 +49769,7 @@ case 214:return 50 } else - switch(_f2_) + switch(_fM_) {case 0:return 43; case 1:return 39; case 5:return 40; @@ -48284,27 +49814,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 _fV_=evt.keyCode; - function _fW_(_f1_){return run_next(_fV_,try_key_code_normal,_f1_)} + {var _fF_=evt.keyCode; + function _fG_(_fL_){return run_next(_fF_,try_key_code_normal,_fL_)} var match=evt.location,switcher=match - 1 | 0; if(2 < switcher >>> 0) - var _fX_=make_unidentified; + var _fH_=make_unidentified; else switch(switcher) {case 0: var - _fS_=evt.keyCode, - _fX_=function(_fZ_){return run_next(_fS_,try_key_code_left,_fZ_)}; + _fC_=evt.keyCode, + _fH_=function(_fJ_){return run_next(_fC_,try_key_code_left,_fJ_)}; break; case 1: var - _fT_=evt.keyCode, - _fX_=function(_fY_){return run_next(_fT_,try_key_code_right,_fY_)}; + _fD_=evt.keyCode, + _fH_=function(_fI_){return run_next(_fD_,try_key_code_right,_fI_)}; break; default: var - _fU_=evt.keyCode, - _fX_=function(_f0_){return run_next(_fU_,try_key_code_numpad,_f0_)}} + _fE_=evt.keyCode, + _fH_=function(_fK_){return run_next(_fE_,try_key_code_numpad,_fK_)}} var value=evt.code; return symbol$11 (symbol$11 @@ -48312,24 +49842,24 @@ (0, function(v) {return v?v:caml_call3(Optdef[7],value,make_unidentified,f)}), - _fX_), - _fW_)} + _fH_), + _fG_)} function char_of_int(value) {if(caml_call2(symbol$5,0,value)) try - {var _fQ_=[0,caml_call1(Stdlib_Uchar[8],value)];return _fQ_} - catch(_fR_){return 0} + {var _fA_=[0,caml_call1(Stdlib_Uchar[8],value)];return _fA_} + catch(_fB_){return 0} return 0} function empty_string(param){return ""} function none(param){return 0} function of_event$0(evt) - {var t104=caml_call2(Optdef[8],evt.key,empty_string),match=t104.length; + {var t110=caml_call2(Optdef[8],evt.key,empty_string),match=t110.length; return 0 === match ?caml_call3(Optdef[7],evt.charCode,none,char_of_int) - :1 === match?char_of_int(t104.charCodeAt(0) | 0):0} - function element$1(_fP_){return _fP_} + :1 === match?char_of_int(t110.charCodeAt(0) | 0):0} + function element$1(_fz_){return _fz_} function tagged(e) - {var t106=e.tagName,tag=caml_string_of_jsbytes(t106.toLowerCase()); + {var t112=e.tagName,tag=caml_string_of_jsbytes(t112.toLowerCase()); if(caml_call2(symbol$8,caml_ml_string_length(tag),0))return [61,e]; var match=runtime.caml_string_unsafe_get(tag,0),switcher=match - 97 | 0; if(! (21 < switcher >>> 0)) @@ -48455,42 +49985,42 @@ } return [61,e]} function opt_tagged(e) - {function _fN_(e){return [0,tagged(e)]} - function _fO_(param){return 0} - return caml_call3(Opt[7],e,_fO_,_fN_)} + {function _fx_(e){return [0,tagged(e)]} + function _fy_(param){return 0} + return caml_call3(Opt[7],e,_fy_,_fx_)} function taggedEvent(ev) - {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 _ff_(ev){return [0,ev]} + function _fg_(param) + {function _fi_(ev){return [1,ev]} + function _fj_(param) + {function _fl_(ev){return [3,ev]} + function _fm_(param) + {function _fo_(ev){return [4,ev]} + function _fp_(param) + {function _fr_(ev){return [5,ev]} + function _fs_(param) + {function _fu_(ev){return [2,ev]} + function _fv_(param){return [6,ev]} + var _fw_=messageEvent(ev); + return caml_call3(Opt[7],_fw_,_fv_,_fu_)} + var _ft_=popStateEvent(ev); + return caml_call3(Opt[7],_ft_,_fs_,_fr_)} + var _fq_=mouseScrollEvent(ev); + return caml_call3(Opt[7],_fq_,_fp_,_fo_)} + var _fn_=wheelEvent(ev); + return caml_call3(Opt[7],_fn_,_fm_,_fl_)} + var _fk_=keyboardEvent(ev); + return caml_call3(Opt[7],_fk_,_fj_,_fi_)} + var _fh_=mouseEvent(ev); + return caml_call3(Opt[7],_fh_,_fg_,_ff_)} function opt_taggedEvent(ev) - {function _ft_(ev){return [0,taggedEvent(ev)]} - function _fu_(param){return 0} - return caml_call3(Opt[7],ev,_fu_,_ft_)} + {function _fd_(ev){return [0,taggedEvent(ev)]} + function _fe_(param){return 0} + return caml_call3(Opt[7],ev,_fe_,_fd_)} function stopPropagation(ev) - {function _fr_(param){return ev.stopPropagation()} - function _fs_(param){return ev.cancelBubble = t38} - return caml_call3(Optdef[7],ev.stopPropagation,_fs_,_fr_)} + {function _fb_(param){return ev.stopPropagation()} + function _fc_(param){return ev.cancelBubble = t25} + return caml_call3(Optdef[7],ev.stopPropagation,_fc_,_fb_)} var requestAnimationFrame= runtime.caml_js_pure_expr @@ -48508,15 +50038,15 @@ [0,_j_.msRequestAnimationFrame,0]]]]]; try {var - _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]) + _e__=function(c){return caml_call1(Optdef[5],c)}, + req=caml_call2(Stdlib_List[38],_e__,l), + _e$_=function(callback){return req(callback)}; + return _e$_} + catch(_fa_) + {_fa_ = caml_wrap_exception(_fa_); + if(_fa_ === Stdlib[8]) {var - now=function(param){var t117=new t116();return t117.getTime()}, + now=function(param){var t123=new t122();return t123.getTime()}, last=[0,now(0)]; return function(callback) {var @@ -48526,15 +50056,15 @@ last[1] = t; _j_.setTimeout(callback,dt$0); return 0}} - throw _fq_}}); + throw _fa_}}); function hasPushState(param) - {var t122=_j_.history;return caml_call1(Optdef[5],t122.pushState)} + {var t128=_j_.history;return caml_call1(Optdef[5],t128.pushState)} function hasPlaceholder(param) - {var t123=createInput(0,0,t87); - return caml_call1(Optdef[5],t123.placeholder)} + {var t129=createInput(0,0,t87); + return caml_call1(Optdef[5],t129.placeholder)} function hasRequired(param) - {var t124=createInput(0,0,t87); - return caml_call1(Optdef[5],t124.required)} + {var t130=createInput(0,0,t87); + return caml_call1(Optdef[5],t130.required)} var overflow_limit=2147483000.; function setTimeout(callback,d) {var id=[0,0]; @@ -48544,112 +50074,18 @@ else var remain=0.,step$0=step; var - cb=remain == 0.?callback:function(_fn_){return loop(remain,_fn_)}, - t125=caml_js_wrap_callback(cb); - id[1] = [0,_j_.setTimeout(t125,step$0)]; + cb=remain == 0.?callback:function(_e9_){return loop(remain,_e9_)}, + t131=caml_js_wrap_callback(cb); + id[1] = [0,_j_.setTimeout(t131,step$0)]; return 0} loop(d,0); return id} function clearTimeout(id) - {var _fm_=id[1]; - if(_fm_){var x=_fm_[1];id[1] = 0;return _j_.clearTimeout(x)} + {var _e8_=id[1]; + if(_e8_){var x=_e8_[1];id[1] = 0;return _j_.clearTimeout(x)} return 0} function js_array_of_collection(c){return [].slice.call(c)} var - _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, @@ -48666,7 +50102,7 @@ invoke_handler, eventTarget, eventRelatedTarget, - _n_, + Event$0, addEventListenerWithOptions, addEventListener, removeEventListener, @@ -48846,7 +50282,7 @@ hasPushState, hasPlaceholder, hasRequired]; - caml_register_global(1669,Js_of_ocaml_Dom_html,"Js_of_ocaml__Dom_html"); + caml_register_global(1651,Js_of_ocaml_Dom_html,"Js_of_ocaml__Dom_html"); var formData=Unsafe[1].FormData,formData_form=Unsafe[1].FormData; function filter_map$0(f,param) {var param$0=param; @@ -48860,15 +50296,15 @@ function have_content(elt) {var t3=elt.name, - _fk_=caml_call2(symbol$9,t3.length,0), - _fl_=_fk_?1 - (elt.disabled | 0):_fk_; - return _fl_} + _e6_=caml_call2(symbol$9,t3.length,0), + _e7_=_e6_?1 - (elt.disabled | 0):_e6_; + return _e7_} function form_elements(get,form) {var t34=form.elements,i$2=t34.length - 1 | 0,acc=0,i=i$2; for(;;) {if(caml_call2(symbol$5,i,0)) {var - _fb_= + _eX_= function(v$2) {var match$3=tagged(v$2); switch(match$3[0]) @@ -48892,17 +50328,17 @@ 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_); + _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}, - _fh_)} - var _fi_=list.item(0),match$2=caml_call1(Opt[10],_fi_); + _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]} @@ -48932,13 +50368,13 @@ {var name$0=caml_string_of_jsstring(v$0.name); if(v$0.multiple | 0) {var - _fd_= + _eZ_= function(i) - {var t13=v$0.options,_fj_=t13.item(i); - return caml_call1(Opt[10],_fj_)}, + {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,_fd_), - _fe_=caml_call1(Stdlib_Array[11],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) @@ -48947,7 +50383,7 @@ ?[0,[0,name$0,[0,-976970511,e.value]]] :0} return 0}, - _fe_)} + _e0_)} return [0,[0,name$0,[0,-976970511,v$0.value]],0]} return 0; case 53: @@ -48957,9 +50393,9 @@ return [0,[0,name,[0,-976970511,v$1.value]],0]} return 0; default:return 0}}, - _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_); + _eY_=caml_call2(Stdlib_List[19],_eX_,acc); + return caml_call1(Stdlib_List[14],_eY_)} + var t32=form.elements,_eW_=t32.item(i),match=caml_call1(Opt[10],_eW_); if(match) {var x=match[1],i$0=i - 1 | 0,acc$0=[0,x,acc],acc=acc$0,i=i$0; continue} @@ -48968,30 +50404,30 @@ 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],_e__=form_elt[2],_e$_=form_elt[1]; - if(781515420 <= _e__[1]) - {var file=_e__[2],t38=caml_jsstring_of_string(_e$_); + var f=form_contents[2],_eU_=form_elt[2],_eV_=form_elt[1]; + if(781515420 <= _eU_[1]) + {var file=_eU_[2],t38=caml_jsstring_of_string(_eV_); return f.append(t38,file)} - var s=_e__[2],t35=caml_jsstring_of_string(_e$_); + var s=_eU_[2],t35=caml_jsstring_of_string(_eV_); return f.append(t35,s)} function empty_form_contents(param) {var match=caml_call1(Optdef[10],formData); if(match){var constr=match[1];return [0,808620462,new constr()]} return [0,891486873,[0,0]]} function post_form_contents(form) - {var contents=empty_form_contents(0),_e7_=form_elements(0,form); - function _e8_(_e9_){return append(contents,_e9_)} - caml_call2(Stdlib_List[17],_e8_,_e7_); + {var contents=empty_form_contents(0),_eR_=form_elements(0,form); + function _eS_(_eT_){return append(contents,_eT_)} + caml_call2(Stdlib_List[17],_eS_,_eR_); return contents} function get_form_contents(form) - {var _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]; + {var _eO_=form_elements(_n_,form); + function _eP_(param) + {var _eQ_=param[2]; + if(typeof _eQ_ !== "number" && -976970511 === _eQ_[1]) + {var s=_eQ_[2],name=param[1]; return [0,name,caml_string_of_jsstring(s)]} - throw [0,Assert_failure,_p_]} - return caml_call2(Stdlib_List[19],_e5_,_e4_)} + throw [0,Assert_failure,_o_]} + return caml_call2(Stdlib_List[19],_eP_,_eO_)} var Js_of_ocaml_Form= [0, @@ -49002,7 +50438,7 @@ get_form_contents, empty_form_contents, form_elements]; - caml_register_global(1670,Js_of_ocaml_Form,"Js_of_ocaml__Form"); + caml_register_global(1652,Js_of_ocaml_Form,"Js_of_ocaml__Form"); var readystatechange=caml_call1(Event[1],cst_readystatechange), loadstart$1=caml_call1(Event[1],cst_loadstart$1), @@ -49012,7 +50448,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$0= + Event$1= [0, readystatechange, loadstart$1, @@ -49022,19 +50458,19 @@ load$1, timeout, loadend$0], - Js_of_ocaml_XmlHttpRequest=[0,runtime.caml_xmlhttprequest_create,Event$0]; + Js_of_ocaml_XmlHttpRequest=[0,runtime.caml_xmlhttprequest_create,Event$1]; caml_register_global - (1671,Js_of_ocaml_XmlHttpRequest,"Js_of_ocaml__XmlHttpRequest"); + (1653,Js_of_ocaml_XmlHttpRequest,"Js_of_ocaml__XmlHttpRequest"); var t2=Unsafe[1].Worker; function create(script) {var t1=caml_jsstring_of_string(script);return new t2(t1)} function import_scripts(scripts) {if(Unsafe[1].importScripts === t39) caml_call1(Stdlib[1],cst_Worker_import_scripts_is_u); - var _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_)} + var _eL_=caml_call1(Stdlib_Array[12],scripts); + function _eM_(s){return caml_jsstring_of_string(s)} + var _eN_=caml_call2(Stdlib_Array[15],_eM_,_eL_); + return runtime.caml_js_fun_call(Unsafe[1].importScripts,_eN_)} function set_onmessage(handler) {if(Unsafe[1].onmessage === t39) caml_call1(Stdlib[1],cst_Worker_onmessage_is_undefi); @@ -49048,27 +50484,27 @@ var Js_of_ocaml_Worker= [0,create,import_scripts,set_onmessage,post_message]; - caml_register_global(1672,Js_of_ocaml_Worker,"Js_of_ocaml__Worker"); + caml_register_global(1654,Js_of_ocaml_Worker,"Js_of_ocaml__Worker"); var webSocket=Unsafe[1].WebSocket; function is_supported(param){return caml_call1(Optdef[5],webSocket)} var Js_of_ocaml_WebSockets=[0,webSocket,webSocket,webSocket,is_supported]; caml_register_global - (1673,Js_of_ocaml_WebSockets,"Js_of_ocaml__WebSockets"); + (1655,Js_of_ocaml_WebSockets,"Js_of_ocaml__WebSockets"); var defaultContextAttributes= - {"alpha":t38, - "depth":t38, + {"alpha":t25, + "depth":t25, "stencil":t4, - "antialias":t38, + "antialias":t25, "premultipliedAlpha":t4, "preserveDrawingBuffer":t4, "preferLowPowerToHighPerformance":t4, "failIfMajorPerformanceCaveat":t4}, - webglcontextlost=caml_call1(_n_[92],cst_webglcontextlost), - webglcontextrestored=caml_call1(_n_[92],cst_webglcontextrestored), + webglcontextlost=caml_call1(Event$0[87],cst_webglcontextlost), + webglcontextrestored=caml_call1(Event$0[87],cst_webglcontextrestored), webglcontextcreationerror= - caml_call1(_n_[92],cst_webglcontextcreationerror), - Event$1= + caml_call1(Event$0[87],cst_webglcontextcreationerror), + Event$2= [0,webglcontextlost,webglcontextrestored,webglcontextcreationerror]; function getContext(t3) {var ctx=t3.getContext("webgl"); @@ -49078,8 +50514,8 @@ return caml_call1(Opt[5],ctx)?ctx:t9.getContext("experimental-webgl",t8)} var Js_of_ocaml_WebGL= - [0,defaultContextAttributes,Event$1,getContext,getContextWithAttributes]; - caml_register_global(1674,Js_of_ocaml_WebGL,"Js_of_ocaml__WebGL"); + [0,defaultContextAttributes,Event$2,getContext,getContextWithAttributes]; + caml_register_global(1656,Js_of_ocaml_WebGL,"Js_of_ocaml__WebGL"); function regexp(s) {var t0=caml_jsbytes_of_string(s);return new t11(t0,"g")} function regexp_case_fold(s) @@ -49090,26 +50526,25 @@ t6=caml_jsbytes_of_string(s); return new t11(t6,t7)} function blunt_str_array_get(a,i) - {function _eZ_(param){throw [0,Assert_failure,_q_]} - var _e0_=a[i]; - return caml_string_of_jsbytes(caml_call2(Optdef[8],_e0_,_eZ_))} + {function _eK_(param){throw [0,Assert_failure,_p_]} + return caml_string_of_jsbytes(caml_call2(Optdef[8],a[i],_eK_))} function string_match(r,s,i) {r.lastIndex = i; var t11=caml_jsbytes_of_string(s), - _eX_=r.exec(t11), - _eY_=caml_call2(Opt[3],_eX_,match_result); - return caml_call1(Opt[10],_eY_)} + _eI_=r.exec(t11), + _eJ_=caml_call2(Opt[3],_eI_,match_result); + return caml_call1(Opt[10],_eJ_)} function search_forward(r,s,i) {r.lastIndex = i; var t15=caml_jsbytes_of_string(s); - function _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 _eF_(t17){return [0,t17.index,t17]} + var _eG_=r.exec(t15),_eH_=caml_call2(Opt[3],_eG_,_eF_); + return caml_call1(Opt[10],_eH_)} function matched_string(r){return blunt_str_array_get(r,0)} function matched_group(r,i) - {var _eS_=r[i],_eT_=caml_call2(Optdef[3],_eS_,caml_string_of_jsbytes); - return caml_call1(Optdef[10],_eT_)} + {var _eE_=caml_call2(Optdef[3],r[i],caml_string_of_jsbytes); + return caml_call1(Optdef[10],_eE_)} var t21=new t11("[$]","g"); function quote_repl(s) {var t23=caml_jsbytes_of_string(s);return t23.replace(t21,"$$$$")} @@ -49169,7 +50604,7 @@ replace_first, split, bounded_split]; - caml_register_global(1675,Js_of_ocaml_Regexp,"Js_of_ocaml__Regexp"); + caml_register_global(1657,Js_of_ocaml_Regexp,"Js_of_ocaml__Regexp"); var Local_exn=[248,cst_Js_of_ocaml_Url_Local_exn,caml_fresh_oo_id(0)]; function interrupt(param){throw Local_exn} var plus_re=regexp_string(cst$0),t14=new t11("\\+","g"); @@ -49195,30 +50630,30 @@ {var l=caml_ml_string_length(s); function aux(i) {try - {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 _eC_=caml_call3(String[30],s,i,47),j=_eC_} + catch(_eD_) + {_eD_ = caml_wrap_exception(_eD_); + if(_eD_ !== Stdlib[8])throw _eD_; var j=l} var word=caml_call3(String[14],s,i,j - i | 0); return caml_call2(symbol$10,j,l)?[0,word,0]:[0,word,aux(j + 1 | 0)]} var a=aux(0); if(a && ! caml_string_notequal(a[1],cst$2)) - {var _eP_=a[2]; - if(! _eP_)return 0; - if(! caml_string_notequal(_eP_[1],cst$3) && ! _eP_[2])return _r_} + {var _eB_=a[2]; + if(! _eB_)return 0; + if(! caml_string_notequal(_eB_[1],cst$3) && ! _eB_[2])return _q_} return a} function encode_arguments(l) - {function _eK_(param) + {function _ew_(param) {var v=param[2], n=param[1], - _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_)} + _ey_=urlencode(0,v), + _ez_=caml_call2(Stdlib[28],cst$4,_ey_), + _eA_=urlencode(0,n); + return caml_call2(Stdlib[28],_eA_,_ez_)} + var _ex_=caml_call2(Stdlib_List[19],_ew_,l); + return caml_call2(String[6],cst$5,_ex_)} function decode_arguments_js_string(s) {var t0=caml_jsstring_of_string(caml_call2(String[1],1,38)), @@ -49230,34 +50665,35 @@ {if(caml_call2(symbol$5,idx$0,0))return acc; try {var - _eB_=idx$0 - 1 | 0, - _eC_= + _eo_=idx$0 - 1 | 0, + _ep_= function(s) - {function _eI_(param) + {function _eu_(param) {var y=param[2], x=param[1], - _eJ_=urldecode_js_string_string(y); - return [0,urldecode_js_string_string(x),_eJ_]} + _ev_=urldecode_js_string_string(y); + return [0,urldecode_js_string_string(x),_ev_]} var t2=caml_jsstring_of_string(caml_call2(String[1],1,61)), t5=s.indexOf(t2); if(caml_call2(symbol$5,t5,0)) - var _eH_=t39; + var _et_=t39; else var t7=t5 + 1 | 0, - _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) + _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 _eF_}}} + throw _er_}}} return aux(0,len - 1 | 0)} function decode_arguments(s) {return decode_arguments_js_string(caml_jsbytes_of_string(s))} @@ -49267,10 +50703,9 @@ t21$0=caml_jsbytes_of_string(cst_Ff_Ii_Ll_Ee), t26=new t11(t21$0); function url_of_js_string(s) - {function _d$_(res) + {function _d7_(res) {var - _em_=res[1], - prot_string=caml_call2(Optdef[8],_em_,interrupt), + prot_string=caml_call2(Optdef[8],res[1],interrupt), match=caml_string_of_jsbytes(prot_string.toLowerCase()); if (caml_string_notequal(match,cst_file$0) @@ -49297,55 +50732,49 @@ default:switch$2 = 1} if(switch$2) {var - _en_=function(param){return caml_jsbytes_of_string(cst$7)}, - _eo_=res[6], + _ef_=function(param){return caml_jsbytes_of_string(cst$7)}, path_str= - 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_= + urldecode_js_string_string(caml_call2(Optdef[8],res[6],_ef_)), + _eg_=function(param){return caml_jsbytes_of_string(cst$8)}, + _eh_= + urldecode_js_string_string(caml_call2(Optdef[8],res[10],_eg_)), + _ei_=function(param){return caml_jsbytes_of_string(cst$9)}, + _ej_= + decode_arguments_js_string(caml_call2(Optdef[8],res[8],_ei_)), + _ek_=path_of_path_string(path_str), + _el_=function(param){return caml_jsbytes_of_string(cst$10)}, + s=caml_string_of_jsbytes(caml_call2(Optdef[8],res[4],_el_)), + _em_= caml_string_notequal(s,cst$6)?caml_int_of_string(s):ssl?443:80, - _ez_=res[2], url= [0, urldecode_js_string_string - (caml_call2(Optdef[8],_ez_,interrupt)), - _ey_, - _ev_, + (caml_call2(Optdef[8],res[2],interrupt)), + _em_, + _ek_, path_str, - _eu_, - _er_], - _eA_=ssl?[1,url]:[0,url]; - return [0,_eA_]}} + _ej_, + _eh_], + _en_=ssl?[1,url]:[0,url]; + return [0,_en_]}} throw Not_an_http_protocol} - function _ea_(param) - {function _ec_(res) + function _d8_(param) + {function _d__(res) {var - _ef_=res[2], path_str= - urldecode_js_string_string(caml_call2(Optdef[8],_ef_,interrupt)); - function _eg_(param){return caml_jsbytes_of_string(cst$11)} + urldecode_js_string_string(caml_call2(Optdef[8],res[2],interrupt)); + function _eb_(param){return caml_jsbytes_of_string(cst$11)} + var _ec_=caml_string_of_jsbytes(caml_call2(Optdef[8],res[6],_eb_)); + function _ed_(param){return caml_jsbytes_of_string(cst$12)} var - _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$_)} + _ee_= + decode_arguments_js_string(caml_call2(Optdef[8],res[4],_ed_)); + return [0,[2,[0,path_of_path_string(path_str),path_str,_ee_,_ec_]]]} + function _d$_(param){return 0} + var _ea_=t26.exec(s); + return caml_call3(Opt[7],_ea_,_d$_,_d__)} + var _d9_=t24.exec(s); + return caml_call3(Opt[7],_d9_,_d8_,_d7_)} function url_of_string(s) {return url_of_js_string(caml_jsbytes_of_string(s))} function string_of_url(param) @@ -49359,33 +50788,33 @@ port=match[2], host=match[1]; if(caml_string_notequal(frag,cst$13)) - var _dy_=urlencode(0,frag),_dz_=caml_call2(Stdlib[28],cst$14,_dy_); + var _du_=urlencode(0,frag),_dv_=caml_call2(Stdlib[28],cst$14,_du_); else - var _dz_=cst$21; + var _dv_=cst$21; if(args) var - _dA_=encode_arguments(args), - _dB_=caml_call2(Stdlib[28],cst$15,_dA_); + _dw_=encode_arguments(args), + _dx_=caml_call2(Stdlib[28],cst$15,_dw_); else - var _dB_=cst$20; + var _dx_=cst$20; var - _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_); + _dy_=caml_call2(Stdlib[28],_dx_,_dv_), + _dz_=function(x){return urlencode(0,x)}, + _dA_=caml_call2(Stdlib_List[19],_dz_,path), + _dB_=caml_call2(String[6],cst$16,_dA_), + _dC_=caml_call2(Stdlib[28],_dB_,_dy_), + _dD_=caml_call2(Stdlib[28],cst$17,_dC_); if(80 === port) - var _dI_=cst$18; + var _dE_=cst$18; else var - _dM_=caml_call1(Stdlib[33],port), - _dI_=caml_call2(Stdlib[28],cst$19,_dM_); + _dI_=caml_call1(Stdlib[33],port), + _dE_=caml_call2(Stdlib[28],cst$19,_dI_); var - _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_); + _dF_=caml_call2(Stdlib[28],_dE_,_dD_), + _dG_=urlencode(0,host), + _dH_=caml_call2(Stdlib[28],_dG_,_dF_); + return caml_call2(Stdlib[28],cst_http$1,_dH_); case 1: var match$0=param[1], @@ -49396,34 +50825,34 @@ host$0=match$0[1]; if(caml_string_notequal(frag$0,cst$22)) var - _dN_=urlencode(0,frag$0), - _dO_=caml_call2(Stdlib[28],cst$23,_dN_); + _dJ_=urlencode(0,frag$0), + _dK_=caml_call2(Stdlib[28],cst$23,_dJ_); else - var _dO_=cst$30; + var _dK_=cst$30; if(args$0) var - _dP_=encode_arguments(args$0), - _dQ_=caml_call2(Stdlib[28],cst$24,_dP_); + _dL_=encode_arguments(args$0), + _dM_=caml_call2(Stdlib[28],cst$24,_dL_); else - var _dQ_=cst$29; + var _dM_=cst$29; var - _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_); + _dN_=caml_call2(Stdlib[28],_dM_,_dK_), + _dO_=function(x){return urlencode(0,x)}, + _dP_=caml_call2(Stdlib_List[19],_dO_,path$0), + _dQ_=caml_call2(String[6],cst$25,_dP_), + _dR_=caml_call2(Stdlib[28],_dQ_,_dN_), + _dS_=caml_call2(Stdlib[28],cst$26,_dR_); if(443 === port$0) - var _dX_=cst$27; + var _dT_=cst$27; else var - _d1_=caml_call1(Stdlib[33],port$0), - _dX_=caml_call2(Stdlib[28],cst$28,_d1_); + _dX_=caml_call1(Stdlib[33],port$0), + _dT_=caml_call2(Stdlib[28],cst$28,_dX_); var - _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_); + _dU_=caml_call2(Stdlib[28],_dT_,_dS_), + _dV_=urlencode(0,host$0), + _dW_=caml_call2(Stdlib[28],_dV_,_dU_); + return caml_call2(Stdlib[28],cst_https$1,_dW_); default: var match$1=param[1], @@ -49432,32 +50861,32 @@ path$1=match$1[1]; if(caml_string_notequal(frag$1,cst$31)) var - _d2_=urlencode(0,frag$1), - _d3_=caml_call2(Stdlib[28],cst$32,_d2_); + _dY_=urlencode(0,frag$1), + _dZ_=caml_call2(Stdlib[28],cst$32,_dY_); else - var _d3_=cst$36; + var _dZ_=cst$36; if(args$1) var - _d4_=encode_arguments(args$1), - _d5_=caml_call2(Stdlib[28],cst$33,_d4_); + _d0_=encode_arguments(args$1), + _d1_=caml_call2(Stdlib[28],cst$33,_d0_); else - var _d5_=cst$35; + var _d1_=cst$35; var - _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; + _d2_=caml_call2(Stdlib[28],_d1_,_dZ_), + _d3_=function(x){return urlencode(0,x)}, + _d4_=caml_call2(Stdlib_List[19],_d3_,path$1), + _d5_=caml_call2(String[6],cst$34,_d4_), + _d6_=caml_call2(Stdlib[28],_d5_,_d2_); + return caml_call2(Stdlib[28],cst_file$2,_d6_)}} + var _r_=caml_call1(Optdef[2],_j_.location); + if(caml_call1(Optdef[5],_r_)) + var _s_=_j_.location; else var - t42=function(param,_dx_){return 0}, - t41=function(param,_dw_){return 0}, + t42=function(param,_dt_){return 0}, + t41$0=function(param,_ds_){return 0}, t40=function(param){return 0}, - _t_= + _s_= {"href":"", "protocol":"", "host":"", @@ -49468,42 +50897,42 @@ "hash":"", "origin":t39, "reload":caml_js_wrap_meth_callback(t40), - "replace":caml_js_wrap_meth_callback(t41), + "replace":caml_js_wrap_meth_callback(t41$0), "assign":caml_js_wrap_meth_callback(t42)}; var - host=urldecode_js_string_string(_t_.hostname), - protocol=urldecode_js_string_string(_t_.protocol), - _u_=0, + host=urldecode_js_string_string(_s_.hostname), + protocol=urldecode_js_string_string(_s_.protocol), + _t_=0, port= function(param) {try - {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), + {var _dq_=[0,caml_int_of_string(caml_string_of_jsbytes(_s_.port))]; + return _dq_} + catch(_dr_) + {_dr_ = caml_wrap_exception(_dr_); + if(_dr_[1] === Stdlib[7])return 0; + throw _dr_}} + (_t_), + path_string=urldecode_js_string_string(_s_.pathname), path=path_of_path_string(path_string), - t49=_t_.search; + t49=_s_.search; if(t49.charAt(0) === "?") - var t52=_t_.search,_v_=t52.slice(1); + var t52=_s_.search,_u_=t52.slice(1); else - var _v_=_t_.search; - var arguments$0=decode_arguments_js_string(_v_); + var _u_=_s_.search; + var arguments$0=decode_arguments_js_string(_u_); function get_fragment(param) - {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 _dn_(res){return caml_string_of_jsstring(res[1])} + function _do_(param){return cst$37} + var t57=new t11("#(.*)"),t58=_s_.href,_dp_=t58.match(t57); + return caml_call3(Opt[7],_dp_,_do_,_dn_)} function set_fragment(s) - {var t59=caml_jsbytes_of_string(urlencode(0,s));return _t_.hash = t59} - function get$2(param){return url_of_js_string(_t_.href)} + {var t59=caml_jsbytes_of_string(urlencode(0,s));return _s_.hash = t59} + function get$2(param){return url_of_js_string(_s_.href)} function set$0(u) - {var t62=caml_jsbytes_of_string(string_of_url(u));return _t_.href = t62} + {var t62=caml_jsbytes_of_string(string_of_url(u));return _s_.href = t62} var - as_string=urldecode_js_string_string(_t_.href), + as_string=urldecode_js_string_string(_s_.href), Js_of_ocaml_Url= [0, urldecode, @@ -49527,10 +50956,10 @@ get$2, set$0, as_string]]; - caml_register_global(1677,Js_of_ocaml_Url,"Js_of_ocaml__Url"); + caml_register_global(1659,Js_of_ocaml_Url,"Js_of_ocaml__Url"); var Js_of_ocaml_Lib_version=[0,s,git_version]; caml_register_global - (1678,Js_of_ocaml_Lib_version,"Js_of_ocaml__Lib_version"); + (1660,Js_of_ocaml_Lib_version,"Js_of_ocaml__Lib_version"); function update_file(name,content) {var oc=caml_call1(Stdlib[60],name); caml_call2(Stdlib[66],oc,content); @@ -49554,23 +50983,23 @@ var js_of_ocaml_version=s; else var - _cp_=caml_call2(Stdlib[28],cst$41,git_version), - js_of_ocaml_version=caml_call2(Stdlib[28],s,_cp_); + _co_=caml_call2(Stdlib[28],cst$41,git_version), + js_of_ocaml_version=caml_call2(Stdlib[28],s,_co_); var - _w_=runtime.caml_create_file, - _x_=runtime.caml_read_file_content, + _v_=runtime.caml_create_file, + _w_=runtime.caml_read_file_content, Js_of_ocaml_Sys_js= [0, set_channel_flusher, set_channel_filler, - function(_dq_){return runtime.caml_list_mount_point(_dq_)}, + function(_dm_){return runtime.caml_list_mount_point(_dm_)}, unmount, mount, - _x_, _w_, + _v_, update_file, js_of_ocaml_version]; - caml_register_global(1679,Js_of_ocaml_Sys_js,"Js_of_ocaml__Sys_js"); + caml_register_global(1661,Js_of_ocaml_Sys_js,"Js_of_ocaml__Sys_js"); function empty_resize_observer_options(param){return {}} var t2$0=Unsafe[1].ResizeObserver; function is_supported$0(param){return caml_call1(Optdef[5],t2$0)} @@ -49585,15 +51014,15 @@ Js_of_ocaml_ResizeObserver= [0,empty_resize_observer_options,t2$0,is_supported$0,observe]; caml_register_global - (1680,Js_of_ocaml_ResizeObserver,"Js_of_ocaml__ResizeObserver"); + (1662,Js_of_ocaml_ResizeObserver,"Js_of_ocaml__ResizeObserver"); var t4$1=Unsafe[1].PerformanceObserver; function is_supported$1(param){return caml_call1(Optdef[5],t4$1)} function observe$0(entry_types,f) {var - _dp_= + _dl_= caml_call1 (caml_call1(Stdlib_List[19],caml_jsstring_of_string),entry_types), - t1=caml_js_from_array(caml_call1(Stdlib_Array[12],_dp_)), + t1=caml_js_from_array(caml_call1(Stdlib_Array[12],_dl_)), t5={}; t5.entryTypes = t1; var t3=caml_js_wrap_callback(f),t6=new t4$1(t3); @@ -49601,7 +51030,7 @@ return t6} var Js_of_ocaml_PerformanceObserve=[0,t4$1,is_supported$1,observe$0]; caml_register_global - (1681,Js_of_ocaml_PerformanceObserve,"Js_of_ocaml__PerformanceObserver"); + (1663,Js_of_ocaml_PerformanceObserve,"Js_of_ocaml__PerformanceObserver"); function empty_mutation_observer_init(param){return {}} var t2$1=Unsafe[1].MutationObserver; function is_supported$2(param){return caml_call1(Optdef[5],t2$1)} @@ -49639,7 +51068,7 @@ Js_of_ocaml_MutationObserver= [0,empty_mutation_observer_init,t2$1,is_supported$2,observe$1]; caml_register_global - (1682,Js_of_ocaml_MutationObserver,"Js_of_ocaml__MutationObserver"); + (1664,Js_of_ocaml_MutationObserver,"Js_of_ocaml__MutationObserver"); var t1=Unsafe[1].Object; function create$0(param){return new t1()} function add$0(t,k,v){return t[k.concat("_")] = v} @@ -49650,24 +51079,23 @@ t10=Unsafe[1].Object, t11=t10.keys(t), res=[0,0], - _dk_=t11.length - 1 | 0, - _dj_=0; - if(! (_dk_ < 0)) - {var i=_dj_; + _dh_=t11.length - 1 | 0, + _dg_=0; + if(! (_dh_ < 0)) + {var i=_dg_; for(;;) {var - _dl_=function(param){return caml_call1(Stdlib[2],cst_Jstable_keys)}, - _dm_=t11[i], - t15=caml_call2(Optdef[8],_dm_,_dl_), + _di_=function(param){return caml_call1(Stdlib[2],cst_Jstable_keys)}, + t15=caml_call2(Optdef[8],t11[i],_di_), t14=t15.length - 1 | 0, - _dn_=res[1]; - res[1] = [0,t15.substring(0,t14),_dn_]; - var _do_=i + 1 | 0; - if(_dk_ !== i){var i=_do_;continue} + _dj_=res[1]; + res[1] = [0,t15.substring(0,t14),_dj_]; + var _dk_=i + 1 | 0; + if(_dh_ !== i){var i=_dk_;continue} break}} return caml_call1(Stdlib_List[9],res[1])} var Js_of_ocaml_Jstable=[0,create$0,add$0,remove,find,keys]; - caml_register_global(1683,Js_of_ocaml_Jstable,"Js_of_ocaml__Jstable"); + caml_register_global(1665,Js_of_ocaml_Jstable,"Js_of_ocaml__Jstable"); var t11$1=Unsafe[1].JSON; function reviver(this$0,key,value) {if(typeof value === "string")return caml_string_of_jsbytes(value); @@ -49681,27 +51109,26 @@ 255 === value[0]) - {var _dh_=value[3],_di_=value[2]; - return runtime.caml_int64_create_lo_mi_hi(value[1],_di_,_dh_)} + return runtime.caml_int64_create_lo_mi_hi(value[1],value[2],value[3]); return value} var t3$0=caml_js_wrap_meth_callback(reviver); function unsafe_input(t2){return t11$1.parse(t2,t3$0)} var mlInt64_constr=t5.constructor; function t10(key,value) - {var _dg_=Stdlib_Obj[13]; - return caml_call2(symbol$8,runtime.caml_obj_tag(value),_dg_) + {var _df_=Stdlib_Obj[13]; + return caml_call2(symbol$8,runtime.caml_obj_tag(value),_df_) ?caml_jsbytes_of_string(value) :value instanceof mlInt64_constr ?caml_js_from_array([0,255,value.lo,value.mi,value.hi]) :value} function output(t9){return t11$1.stringify(t9,t10)} var Js_of_ocaml_Json=[0,output,unsafe_input]; - caml_register_global(1685,Js_of_ocaml_Json,"Js_of_ocaml__Json"); + caml_register_global(1667,Js_of_ocaml_Json,"Js_of_ocaml__Json"); function string_of_name(param) - {var _df_=param; - if(74 <= _df_) - {if(111 <= _df_) - switch(_df_) + {var _de_=param; + if(74 <= _de_) + {if(111 <= _de_) + switch(_de_) {case 111:return cst_palevioletred; case 112:return cst_papayawhip; case 113:return cst_peachpuff; @@ -49738,7 +51165,7 @@ case 144:return cst_whitesmoke; case 145:return cst_yellow; default:return cst_yellowgreen} - switch(_df_) + switch(_de_) {case 74:return cst_lightpink; case 75:return cst_lightsalmon; case 76:return cst_lightseagreen; @@ -49776,8 +51203,8 @@ case 108:return cst_palegoldenrod; case 109:return cst_palegreen; default:return cst_paleturquoise}} - if(37 <= _df_) - switch(_df_) + if(37 <= _de_) + switch(_de_) {case 37:return cst_darkslategrey; case 38:return cst_darkturquoise; case 39:return cst_darkviolet; @@ -49815,7 +51242,7 @@ case 71:return cst_lightgray; case 72:return cst_lightgreen; default:return cst_lightgrey} - switch(_df_) + switch(_de_) {case 0:return cst_aliceblue; case 1:return cst_antiquewhite; case 2:return cst_aqua; @@ -50047,164 +51474,164 @@ 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 _de_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_color_name); - throw [0,Stdlib[6],_de_]} + var _dd_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_color_name); + throw [0,Stdlib[6],_dd_]} function rgb_of_name(param) - {var _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_}} + {var _dc_=param; + if(74 <= _dc_) + {if(111 <= _dc_) + switch(_dc_) + {case 111:return _bq_; + case 112:return _br_; + case 113:return _bs_; + case 114:return _bt_; + case 115:return _bu_; + case 116:return _bv_; + case 117:return _bw_; + case 118:return _bx_; + case 119:return _by_; + case 120:return _bz_; + case 121:return _bA_; + case 122:return _bB_; + case 123:return _bC_; + case 124:return _bD_; + case 125:return _bE_; + case 126:return _bF_; + case 127:return _bG_; + case 128:return _bH_; + case 129:return _bI_; + case 130:return _bJ_; + case 131:return _bK_; + case 132:return _bL_; + case 133:return _bM_; + case 134:return _bN_; + case 135:return _bO_; + case 136:return _bP_; + case 137:return _bQ_; + case 138:return _bR_; + case 139:return _bS_; + case 140:return _bT_; + case 141:return _bU_; + case 142:return _bV_; + case 143:return _bW_; + case 144:return _bX_; + case 145:return _bY_; + default:return _bZ_} + switch(_dc_) + {case 74:return _aR_; + case 75:return _aS_; + case 76:return _aT_; + case 77:return _aU_; + case 78:return _aV_; + case 79:return _aW_; + case 80:return _aX_; + case 81:return _aY_; + case 82:return _aZ_; + case 83:return _a0_; + case 84:return _a1_; + case 85:return _a2_; + case 86:return _a3_; + case 87:return _a4_; + case 88:return _a5_; + case 89:return _a6_; + case 90:return _a7_; + case 91:return _a8_; + case 92:return _a9_; + case 93:return _a__; + case 94:return _a$_; + case 95:return _ba_; + case 96:return _bb_; + case 97:return _bc_; + case 98:return _bd_; + case 99:return _be_; + case 100:return _bf_; + case 101:return _bg_; + case 102:return _bh_; + case 103:return _bi_; + case 104:return _bj_; + case 105:return _bk_; + case 106:return _bl_; + case 107:return _bm_; + case 108:return _bn_; + case 109:return _bo_; + default:return _bp_}} + if(37 <= _dc_) + switch(_dc_) + {case 37:return _ag_; + case 38:return _ah_; + case 39:return _ai_; + case 40:return _aj_; + case 41:return _ak_; + case 42:return _al_; + case 43:return _am_; + case 44:return _an_; + case 45:return _ao_; + case 46:return _ap_; + case 47:return _aq_; + case 48:return _ar_; + case 49:return _as_; + case 50:return _at_; + case 51:return _au_; + case 52:return _av_; + case 53:return _aw_; + case 54:return _ax_; + case 55:return _ay_; + case 56:return _az_; + case 57:return _aA_; + case 58:return _aB_; + case 59:return _aC_; + case 60:return _aD_; + case 61:return _aE_; + case 62:return _aF_; + case 63:return _aG_; + case 64:return _aH_; + case 65:return _aI_; + case 66:return _aJ_; + case 67:return _aK_; + case 68:return _aL_; + case 69:return _aM_; + case 70:return _aN_; + case 71:return _aO_; + case 72:return _aP_; + default:return _aQ_} + switch(_dc_) + {case 0:return _x_; + case 1:return _y_; + case 2:return _z_; + case 3:return _A_; + case 4:return _B_; + case 5:return _C_; + case 6:return _D_; + case 7:return _E_; + case 8:return _F_; + case 9:return _G_; + case 10:return _H_; + case 11:return _I_; + case 12:return _J_; + case 13:return _K_; + case 14:return _L_; + case 15:return _M_; + case 16:return _N_; + case 17:return _O_; + case 18:return _P_; + case 19:return _Q_; + case 20:return _R_; + case 21:return _S_; + case 22:return _T_; + case 23:return _U_; + case 24:return _V_; + case 25:return _W_; + case 26:return _X_; + case 27:return _Y_; + case 28:return _Z_; + case 29:return ___; + case 30:return _$_; + case 31:return _aa_; + case 32:return _ab_; + case 33:return _ac_; + case 34:return _ad_; + case 35:return _ae_; + default:return _af_}} function rgb(a,r,g,b) {if(a){var a$0=a[1];return [3,[0,r,g,b,a$0]]}return [1,[0,r,g,b]]} function hsl(a,h,s,l) @@ -50214,10 +51641,10 @@ {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],_b1_,r,g,b); + return caml_call4(Stdlib_Printf[4],_b0_,r,g,b); case 2: var match$0=param[1],b$0=match$0[3],g$0=match$0[2],r$0=match$0[1]; - return caml_call4(Stdlib_Printf[4],_b2_,r$0,g$0,b$0); + return caml_call4(Stdlib_Printf[4],_b1_,r$0,g$0,b$0); case 3: var match$1=param[1], @@ -50225,7 +51652,7 @@ b$1=match$1[3], g$1=match$1[2], r$1=match$1[1]; - return caml_call5(Stdlib_Printf[4],_b3_,r$1,g$1,b$1,a); + return caml_call5(Stdlib_Printf[4],_b2_,r$1,g$1,b$1,a); case 4: var match$2=param[1], @@ -50233,10 +51660,10 @@ b$2=match$2[3], g$2=match$2[2], r$2=match$2[1]; - return caml_call5(Stdlib_Printf[4],_b4_,r$2,g$2,b$2,a$0); + return caml_call5(Stdlib_Printf[4],_b3_,r$2,g$2,b$2,a$0); case 5: var match$3=param[1],l=match$3[3],s=match$3[2],h=match$3[1]; - return caml_call4(Stdlib_Printf[4],_b5_,h,s,l); + return caml_call4(Stdlib_Printf[4],_b4_,h,s,l); default: var match$4=param[1], @@ -50244,23 +51671,23 @@ l$0=match$4[3], s$0=match$4[2], h$0=match$4[1]; - return caml_call5(Stdlib_Printf[4],_b6_,h$0,s$0,l$0,a$1)}} + return caml_call5(Stdlib_Printf[4],_b5_,h$0,s$0,l$0,a$1)}} function hex_of_rgb(param) {var blue=param[3],green=param[2],red=param[1]; function in_range(i) {var - _c$_=caml_call2(symbol$5,i,0), - _da_=_c$_ || caml_call2(symbol$9,i,255); - if(_da_) + _c__=caml_call2(symbol$5,i,0), + _c$_=_c__ || caml_call2(symbol$9,i,255); + if(_c$_) {var - _db_=caml_call1(Stdlib[33],i), - _dc_=caml_call2(Stdlib[28],_db_,cst_is_out_of_valid_range); - throw [0,Stdlib[6],_dc_]} - return _da_} + _da_=caml_call1(Stdlib[33],i), + _db_=caml_call2(Stdlib[28],_da_,cst_is_out_of_valid_range); + throw [0,Stdlib[6],_db_]} + return _c$_} in_range(red); in_range(green); in_range(blue); - return caml_call4(Stdlib_Printf[4],_b7_,red,green,blue)} + return caml_call4(Stdlib_Printf[4],_b6_,red,green,blue)} function js_t_of_js_string(s) {var t0=caml_jsbytes_of_string(cst_rgb_s_d_s_d_s_d), @@ -50293,12 +51720,12 @@ && ! (t23.test(s) | 0)) - {var _c8_=caml_string_of_jsstring(s); - if(caml_call2(Stdlib_List[36],_c8_,_b8_))return s; + {var _c7_=caml_string_of_jsstring(s); + if(caml_call2(Stdlib_List[36],_c7_,_b7_))return s; var - _c9_=caml_string_of_jsstring(s), - _c__=caml_call2(Stdlib[28],_c9_,cst_is_not_a_valid_color); - throw [0,Stdlib[6],_c__]} + _c8_=caml_string_of_jsstring(s), + _c9_=caml_call2(Stdlib[28],_c8_,cst_is_not_a_valid_color); + throw [0,Stdlib[6],_c9_]} return s} function js(c) {if(0 === c[0]) @@ -50307,15 +51734,15 @@ function ml(c) {var s=caml_string_of_jsstring(c); try - {var _cV_=[0,name_of_string(s)];return _cV_} - catch(_cW_) - {_cW_ = caml_wrap_exception(_cW_); - if(_cW_[1] === Stdlib[6]) + {var _cU_=[0,name_of_string(s)];return _cU_} + catch(_cV_) + {_cV_ = caml_wrap_exception(_cV_); + if(_cV_[1] === Stdlib[6]) {var fail= function(param) - {var _c7_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_color$0); - throw [0,Stdlib[6],_c7_]}, + {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), @@ -50324,34 +51751,34 @@ {if(param) {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]; + {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(_c6_[1] !== Stdlib[7])throw _c6_;var s=_c6_[2]} + {if(_c5_[1] !== Stdlib[7])throw _c5_;var s=_c5_[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_]}} + _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 _c0_=caml_float_of_string(f);return _c0_} - catch(_c1_) - {_c1_ = caml_wrap_exception(_c1_); - if(_c1_[1] === Stdlib[6]) - var s=_c1_[2]; + {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(_c1_[1] !== Stdlib[7])throw _c1_;var s=_c1_[2]} + {if(_c0_[1] !== Stdlib[7])throw _c0_;var s=_c0_[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_]}}, + _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 @@ -50362,19 +51789,19 @@ 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)) + {var _cC_=match$0[1]; + if(! caml_string_notequal(_cC_,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)) + 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], - _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_]]} + _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); @@ -50387,19 +51814,19 @@ 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)) + {var _cI_=match$2[1]; + if(! caml_string_notequal(_cI_,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)) + 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], - _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_]]} + _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); @@ -50412,113 +51839,113 @@ 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)) + {var _cO_=match$4[1]; + if(! caml_string_notequal(_cO_,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)) + 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], - _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_]]} + _cP_=f_of_s(a$1), + _cQ_=i_of_s_o(blue$1), + _cR_=i_of_s_o(green$1); + return [6,[0,i_of_s_o(red$1),_cR_,_cQ_,_cP_]]} return fail(0)}} return fail(0)} return fail(0)} - throw _cW_}} + throw _cV_}} function string_of_t$0(param) {if(typeof param === "number") return cst_0; else switch(param[0]) {case 0: - var f=param[1];return caml_call3(Stdlib_Printf[4],_b9_,f,cst_em$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],_b__,f$0,cst_ex); + 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); + 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); + return caml_call3(Stdlib_Printf[4],_b$_,f$2,cst_gd); case 4: var f$3=param[1]; - return caml_call3(Stdlib_Printf[4],_cb_,f$3,cst_rem); + return caml_call3(Stdlib_Printf[4],_ca_,f$3,cst_rem); case 5: var f$4=param[1]; - return caml_call3(Stdlib_Printf[4],_cc_,f$4,cst_vw); + return caml_call3(Stdlib_Printf[4],_cb_,f$4,cst_vw); case 6: var f$5=param[1]; - return caml_call3(Stdlib_Printf[4],_cd_,f$5,cst_vh); + return caml_call3(Stdlib_Printf[4],_cc_,f$5,cst_vh); case 7: var f$6=param[1]; - return caml_call3(Stdlib_Printf[4],_ce_,f$6,cst_vm); + return caml_call3(Stdlib_Printf[4],_cd_,f$6,cst_vm); case 8: var f$7=param[1]; - return caml_call3(Stdlib_Printf[4],_cf_,f$7,cst_ch); + return caml_call3(Stdlib_Printf[4],_ce_,f$7,cst_ch); case 9: var f$8=param[1]; - return caml_call3(Stdlib_Printf[4],_cg_,f$8,cst_mm); + return caml_call3(Stdlib_Printf[4],_cf_,f$8,cst_mm); case 10: var f$9=param[1]; - return caml_call3(Stdlib_Printf[4],_ch_,f$9,cst_cm); + return caml_call3(Stdlib_Printf[4],_cg_,f$9,cst_cm); case 11: var f$10=param[1]; - return caml_call3(Stdlib_Printf[4],_ci_,f$10,cst_in); + return caml_call3(Stdlib_Printf[4],_ch_,f$10,cst_in); case 12: var f$11=param[1]; - return caml_call3(Stdlib_Printf[4],_cj_,f$11,cst_pt); + return caml_call3(Stdlib_Printf[4],_ci_,f$11,cst_pt); default: var f$12=param[1]; - return caml_call3(Stdlib_Printf[4],_ck_,f$12,cst_pc)}} + return caml_call3(Stdlib_Printf[4],_cj_,f$12,cst_pc)}} function js$0(t){return caml_jsstring_of_string(string_of_t$0(t))} function ml$0(t) {var s=caml_string_of_jsstring(t); if(caml_call2(String[68],s,cst_0$0))return 0; function fail(param) - {var _cC_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_length); - throw [0,Stdlib[6],_cC_]} + {var _cB_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_length); + throw [0,Stdlib[6],_cB_]} var re=regexp(cst_d_d_s_S),match=string_match(re,s,0); if(match) {var r=match[1],match$0=matched_group(r,1); if(match$0) {var f=match$0[1]; try - {var _cA_=caml_float_of_string(f)} + {var _cz_=caml_float_of_string(f)} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] === Stdlib[6]) {var s$0=exn[2], - _cz_=caml_call2(Stdlib[28],cst_length_conversion_error,s$0); - throw [0,Stdlib[6],_cz_]} + _cy_=caml_call2(Stdlib[28],cst_length_conversion_error,s$0); + throw [0,Stdlib[6],_cy_]} throw exn} - var f$0=_cA_} + var f$0=_cz_} else var f$0=fail(0); var match$1=matched_group(r,2); if(match$1) - {var _cB_=match$1[1],switch$0=caml_string_compare(_cB_,cst_pc$0); + {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(_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]} + 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(_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]} + {if(! caml_string_notequal(_cA_,cst_ch$0))return [8,f$0]; + if(! caml_string_notequal(_cA_,cst_cm$0))return [10,f$0]; + if(! caml_string_notequal(_cA_,cst_em$1))return [0,f$0]; + if(! caml_string_notequal(_cA_,cst_ex$0))return [1,f$0]; + if(! caml_string_notequal(_cA_,cst_gd$0))return [3,f$0]; + if(! caml_string_notequal(_cA_,cst_in$0))return [11,f$0]; + if(! caml_string_notequal(_cA_,cst_mm$0))return [9,f$0]} return fail(0)} return fail(0)} return fail(0)} @@ -50526,47 +51953,47 @@ function string_of_t$1(param) {switch(param[0]) {case 0: - var f=param[1];return caml_call3(Stdlib_Printf[4],_cl_,f,cst_deg); + var f=param[1];return caml_call3(Stdlib_Printf[4],_ck_,f,cst_deg); case 1: var f$0=param[1]; - return caml_call3(Stdlib_Printf[4],_cm_,f$0,cst_grad); + return caml_call3(Stdlib_Printf[4],_cl_,f$0,cst_grad); case 2: var f$1=param[1]; - return caml_call3(Stdlib_Printf[4],_cn_,f$1,cst_rad); + return caml_call3(Stdlib_Printf[4],_cm_,f$1,cst_rad); default: var f$2=param[1]; - return caml_call3(Stdlib_Printf[4],_co_,f$2,cst_turns)}} + return caml_call3(Stdlib_Printf[4],_cn_,f$2,cst_turns)}} function js$1(t){return caml_jsstring_of_string(string_of_t$1(t))} function ml$1(j) {var s=caml_string_of_jsstring(j),re=regexp(cst_d_d_deg_grad_rad_turns); function fail(param) - {var _cy_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_length$0); - throw [0,Stdlib[6],_cy_]} + {var _cx_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_length$0); + throw [0,Stdlib[6],_cx_]} var match=string_match(re,s,0); if(match) {var r=match[1],match$0=matched_group(r,1); if(match$0) {var f=match$0[1]; try - {var _cw_=caml_float_of_string(f)} + {var _cv_=caml_float_of_string(f)} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] === Stdlib[6]) {var s$0=exn[2], - _cv_=caml_call2(Stdlib[28],cst_length_conversion_error$0,s$0); - throw [0,Stdlib[6],_cv_]} + _cu_=caml_call2(Stdlib[28],cst_length_conversion_error$0,s$0); + throw [0,Stdlib[6],_cu_]} throw exn} - var f$0=_cw_} + var f$0=_cv_} 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]} + {var _cw_=match$1[1]; + if(! caml_string_notequal(_cw_,cst_deg$0))return [0,f$0]; + if(! caml_string_notequal(_cw_,cst_grad$0))return [1,f$0]; + if(! caml_string_notequal(_cw_,cst_rad$0))return [2,f$0]; + if(! caml_string_notequal(_cw_,cst_turns$0))return [3,f$0]} return fail(0)} return fail(0)} var @@ -50585,18 +52012,18 @@ js_t_of_js_string], Length, Angle]; - caml_register_global(1686,Js_of_ocaml_CSS,"Js_of_ocaml__CSS"); + caml_register_global(1668,Js_of_ocaml_CSS,"Js_of_ocaml__CSS"); function listen(opt,target,typ,cb) {if(opt)var sth=opt[1],capture=sth;else var capture=0; - var _cu_=! ! capture; + var _ct_=! ! capture; return addEventListener (target, typ, full_handler(function(n,e){return ! ! caml_call2(cb,n,e)}), - _cu_)} - var Js_of_ocaml_Dom_events=[0,_n_,listen,removeEventListener]; + _ct_)} + var Js_of_ocaml_Dom_events=[0,Event$0,listen,removeEventListener]; caml_register_global - (1687,Js_of_ocaml_Dom_events,"Js_of_ocaml__Dom_events"); + (1669,Js_of_ocaml_Dom_events,"Js_of_ocaml__Dom_events"); var t0="http://www.w3.org/2000/svg", SVGError=[248,cst_Js_of_ocaml_Dom_svg_SVGErr,caml_fresh_oo_id(0)]; @@ -50683,17 +52110,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 _cr_(e){if(e instanceof svg_element)return e;throw Stdlib[8]} - function _cs_(param){throw Stdlib[8]} + {function _cq_(e){if(e instanceof svg_element)return e;throw Stdlib[8]} + function _cr_(param){throw Stdlib[8]} var t6=caml_jsstring_of_string(id), t7=Unsafe[1].document, - _ct_=t7.getElementById(t6); - return caml_call3(Opt[7],_ct_,_cs_,_cr_)} + _cs_=t7.getElementById(t6); + return caml_call3(Opt[7],_cs_,_cr_,_cq_)} function element$2(e){return e instanceof svg_element?e:no_handler} function unsafeCoerce$0(e,tag) - {var t9=e.tagName,_cq_=caml_jsstring_of_string(tag); - return t9.toLowerCase() === _cq_?e:no_handler} + {var t9=e.tagName,_cp_=caml_jsstring_of_string(tag); + return t9.toLowerCase() === _cp_?e:no_handler} function a$0(e){return unsafeCoerce$0(e,cst_a$3)} function altGlyph(e){return unsafeCoerce$0(e,cst_altglyph$0)} function altGlyphDef(e){return unsafeCoerce$0(e,cst_altglyphdef$0)} @@ -50869,7 +52296,7 @@ use, view, vkern]]; - caml_register_global(1688,Js_of_ocaml_Dom_svg,"Js_of_ocaml__Dom_svg"); + caml_register_global(1670,Js_of_ocaml_Dom_svg,"Js_of_ocaml__Dom_svg"); function withCredentials(b) {var t1={},t0=! ! b;t1.withCredentials = t0;return t1} var @@ -50878,11 +52305,11 @@ Js_of_ocaml_EventSource= [0,withCredentials,eventSource,eventSource_options,addEventListener]; caml_register_global - (1689,Js_of_ocaml_EventSource,"Js_of_ocaml__EventSource"); + (1671,Js_of_ocaml_EventSource,"Js_of_ocaml__EventSource"); var console=runtime.caml_js_get_console(0), Js_of_ocaml_Firebug=[0,console]; - caml_register_global(1690,Js_of_ocaml_Firebug,"Js_of_ocaml__Firebug"); + caml_register_global(1672,Js_of_ocaml_Firebug,"Js_of_ocaml__Firebug"); function empty_position_options(param){return {}} var t1$0=Unsafe[1].navigator, @@ -50892,7 +52319,7 @@ Js_of_ocaml_Geolocation= [0,empty_position_options,geolocation,is_supported$3]; caml_register_global - (1691,Js_of_ocaml_Geolocation,"Js_of_ocaml__Geolocation"); + (1673,Js_of_ocaml_Geolocation,"Js_of_ocaml__Geolocation"); function empty_intersection_observer_op(param){return {}} var intersectionObserver_unsafe=Unsafe[1].IntersectionObserver; function is_supported$4(param) @@ -50904,7 +52331,7 @@ is_supported$4, intersectionObserver_unsafe]; caml_register_global - (1692,Js_of_ocaml_IntersectionObserv,"Js_of_ocaml__IntersectionObserver"); + (1674,Js_of_ocaml_IntersectionObserv,"Js_of_ocaml__IntersectionObserver"); function object_options(param){return {"localeMatcher":"best fit"}} function options(param) {return {"localeMatcher":"best fit", @@ -50915,12 +52342,7 @@ "caseFirst":"false"}} var Collator=[0,object_options,options]; function options$0(param) - {return {"dateStyle":t39, - "timeStyle":t39, - "calendar":t39, - "dayPeriod":t39, - "numberingSystem":t39, - "localeMatcher":"best fit", + {return {"localeMatcher":"best fit", "timeZone":t39, "hour12":t39, "hourCycle":t39, @@ -50933,26 +52355,14 @@ "hour":t39, "minute":t39, "second":t39, - "fractionalSecondDigits":t39, "timeZoneName":t39}} var DateTimeFormat=[0,object_options,options$0]; function options$1(param) - {return {"compactDisplay":t39, + {return {"localeMatcher":"best fit", + "style":"decimal", "currency":t39, "currencyDisplay":t39, - "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, + "useGrouping":t25, "minimumIntegerDigits":t39, "minimumFractionDigits":t39, "maximumFractionDigits":t39, @@ -50964,14 +52374,14 @@ var PluralRules=[0,object_options,options$2], intl=Unsafe[1].Intl, - 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; + t35=Unsafe[1].Intl, + collator_constr=t35.Collator, + t37=Unsafe[1].Intl, + dateTimeFormat_constr=t37.DateTimeFormat, + t39$0=Unsafe[1].Intl, + numberFormat_constr=t39$0.NumberFormat, + t41=Unsafe[1].Intl, + pluralRules_constr=t41.PluralRules; function is_supported$5(param){return caml_call1(Optdef[5],intl)} var Js_of_ocaml_Intl= @@ -50986,9 +52396,9 @@ numberFormat_constr, pluralRules_constr, is_supported$5]; - caml_register_global(1693,Js_of_ocaml_Intl,"Js_of_ocaml__Intl"); + caml_register_global(1675,Js_of_ocaml_Intl,"Js_of_ocaml__Intl"); var Js_of_ocaml$0=[0]; - caml_register_global(1694,Js_of_ocaml$0,"Js_of_ocaml"); + caml_register_global(1676,Js_of_ocaml$0,"Js_of_ocaml"); return} (globalThis)); @@ -51011,10 +52421,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_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_call4(f,a0,a1,a2,a3) + {return f.length == 4 + ?f(a0,a1,a2,a3) + :runtime.caml_call_gen(f,[a0,a1,a2,a3])} function caml_call7(f,a0,a1,a2,a3,a4,a5,a6) {return f.length == 7 ?f(a0,a1,a2,a3,a4,a5,a6) @@ -51035,9 +52445,7 @@ 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"); - global_data.CamlinternalOO; - var + caml_string_of_jsbytes("date_of_jsoo: invalid date"), Stdlib_Format=global_data.Stdlib__Format, Js_of_ocaml_Js=global_data.Js_of_ocaml__Js, Runtime_ocaml_Runtime=global_data.Runtime_ocaml__Runtime, @@ -51135,8 +52543,7 @@ var _n_=caml_call1(Runtime_ocaml_Runtime[9],_m_), t15= - caml_jsstring_of_string - (caml_call5(Yojson[11][5],0,0,0,0,_n_)); + caml_jsstring_of_string(caml_call4(Yojson[11][5],0,0,0,_n_)); if(3 === evt[0]) var _o_=0; else @@ -51168,8 +52575,7 @@ {var _h_=caml_call1(Runtime_ocaml_Runtime[20],event), t6= - caml_jsstring_of_string - (caml_call5(Yojson[11][5],0,0,0,0,_h_)); + caml_jsstring_of_string(caml_call4(Yojson[11][5],0,0,0,_h_)); return {"data":t6}} var _g_=caml_call1(caml_call1(Stdlib_List[19],_f_),_e_); return caml_js_from_array(caml_call1(Stdlib_Array[12],_g_))})} @@ -51191,12 +52597,12 @@ var _c_= caml_call1 - (Js_of_ocaml_Js[37][9], + (Js_of_ocaml_Js[33][9], {"name":"NoValueProvided", "message":t21, "stack":Js_of_ocaml_Js[6][1], "toString":caml_js_wrap_meth_callback(t23)}); - return caml_call1(Js_of_ocaml_Js[37][5],_c_)} + return caml_call1(Js_of_ocaml_Js[33][5],_c_)} try {var _b_=caml_call1(f,0);return _b_} catch(exn) @@ -55264,9 +56670,7 @@ 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; - global_data.CamlinternalOO; - var + Runtime_ocaml_Runtime=global_data.Runtime_ocaml__Runtime, Stdlib_Array=global_data.Stdlib__Array, Runtime_jsoo_Runtime=global_data.Runtime_jsoo__Runtime, Stdlib=global_data.Stdlib, @@ -98301,7 +99705,7 @@ function t168(param) {return caml_js_wrap_callback(allocation_familiales_avril200$4)} caml_call2 - (Js_of_ocaml_Js[50], + (Js_of_ocaml_Js[46], cst_AllocationsFamilialesLib, {"allocationFamilialesAvril2008":caml_js_wrap_meth_callback(t168), "enfantLePlusAge":caml_js_wrap_meth_callback(t169), @@ -125965,7 +127369,7 @@ function t920(param) {return caml_js_wrap_callback(contributions_sociales_aides_p$4)} caml_call2 - (Js_of_ocaml_Js[50], + (Js_of_ocaml_Js[46], cst_AidesLogementLib, {"contributionsSocialesAidesPersonnelleLogement": caml_js_wrap_meth_callback(t920), @@ -126270,9 +127674,8 @@ 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; - global_data.CamlinternalOO; - var Js_of_ocaml_Js=global_data.Js_of_ocaml__Js; + global_data.Law_source__Aides_logement_api_web, + Js_of_ocaml_Js=global_data.Js_of_ocaml__Js; function t4(param) {return caml_js_wrap_callback (function(calculette_aides_au_logement_g) @@ -126296,7 +127699,7 @@ return t0.iMontantVerse} return caml_call1(Runtime_jsoo_Runtime[6],_a_)})} caml_call1 - (Js_of_ocaml_Js[51], + (Js_of_ocaml_Js[47], {"eventsManager":Runtime_jsoo_Runtime[1], "computeAllocationsFamiliales":caml_js_wrap_meth_callback(t3), "computeAidesAuLogement":caml_js_wrap_meth_callback(t4)}); @@ -126320,4 +127723,4 @@ (globalThis)); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJhcGlfd2ViLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIk9iamVjdCIsImdsb2JhbFRoaXMiLCJ0aGlzIiwiZ2V0IiwiX1RfIiwiZ2xvYmFsIiwic2VsZiIsImNhbWxfaW50NjRfaXNfemVybyIsIngiLCJjYW1sX3N0cl9yZXBlYXQiLCJuIiwicyIsInIiLCJsIiwiY2FtbF9pbnQ2NF9vZmZzZXQiLCJNYXRoIiwiY2FtbF9yYWlzZV9jb25zdGFudCIsInRhZyIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsImgiLCJzaWduIiwib2Zmc2V0IiwibW9kdWx1cyIsImRpdmlzb3IiLCJxdW90aWVudCIsInkiLCJxIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludDY0X2lzX25lZ2F0aXZlIiwiY2FtbF9pbnQ2NF9uZWciLCJjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMiLCJhIiwiaSIsImxlbiIsImYiLCJTdHJpbmciLCJudWxsIiwiY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwianNvb19pc19hc2NpaSIsImNhbWxfdXRmMTZfb2ZfdXRmOCIsImIiLCJ0IiwiYyIsImMxIiwiYzIiLCJ2IiwiaiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImxlbmd0aCIsImNvbnRlbnQiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfcGFyc2VfZm9ybWF0IiwiZm10IiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0IiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJlcnJubyIsInZhcmlhbnQiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJVaW50OEFycmF5IiwiY2FtbF9ieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3N5c19lcnJvciIsImNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyIsImNhbWxfY3JlYXRlX2J5dGVzIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsIk1sRmlsZSIsIk1sRmFrZUZpbGUiLCJvbGQiLCJidWYiLCJwb3MiLCJjbGVuIiwibmV3X3N0ciIsIm9sZF9kYXRhIiwiZGF0YSIsIk1sRmFrZUZkIiwiZmlsZSIsImZsYWdzIiwidW5kZWZpbmVkIiwiTWxGYWtlRGV2aWNlIiwicmVzIiwiU3ltYm9sIiwibmFtZV9zbGFzaCIsIm1vZGUiLCJyYWlzZV91bml4IiwicGFyZW50IiwiUmVnRXhwIiwic2VlbiIsIm0iLCJlbnRyeSIsIm9rIiwiQXJyYXkiLCJieXRlcyIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfYnl0ZXNfdW5zYWZlX2dldCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQiLCJjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyIsImNhbWxfYnl0ZXNfYm91bmRfZXJyb3IiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2J5dGVzX3NldCIsIk1sTm9kZUZkIiwiZmQiLCJyZXF1aXJlIiwiZXJyIiwiYnVmX29mZnNldCIsInJlYWQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJpc0NoYXJhY3RlckRldmljZSIsIm8iLCJqc19zdGF0cyIsInRvX2RpciIsInRhcmdldCIsImxpbmsiLCJmaWxlX2tpbmQiLCJjYW1sX2dldF9yb290IiwiY2FtbF9mYWlsd2l0aCIsImNhbWxfcm9vdCIsImpzb29fbW91bnRfcG9pbnQiLCJyZXNvbHZlX2ZzX2RldmljZSIsImNhbWxfc3lzX2lzX2RpcmVjdG9yeSIsImNhbWxfcmFpc2Vfbm90X2ZvdW5kIiwiY2FtbF9zeXNfZ2V0ZW52IiwicHJvY2VzcyIsInNoaWZ0X3JpZ2h0X25hdCIsIm5hdDEiLCJvZnMxIiwibGVuMSIsIm5hdDIiLCJvZnMyIiwibmJpdHMiLCJ3cmFwIiwiY2FtbF9ncl9zdGF0ZSIsImNhbWxfZ3Jfc3RhdGVfZ2V0IiwiY2FtbF9ncl9wb2ludF9jb2xvciIsImltIiwiTWxPYmplY3RUYWJsZSIsIk5haXZlTG9va3VwIiwib2JqcyIsImNhbWxfc3lzX3JlbmFtZSIsIm9fcm9vdCIsIm5fcm9vdCIsImNhbWxfbG9nMTBfZmxvYXQiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwiY2FtbF9tbF9jaGFubmVscyIsImNhbWxfcmVmaWxsIiwiY2hhbiIsInN0ciIsInN0cl9hIiwibnJlYWQiLCJjYW1sX2FycmF5X2JvdW5kX2Vycm9yIiwiY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUiLCJjaGFuaWQiLCJwcmV2X21heCIsImNhbWxfZ2NfbWlub3IiLCJ1bml0IiwiYmlnSW50IiwiQkFTRSIsIkxPR19CQVNFIiwiTUFYX0lOVCIsIk1BWF9JTlRfQVJSIiwic21hbGxUb0FycmF5IiwiREVGQVVMVF9BTFBIQUJFVCIsIkJpZ0ludCIsImpvb19nbG9iYWxfb2JqZWN0Iiwic3VwcG9ydHNOYXRpdmVCaWdJbnQiLCJJbnRlZ2VyIiwicmFkaXgiLCJhbHBoYWJldCIsImNhc2VTZW5zaXRpdmUiLCJwYXJzZVZhbHVlIiwicGFyc2VCYXNlIiwiQmlnSW50ZWdlciIsInZhbHVlIiwiU21hbGxJbnRlZ2VyIiwiTmF0aXZlQmlnSW50IiwiaXNQcmVjaXNlIiwiYXJyYXlUb1NtYWxsIiwiYXJyIiwidHJpbSIsImNvbXBhcmVBYnMiLCJjcmVhdGVBcnJheSIsInRydW5jYXRlIiwiYWRkIiwibF9hIiwibF9iIiwiY2FycnkiLCJiYXNlIiwic3VtIiwiYWRkQW55IiwiYWRkU21hbGwiLCJzdWJ0cmFjdCIsImFfbCIsImJfbCIsImJvcnJvdyIsImRpZmZlcmVuY2UiLCJzdWJ0cmFjdEFueSIsInN1YnRyYWN0U21hbGwiLCJzbWFsbCIsIm11bHRpcGx5TG9uZyIsInByb2R1Y3QiLCJhX2kiLCJiX2oiLCJtdWx0aXBseVNtYWxsIiwic2hpZnRMZWZ0IiwibXVsdGlwbHlLYXJhdHN1YmEiLCJhYyIsImJkIiwiYWJjZCIsInVzZUthcmF0c3ViYSIsImwxIiwibDIiLCJhYnMiLCJtdWx0aXBseVNtYWxsQW5kQXJyYXkiLCJzcXVhcmUiLCJhX2oiLCJkaXZNb2QxIiwiZGl2aXNvck1vc3RTaWduaWZpY2FudERpZ2l0IiwibGFtYmRhIiwicmVtYWluZGVyIiwicXVvdGllbnREaWdpdCIsInNoaWZ0IiwiZGl2TW9kU21hbGwiLCJkaXZNb2QyIiwicGFydCIsImd1ZXNzIiwieGxlbiIsImhpZ2h4IiwiaGlnaHkiLCJjaGVjayIsImRpdk1vZEFueSIsIkVycm9yIiwiY29tcGFyaXNvbiIsInFTaWduIiwibW9kIiwibVNpZ24iLCJfMCIsIl8xIiwiXzIiLCJleHAiLCJJbmZpbml0eSIsImlzQmFzaWNQcmltZSIsIm1pbGxlclJhYmluVGVzdCIsIm5QcmV2Iiwic3RyaWN0IiwiaXNQcmltZSIsImJpdHMiLCJsb2dOIiwiaXRlcmF0aW9ucyIsIm5ld1QiLCJuZXdSIiwibGFzdFQiLCJsYXN0UiIsInBvd2Vyc09mVHdvIiwicG93ZXJzMkxlbmd0aCIsImhpZ2hlc3RQb3dlcjIiLCJzaGlmdF9pc1NtYWxsIiwicmVtUXVvIiwiYml0d2lzZSIsImZuIiwieFNpZ24iLCJ5U2lnbiIsInhSZW0iLCJ5UmVtIiwieERpZ2l0IiwieURpZ2l0IiwieERpdk1vZCIsInlEaXZNb2QiLCJMT0JNQVNLX0kiLCJMT0JNQVNLX0JJIiwicm91Z2hMT0IiLCJpbnRlZ2VyTG9nYXJpdGhtIiwidG1wIiwiZSIsIm1heCIsIm1pbiIsImdjZCIsImxjbSIsInJhbmRCZXR3ZWVuIiwibG93IiwiaGlnaCIsInJhbmdlIiwiZGlnaXRzIiwidG9CYXNlIiwicmVzdHJpY3RlZCIsInRvcCIsImRpZ2l0IiwidGV4dCIsImFic0Jhc2UiLCJhbHBoYWJldFZhbHVlcyIsImlzTmVnYXRpdmUiLCJzdGFydCIsInBhcnNlQmFzZUZyb21BcnJheSIsInZhbCIsInBvdyIsInN0cmluZ2lmeSIsIm5lZyIsIk51bWJlciIsIm91dCIsImxlZnQiLCJkaXZtb2QiLCJ0b0Jhc2VTdHJpbmciLCJ6ZXJvcyIsInBhcnNlSW50IiwicGFyc2VTdHJpbmdWYWx1ZSIsInNwbGl0IiwiZGVjaW1hbFBsYWNlIiwiaXNWYWxpZCIsInBhcnNlTnVtYmVyVmFsdWUiLCJtbF96X25vcm1hbGl6ZSIsIm1sX3pfcG93IiwiejEiLCJtbF96X3Jvb3QiLCJ6IiwiemVybyIsIm9uZSIsImVuZCIsImFucyIsInR3byIsIm1pZCIsInBvIiwibWxfel9yb290cmVtIiwiY2FtbF9tbF9jb25kaXRpb25fbmV3IiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfYmFfdWludDhfZ2V0NjQiLCJiYSIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3JldHVybl9leG5fY29uc3RhbnQiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jcmVhdGVfZmlsZSIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJjYW1sX3BhcnNlcl90cmFjZSIsImNhbWxfc2V0X3BhcnNlcl90cmFjZSIsIm9sZGZsYWciLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJjYW1sX211bCIsImNhbWxfaGFzaF9taXhfaW50IiwibnVtX2RpZ2l0c19uYXQiLCJuYXQiLCJjYW1sX2hhc2hfbmF0IiwiY2FtbF9jYWxsX2dlbiIsImFyZ3NMZW4iLCJleHRyYV9hcmdzIiwiYXJndW1lbnRzIiwibmFyZ3MiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzIiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX29ial90YWciLCJGdW5jdGlvbiIsImNhbWxfb2JqX3VwZGF0ZV90YWciLCJjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fIiwiY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuIiwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nIiwiZmllbGQwIiwiY2FtbF9nY19jb3VudGVycyIsIm1sX3pfZGl2IiwiejIiLCJtbF96X3NpZ24iLCJtbF96X2FkZCIsIm1sX3pfY2RpdiIsInoxX3BvcyIsInoyX3BvcyIsImNhbWxfZ3Jfc3luY2hyb25pemUiLCJjYW1sX3VuaXhfY2xvc2VkaXIiLCJkaXJfaGFuZGxlIiwiY2FtbF91bml4X29wZW5kaXIiLCJjYW1sX3VuaXhfcmV3aW5kZGlyIiwibmV3X2Rpcl9oYW5kbGUiLCJjYW1sX3JhaXNlX2VuZF9vZl9maWxlIiwiY2FtbF91bml4X3JlYWRkaXIiLCJjYW1sX3VuaXhfZmluZGZpcnN0IiwicGF0aF9qcyIsImZpcnN0X2VudHJ5IiwibG9nMl9vayIsImpzb29fZmxvb3JfbG9nMiIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiRmxvYXQzMkFycmF5IiwiaW50MzJhIiwiSW50MzJBcnJheSIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IiwiayIsInIzIiwicjIiLCJyMSIsImNhbWxfYmFfc2VyaWFsaXplIiwic3oiLCJjb21wbGV4IiwiY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudCIsImtpbmQiLCJjYW1sX2JhX2NyZWF0ZV9idWZmZXIiLCJzaXplIiwidmlldyIsIkZsb2F0NjRBcnJheSIsIkludDhBcnJheSIsIkludDE2QXJyYXkiLCJVaW50MTZBcnJheSIsImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2ludDY0X2hpMzIiLCJjYW1sX2ludDY0X2xvMzIiLCJjYW1sX2JhX2N1c3RvbV9uYW1lIiwiTWxfQmlnYXJyYXkiLCJsYXlvdXQiLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfYmFfZGVzZXJpYWxpemUiLCJyZWFkZXIiLCJudW1fZGltcyIsInNpemVfZGltIiwic2l6ZV9kaW1faGkiLCJzaXplX2RpbV9sbyIsInNpeHR5IiwiaW50NjQiLCJjYW1sX2JhX2NvbXBhcmUiLCJjYW1sX2hhc2hfbWl4X2ludDY0IiwiY2FtbF9oYXNoX21peF9mbG9hdCIsInYwIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJ3IiwiY2FtbF9pbnQzMl91bm1hcnNoYWwiLCJjYW1sX25hdGl2ZWludF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X3VubWFyc2hhbCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfaGFzaCIsImNhbWxfY3VzdG9tX29wcyIsImNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSIsImNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbSIsIm51bSIsImN1c3RvbSIsInN3YXAiLCJjYW1sX2NvbXBhcmVfdmFsX3RhZyIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX2J5dGVzX2NvbXBhcmUiLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwiZGl2X2RpZ2l0X25hdCIsIm5hdHEiLCJvZnNxIiwibmF0ciIsIm9mc3IiLCJyZW0iLCJudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQiLCJzaGlmdF9sZWZ0X25hdCIsIk1sTmF0IiwiY3JlYXRlX25hdCIsInNldF90b196ZXJvX25hdCIsImluY3JfbmF0IiwiY2FycnlfaW4iLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJzcmMiLCJkc3QiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfanNfaHRtbF9lbnRpdGllcyIsImVudGl0eSIsInRlbXAiLCJkb2N1bWVudCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQiLCJjYW1sX2JhX3NldF8yIiwibWxfel9vZl9pbnQ2NCIsImk2NCIsIm1sX3pfa3JvbmVja2VyIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJhcmdzMiIsImNhbWxfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImV2YWwiLCJzZXJpYWxpemVfbmF0IiwiY2FtbF9tZW1wcm9mX3NldCIsIl9jb250cm9sIiwibWxfel9uZWciLCJjYW1sX3N5c19leGl0IiwiY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3IiLCJjYW1sX2pzX2Zyb21fYXJyYXkiLCJjYW1sX2JhX3Jlc2hhcGUiLCJ2aW5kIiwibmV3X2RpbSIsImNhbWxfb29fbGFzdF9pZCIsImNhbWxfc2V0X29vX2lkIiwiY2FtbF9ncl9maWxsX3JlY3QiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYSIsInN0cjEiLCJwb3MxIiwiYmEyIiwicG9zMiIsInNsaWNlIiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9nZXRfZ2xvYmFsX2RhdGEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIiwiY2FtbF9iYV91aW50OF9nZXQxNiIsIm1sX3pfb2ZfaW50MzIiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX01ENVRyYW5zZm9ybSIsInh4IiwiZmYiLCJnZyIsImhoIiwiaWkiLCJjYW1sX01ENVVwZGF0ZSIsImN0eCIsImlucHV0IiwiaW5wdXRfbGVuIiwiaW5fYnVmIiwiaW5wdXRfcG9zIiwibWlzc2luZyIsImNhbWxfZnJlc2hfb29faWQiLCJjYW1sX2ludDY0X3RvX2Zsb2F0IiwiY2FtbF9iYV9nZXRfMSIsImNhbWxfYmlnc3RyaW5nX21lbWNtcCIsImNhbWxfbmV3X3N0cmluZyIsImNhbWxfZXJmX2Zsb2F0IiwiYTEiLCJhMiIsImEzIiwiYTQiLCJhNSIsImNhbWxfYmFfdWludDhfZ2V0MzIiLCJjYW1sX3Jhd19iYWNrdHJhY2VfbGVuZ3RoIiwibWxfel9zaGlmdF9yaWdodCIsImFtdCIsImNhbWxfc3RyX2luaXRpYWxpemUiLCJjYW1sX29ial9ibG9jayIsImNhbWxfZ3JfY2xlYXJfZ3JhcGgiLCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIiwiYnMiLCJjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIiwiX3VuaXQiLCJseG9yX2RpZ2l0X25hdCIsImNhbWxfb2JqX2FkZF9vZmZzZXQiLCJjYW1sX2ZpbmFsX3JlbGVhc2UiLCJjYW1sX2pzX3RvX2FycmF5IiwibWxfel9sb2dvciIsImNhbWxfZ3JfcGxvdCIsImNvbG9yIiwiY2FtbF9ieXRlc19zZXQxNiIsImkxNiIsImNhbWxfc3RyaW5nX3NldDE2IiwiY2FtbF9ieXRlc19zZXQ2NCIsImNhbWxfaW50NjRfYnN3YXAiLCJtbF96X2ZpdHNfaW50IiwibWxfel9maXRzX2ludDMyIiwiY2FtbF9nY19tYWpvciIsIm1sX3pfc2hpZnRfbGVmdCIsImNhbWxfbGV4X2FycmF5IiwiY2FtbF9sZXhfZW5naW5lIiwidGJsIiwic3RhcnRfc3RhdGUiLCJsZXhidWYiLCJsZXhfYnVmZmVyIiwibGV4X2J1ZmZlcl9sZW4iLCJsZXhfc3RhcnRfcG9zIiwibGV4X2N1cnJfcG9zIiwibGV4X2xhc3RfcG9zIiwibGV4X2xhc3RfYWN0aW9uIiwibGV4X2VvZl9yZWFjaGVkIiwibGV4X2Jhc2UiLCJsZXhfYmFja3RyayIsImxleF9kZWZhdWx0IiwibGV4X3RyYW5zIiwibGV4X2NoZWNrIiwic3RhdGUiLCJiYWNrdHJrIiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2J5dGVzX2VxdWFsIiwiY2FtbF9ncl9zaXplX3giLCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkIiwicmVmIiwib3NfdHlwZSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4iLCJjYW1sX2Nvc2hfZmxvYXQiLCJNbE11dGV4IiwiY2FtbF9tbF9tdXRleF9uZXciLCJjYW1sX2VwaGVfa2V5X29mZnNldCIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJ3ZWFrIiwiY2FtbF9oYXNoX21peF9maW5hbCIsImNhbWxfZ3JfdGV4dF9zaXplIiwidHh0IiwiY2FtbF9sZXhfcnVuX21lbSIsIm1lbSIsImN1cnJfcG9zIiwiY2FtbF9sZXhfcnVuX3RhZyIsImNhbWxfbmV3X2xleF9lbmdpbmUiLCJsZXhfbWVtIiwibGV4X2Jhc2VfY29kZSIsImxleF9iYWNrdHJrX2NvZGUiLCJsZXhfZGVmYXVsdF9jb2RlIiwibGV4X3RyYW5zX2NvZGUiLCJsZXhfY2hlY2tfY29kZSIsImxleF9jb2RlIiwicGNfb2ZmIiwicHN0YXRlIiwiYmFzZV9jb2RlIiwiY2FtbF9iYV91aW50OF9zZXQ2NCIsIm1sX3pfcG9wY291bnQiLCJjYW1sX3N5c19leGVjdXRhYmxlX25hbWUiLCJjYW1sX2xlc3NlcXVhbCIsImNhbWxfYWNvc2hfZmxvYXQiLCJjYW1sX01ENUluaXQiLCJBcnJheUJ1ZmZlciIsImIzMiIsIlVpbnQzMkFycmF5IiwiY2FtbF9tbF9mbHVzaCIsImNhbWxfc2Vla19vdXQiLCJjYW1sX21sX3NlZWtfb3V0XzY0IiwiY29tcGFyZV9uYXRfcmVhbCIsImNhbWxfZ2Nfc2V0IiwiY2FtbF9qc19nZXQiLCJjYW1sX3VuaXhfaXNhdHR5IiwiZmlsZURlc2NyaXB0b3IiLCJ0dHkiLCJjYW1sX21sX3NldF9idWZmZXJlZCIsImNhbWxfZ2NfY29tcGFjdGlvbiIsImNhbWxfZXBoZV9nZXRfa2V5IiwiY2FtbF91bml4X2xvY2FsdGltZSIsIkRhdGUiLCJkX251bSIsImphbnVhcnlmaXJzdCIsImRveSIsImphbiIsImp1bCIsInN0ZFRpbWV6b25lT2Zmc2V0IiwiY2FtbF91bml4X21rdGltZSIsInRtIiwidG0yIiwianNvb196X29mX2pzX3N0cmluZ19iYXNlIiwiYmMiLCJtbF96X29mX3N1YnN0cmluZ19iYXNlIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYSIsImNhbWxfc3lzX2ZkcyIsImNhbWxfc3lzX2Nsb3NlIiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UiLCJleG4iLCJmb3JjZSIsImNhbWxfYXRvbWljX2V4Y2hhbmdlIiwiY2FtbF9zeXNfaXNhdHR5IiwiX2NoYW4iLCJpc19kaWdpdF96ZXJvIiwiY2FtbF91bml4X2xzdGF0IiwiY2FtbF91bml4X2xzdGF0XzY0IiwiY2FtbF9qc19zZXQiLCJtbF96X2djZGV4dF9pbnRlcm4iLCJsYXN0eCIsImxhc3R5IiwibWxfel90ZXN0Yml0IiwiY2FtbF9hcnJheV9nZXQiLCJhcnJheSIsImluZGV4IiwiY2FtbF91bml4X3JtZGlyIiwiY2FtbF9sb2cyX2Zsb2F0IiwiY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50IiwibWxfel9jb25ncnVlbnQiLCJjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSIsImNhbWxfaW50NjRfc3ViIiwiY2FtbF9zZWVrX2luIiwiY2FtbF9tbF9zZWVrX2luXzY0IiwiY2FtbF9kb21haW5faWQiLCJjYW1sX21sX211dGV4X3VubG9jayIsImNhbWxfZG9tYWluX2xhdGVzdF9pZHgiLCJjYW1sX2RvbWFpbl9zcGF3biIsIm11dGV4IiwiaWQiLCJjYW1sX3VuaXhfbWtkaXIiLCJwZXJtIiwiY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IiwiY2FtbF9ub3RlcXVhbCIsIm1sX3pfYWJzIiwiY2FtbF9zeXNfY29uc3RfaW50X3NpemUiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayIsImNhbWxfaXNfanMiLCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmQiLCJjYW1sX2JhX2RpbSIsImNhbWxfYmFfZGltXzEiLCJtbF96X3NxcnQiLCJjYW1sX2pzX21ldGhfY2FsbCIsIm1sX3pfbHVjbnVtIiwiY2FtbF9lcGhlX2RhdGFfb2Zmc2V0IiwiY2FtbF93ZWFrX2NyZWF0ZSIsImNhbWxfZXBoZV9jcmVhdGUiLCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIiwibWxfel9wcm9iYWJfcHJpbWUiLCJjYW1sX3RyYW1wb2xpbmUiLCJjYW1sX21heWJlX3ByaW50X3N0YXRzIiwiY2FtbF9ieXRlc19nZXQ2NCIsImNhbWxfdW5peF9oYXNfc3ltbGluayIsIm1sX3pfcmVtIiwiY2FtbF9lcGhlX3NldF9rZXkiLCJjYW1sX2VwaGVfdW5zZXRfa2V5IiwiY291bnQiLCJjYW1sX3dlYWtfc2V0IiwiY2FtbF9zeXNfcmVtb3ZlIiwiY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IiLCJjYW1sX3N0cmluZ19nZXQzMiIsImNhbWxfYnl0ZXNfZ2V0IiwiY2FtbF9oeXBvdF9mbG9hdCIsIm1sX3pfZmFjTSIsImN1cnJlbnQiLCJjYW1sX2pzX2NhbGwiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmciLCJtbF96X211bF9vdmVyZmxvd3MiLCJtbF96X3RvX2ludCIsImNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyIiwiY2FtbF9oYXNoX21peF9qc2J5dGVzIiwiY2FtbF9tbF9ieXRlc19jb250ZW50IiwiY2FtbF9oYXNoX21peF9ieXRlcyIsImNhbWxfYnl0ZXNfbGVzc3RoYW4iLCJjYW1sX2VyZmNfZmxvYXQiLCJjYW1sX2dyX2ZpbGxfcG9seSIsImFyIiwiY2FtbF9nY19xdWlja19zdGF0IiwibWxfel9mYWMiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwibWxfel9kaXZpc2libGUiLCJjYW1sX29ial9yZWFjaGFibGVfd29yZHMiLCJudGhfZGlnaXRfbmF0IiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiZXhwb25lbnQiLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX2ludDY0X2FkZCIsImNhbWxfaW50NjRfbXVsIiwiY2FtbF9pbnQ2NF91bHQiLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJjYW1sX2JhX3NldF8xIiwiY2FtbF9pbnQ2NF94b3IiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9seG1fbmV4dCIsInNoaWZ0X2wiLCJzaGlmdF9yIiwib3IiLCJ4b3IiLCJtdWwiLCJyb3RsIiwic2V0IiwiTSIsImRhYmEiLCJxMCIsInExIiwic3QiLCJ4MCIsImNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4iLCJjYW1sX2xpc3RfdG9fanNfYXJyYXkiLCJjYW1sX2xlZ2FjeV9jdXN0b21fY29kZSIsImNhbWxfb3V0cHV0X3ZhbCIsIldyaXRlciIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImNvbnNvbGUiLCJpbnRlcm5fb2JqX3RhYmxlIiwibWVtbyIsImV4aXN0aW5nX29mZnNldCIsImV4dGVybl9yZWMiLCJvcHMiLCJzel8zMl82NCIsImhlYWRlcl9wb3MiLCJvbGRfcG9zIiwidHlwZV9vZl92IiwiY2FtbF9zdHJpbmdfb2ZfYXJyYXkiLCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmciLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kIiwiY21kIiwiY2hpbGRfcHJvY2VzcyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF91bml4X2dldHVpZCIsImRlc2VyaWFsaXplX25hdCIsImluaXRpYWxpemVfbmF0IiwibWxfel9zdWNjIiwiY2FtbF9ncl9vcGVuX3N1YndpbmRvdyIsImNhbWxfbWFyc2hhbF9kYXRhX3NpemUiLCJnZXQzMiIsIk1sU3RyaW5nUmVhZGVyIiwiY2FtbF9mbG9hdF9vZl9ieXRlcyIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIiLCJfbWFnaWMiLCJfYmxvY2tfbGVuIiwibnVtX29iamVjdHMiLCJfc2l6ZV8zMiIsIl9zaXplXzY0Iiwib2JqX2NvdW50ZXIiLCJpbnRlcm5fcmVjIiwiaGVhZGVyIiwiZXhwZWN0ZWRfc2l6ZSIsImNhbWxfc3RyaW5nX29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZSIsImJsb2NrIiwiY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXAiLCJjYW1sX2F0b21pY19jYXMiLCJjYW1sX2NvcHlzaWduX2Zsb2F0IiwiY2FtbF9ncl9zZXRfdGV4dF9zaXplIiwiY2FtbF9hdG9taWNfbG9hZCIsImNhbWxfTUQ1RmluYWwiLCJjYW1sX21kNV9ieXRlcyIsImNhbWxfYmFfc2V0X2dlbmVyaWMiLCJjYW1sX21sX2NvbmRpdGlvbl93YWl0IiwibXV0ZXh0IiwiY2FtbF9ieXRlc19sZXNzZXF1YWwiLCJjYW1sX3N0cmluZ19sZXNzZXF1YWwiLCJjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwiLCJjYW1sX25leHRhZnRlcl9mbG9hdCIsImNhbWxfZ3Jfc2l6ZV95IiwibWxfel9mYWMyIiwiY2FtbF9wb3NfaW4iLCJjYW1sX21sX3Bvc19pbiIsImNhbWxfaW50NjRfYW5kIiwiY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIiwibWxfel9iaW4iLCJjb2VmZiIsImNhbWxfdW5peF91bmxpbmsiLCJjYW1sX3N5c19vcGVuX2Zvcl9ub2RlIiwiZnMiLCJmZDIiLCJNbEZha2VGZF9vdXQiLCJjYW1sX3N5c19vcGVuX2ludGVybmFsIiwiaWR4IiwiY2FtbF9zeXNfb3BlbiIsIl9wZXJtcyIsIm1sX3pfZ2NkIiwibWxfel9tdWwiLCJtbF96X2hhbWRpc3QiLCJjYW1sX3N0cmluZ19nZXQiLCJyZV9tYXRjaCIsInJlX3dvcmRfbGV0dGVycyIsIm9wY29kZXMiLCJpc193b3JkX2xldHRlciIsImluX2JpdHNldCIsInJlX21hdGNoX2ltcGwiLCJwYXJ0aWFsIiwicHJvZyIsImNwb29sIiwibm9ybXRhYmxlIiwibnVtZ3JvdXBzIiwibnVtcmVnaXN0ZXJzIiwic3RhcnRjaGFycyIsInBjIiwicXVpdCIsImdyb3VwcyIsInJlX3JlZ2lzdGVyIiwiYmFja3RyYWNrIiwiaXRlbSIsInB1c2giLCJhY2NlcHQiLCJnIiwicHJlZml4X21hdGNoIiwib3AiLCJzYXJnIiwidWFyZyIsImdyb3VwIiwicmVfc2VhcmNoX2JhY2t3YXJkIiwibWxfel9sb2dhbmQiLCJjYW1sX2pzX2Zyb21fc3RyaW5nIiwiY2FtbF9iYV9zdWIiLCJjaGFuZ2VkX2RpbSIsIm5ld19kaW1zIiwibmV3X2RhdGEiLCJjYW1sX2djX2Z1bGxfbWFqb3IiLCJjYW1sX21sX211dGV4X3RyeV9sb2NrIiwiY2FtbF9ieXRlc19zZXQzMiIsImkzMiIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9iYV91aW50OF9zZXQzMiIsIm1sX3pfZGl2X3JlbSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IiwiY2FtbF91bml4X2dtdGltZSIsImNhbWxfc2lnbmJpdF9mbG9hdCIsImNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgiLCJjYW1sX2dyX3NldF9mb250IiwiY2FtbF9ncl9zZXRfY29sb3IiLCJjb252ZXJ0IiwibnVtYmVyIiwiY19zdHIiLCJjYW1sX2dyX21vdmV0byIsImNhbWxfZ3JfcmVzaXplX3dpbmRvdyIsImNhbWxfZ3Jfc3RhdGVfaW5pdCIsImNhbWxfZ3JfY3VycmVudF94IiwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5IiwidGEiLCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkiLCJjYW1sX21sX3NlZWtfb3V0IiwiY2FtbF9qc190eXBlb2YiLCJjYW1sX2hhc2hfbWl4X3N0cmluZyIsImNhbWxfc3RyaW5nX2hhc2giLCJjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZSIsImJ0IiwiY2FtbF9ncl9saW5ldG8iLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2JhX2RpbV8zIiwiY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbiIsImNhbWxfZm9ybWF0X2V4Y2VwdGlvbiIsImJ1Y2tldCIsImNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uIiwiaGFuZGxlciIsImF0X2V4aXQiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfYnl0ZXNfZ2V0MTYiLCJjYW1sX29ial9tYWtlX2ZvcndhcmQiLCJjYW1sX2pzX2Zyb21fYm9vbCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgiLCJjYW1sX2NyZWF0ZV9zdHJpbmciLCJjYW1sX21sX2lucHV0X2Jsb2NrIiwiYXZhaWwiLCJjYW1sX21kNV9jaGFuIiwidG9yZWFkIiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCIsImNhbWxfdW5peF9maW5kbmV4dCIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2FycmF5X2FwcGVuZCIsImNhbWxfdW5peF9nZXR0aW1lb2ZkYXkiLCJjYW1sX3VuaXhfdGltZSIsImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsIiwibWxfel9uZXh0cHJpbWUiLCJjYW1sX2ZpbGxfYnl0ZXMiLCJjYW1sX2pzX2V4cHIiLCJjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCIsIm1sX3pfc3ViIiwibWxfel9mZGl2IiwibWxfel90b19iaXRzIiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMiLCJjYW1sX2V2ZW50bG9nX3Jlc3VtZSIsImNhbWxfaGFzaF91bml2X3BhcmFtIiwibGltaXQiLCJvYmoiLCJoYXNoX2FjY3UiLCJoYXNoX2F1eCIsImpzYnl0ZXMiLCJjYW1sX21kNV9zdHJpbmciLCJjYW1sX3N0cmluZ19lcXVhbCIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwibWxfel9kaXZleGFjdCIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsImNhbWxfcHVyZV9qc19leHByIiwiY2FtbF9ibGl0X3N0cmluZyIsImJsaXRfbmF0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyIsImJhMSIsImJ5dGVzMiIsImNhbWxfdW5peF9zdGF0IiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF91bml4X3N0YXRfNjQiLCJjYW1sX3RvX2pzX3N0cmluZyIsImNhbWxfbWxfbXV0ZXhfbG9jayIsInJlX3NlYXJjaF9mb3J3YXJkIiwiY2FtbF9ibGl0X3N0cmluZ190b19iaWdzdHJpbmciLCJjYW1sX21ha2VfdmVjdCIsImluaXQiLCJjYW1sX21sX3NlZWtfaW4iLCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeSIsImNhbWxfbWxfb3V0cHV0X2NoYXIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIiLCJjYW1sX29ial9pc19ibG9jayIsImNhbWxfb2JqX3NldF9yYXdfZmllbGQiLCJjYW1sX2pzX3ZhciIsImNhbWxfdHJ1bmNfZmxvYXQiLCJjYW1sX3phcml0aF9tYXJzaGFsIiwiY2FtbF9lcGhlX3Vuc2V0X2RhdGEiLCJjYW1sX2VwaGVfc2V0X2RhdGEiLCJjYW1sX2VwaGVfYmxpdF9kYXRhIiwiY2FtbF9pc19wcmludGFibGUiLCJjYW1sX2FycmF5X29mX2J5dGVzIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsImJ1ZmYiLCJub3ciLCJhbGxfZmluYWxpemVycyIsImNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWUiLCJjYiIsImNhbWxfYmFfZ2V0XzIiLCJjYW1sX2JhX3VpbnQ4X3NldDE2IiwiY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkiLCJjYW1sX2pzX2RlbGV0ZSIsImNhbWxfaW50X29mX3N0cmluZyIsImNhbWxfbGlzdF9tb3VudF9wb2ludCIsInByZXYiLCJjYW1sX21hcnNoYWxfY29uc3RhbnRzIiwiY2FtbF9vYmpfcmF3X2ZpZWxkIiwiY2FtbF9qc19lcXVhbHMiLCJjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwIiwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IiwibWxfel9maXRzX25hdGl2ZWludCIsImNhbWxfZ3JfYXJjX2F1eCIsImN4IiwiY3kiLCJyeSIsInJ4Iiwicm90IiwieFBvcyIsInlQb3MiLCJ4UG9zX3ByZXYiLCJ5UG9zX3ByZXYiLCJzcGFjZSIsImRlbHRhIiwiY2FtbF9ncl9maWxsX2FyYyIsImNhbWxfYmFfc2xpY2UiLCJudW1faW5kcyIsInN1Yl9kaW1zIiwibWxfel9vZl9uYXRpdmVpbnQiLCJjYW1sX2JhX2tpbmQiLCJjYW1sX2pzX2Z1bl9jYWxsIiwiY2FtbF9nY19tYWpvcl9zbGljZSIsIndvcmsiLCJtbF96X2ludmVydCIsIm1sX3pfcG93bSIsInozIiwiaW52IiwibWxfel9wb3dtX3NlYyIsImNhbWxfanNfcHVyZV9leHByIiwiY29tcGFyZV9kaWdpdHNfbmF0IiwiY2FtbF9tbF9pbnB1dCIsImNhbWxfZ3Jfd2FpdF9ldmVudCIsIl9ldmwiLCJjYW1sX2dyX3NpZ2lvX2hhbmRsZXIiLCJjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZSIsImNhbWxfdW5peF9jbGVhbnVwIiwiY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlIiwiY2FtbF9zeXNfZ2V0X2NvbmZpZyIsImNhbWxfb2JqX2lzX3NoYXJlZCIsImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QiLCJjYW1sX2FzaW5oX2Zsb2F0IiwibWxfel9oYXNoIiwiYWNjIiwiY2FtbF9wb3Nfb3V0IiwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlciIsImFiIiwiY2FtbF9tb2QiLCJjYW1sX2JhX2luaXQiLCJjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIiwicmVfc3RyaW5nX21hdGNoIiwiQmlnU3RyaW5nUmVhZGVyIiwiY2FtbF9ncl9kdW1wX2ltYWdlIiwiY2FtbF9iYV9nZXRfZ2VuZXJpYyIsImNhbWxfdW5peF9zdGFydHVwIiwiY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSIsImNhbWxfZm9ybWF0X2Zsb2F0IiwidG9GaXhlZCIsImRwIiwicHJlYyIsImNhbWxfbW91bnRfYXV0b2xvYWQiLCJtbF96X2VxdWFsIiwibWxfel9maXRzX2ludDY0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSIsImNhbWxfYmxpdF9iaWdzdHJpbmdfdG9fYmlnc3RyaW5nIiwibWxfel9zcXJ0X3JlbSIsImRpZmYiLCJjYW1sX3N0cmluZ19sZXNzdGhhbiIsImNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuIiwiY2FtbF9kaXYiLCJjYW1sX29ial9kdXAiLCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSIsImNhbWxfbWVtcHJvZl9zdGFydCIsInJhdGUiLCJzdGFja19zaXplIiwidHJhY2tlciIsIm1sX3pfcGVyZmVjdF9zcXVhcmUiLCJjYW1sX3N5c19nZXRfYXJndiIsImNhbWxfbWxfZG9tYWluX3NldF9uYW1lIiwiX25hbWUiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2dyX2NyZWF0ZV9pbWFnZSIsImNhbWxfZXBoZV9nZXRfa2V5X2NvcHkiLCJjYW1sX2xlc3N0aGFuIiwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCIsIm1sX3pfdG9fbmF0aXZlaW50IiwiY2FtbF9yZWdpc3Rlcl9nbG9iYWwiLCJuYW1lX29wdCIsIm11bHRfbmF0IiwibGVuMyIsInNxdWFyZV9uYXQiLCJjYW1sX2pzX2Zyb21fZmxvYXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9nY19zdGF0IiwiY2FtbF9nZXRfbWFqb3JfY3JlZGl0IiwiY2FtbF9zeXNfbW9kaWZ5X2FyZ3YiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfanNfZ2V0X2NvbnNvbGUiLCJjYW1sX3N5c191bnNhZmVfZ2V0ZW52IiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4iLCJyZWZpbGwiLCJjaGFubmVsIiwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5IiwiY2FtbF9yb3VuZF9mbG9hdCIsIm1sX3pfb2ZfYml0cyIsImJhc2UxIiwiY2FtbF9vanNfbmV3X2FyciIsIkYiLCJjb21wbGVtZW50X25hdCIsIm1sX3pfbG9neG9yIiwiY2FtbF9kb21haW5fZGxzIiwiY2FtbF9kb21haW5fZGxzX3NldCIsImNhbWxfbGF6eV9yZWFkX3Jlc3VsdCIsImNhbWxfanNfcmVnZXhwcyIsImNhbWxfanNfaHRtbF9lc2NhcGUiLCJjYW1sX2JhX2RpbV8yIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzIiwiY2FtbF9zaW5oX2Zsb2F0IiwiY2FtbF9sZGV4cF9mbG9hdCIsImNhbWxfZ3Jfc3RhdGVfc2V0IiwiY2FtbF96YXJpdGhfdW5tYXJzaGFsIiwibmVnYXRlIiwibWxfel90cmFpbGluZ196ZXJvcyIsImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QiLCJhcml0eSIsImNhbWxfZ2NfbWlub3Jfd29yZHMiLCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayIsImxhbmRfZGlnaXRfbmF0IiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfYmFfc2V0XzMiLCJtbF96X2phY29iaSIsIm4xIiwibWxfel9sZWdlbmRyZSIsImNhbWxfanNfaW5zdGFuY2VvZiIsImNhbWxfZ2V0X21ham9yX2J1Y2tldCIsImNhbWxfYmxpdF9iaWdzdHJpbmdfdG9fc3RyaW5nIiwic2V0X2RpZ2l0X25hdF9uYXRpdmUiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsImNhbWxfc3RyaW5nX3NldDY0IiwiY2FtbF9ncl9zdGF0ZV9jcmVhdGUiLCJjYW52YXMiLCJjb250ZXh0IiwiY2FtbF9qc193cmFwX2NhbGxiYWNrIiwiY2FtbF9ncl9kcmF3X2FyYyIsImNhbWxfYmFfbWFwX2ZpbGUiLCJ2ZmQiLCJzaGFyZWQiLCJjYW1sX2JhX21hcF9maWxlX2J5dGVjb2RlIiwiYXJnbiIsImNhbWxfYmFfY3JlYXRlX2Zyb20iLCJkYXRhMSIsImRhdGEyIiwianN0eXAiLCJjYW1sX3RhbmhfZmxvYXQiLCJjYW1sX2dyX2RyYXdfc3RyIiwiZHgiLCJjYW1sX2dyX2RyYXdfc3RyaW5nIiwibWxfel9wcmltb3JpYWwiLCJjYW1sX2dyX2RyYXdfY2hhciIsImNhbWxfdW5tb3VudCIsIm1sX3pfZmliIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyIsImNhbWxfbWxfcG9zX2luXzY0IiwiY2FtbF9ncl9kcmF3X2ltYWdlIiwiaW1hZ2UiLCJjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZSIsIl9jaGFubmVsIiwiY2FtbF9zdHJpbmdfc2V0IiwiY2FtbF9zeXNfcm1kaXIiLCJjYW1sX3VuaXhfc3ltbGluayIsInNyY19yb290IiwiZHN0X3Jvb3QiLCJjYW1sX21sX3Bvc19vdXQiLCJjYW1sX3NwYWNldGltZV9lbmFibGVkIiwiY2FtbF9ieXRlc19ub3RlcXVhbCIsImNhbWxfcnVudGltZV9wYXJhbWV0ZXJzIiwiY2FtbF9qc19vYmplY3QiLCJjYW1sX2JhX2NyZWF0ZSIsImRpbXNfbWwiLCJjYW1sX2dyX3JlbWVtYmVyX21vZGUiLCJjYW1sX2ZtYV9mbG9hdCIsIlNQTElUIiwiTUlOX1ZBTFVFIiwiRVBTSUxPTiIsIkMiLCJBIiwiQiIsIm11bHRpcGx5IiwiYXQiLCJhaGkiLCJhbG8iLCJiaGkiLCJibG8iLCJhZGp1c3QiLCJzY2FsZSIsInhzIiwieXMiLCJ6cyIsInh5IiwidSIsImNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50IiwiY2FtbF9ic3dhcDE2IiwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUiLCJjYW1sX2ZpbmFsX3JlZ2lzdGVyIiwiY2FtbF9ncl9kcmF3X3JlY3QiLCJjYW1sX3N0cmluZ19nZXQxNiIsImNhbWxfb3V0cHV0X3ZhbHVlIiwiY2FtbF9iYV9nZXRfMyIsImNhbWxfZXBoZV9ibGl0X2tleSIsIm1sX3pfdG9faW50MzIiLCJjYW1sX2luaXRpYWxfdGltZSIsImNhbWxfc3lzX3RpbWUiLCJjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4iLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF91bml4X2dldHB3dWlkIiwibWxfel9jb21wYXJlIiwiY2FtbF9oYXNoIiwic2VlZCIsInF1ZXVlIiwicmQiLCJ3ciIsImNhbWxfYmFfdG9fdHlwZWRfYXJyYXkiLCJjYW1sX2RvbWFpbl9kbHNfZ2V0IiwiY2FtbF9ieXRlc19nZXQzMiIsImNhbWxfZnJleHBfZmxvYXQiLCJtbF96X3ByZWQiLCJjYW1sX3N0cmluZ19nZXQ2NCIsImNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbiIsImNhbWxfbWxfcG9zX291dF82NCIsIm1sX3pfZXh0cmFjdCIsIm1sX3pfcmVtb3ZlIiwibWxfel9vZl9mbG9hdCIsImYxIiwibWxfel9sb2dub3QiLCJjYW1sX3VuaXhfZmluZGNsb3NlIiwiY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3ciLCJjYW1sX2Zsb2F0YXJyYXlfYmxpdCIsImNhbWxfZ2V0X21pbm9yX2ZyZWUiLCJjYW1sX3NldF9zdGF0aWNfZW52IiwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0IiwiY2FtbF9qc19uZXciLCJjYW1sX2dyX2N1cnJlbnRfeSIsImNhbWxfZm9ybWF0X2ludCIsImNhbWxfb2JqX3RydW5jYXRlIiwiY2FtbF9qc190b19zdHJpbmciLCJpc19kaWdpdF9vZGQiLCJjYW1sX3J1bnRpbWVfdmFyaWFudCIsImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCIsImJ1ZmZlcmVkIiwiY2FtbF9hcnJheV9jb25jYXQiLCJjYW1sX2dyX29wZW5fZ3JhcGgiLCJpbmZvIiwic3BlY3MiLCJzdGF0dXMiLCJ3aW4iLCJkb2MiLCJ0aXRsZSIsImJvZHkiLCJjYW1sX21ha2VfZmxvYXRfdmVjdCIsImNhbWxfY2JydF9mbG9hdCIsImNhbWxfbWVtcHJvZl9zdG9wIiwiY2FtbF9ldmVudGxvZ19wYXVzZSIsImNhbWxfZ3JlYXRlcmVxdWFsIiwibWxfel9udW1iaXRzIiwidXBwZXJCb3VuZCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlIiwiY2FtbF9sb2cxcF9mbG9hdCIsImNhbWxfbGF6eV9tYWtlX2ZvcndhcmQiLCJsb3JfZGlnaXRfbmF0IiwiY2FtbF9ncl9ibGl0X2ltYWdlIiwiaW0yIiwiY2FtbF9ncl93aW5kb3dfaWQiLCJjYW1sX2pzX29uX2llIiwidWEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0IiwiY2FtbF9iYV9sYXlvdXQiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImNhbWxfYXJyYXlfc2V0IiwibmV3dmFsIiwiY2FtbF9hbGxvY19zdGFjayIsInJldCIsImNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsIiwibWxfel9wZXJmZWN0X3Bvd2VyIiwibG9nMnoiLCJ6cCIsInNldF9kaWdpdF9uYXQiLCJtbF96X2luaXQiLCJjYW1sX2dyX2RvY19vZl9zdGF0ZSIsImNhbWxfbWxfb3V0cHV0X2ludCIsImNhbWxfb2JqX3dpdGhfdGFnIiwiY2FtbF9tbF9jaGFubmVsX3NpemUiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0Iiwic3R5bGUiLCJleHBfc2lnbiIsInNpZ25fc3RyIiwiY3N0IiwieF9zdHIiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJtbF96X2Zvcm1hdCIsImNhcyIsIndpZHRoIiwiYWx0IiwicGFkIiwicHJlZml4IiwicHJlIiwibWxfel90b19pbnQ2NCIsIm1hc2siLCJtbF96X3NpemUiLCJjYW1sX3VuaXhfcmVhZGxpbmsiLCJjYW1sX2JhY2t0cmFjZV9zdGF0dXMiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIiwiY2FtbF9iYV9maWxsIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9nY19nZXQiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJtbF96X3NoaWZ0X3JpZ2h0X3RydW5jIiwiY2FtbF9zdHJpbmdfc2V0MzIiLCJjYW1sX3BhcnNlX2VuZ2luZSIsInRhYmxlcyIsImVudiIsIkVSUkNPREUiLCJsb29wIiwidGVzdHNoaWZ0Iiwic2hpZnRfcmVjb3ZlciIsInJlZHVjZSIsIlJFQURfVE9LRU4iLCJSQUlTRV9QQVJTRV9FUlJPUiIsIkdST1dfU1RBQ0tTXzEiLCJHUk9XX1NUQUNLU18yIiwiQ09NUFVURV9TRU1BTlRJQ19BQ1RJT04iLCJDQUxMX0VSUk9SX0ZVTkNUSU9OIiwiZW52X3Nfc3RhY2siLCJlbnZfdl9zdGFjayIsImVudl9zeW1iX3N0YXJ0X3N0YWNrIiwiZW52X3N5bWJfZW5kX3N0YWNrIiwiZW52X3N0YWNrc2l6ZSIsImVudl9zdGFja2Jhc2UiLCJlbnZfY3Vycl9jaGFyIiwiZW52X2x2YWwiLCJlbnZfc3ltYl9zdGFydCIsImVudl9zeW1iX2VuZCIsImVudl9hc3AiLCJlbnZfcnVsZV9sZW4iLCJlbnZfcnVsZV9udW1iZXIiLCJlbnZfc3AiLCJlbnZfc3RhdGUiLCJlbnZfZXJyZmxhZyIsInRibF90cmFuc2xfY29uc3QiLCJ0YmxfdHJhbnNsX2Jsb2NrIiwidGJsX2xocyIsInRibF9sZW4iLCJ0YmxfZGVmcmVkIiwidGJsX2Rnb3RvIiwidGJsX3NpbmRleCIsInRibF9yaW5kZXgiLCJ0YmxfZ2luZGV4IiwidGJsX3RhYmxlc2l6ZSIsInRibF90YWJsZSIsInRibF9jaGVjayIsInRibF9uYW1lc19jb25zdCIsInRibF9uYW1lc19ibG9jayIsImxvZyIsInRva2VuX25hbWUiLCJuYW1lcyIsInByaW50X3Rva2VuIiwidG9rIiwidG9rZW4iLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2dyX21ha2VfaW1hZ2UiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImV2ZW50IiwiZXJyX25vX3ByZWQiLCJlcnJfbm9fc3VjYyIsInplcm8kMiIsIm9uZSQyIiwibWludXNfb25lJDIiLCJtaW5faW50JDIiLCJtYXhfaW50JDIiLCJkdW1teV9wb3MiLCJ6ZXJvX3BvcyIsInN1Yl9mb3JtYXQiLCJmb3JtYXR0aW5nX2xpdCIsImxvY2ZtdCIsIm51bGwkMCIsImN1cnJlbnRfZGlyX25hbWUiLCJwYXJlbnRfZGlyX25hbWUiLCJkaXJfc2VwIiwicXVvdGVxdW90ZSIsIm51bGwkMSIsImN1cnJlbnRfZGlyX25hbWUkMCIsInBhcmVudF9kaXJfbmFtZSQwIiwiZGlyX3NlcCQwIiwibnVsbCQyIiwiY3VycmVudF9kaXJfbmFtZSQxIiwicGFyZW50X2Rpcl9uYW1lJDEiLCJkaXJfc2VwJDEiLCJ6ZXJvJDQiLCJvbmUkNCIsImkiLCJlcmFzZV9yZWwiLCJyZXN0IiwicmVzdCQwIiwicmVzdCQxIiwicmVzdCQyIiwicmVzdCQzIiwicmVzdCQ0IiwicmVzdCQ1IiwicmVzdCQ2IiwicmVzdCQ3IiwidHkiLCJyZXN0JDgiLCJ0eTEiLCJyZXN0JDkiLCJyZXN0JDEwIiwicmVzdCQxMSIsInJlc3QkMTIiLCJyZXN0JDEzIiwiY29uY2F0X2ZtdHR5IiwiZm10dHkxIiwiZm10dHkyIiwidHkyIiwiY29uY2F0X2ZtdCIsImZtdDEiLCJmbXQyIiwicGFkIiwicGFkJDAiLCJwcmVjIiwicGFkJDEiLCJpY29udiIsInByZWMkMCIsInBhZCQyIiwiaWNvbnYkMCIsInByZWMkMSIsInBhZCQzIiwiaWNvbnYkMSIsInByZWMkMiIsInBhZCQ0IiwiaWNvbnYkMiIsInByZWMkMyIsInBhZCQ1IiwiZmNvbnYiLCJwYWQkNiIsInN0ciIsImNociIsImZtdHR5IiwicGFkJDciLCJmbXR0eSQwIiwicGFkJDgiLCJyZXN0JDE0IiwicmVzdCQxNSIsInJlc3QkMTYiLCJmbXRpbmdfbGl0IiwicmVzdCQxNyIsImZtdGluZ19nZW4iLCJyZXN0JDE4IiwicmVzdCQxOSIsImNoYXJfc2V0Iiwid2lkdGhfb3B0IiwicmVzdCQyMCIsImNvdW50ZXIiLCJyZXN0JDIxIiwicmVzdCQyMiIsImlnbiIsInJlc3QkMjMiLCJmIiwiYXJpdHkiLCJ2IiwiciIsImN1ciIsInNlZW4iLCJuIiwiZmFpbHdpdGgiLCJzIiwiaW52YWxpZF9hcmciLCJtaW4iLCJ4IiwieSIsIm1heCIsImFicyIsImxub3QiLCJpbmZpbml0eSIsIm5lZ19pbmZpbml0eSIsIm5hbiIsIm1heF9mbG9hdCIsIm1pbl9mbG9hdCIsImVwc2lsb24iLCJtYXhfaW50IiwibWluX2ludCIsInMxIiwiczIiLCJsMSIsImwyIiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImIiLCJib29sX29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInZhbGlkX2Zsb2F0X2xleGVtIiwibCIsImkkMCIsInRvX3N0cmluZyIsIm9mX3N0cmluZ19vcHQiLCJhcHBlbmQiLCJ0bCIsImhkIiwic3RkaW4iLCJzdGRvdXQiLCJzdGRlcnIiLCJvcGVuX2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX3RleHQiLCJvcGVuX2JpbiIsImZsdXNoX2FsbCIsIml0ZXIiLCJhIiwib3V0cHV0X2J5dGVzIiwib2MiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0Iiwib2ZzIiwibGVuIiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF92YWx1ZSIsImNoYW4iLCJjbG9zZSIsImNsb3NlX25vZXJyIiwib3Blbl9nZW4kMCIsIm9wZW5fdGV4dCQwIiwib3Blbl9iaW4kMCIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsImFjY3UiLCJiZWciLCJhY2N1JDAiLCJyZXMiLCJjbG9zZV9ub2VyciQwIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludCIsInJlYWRfaW50X29wdCIsInJlYWRfZmxvYXQiLCJyZWFkX2Zsb2F0X29wdCIsInN0cmluZ19vZl9mb3JtYXQiLCJzeW1ib2wiLCJzdHIyIiwic3RyMSIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJuZXdfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fYXRfZXhpdCIsImV4aXQiLCJyZXRjb2RlIiwic2V0X2JpbmFyeV9tb2RlIiwiY2xvc2UkMCIsImluX2NoYW5uZWxfbGVuZ3RoIiwicG9zX2luIiwic2Vla19pbiIsImlucHV0X3ZhbHVlIiwiaW5wdXRfYmluYXJ5X2ludCIsImlucHV0X2J5dGUiLCJpbnB1dF9jaGFyIiwic2V0X2JpbmFyeV9tb2RlJDAiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJwb3Nfb3V0Iiwic2Vla19vdXQiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2NoYXIiLCJmbHVzaCIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAiLCJ2JDAiLCJmb2xkIiwiZXF1YWwiLCJlMSIsImUyIiwidjIiLCJ2MiQwIiwiY29tcGFyZSIsIm1hdGNoJDEiLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3IiLCJsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl8iLCJsYXp5X3RhZyIsImNsb3N1cmVfdGFnIiwib2JqZWN0X3RhZyIsImluZml4X3RhZyIsImZvcndhcmRfdGFnIiwibm9fc2Nhbl90YWciLCJhYnN0cmFjdF90YWciLCJzdHJpbmdfdGFnIiwiZG91YmxlX3RhZyIsImRvdWJsZV9hcnJheV90YWciLCJjdXN0b21fdGFnIiwiaW50X3RhZyIsIm91dF9vZl9oZWFwX3RhZyIsInVuYWxpZ25lZF90YWciLCJpbmZvIiwib2JqIiwic3RhcnRfZW52Iiwib2ZfdmFsIiwic2xvdCIsImlkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZXh0ZW5zaW9uX25hbWUiLCJleHRlbnNpb25faWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsInJhaXNlX3VuZGVmaW5lZCIsImZvcmNlX2xhenlfYmxvY2siLCJibGsiLCJjbG9zdXJlIiwicmVzdWx0IiwiZm9yY2VfdmFsX2xhenlfYmxvY2siLCJmb3JjZSIsImx6diIsInQiLCJmb3JjZV92YWwiLCJ0b19sYXp5IiwiZnJvbV92YWwiLCJpc192YWwiLCJtYXAkMCIsIm1hcF92YWwiLCJlbXB0eSIsInJldHVybiQwIiwiY29ucyIsIm5leHQiLCJhcHBlbmQkMCIsInNlcTEiLCJzZXEyIiwibWFwJDEiLCJzZXEiLCJmaWx0ZXJfbWFwIiwic2VxJDAiLCJmaWx0ZXIiLCJjb25jYXQiLCJmbGF0X21hcCIsImZvbGRfbGVmdCIsImFjYyIsImFjYyQwIiwiYWNjJDEiLCJ1bmZvbGQiLCJ1IiwidSQwIiwiaXNfZW1wdHkiLCJ4cyIsInVuY29ucyIsInhzJDAiLCJsZW5ndGgkMCIsInhzJDEiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJhY2N1JDEiLCJmb3JfYWxsIiwicCIsImV4aXN0cyIsImZpbmQiLCJmaW5kX21hcCIsIml0ZXIyIiwieXMiLCJ5cyQwIiwieXMkMSIsImZvbGRfbGVmdDIiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJlcXVhbCQwIiwiZXEiLCJjb21wYXJlJDAiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwiZmFpbHVyZSIsIm1lbW9pemUiLCJvbmNlIiwiYWN0aW9uIiwiemlwIiwibWFwMiIsImludGVybGVhdmUiLCJzb3J0ZWRfbWVyZ2UxIiwic29ydGVkX21lcmdlIiwibWFwX2ZzdCIsInh5cyIsInh5cyQwIiwibWFwX3NuZCIsInVuemlwIiwiZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIiwiZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCIsInoiLCJwYXJ0aXRpb25fbWFwIiwicGFydGl0aW9uIiwicGVlbCIsInhzcyIsInRyYW5zcG9zZSIsInRhaWxzIiwiaGVhZHMiLCJyZW1haW5kZXJzIiwieHNzJDAiLCJ0YWlscyQwIiwiaGVhZHMkMCIsIm1hcF9wcm9kdWN0IiwicHJvZHVjdCIsIm9mX2Rpc3BlbnNlciIsIml0IiwidG9fZGlzcGVuc2VyIiwiaW50cyIsIm5vbmUiLCJzb21lIiwidmFsdWUiLCJkZWZhdWx0JDAiLCJnZXQkMCIsImJpbmQiLCJqb2luIiwibWFwJDIiLCJmb2xkJDAiLCJpdGVyJDAiLCJpc19ub25lIiwiaXNfc29tZSIsImVxdWFsJDEiLCJvMCIsInYxIiwidjAiLCJjb21wYXJlJDEiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsInZhbHVlJDAiLCJnZXRfb2siLCJnZXRfZXJyb3IiLCJiaW5kJDAiLCJqb2luJDAiLCJtYXAkMyIsIm1hcF9lcnJvciIsImZvbGQkMSIsIml0ZXIkMSIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwiZXF1YWwkMiIsInIwIiwicjEiLCJjb21wYXJlJDIiLCJ0b19vcHRpb24iLCJ0b19saXN0JDAiLCJ0b19zZXEkMCIsImVxdWFsJDMiLCJjb21wYXJlJDMiLCJ0b19mbG9hdCIsInRvX3N0cmluZyQwIiwiZXNjYXBlZCIsImxvd2VyY2FzZSIsInVwcGVyY2FzZSIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImNvbXBhcmUkNCIsImMxIiwiYzIiLCJlcXVhbCQ0IiwibWluJDAiLCJtYXgkMCIsImxvX2JvdW5kIiwiaGlfYm91bmQiLCJib20iLCJyZXAiLCJzdWNjIiwicHJlZCIsImlzX3ZhbGlkIiwib2ZfaW50IiwiaXNfY2hhciIsIm9mX2NoYXIiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJlcXVhbCQ1IiwiY29tcGFyZSQ1IiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsImRlY19pbnZhbGlkIiwidXRmXzhfYnl0ZV9sZW5ndGgiLCJ1dGZfMTZfYnl0ZV9sZW5ndGgiLCJsZW5ndGgkMSIsInBhcmFtJDAiLCJjb25zJDAiLCJudGgiLCJsJDAiLCJsJDEiLCJudGhfb3B0IiwicmV2X2FwcGVuZCIsImwxJDAiLCJsMiQwIiwibDEkMSIsImwyJDEiLCJyZXYiLCJpbml0X2F1eCQwIiwicGFyYW0iLCJhMiIsImExIiwicGFpciIsIngkMCIsInJ5IiwicngiLCJ0MiIsImgyIiwidDEiLCJoMSIsInNvcnQiLCJ4MiIsIngxIiwidGwkMSIsIngzIiwieDIkMCIsIngxJDAiLCJuMSIsIm4yIiwicmV2X3NvcnQiLCJ0bCQwIiwiYyQwIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiYWNjdSQyIiwiYXV4IiwidGFpbCIsImRpcmVjdCIsImRlcHRoIiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsImFicyQwIiwibWF4X2ludCQwIiwibWluX2ludCQwIiwibG9nbm90IiwiZXF1YWwkNyIsImNvbXBhcmUkNyIsIm1pbiQxIiwibWF4JDEiLCJ0b19zdHJpbmckMSIsInN5bWJvbCQwIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwib2ZzMSIsIm9mczIiLCJzZXAiLCJzZXBsZW4iLCJkc3QiLCJpc19zcGFjZSIsImFwcGx5MSIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaSQxIiwiaW5kZXhfcmVjX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXhfcmVjX29wdCIsIm5ld19sZW4iLCJuZXdfYnVmIiwiZ2V0JDEiLCJzZXQkMCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImkkNCIsImIxJDEiLCJpJDUiLCJiMiQxIiwiaSQ2IiwiaSQxMCIsImIxJDMiLCJpJDExIiwiYjIkMyIsImkkMTIiLCJiMyQxIiwiaSQ3IiwiYjEkMiIsImkkOCIsImIyJDIiLCJpJDkiLCJiMyQwIiwiaSQxMyIsImIxJDQiLCJpJDE0IiwiYjIkNCIsImkkMiIsImIxJDAiLCJpJDMiLCJiMiQwIiwiaSQxNSIsImIxJDUiLCJzZXQiLCJsYXN0IiwibGFzdCQwIiwibGFzdCQxIiwibGFzdCQzIiwibGFzdCQyIiwibGFzdCQ0IiwibGFzdCQ1IiwiaGkiLCJsbyIsImlzX3NwYWNlJDAiLCJpbmRleF9yZWMkMCIsImluZGV4X3JlY19vcHQkMCIsInJpbmRleF9yZWMkMCIsInJpbmRleF9yZWNfb3B0JDAiLCJnIiwiZXF1YWwkMTAiLCJjb21wYXJlJDEwIiwidG9fc3RyaW5nJDIiLCJ0b19idWZmZXIiLCJidWZmIiwiZmxhZ3MiLCJoZWFkZXJfc2l6ZSIsImRhdGFfc2l6ZSIsInRvdGFsX3NpemUiLCJmcm9tX2J5dGVzIiwiZnJvbV9zdHJpbmciLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJwYXJhbSQxIiwiaGQkMCIsImlucHV0X2FycmF5IiwiZWx0Iiwib3V0cHV0X2FycmF5IiwiZWx0JDAiLCJhY2MkMiIsImEwIiwiYmkiLCJhaSIsIm5hIiwibmIiLCJtYXhzb24iLCJpMzEiLCJ0cmlja2xlZG93biIsInRyaWNrbGUiLCJidWJibGVkb3duIiwiYnViYmxlIiwiZSQwIiwiZmF0aGVyIiwibWVyZ2UiLCJzcmMxb2ZzIiwic3JjMWxlbiIsInNyYzIiLCJzcmMyb2ZzIiwic3JjMmxlbiIsImRzdG9mcyIsInNyYzFyIiwic3JjMnIiLCJzMiQxIiwiczEkMSIsImkxIiwiaTIiLCJpMiQwIiwiZCQwIiwiczIkMCIsImkxJDAiLCJkJDEiLCJzMSQwIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsInplcm8kMCIsIm9uZSQwIiwibWludXNfb25lJDAiLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsInBpIiwiaXNfaW50ZWdlciIsInN1Y2MkMCIsInByZWQkMCIsImVxdWFsJDExIiwibWluJDIiLCJtYXgkMiIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwiaGFzaCQwIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsIm1ha2UkMiIsImluaXQkNCIsImFwcGVuZCQyIiwiY29uY2F0JDMiLCJobGVuIiwic3ViJDIiLCJjb3B5JDIiLCJmaWxsJDEiLCJibGl0JDIiLCJzcmMiLCJzb2ZzIiwiZG9mcyIsInRvX2xpc3QkMiIsIm9mX2xpc3QkMCIsImgiLCJpdGVyJDYiLCJpdGVyMiQyIiwibWFwJDgiLCJtYXAyJDIiLCJpdGVyaSQ0IiwibWFwaSQ0IiwiZm9sZF9sZWZ0JDQiLCJmb2xkX3JpZ2h0JDMiLCJleGlzdHMkNCIsImZvcl9hbGwkNCIsIm1lbSQxIiwibWVtX2llZWUiLCJzb3J0JDAiLCJzdGFibGVfc29ydCIsInRvX3NlcSQ1IiwidG9fc2VxaSQyIiwib2Zfc2VxJDMiLCJtYXBfdG9fYXJyYXkiLCJtYXBfZnJvbV9hcnJheSIsInplcm8kMSIsIm9uZSQxIiwibWludXNfb25lJDEiLCJzdWNjJDEiLCJwcmVkJDEiLCJhYnMkMSIsIm1pbl9pbnQkMSIsIm1heF9pbnQkMSIsImxvZ25vdCQwIiwidW5zaWduZWRfdG9faW50IiwidG9fc3RyaW5nJDMiLCJvZl9zdHJpbmdfb3B0JDAiLCJjb21wYXJlJDExIiwiZXF1YWwkMTIiLCJ1bnNpZ25lZF9jb21wYXJlIiwibSIsIm1pbiQzIiwibWF4JDMiLCJ1bnNpZ25lZF9kaXYiLCJxIiwidW5zaWduZWRfcmVtIiwic3VjYyQyIiwicHJlZCQyIiwiYWJzJDIiLCJsb2dub3QkMSIsIm1heF9pbnQkMyIsInVuc2lnbmVkX3RvX2ludCQwIiwidG9fc3RyaW5nJDQiLCJvZl9zdHJpbmdfb3B0JDEiLCJjb21wYXJlJDEyIiwiZXF1YWwkMTMiLCJ1bnNpZ25lZF9jb21wYXJlJDAiLCJtaW4kNCIsIm1heCQ0IiwidW5zaWduZWRfZGl2JDAiLCJ1bnNpZ25lZF9yZW0kMCIsInplcm8kMyIsIm9uZSQzIiwibWludXNfb25lJDMiLCJzdWNjJDMiLCJwcmVkJDMiLCJhYnMkMyIsIm1pbl9pbnQkMyIsIm1heF9pbnQkNCIsImxvZ25vdCQyIiwidW5zaWduZWRfdG9faW50JDEiLCJ0b19zdHJpbmckNSIsIm9mX3N0cmluZ19vcHQkMiIsImNvbXBhcmUkMTMiLCJlcXVhbCQxNCIsInVuc2lnbmVkX2NvbXBhcmUkMSIsIm1pbiQ1IiwibWF4JDUiLCJ1bnNpZ25lZF9kaXYkMSIsInVuc2lnbmVkX3JlbSQxIiwiZW5naW5lIiwidGJsIiwic3RhdGUiLCJuZXdfZW5naW5lIiwiZnJvbV9mdW5jdGlvbiIsIm9wdCIsInN0aCIsIndpdGhfcG9zaXRpb25zIiwiYXV4X2J1ZmZlciIsImxleGJ1ZiIsInJlYWQiLCJuZXdsZW4iLCJuZXdidWYiLCJmcm9tX2NoYW5uZWwiLCJmcm9tX3N0cmluZyQwIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJhcmckMSIsImNtZCQwIiwiZXhuIiwiY3Vycl9jaGFyIiwidG9rIiwicGVla192YWwiLCJzeW1ib2xfc3RhcnRfcG9zIiwic3QiLCJlbiIsInN5bWJvbF9lbmRfcG9zIiwicmhzX3N0YXJ0X3BvcyIsInJoc19lbmRfcG9zIiwic3ltYm9sX3N0YXJ0Iiwic3ltYm9sX2VuZCIsInJoc19zdGFydCIsInJoc19lbmQiLCJpc19jdXJyZW50X2xvb2thaGVhZCIsInBhcnNlX2Vycm9yIiwiaGVpZ2h0IiwiaGwiLCJoJDAiLCJociIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiIsImxybCIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiIsInJsbCIsImFkZCIsInNpbmdsZXRvbiIsImFkZF9taW5fZWxlbWVudCIsImFkZF9tYXhfZWxlbWVudCIsInJoIiwibGgiLCJtaW5fZWx0IiwibWluX2VsdF9vcHQiLCJtYXhfZWx0IiwibWF4X2VsdF9vcHQiLCJyZW1vdmVfbWluX2VsdCIsInIkMCIsInNwbGl0IiwicHJlcyIsInByZXMkMCIsIm1lbSIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJzJDEiLCJlJDEiLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJmaW5kX2ZpcnN0X29wdCIsImZpbmRfbGFzdCIsImZpbmRfbGFzdF9vcHQiLCJmaW5kX29wdCIsInRyeV9qb2luIiwidiQxIiwib2ZfbGlzdCIsInN1YiIsImwkMyIsIngwIiwibCQ0IiwieDAkMCIsImwkNSIsIngwJDEiLCJubCIsIm1pZCIsImwkMiIsIng0IiwiYWRkX3NlcSIsIm9mX3NlcSIsInNlcV9vZl9lbnVtIiwic25vY19lbnVtIiwicmV2X3NlcV9vZl9lbnVtIiwidG9fcmV2X3NlcSIsInRvX3NlcV9mcm9tIiwibG93IiwibGQiLCJscmQiLCJyZCIsInJsZCIsImRhdGEiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtJDEiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjcmVhdGUkMCIsImNsZWFyIiwiY29weSQzIiwicHVzaCIsInBvcCIsInBvcF9vcHQiLCJ0b3AiLCJ0b3Bfb3B0IiwiaXNfZW1wdHkkMCIsImxlbmd0aCQyIiwiaXRlciQ3IiwiZm9sZCQyIiwidG9fc2VxJDYiLCJvZl9zZXEkNCIsImNyZWF0ZSQxIiwiY2xlYXIkMCIsImNlbGwiLCJwZWVrIiwiY29udGVudCIsInBlZWtfb3B0IiwidGFrZSQwIiwidGFrZV9vcHQiLCJjb3B5JDQiLCJxX3JlcyIsInByZXYiLCJpc19lbXB0eSQxIiwibGVuZ3RoJDMiLCJpdGVyJDgiLCJmb2xkJDMiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJ0b19zZXEkNyIsImFkZF9zZXEkMCIsIm9mX3NlcSQ1IiwiY291bnQiLCJmaWxsX2J1ZmYiLCJnZXRfZGF0YSIsImQxMSIsImEkMCIsImEkMSIsInBlZWtfZGF0YSIsInBlZWskMCIsImp1bmtfZGF0YSIsImp1bmsiLCJuZ2V0X2RhdGEiLCJhbCIsIm5wZWVrIiwiZW1wdHkkMiIsIml0ZXIkOSIsInN0cm0iLCJmcm9tIiwib2ZfbGlzdCQxIiwib2Zfc3RyaW5nIiwib2ZfYnl0ZXMkMCIsIm9mX2NoYW5uZWwiLCJpYXBwIiwiaWNvbnMiLCJpc2luZyIsImxhcHAiLCJsY29ucyIsImxzaW5nIiwic2VtcHR5Iiwic2xhenkiLCJkdW1wIiwiZHVtcF9kYXRhIiwiY3JlYXRlJDIiLCJjb250ZW50cyIsInRvX2J5dGVzJDAiLCJzdWIkMyIsImJsaXQkMyIsIm50aCQwIiwibGVuZ3RoJDQiLCJjbGVhciQxIiwicmVzZXQiLCJyZXNpemUiLCJtb3JlIiwib2xkX3BvcyIsIm9sZF9sZW4iLCJuZXdfYnVmZmVyIiwiYWRkX2NoYXIiLCJwb3MiLCJ1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXgiLCJ1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4IiwiYWRkX3V0Zl84X3VjaGFyIiwiYWRkX3V0Zl8xNmJlX3VjaGFyIiwiYWRkX3V0Zl8xNmxlX3VjaGFyIiwiYWRkX3N1YnN0cmluZyIsIm9mZnNldCIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJjdXJyZW50Iiwib3BlbmluZyIsImxpbSQwIiwic3RvcCIsImskMiIsImskMCIsImskMSIsIm5leHRfaSIsImlkZW50IiwidHJ1bmNhdGUiLCJ0b19zZXEkOCIsInRvX3NlcWkkMyIsImFkZF9zZXEkMSIsIm9mX3NlcSQ2IiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJjcmVhdGVfY2hhcl9zZXQiLCJhZGRfaW5fY2hhcl9zZXQiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImNoYXJfc2V0JDAiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiZm10IiwicGFkX29wdCQwIiwicGFkX29wdCQxIiwicGFkX29wdCQyIiwicGFkX29wdCQzIiwicGFkX29wdCQ0IiwicHJlY19vcHQiLCJwYWRfb3B0JDUiLCJuZGVjIiwicGFkX29wdCQ2IiwicGFkX29wdCQ3IiwicGFkX29wdCQ4IiwiZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24iLCJidWZmZXJfY3JlYXRlIiwiaW5pdF9zaXplIiwiYnVmZmVyX2NoZWNrX3NpemUiLCJvdmVyaGVhZCIsIm1pbl9sZW4iLCJuZXdfc3RyIiwiYnVmZmVyX2FkZF9jaGFyIiwiYnVmZmVyX2FkZF9zdHJpbmciLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJjRiIsImJwcmludF9wYWR0eSIsInBhZHR5IiwiYnByaW50X2lnbm9yZWRfZmxhZyIsImlnbl9mbGFnIiwiYnByaW50X3BhZF9vcHQiLCJicHJpbnRfcGFkZGluZyIsInBhZHR5JDAiLCJicHJpbnRfcHJlY2lzaW9uIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0Iiwic3RyJDAiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiYnByaW50X2ZtdHR5Iiwic3ViX2ZtdHR5Iiwic3ViX2ZtdHR5JDAiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5Iiwic3RyaW5nX29mX2ZtdCIsImZtdGl0ZXIiLCJmbXQkMCIsImlnbl9mbGFnJDAiLCJjaHIkMCIsInN0ciQxIiwiaXNfYWxvbmUkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDAiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJmbXR0eV9yZWxfZGV0IiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJ0cmFucyIsImpkIiwiZGoiLCJnYSIsImFnIiwiZGUkOSIsImVkJDkiLCJhZiQ5IiwiZmEkOSIsImRlJDEwIiwiZWQkMTAiLCJhZiQxMCIsImZhJDEwIiwiZGUkMTEiLCJlZCQxMSIsImFmJDExIiwiZmEkMTEiLCJkZSQxMiIsImVkJDEyIiwiYWYkMTIiLCJmYSQxMiIsImRlJDEzIiwiZWQkMTMiLCJhZiQxMyIsImZhJDEzIiwicmVzdDIiLCJyZXN0MiQwIiwicmVzdDIkMSIsInJlc3QyJDIiLCJyZXN0MiQzIiwicmVzdDIkNCIsInJlc3QyJDUiLCJyZXN0MiQ2IiwicmVzdDIkNyIsInR5MiQwIiwicmVzdDIkOCIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsInJlc3QyJDkiLCJyZXN0MiQxMCIsInJlc3QyJDExIiwicmVzdDIkMTIiLCJyZXN0MiQxMyIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJmbXR0eV9vZl9jdXN0b20iLCJhcml0eSQwIiwiZm10dHlfb2ZfZm10IiwidHlfcmVzdCIsInByZWNfdHkiLCJmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkiLCJ0eV9yZXN0JDAiLCJwcmVjX3R5JDAiLCJ0eV9yZXN0JDEiLCJwcmVjX3R5JDEiLCJ0eV9yZXN0JDIiLCJwcmVjX3R5JDIiLCJ0eV9yZXN0JDMiLCJwcmVjX3R5JDMiLCJmbXR0eSQxIiwiZm10dHkkMiIsImZtdHR5JDMiLCJ0eSQwIiwiZm10dHkkNCIsImZtdHR5JDUiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJ0eXBlX2lnbm9yZWRfcGFyYW1fb25lIiwiZm10dHlfcmVzdCIsImZtdF9yZXN0IiwiZm10dHlfcmVzdCQwIiwiZm10X3Jlc3QkMCIsImZtdF9yZXN0JDEiLCJmbXR0eV9yZXN0JDEiLCJmbXQkMiIsImZtdF9yZXN0JDIiLCJmbXR0eV9yZXN0JDIiLCJmbXQkMyIsImZtdF9yZXN0JDMiLCJmbXR0eV9yZXN0JDMiLCJmbXQkNCIsImZtdF9yZXN0JDQiLCJmbXR0eV9yZXN0JDQiLCJmbXQkNSIsImZtdF9yZXN0JDUiLCJmbXR0eV9yZXN0JDUiLCJwcmVjJDQiLCJmbXR0eSQ2IiwiZm10JDYiLCJmbXRfcmVzdCQ2IiwicHJlYyQ1IiwiZm10dHlfcmVzdCQ2IiwicHJlYyQ2IiwiZm10dHkkNyIsImZtdCQ3IiwiZm10X3Jlc3QkNyIsInByZWMkNyIsImZtdHR5X3Jlc3QkNyIsInByZWMkOCIsImZtdHR5JDgiLCJmbXQkOCIsImZtdF9yZXN0JDgiLCJmbXR0eV9yZXN0JDgiLCJmbXR0eSQ5IiwiZm10JDkiLCJmbXRfcmVzdCQ5IiwiZm10dHkkMTAiLCJmbXQkMTAiLCJmbXRfcmVzdCQxMCIsImZtdHR5JDExIiwiZm10JDExIiwiZm10X3Jlc3QkMTEiLCJmbXR0eSQxMiIsImZtdCQxMiIsImZtdHR5X3Jlc3QkOSIsImZtdF9yZXN0JDEyIiwiZm10dHkkMTMiLCJmbXQkMTMiLCJmbXR0eV9yZXN0JDEwIiwic3ViX2ZtdHR5MSIsImZtdF9yZXN0JDEzIiwic3ViX2ZtdHR5JDEiLCJmbXR0eSQxNCIsImZtdCQxNCIsImZtdHR5X3Jlc3QkMTEiLCJmbXRfcmVzdCQxNCIsImZtdHR5JDE1IiwiZm10JDE1IiwiZm10dHlfcmVzdCQxMiIsImZtdF9yZXN0JDE1IiwiZm10dHkkMTYiLCJmbXQkMTYiLCJmbXRfcmVzdCQxNiIsImZtdHR5JDE3IiwiZm10JDE3IiwiZm10X3Jlc3QkMTciLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5MyIsImZtdDMiLCJmbXQxJDAiLCJmbXR0eTIkMCIsImZtdDIkMCIsImZtdHR5MyQwIiwiZm10MyQwIiwiZm10dHlfcmVzdCQxMyIsImZtdF9yZXN0JDE4IiwiZm10dHkkMTgiLCJmbXQkMTgiLCJmbXR0eV9yZXN0JDE0IiwiZm10X3Jlc3QkMTkiLCJmbXR0eSQxOSIsImZtdCQxOSIsImZtdHR5X3Jlc3QkMTUiLCJmbXRfcmVzdCQyMCIsImZtdHR5JDIwIiwiZm10JDIwIiwiZm10dHlfcmVzdCQxNiIsImZtdHR5JDIxIiwiZm10JDIxIiwic3ViX2ZtdHR5JDIiLCJzdWJfZm10dHkkMyIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsImZtdHR5JDIyIiwiZm10JDIyIiwic3ViX2ZtdHR5JDQiLCJzdWJfZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0JDAiLCJzdWJfZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkNSIsInN1Yl9mbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkOCIsInN1Yl9mbXR0eV9yZXN0JDkiLCJzdWJfZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDExIiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJzdWJfZm10dHlfcmVzdCQxMyIsInN1Yl9mbXR0eV9yZXN0JDE0Iiwic3ViMl9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE1Iiwic3ViMl9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTYiLCJzdWIyX2ZtdHR5JDEiLCJzdWIxX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTciLCJzdWIyX2ZtdHR5JDIiLCJzdWIxX2ZtdHR5JDAiLCJzdWJfZm10dHlfcmVzdCQxOCIsInN1Yl9mbXR0eV9yZXN0JDE5Iiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJzdWJfZm10dHlfcmVzdCQyMSIsInN1Yl9mbXR0eV9yZXN0JDIyIiwic3ViX2ZtdHR5X3Jlc3QkMjMiLCJzdWJfZm10dHlfcmVzdCQyNCIsInN1Yl9mbXR0eV9yZXN0JDI1Iiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24iLCJtYWtlX3ByaW50ZiIsInAkMCIsInAkMSIsIm1ha2VfcGFkZGluZyIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiQwIiwiYWNjJDMiLCJhY2MkNCIsImskMyIsImthY2MiLCJrJDQiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaWdub3JlZF9wYXJhbSIsImZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIiwibWFrZV9pcHJpbnRmIiwibWFrZV9pcHJpbnRmJDAiLCJrb2MiLCJyZXN0JDI0IiwicmVzdCQyNSIsImZuX29mX2N1c3RvbV9hcml0eSQwIiwiZm5fb2ZfY3VzdG9tX2FyaXR5Iiwib3V0cHV0X2FjYyIsInAkMiIsInAkMyIsInAkNCIsImJ1ZnB1dF9hY2MiLCJzdHJwdXRfYWNjIiwiZmFpbHdpdGhfbWVzc2FnZSIsIm9wZW5fYm94X29mX3N0cmluZyIsImludmFsaWRfYm94IiwicGFyc2Vfc3BhY2VzIiwicGFyc2VfbHdvcmQiLCJwYXJzZV9pbnQiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsInVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCIsImVuZF9pbmQiLCJpbnZhbGlkX2Zvcm1hdF93aXRob3V0IiwiZXhwZWN0ZWRfY2hhcmFjdGVyIiwiZXhwZWN0ZWQiLCJhZGRfbGl0ZXJhbCIsImxpdF9zdGFydCIsInNpemUiLCJwYXJzZSIsInN0cl9pbmQkMiIsInBhcnNlX2ZsYWdzIiwic3RyX2luZCQwIiwicGFyc2VfdGFnIiwicGFyc2VfZ29vZF9icmVhayIsInBhcnNlX21hZ2ljX3NpemUiLCJzdHJfaW5kJDEiLCJwYXJzZV9jb252ZXJzaW9uIiwicGN0X2luZCIsInBsdXMiLCJzcGFjZSIsInBhZHByZWMiLCJwbHVzX3VzZWQiLCJoYXNoX3VzZWQiLCJzcGFjZV91c2VkIiwiaWduX3VzZWQiLCJwYWRfdXNlZCIsInByZWNfdXNlZCIsImdldF9wbHVzIiwiZ2V0X2hhc2giLCJnZXRfc3BhY2UiLCJnZXRfaWduIiwiZ2V0X3BhZCIsImdldF9wcmVjIiwiZ2V0X3BhZHByZWMiLCJnZXRfaW50X3BhZCIsImluY29tcGF0aWJsZV9mbGFnIiwiY2hlY2tfbm9fMCIsIm9wdF9vZl9wYWQiLCJ3aWR0aCQxIiwiZ2V0X3BhZF9vcHQiLCJnZXRfcGFkcHJlY19vcHQiLCJmbXRfcmVzdWx0Iiwic3ViX2VuZCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2ZtdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJuZXh0X2luZCIsImNoYXJfc2V0JDEiLCJpZ25vcmVkJDkiLCJjaGFyX2Zvcm1hdCIsImZtdF9yZXN0JDIxIiwiZm10X3Jlc3QkMjIiLCJwYWQkOSIsImZtdF9yZXN0JDIzIiwiaWdub3JlZCQxMCIsImZtdF9yZXN0JDI0IiwicGFkJDEwIiwiZm10X3Jlc3QkMjUiLCJzdWJfZW5kJDAiLCJzdWJfZm10JDAiLCJmbXRfcmVzdCQyNiIsImlnbm9yZWQkMTEiLCJpZ25vcmVkJDMiLCJzeW1iJDAiLCJpZ25vcmVkJDUiLCJjb21wdXRlX2ludF9jb252IiwiaWdub3JlZCQ4Iiwic3BhY2UkMSIsImhhc2gkMSIsInBsdXMkMiIsImtpbmQiLCJpZ25vcmVkJDQiLCJpZ25vcmVkIiwiaWdub3JlZCQwIiwiaWdub3JlZCQxIiwicGx1cyQwIiwic3BhY2UkMCIsInBsdXMkMSIsImlnbiQwIiwicGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIiwibWludXMiLCJwYXJzZV9jb252IiwicGFyc2VfYWZ0ZXJfcGFkZGluZyIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9wb3NpdGl2ZSIsIm5ld19pbmQiLCJtaW51cyQwIiwic2V0X2ZsYWciLCJzdHJfaW5kJDMiLCJzdHJfaW5kJDQiLCJzdHJfaW5kJDUiLCJpc19vcGVuX3RhZyIsImluZCIsInN1Yl9zdHIiLCJzdWJfZm9ybWF0JDAiLCJmb3JtYXR0aW5nJDAiLCJmb3JtYXR0aW5nIiwic3RyX2luZF8xIiwicGFyc2VfaW50ZWdlciIsInN0cl9pbmRfMiIsInN0cl9pbmRfMyIsImZvcm1hdHRpbmdfbGl0JDAiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJzdWJfZW5kJDEiLCJzdWJfZW5kJDIiLCJzdHJfaW5kJDYiLCJzdHJfaW5kJDciLCJvcHRpb24iLCJzdWJmbXQiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImFzc29jMyIsInkyIiwieTEiLCJzcGxpdCQxIiwibWFrZV9zeW1saXN0IiwiaGVscF9hY3Rpb24iLCJhZGRfaGVscCIsInNwZWNsaXN0IiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJib29sX29mX3N0cmluZ19vcHQkMCIsImludF9vZl9zdHJpbmdfb3B0JDAiLCJmbG9hdF9vZl9zdHJpbmdfb3B0IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwiZm9sbG93JDAiLCJrZXl3b3JkIiwibm9fYXJnJDAiLCJmb2xsb3ciLCJub19hcmciLCJnZXRfYXJnJDAiLCJnZXRfYXJnIiwiY29uc3VtZV9hcmckMCIsImNvbnN1bWVfYXJnIiwidHJlYXRfYWN0aW9uJDAiLCJ0cmVhdF9hY3Rpb24iLCJmJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJyJDIiLCJhcmckMiIsImYkMyIsImFyZyQzIiwieCQxIiwiciQzIiwiYXJnJDQiLCJ4JDIiLCJzcGVjcyIsImYkNCIsImFyZyQ1IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiYXJnJDYiLCJuZXdhcmciLCJwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyIsInBhcnNlX2FyZ3ZfZHluYW1pYyIsImN1cnJlbnQkMCIsInBhcnNlX2FyZ3YiLCJtc2ckMCIsIm1zZyQxIiwicGFyc2VfZHluYW1pYyIsInBhcnNlX2V4cGFuZCIsInNlY29uZF93b3JkIiwibG9vcCIsIm1heF9hcmdfbGVuIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsImFsaWduIiwibGltaXQiLCJjb21wbGV0ZWQiLCJrc2QiLCJjdXRjb2wkMCIsInNwYWNlcyQwIiwiY3V0Y29sIiwia3dkX2xlbiIsInNwYWNlcyIsInJlYWRfYXV4IiwidHJpbSIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwiY29udiIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsImNvbnN0cnVjdG9yIiwidG9fc3RyaW5nJDYiLCJwcmludCIsImZjdCIsImNhdGNoJDAiLCJyYXdfYmFja3RyYWNlX2VudHJpZXMiLCJidCIsImNvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImZvcm1hdF9iYWNrdHJhY2Vfc2xvdCIsImlzX3JhaXNlIiwicHJpbnRfcmF3X2JhY2t0cmFjZSIsIm91dGNoYW4iLCJyYXdfYmFja3RyYWNlIiwiYmFja3RyYWNlIiwicHJpbnRfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZV90b19zdHJpbmciLCJiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsImV4bl9zbG90IiwiZXhuX3Nsb3RfaWQiLCJleG5fc2xvdF9uYW1lIiwiZXJyb3JzIiwiZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuIiwic3RhdHVzIiwidW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJlbXB0eV9iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZGVidWdnZXJfaW5fdXNlIiwiZXhuJDAiLCJyYXdfYmFja3RyYWNlJDAiLCJjb25zdCQwIiwiZmxpcCIsIm5lZ2F0ZSIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJ3b3JrIiwiZmluYWxseV9ub19leG4iLCJ3b3JrX2V4biIsIndvcmtfYnQiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJvdXRwdXQkMCIsImRpZ2VzdCIsImlucHV0JDAiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJuZXdfc3RhdGUiLCJhc3NpZ24iLCJzdDEiLCJzdDIiLCJmdWxsX2luaXQiLCJzZWVkIiwic2VlZCQwIiwibWFrZSQzIiwibWFrZV9zZWxmX2luaXQiLCJjb3B5JDUiLCJiaXRzIiwiY3VydmFsIiwibmV3dmFsIiwibmV3dmFsMzAiLCJpbnRhdXgiLCJpbnQkMCIsImJvdW5kIiwiZnVsbF9pbnQiLCJicG9zIiwiYnBvcyQwIiwiaW50MzIiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJib29sIiwiYml0czMyIiwiYml0czY0IiwibmF0aXZlYml0cyIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludDMyJDAiLCJuYXRpdmVpbnQkMCIsImludDY0JDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJiaXRzMzIkMCIsImJpdHM2NCQwIiwibmF0aXZlYml0cyQwIiwiZnVsbF9pbml0JDAiLCJpbml0JDUiLCJzZWxmX2luaXQiLCJnZXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJvbmdvaW5nX3RyYXZlcnNhbCIsImZsaXBfb25nb2luZ190cmF2ZXJzYWwiLCJwYXJhbXMiLCJyYW5kb21pemVkX2RlZmF1bHQiLCJyYW5kb21pemVkIiwicmFuZG9taXplIiwiaXNfcmFuZG9taXplZCIsInBybmciLCJwb3dlcl8yX2Fib3ZlIiwiY3JlYXRlJDMiLCJpbml0aWFsX3NpemUiLCJyYW5kb20iLCJjbGVhciQyIiwicmVzZXQkMCIsImNvcHlfYnVja2V0bGlzdCIsImtleSQwIiwibmV4dCQwIiwiY29weSQ2IiwibGVuZ3RoJDUiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwiY2VsbCQwIiwibmlkeCIsIm1hdGNoIiwibWF0Y2gkMCIsInJlc2l6ZSQwIiwib3NpemUiLCJpdGVyJDEwIiwiZG9fYnVja2V0Iiwib2xkX3RyYXYiLCJmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiZm9sZCQ0IiwiYiQwIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0b19zZXEkOSIsInRibF9kYXRhIiwiYnVjayIsImJ1Y2skMCIsImJ1Y2skMSIsInRvX3NlcV9rZXlzIiwidG9fc2VxX3ZhbHVlcyIsImtleV9pbmRleCIsImJ1Y2tldCIsImsxIiwibmV4dDEiLCJrMiIsIm5leHQyIiwiazMiLCJkMyIsIm5leHQzIiwiZmluZF9hbGwiLCJmaW5kX2luX2J1Y2tldCIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsImNvcHkiLCJzeiIsImhhc2hfcGFyYW0iLCJzZWVkZWRfaGFzaCIsImFkZCQwIiwiZmluZCQxIiwiZmluZF9vcHQkMSIsImZpbmRfYWxsJDAiLCJtZW0kMiIsImFkZF9zZXEkMiIsIm9mX3NlcSQ3IiwicmVidWlsZCIsIndlYWtfY3JlYXRlIiwibGVuZ3RoJDYiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCQwIiwic2V0JDEiLCJnZXQkMiIsImdldF9jb3B5IiwiY2hlY2skMCIsImJsaXQkNCIsImZpbGwkMiIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJzeiQwIiwic3okMSIsImNvdW50X2J1Y2tldCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJpbmRleCIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJuZXd0Iiwib2IiLCJvaCIsInNldHRlciQwIiwibmkiLCJmaW5kX29yIiwiaWZub3Rmb3VuZCIsImZpbmRfc2hhZG93IiwiaWZmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJpZCQwIiwidW5rbm93biIsInBwX2VucXVldWUiLCJ0b2tlbiIsInBwX2luZmluaXR5IiwicHBfb3V0cHV0X3N0cmluZyIsInBwX291dHB1dF9uZXdsaW5lIiwiZm9ybWF0X3BwX3RleHQiLCJ0ZXh0IiwiZm9ybWF0X3N0cmluZyIsImJyZWFrX25ld19saW5lIiwicmVhbF9pbmRlbnQiLCJicmVha19saW5lIiwiYnJlYWtfc2FtZV9saW5lIiwiZm9ybWF0X3BwX3Rva2VuIiwic2l6ZSQwIiwidGFicyIsImFkZF90YWIiLCJscyIsInRhZ19uYW1lIiwibWFya2VyIiwiYnJlYWtzIiwiZml0cyIsIm9mZiIsImJveF90eXBlJDAiLCJvZmYkMCIsImluc2VydGlvbl9wb2ludCIsInRhYnMkMCIsImZpcnN0IiwiaGVhZCIsInRhYiIsIm9mZiQxIiwiaW5zZXJ0aW9uX3BvaW50JDAiLCJ3aWR0aCQyIiwiYm94X3R5cGUkMSIsInRib3giLCJ0YWdfbmFtZSQwIiwibWFya2VyJDAiLCJhZHZhbmNlX2xlZnQiLCJwZW5kaW5nX2NvdW50IiwiZW5xdWV1ZV9hZHZhbmNlIiwiZW5xdWV1ZV9zdHJpbmdfYXMiLCJpbml0aWFsaXplX3NjYW5fc3RhY2siLCJzdGFjayIsInF1ZXVlX2VsZW0iLCJzZXRfc2l6ZSIsImxlZnRfdG90YWwiLCJzY2FuX3B1c2giLCJlbGVtIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfb3Blbl90YWciLCJwcF9jbG9zZV90YWciLCJwcF9zZXRfcHJpbnRfdGFncyIsInBwX3NldF9tYXJrX3RhZ3MiLCJwcF9nZXRfcHJpbnRfdGFncyIsInBwX2dldF9tYXJrX3RhZ3MiLCJwcF9zZXRfdGFncyIsInBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBjdCIsInBvdCIsIm1jdCIsIm1vdCIsInBwX3Jpbml0IiwicHBfZmx1c2hfcXVldWUiLCJwcF9wcmludF9hc19zaXplIiwicHBfcHJpbnRfYXMiLCJpc2l6ZSIsInBwX3ByaW50X3N0cmluZyIsInBwX3ByaW50X2J5dGVzIiwicHBfcHJpbnRfaW50IiwicHBfcHJpbnRfZmxvYXQiLCJwcF9wcmludF9ib29sIiwicHBfcHJpbnRfY2hhciIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2luZGVudCIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJmbHVzaF9idWZmZXJfZm9ybWF0dGVyIiwiZmx1c2hfc3RyX2Zvcm1hdHRlciIsIm1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJzb2IiLCJnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJpdGVtcyIsImFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSIsIml0ZW0iLCJmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2IiLCJvcGVuX2hib3giLCJvcGVuX3Zib3giLCJvcGVuX2h2Ym94Iiwib3Blbl9ob3Zib3giLCJvcGVuX2JveCIsImNsb3NlX2JveCIsIm9wZW5fdGFnIiwiY2xvc2VfdGFnIiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfc3RyaW5nJDAiLCJwcmludF9ieXRlcyQwIiwicHJpbnRfaW50JDAiLCJwcmludF9mbG9hdCQwIiwicHJpbnRfY2hhciQwIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9uZXdsaW5lJDAiLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwidnMiLCJvcHQkMSIsInBwX3ByaW50X3NlcSIsInNlcSQxIiwic2VxJDIiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0Iiwib3V0cHV0X2FjYyQwIiwiYnR5IiwicCQ1IiwicCQ2Iiwic3RycHV0X2FjYyQwIiwic2l6ZSQxIiwia2ZwcmludGYkMCIsImlrZnByaW50ZiQwIiwiaWZwcmludGYkMCIsImZwcmludGYkMCIsInByaW50ZiQwIiwiZXByaW50ZiQwIiwia2RwcmludGYiLCJkcHJpbnRmIiwia3ByaW50ZiIsInNwcmludGYkMCIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsInBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImJwcmludGYkMCIsInBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsInN0cmluZ2lmeSIsInBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImZ1bnMiLCJtYXJrX29wZW5fdGFnIiwibWFya19jbG9zZV90YWciLCJwcmludF9vcGVuX3RhZyIsInByaW50X2Nsb3NlX3RhZyIsInNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsInJlc2V0X3Rva2VuIiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJza2lwX2NoYXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiY3JlYXRlJDQiLCJpbmFtZSIsImZyb21fc3RyaW5nJDEiLCJmcm9tX2Z1bmN0aW9uJDAiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJzdGRpYiIsIm9wZW5faW5fZmlsZSIsIm9wZW5faW4iLCJmcm9tX2ZpbGUiLCJmcm9tX2ZpbGVfYmluIiwiZnJvbV9jaGFubmVsJDAiLCJjbG9zZV9pbiIsImljJDAiLCJtZW1vIiwibWVtb19mcm9tX2ljIiwibWVtb19mcm9tX2NoYW5uZWwiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfZmxvYXQiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja190aGlzX2NoYXIiLCJjaGVja19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwidG9rZW5fZmxvYXQiLCJzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciIsInNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJzY2FuX2NoYXIiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwic2Nhbl9jYW1sX2NoYXIiLCJmaW5kX3N0b3AiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsImdldF9jb3VudGVyIiwid2lkdGhfb2ZfcGFkX29wdCIsInN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQiLCJmbXRpbmciLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzJDAiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzJDAiLCJyZWFkZXIiLCJuZXdfayIsInJlYWRlcnNfcmVzdCIsInRha2VfZm9ybWF0X3JlYWRlcnMiLCJmbXQkMjMiLCJmbXQkMjQiLCJmbXQkMjUiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIiwicGFkX3ByZWNfc2NhbmYiLCJyZWFkZXJzIiwibWFrZV9zY2FuZiIsInNjYW4kMCIsInN0cl9yZXN0Iiwic2NhbiQxIiwic2NhbiQyIiwic2NhbiQzIiwic2NhbiQ0IiwiY29udiQwIiwic2NhbiQ1IiwiY29udiQxIiwic2NhbiQ2IiwiY29udiQyIiwic2NhbiQ3Iiwic2NhbiQ4IiwiZm10aW5nX2xpdCQwIiwic3RwJDAiLCJzJDIiLCJzdHJfcmVzdCQwIiwicmVzdCQyNiIsImFyZ19yZXN0Iiwia3NjYW5mIiwiZWYiLCJhcHBseSIsImFyZ3MkMCIsImV4YyIsImJzY2FuZiIsImtzc2NhbmYiLCJzc2NhbmYiLCJzY2FuZiIsImJzY2FuZl9mb3JtYXQiLCJmb3JtYXQiLCJzc2NhbmZfZm9ybWF0IiwiZm9ybWF0X2Zyb21fc3RyaW5nIiwidW5lc2NhcGVkIiwia2ZzY2FuZiIsImZzY2FuZiIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwicGFyYW1zJDAiLCJpbml0aWFsX29iamVjdF9zaXplIiwiZHVtbXlfaXRlbSIsInRhZyIsImNvbXBhcmUkMTQiLCJjb21wYXJlJDE1IiwiY29tcGFyZSQxNiIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwicmVzaXplJDEiLCJhcnJheSIsIm5ld19zaXplIiwib2xkX3NpemUiLCJuZXdfYnVjayIsIm1ldGhvZF9jb3VudCIsImluc3RfdmFyX2NvdW50IiwibmV3X21ldGhvZCIsInRhYmxlIiwiZ2V0X21ldGhvZF9sYWJlbCIsImxhYmVsIiwiZ2V0X21ldGhvZF9sYWJlbHMiLCJuYW1lcyIsInNldF9tZXRob2QiLCJlbGVtZW50IiwiZ2V0X21ldGhvZCIsInRvX2xpc3QkMyIsImFyciIsIm5hcnJvdyIsInZhcnMiLCJ2aXJ0X21ldGhzIiwiY29uY3JfbWV0aHMiLCJ2YXJzJDAiLCJ2aXJ0X21ldGhzJDAiLCJjb25jcl9tZXRocyQwIiwidmlydF9tZXRoX2xhYnMiLCJjb25jcl9tZXRoX2xhYnMiLCJsYWIiLCJ0dmFycyIsImJ5X25hbWUiLCJieV9sYWJlbCIsIm1ldCIsImhtIiwid2lkZW4iLCJzYXZlZF92YXJzIiwic2F2ZWRfaGlkZGVuX21ldGhzIiwibmV3X3Nsb3QiLCJuZXdfdmFyaWFibGUiLCJ0b19hcnJheSIsIm5ld19tZXRob2RzX3ZhcmlhYmxlcyIsIm1ldGhzIiwidmFscyIsIm1ldGhzJDAiLCJubWV0aHMiLCJudmFscyIsImdldF92YXJpYWJsZSIsImdldF92YXJpYWJsZXMiLCJhZGRfaW5pdGlhbGl6ZXIiLCJjcmVhdGVfdGFibGUiLCJwdWJsaWNfbWV0aG9kcyIsInRhZ3MiLCJpbml0X2NsYXNzIiwiaW5oZXJpdHMiLCJjbGEiLCJzdXBlciQwIiwibm0iLCJtYWtlX2NsYXNzIiwicHViX21ldGhzIiwiY2xhc3NfaW5pdCIsImVudl9pbml0IiwibWFrZV9jbGFzc19zdG9yZSIsImluaXRfdGFibGUiLCJkdW1teV9jbGFzcyIsImxvYyIsInVuZGVmIiwiY3JlYXRlX29iamVjdCIsImNyZWF0ZV9vYmplY3Rfb3B0Iiwib2JqXzAiLCJpdGVyX2YiLCJydW5faW5pdGlhbGl6ZXJzIiwiaW5pdHMiLCJydW5faW5pdGlhbGl6ZXJzX29wdCIsImNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaSIsImdldF9kYXRhJDAiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290IiwidGFibGVzJDIiLCJ0YWJsZXMkMCIsInRhYmxlcyQxIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJjbG8kMCIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIngkMyIsIm4kNyIsIngkNCIsIm4kOCIsIm4kOSIsIngkNSIsImYkOCIsImUkMiIsIm4kMTAiLCJ4JDYiLCJmJDkiLCJuJDExIiwieCQ3IiwibiQxMiIsIngkOCIsIm4kMTMiLCJuJDE0IiwiZSQzIiwibiQxNSIsIm0kMiIsIngkOSIsIm0kMyIsIm4kMTYiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ1IiwibiQxOCIsInN0YXRzJDAiLCJpbml0X21vZF9ibG9jayIsImNvbXBzJDAiLCJtb2R1Iiwic2hhcGUiLCJmbiQwIiwiY29tcHMiLCJpbml0X21vZCIsInVwZGF0ZV9tb2RfYmxvY2siLCJjbCIsInVwZGF0ZV9tb2QiLCJpbml0aWFsX2J1ZmZlciIsImJ1ZmZlciIsImJ1ZnBvcyIsInJlc2V0X2J1ZmZlciIsInN0b3JlIiwibmV3YnVmZmVyIiwiZ2V0X3N0cmluZyIsIm1ha2VfbGV4ZXIiLCJrZXl3b3JkcyIsImt3ZF90YWJsZSIsImlkZW50X29yX2tleXdvcmQiLCJrZXl3b3JkX29yX2Vycm9yIiwiZW5kX2V4cG9uZW50X3BhcnQiLCJleHBvbmVudF9wYXJ0IiwibnVtYmVyIiwiaWRlbnQyIiwibmVnX251bWJlciIsIm5leHRfdG9rZW4kMCIsImVzY2FwZSIsIm1heWJlX2NvbW1lbnQiLCJjb21tZW50IiwibmV4dF90b2tlbiIsImhrZXkiLCJjbGVhbiIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJyZXBsYWNlX2J1Y2tldCIsIm5ld19kIiwiYnVja2V0X2xlbmd0aF9hbGl2ZSIsInN0YXRzX2FsaXZlIiwiY3JlYXRlJDUiLCJnZXRfa2V5JDAiLCJnZXRfa2V5X2NvcHkkMCIsInNldF9rZXkkMCIsInVuc2V0X2tleSQwIiwiY2hlY2tfa2V5JDAiLCJibGl0X2tleSQwIiwiZ2V0X2RhdGEkMSIsImdldF9kYXRhX2NvcHkiLCJzZXRfZGF0YSIsInVuc2V0X2RhdGEiLCJjaGVja19kYXRhIiwiYmxpdF9kYXRhIiwibWFrZSQ0IiwiZXBoIiwicXVlcnkiLCJzZXRfa2V5X2RhdGEiLCJtYWtlJDUiLCJhZGQkMSIsInRlc3Rfa2V5IiwicmVtb3ZlJDAiLCJmaW5kJDIiLCJsZW5ndGgkNyIsImNsZWFyJDMiLCJjcmVhdGUkNiIsImdldF9rZXkxIiwiZ2V0X2tleTFfY29weSIsInNldF9rZXkxIiwidW5zZXRfa2V5MSIsImNoZWNrX2tleTEiLCJnZXRfa2V5MiIsImdldF9rZXkyX2NvcHkiLCJzZXRfa2V5MiIsInVuc2V0X2tleTIiLCJjaGVja19rZXkyIiwiYmxpdF9rZXkxIiwiYmxpdF9rZXkyIiwiYmxpdF9rZXkxMiIsImdldF9kYXRhJDIiLCJnZXRfZGF0YV9jb3B5JDAiLCJzZXRfZGF0YSQwIiwidW5zZXRfZGF0YSQwIiwiY2hlY2tfZGF0YSQwIiwiYmxpdF9kYXRhJDAiLCJtYWtlJDYiLCJrZXkxIiwia2V5MiIsInF1ZXJ5JDAiLCJrMiQwIiwiazEkMCIsIm1ha2UkNyIsImFkZCQyIiwidGVzdF9rZXlzIiwicmVtb3ZlJDEiLCJmaW5kJDMiLCJsZW5ndGgkOCIsImNsZWFyJDQiLCJjcmVhdGUkNyIsImxlbmd0aCQ5IiwiZ2V0X2tleSQxIiwiZ2V0X2tleV9jb3B5JDEiLCJzZXRfa2V5JDEiLCJ1bnNldF9rZXkkMSIsImNoZWNrX2tleSQxIiwiYmxpdF9rZXkkMSIsImdldF9kYXRhJDMiLCJnZXRfZGF0YV9jb3B5JDEiLCJzZXRfZGF0YSQxIiwidW5zZXRfZGF0YSQxIiwiY2hlY2tfZGF0YSQxIiwiYmxpdF9kYXRhJDEiLCJtYWtlJDgiLCJxdWVyeSQxIiwia2kiLCJrMCIsIm1ha2UkOSIsImFkZCQzIiwidGVzdF9rZXlzJDAiLCJyZW1vdmUkMiIsImZpbmQkNCIsImxlbmd0aCQxMCIsImNsZWFyJDUiLCJnZW5lcmljX2Jhc2VuYW1lIiwiaXNfZGlyX3NlcCIsImdlbmVyaWNfZGlybmFtZSIsImlzX3JlbGF0aXZlIiwiaXNfaW1wbGljaXQiLCJjaGVja19zdWZmaXgiLCJzdWZmIiwiY2hvcF9zdWZmaXhfb3B0IiwibGVuX2YiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lIiwicXVvdGUkMCIsImFkZF9icyIsImxvb3AkMCIsImxvb3BfYnMiLCJxdW90ZV9jbWRfZmlsZW5hbWUiLCJxdW90ZV9jb21tYW5kJDAiLCJkcml2ZV9hbmRfcGF0aCIsImRpcm5hbWUkMCIsInBhdGgiLCJkcml2ZSIsImRpciIsImJhc2VuYW1lJDAiLCJiYXNlbmFtZSQxIiwiZGlybmFtZSQxIiwibnVsbCQzIiwiY3VycmVudF9kaXJfbmFtZSQyIiwicGFyZW50X2Rpcl9uYW1lJDIiLCJkaXJfc2VwJDIiLCJpc19kaXJfc2VwJDEiLCJpc19yZWxhdGl2ZSQxIiwiaXNfaW1wbGljaXQkMSIsImNoZWNrX3N1ZmZpeCQxIiwiY2hvcF9zdWZmaXhfb3B0JDEiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQxIiwicXVvdGVfY29tbWFuZCQxIiwiYmFzZW5hbWUkMiIsImRpcm5hbWUkMiIsImNvbmNhdCQ0IiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiZXh0ZW5zaW9uIiwiY2hvcF9leHRlbnNpb24iLCJyZW1vdmVfZXh0ZW5zaW9uIiwicHJuZyQwIiwidGVtcF9maWxlX25hbWUiLCJ0ZW1wX2RpciIsInJuZCIsImN1cnJlbnRfdGVtcF9kaXJfbmFtZSIsInNldF90ZW1wX2Rpcl9uYW1lIiwiZ2V0X3RlbXBfZGlyX25hbWUiLCJ0ZW1wX2ZpbGUiLCJ0cnlfbmFtZSIsImNvdW50ZXIkMSIsIm9wZW5fdGVtcF9maWxlIiwic3RoJDAiLCJwZXJtcyIsInN0aCQxIiwiYWRkJDQiLCJzdWIkNCIsIm5lZyIsImNvbmoiLCJtdWwiLCJkaXYiLCJpbnYiLCJub3JtMiIsIm5vcm0iLCJxJDAiLCJwb2xhciIsInNxcnQiLCJ3JDAiLCJleHAiLCJsb2ciLCJwb3ciLCJmbG9hdDMyIiwiZmxvYXQ2NCIsImludDhfc2lnbmVkIiwiaW50OF91bnNpZ25lZCIsImludDE2X3NpZ25lZCIsImludDE2X3Vuc2lnbmVkIiwiaW50MzIkMSIsImludDY0JDEiLCJpbnQkMiIsIm5hdGl2ZWludCQxIiwiY29tcGxleDMyIiwiY29tcGxleDY0Iiwia2luZF9zaXplX2luX2J5dGVzIiwiY19sYXlvdXQiLCJmb3J0cmFuX2xheW91dCIsImNsb29wIiwiaWR4IiwiY29sIiwiZmxvb3AiLCJpbml0JDYiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJjcmVhdGUkOCIsImdldCQzIiwic2V0JDIiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQ5IiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDciLCJvZl9hcnJheSIsImJhIiwiY3JlYXRlJDEwIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDgiLCJvZl9hcnJheSQwIiwicm93IiwiY3JlYXRlJDExIiwiZGltMyIsInNpemVfaW5fYnl0ZXMkMyIsInNsaWNlX2xlZnRfMSIsInNsaWNlX3JpZ2h0XzEiLCJzbGljZV9sZWZ0XzIiLCJzbGljZV9yaWdodF8yIiwiaW5pdCQ5Iiwib2ZfYXJyYXkkMSIsImFycmF5MF9vZl9nZW5hcnJheSIsImFycmF5MV9vZl9nZW5hcnJheSIsImFycmF5Ml9vZl9nZW5hcnJheSIsImFycmF5M19vZl9nZW5hcnJheSIsInJlc2hhcGVfMCIsInJlc2hhcGVfMSIsInJlc2hhcGVfMiIsInJlc2hhcGVfMyIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImxlbmd0aCQxMSIsImlucHV0X2NoYXIkMCIsImlucHV0X2J5dGUkMCIsImlucHV0X2xpbmUkMCIsInJlYWxseV9pbnB1dCQwIiwicmVhbGx5X2lucHV0X3N0cmluZyQwIiwicmVhZF91cHRvIiwiZW5zdXJlIiwibmV3X2xlbiQwIiwibmV3X2xlbiQxIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSQwIiwiaW5pdGlhbF9zaXplJDEiLCJucmVhZCIsImJ1ZiQwIiwiYnVmJDEiLCJyZW0iLCJ3aXRoX29wZW4kMCIsIndpdGhfb3Blbl9iaW4kMCIsIndpdGhfb3Blbl90ZXh0JDAiLCJ3aXRoX29wZW5fZ2VuJDAiLCJzZWVrJDAiLCJwb3MkMCIsImxlbmd0aCQxMiIsImZvcm1hdF9wZXJpb2QiLCJmbXQiLCJwIiwibWFrZV9wZXJpb2QiLCJ5ZWFycyIsIm1vbnRocyIsImRheXMiLCJhZGRfcGVyaW9kcyIsImQxIiwiZDIiLCJzdWJfcGVyaW9kcyIsIm11bF9wZXJpb2QiLCJtIiwicGVyaW9kX3RvX2RheXMiLCJpc19sZWFwX3llYXIiLCJ5ZWFyIiwiZGF5c19pbl9tb250aCIsIm1vbnRoIiwiaXNfdmFsaWRfZGF0ZSIsImQiLCJtYWtlX2RhdGUiLCJkYXkiLCJhZGRfbW9udGhzX3RvX2ZpcnN0X29mX21vbnRoX2QiLCJ5ZWFyJDAiLCJtb250aHMkMCIsIm5ld19tb250aCIsIm1vbnRocyQxIiwieWVhciQxIiwibW9udGhzJDIiLCJ5ZWFyJDIiLCJhZGRfZGF0ZXMiLCJvcHQiLCJzdGgiLCJyb3VuZCIsIm5ld19tb250aCQwIiwibmV3X3llYXIkMCIsIm5ld19kYXRlIiwibmV3X3llYXIiLCJkJDAiLCJkYXlzX2luX2RfbW9udGgiLCJuZXdfZGF5IiwibmV3X21vbnRoJDEiLCJuZXdfeWVhciQxIiwiZGF5cyQwIiwiZCQxIiwibmV3X21vbnRoJDIiLCJuZXdfeWVhciQyIiwiZGF5cyQxIiwiZCQyIiwiY29tcGFyZV9kYXRlcyIsImZvcm1hdF9kYXRlIiwiZmlyc3RfZGF5X29mX21vbnRoIiwibGFzdF9kYXlfb2ZfbW9udGgiLCJkYXlzX21vbnRoIiwibmVnX3BlcmlvZCIsInN1Yl9kYXRlcyIsImNtcCIsIm5ld19kMl9tb250aCIsIm5ld19kMl95ZWFyIiwibmV3X2QyIiwiZGF0ZV90b195bWQiLCJwZXJpb2RfdG9feW1kcyIsInN0cmVhbSQxIiwic3RyZWFtJDAiLCJzdHJlYW0iLCJ2ZXJzaW9uIiwib2NhbWxfbGV4X3RhYmxlcyIsIm9jYW1sX2xleF90YWJsZXMkMCIsIm9jYW1sX2xleF90YWJsZXMkMSIsImpzb25fZXJyb3IiLCJzIiwidXRmOF9vZl9jb2RlIiwiYnVmIiwieCIsImFkZCIsIm1heGJpdHMiLCJuIiwidXRmOF9vZl9zdXJyb2dhdGVfcGFpciIsImkiLCJqIiwiaGlnaDEwIiwibG93MTAiLCJpbml0X2xleGVyIiwiZm5hbWUiLCJvcHQiLCJzdGgiLCJsbnVtIiwiYnVmJDAiLCJidWYkMSIsImhleCIsIndyaXRlX3NwZWNpYWwiLCJzcmMiLCJzdGFydCIsInN0b3AiLCJvYiIsInN0ciIsImZpbmlzaF9zdHJpbmciLCJleGMiLCJ3cml0ZV9zdHJpbmciLCJjIiwianNvbl9zdHJpbmdfb2Zfc3RyaW5nIiwid3JpdGVfbnVsbCIsIndyaXRlX2Jvb2wiLCJ3cml0ZV9kaWdpdHMiLCJkIiwid3JpdGVfaW50IiwiZmxvYXRfbmVlZHNfcGVyaW9kIiwid3JpdGVfZmxvYXQiLCJzMSIsIndyaXRlX25vcm1hbF9mbG9hdF9wcmVjIiwic2lnbmlmaWNhbnRfZmlndXJlcyIsIndyaXRlX2Zsb2F0X3ByZWMiLCJ3cml0ZV9zdGRfZmxvYXQiLCJ3cml0ZV9zdGRfZmxvYXRfcHJlYyIsIndyaXRlX2ludGxpdCIsIndyaXRlX2Zsb2F0bGl0Iiwid3JpdGVfc3RyaW5nbGl0IiwiaXRlcjIiLCJmX2VsdCIsImZfc2VwIiwibCQwIiwieSQwIiwibCIsInkiLCJ3cml0ZV92YXJpYW50IiwibyIsIndyaXRlX3QiLCJ3cml0ZV90dXBsZSIsIndyaXRlX2xpc3QiLCJ3cml0ZV9hc3NvYyIsImIiLCJsJDEiLCJzJDAiLCJzJDEiLCJmIiwicyQyIiwicyQzIiwid3JpdGVfc3RkX3ZhcmlhbnQiLCJ3cml0ZV9zdGRfanNvbiIsIndyaXRlX3N0ZF90dXBsZSIsInRvX2J1ZmZlciIsInN1ZiIsInN0aCQwIiwic3RkIiwidG9fc3RyaW5nIiwibGVuIiwib2IkMCIsInRvX2NoYW5uZWwiLCJvYyIsInRvX291dHB1dCIsIm91dCIsInRvX2ZpbGUiLCJmaWxlIiwiZSIsInNlcV90b19idWZmZXIiLCJzdCIsInNlcV90b19zdHJpbmciLCJzZXFfdG9fY2hhbm5lbCIsInNlcSIsImpzb24iLCJzZXFfdG9fZmlsZSIsInNvcnQiLCJ2IiwiayIsImEiLCJ2JDAiLCJsJDIiLCJwcCIsImZtdCIsInhzIiwic2VwIiwidmFsdWUiLCJrZXkiLCJ4cyQwIiwieCQwIiwidHVwIiwibmFtZSIsIngkMSIsIngkMiIsIngkMyIsIngkNCIsIngkNSIsIngkNiIsInNob3ciLCJlcXVhbCIsImEkMCIsImIkMCIsImIkMSIsImEkMSIsInlzIiwiY29tcGFyZV9rZXlzIiwia2V5JDAiLCJ5cyQwIiwidmFsdWUkMCIsInJlc3VsdCIsInlzJDEiLCJ4cyQxIiwiYiQyIiwiYSQyIiwibmFtZSQwIiwiYiQzIiwiYSQzIiwicmVzdWx0JDAiLCJiJDQiLCJhJDQiLCJiJDUiLCJhJDUiLCJiJDYiLCJhJDYiLCJiJDciLCJhJDciLCJiJDgiLCJhJDgiLCJwcF9saXN0IiwicHB4IiwicHBfc2VwIiwiaXNfYXRvbSIsImZvcm1hdCIsImluc2lkZV9ib3giLCJyZXByZXNlbnRhdGlvbiIsIm9wIiwieCQ3IiwicHAkMCIsInByZXR0eV9wcmludCIsInByZXR0eV90b19zdHJpbmciLCJwcmV0dHlfdG9fY2hhbm5lbCIsImhleCQwIiwid3JpdGVfc3BlY2lhbCQwIiwiZmluaXNoX3N0cmluZyQwIiwid3JpdGVfc3RyaW5nJDAiLCJqc29uX3N0cmluZ19vZl9zdHJpbmckMCIsIndyaXRlX251bGwkMCIsIndyaXRlX2Jvb2wkMCIsIndyaXRlX2RpZ2l0cyQwIiwid3JpdGVfaW50JDAiLCJmbG9hdF9uZWVkc19wZXJpb2QkMCIsIndyaXRlX2Zsb2F0JDAiLCJ3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyQwIiwid3JpdGVfZmxvYXRfcHJlYyQwIiwid3JpdGVfc3RkX2Zsb2F0JDAiLCJ3cml0ZV9zdGRfZmxvYXRfcHJlYyQwIiwiaXRlcjIkMCIsImZfc2VwJDAiLCJ3cml0ZV9saXN0JDAiLCJ3cml0ZV90JDAiLCJ3cml0ZV9hc3NvYyQwIiwid3JpdGVfc3RkX2pzb24kMCIsInRvX2J1ZmZlciQwIiwidG9fc3RyaW5nJDAiLCJ0b19jaGFubmVsJDAiLCJ0b19vdXRwdXQkMCIsInRvX2ZpbGUkMCIsInNlcV90b19idWZmZXIkMCIsInNlcV90b19zdHJpbmckMCIsInNlcV90b19jaGFubmVsJDAiLCJzZXFfdG9fZmlsZSQwIiwic29ydCQwIiwicHBfbGlzdCQwIiwiaXNfYXRvbSQwIiwiZm9ybWF0JDAiLCJwcCQxIiwicHAkMiIsInNob3ckMCIsImVxdWFsJDAiLCJwcmV0dHlfcHJpbnQkMCIsInByZXR0eV90b19zdHJpbmckMCIsInByZXR0eV90b19jaGFubmVsJDAiLCJoZXgkMSIsImN1c3RvbV9lcnJvciIsImRlc2NyIiwibGV4YnVmIiwib2ZmcyIsImJvbCIsInBvczEiLCJwb3MyIiwiZmlsZV9saW5lIiwiYnl0ZXMiLCJtc2ciLCJsZXhlcl9lcnJvciIsInJlYWRfanVuayIsImxvbmdfZXJyb3IiLCJqdW5rIiwiZXh0cmFfanVuayIsIm1pbjEwIiwibWF4MTAiLCJleHRyYWN0X3Bvc2l0aXZlX2ludCIsImV4dHJhY3RfbmVnYXRpdmVfaW50IiwibmV3bGluZSIsImFkZF9sZXhlbWUiLCJyZWFkX2pzb24kMiIsIm9jYW1sX2xleF9yZWFkX2pzb25fcmVjIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJvY2FtbF9sZXhfc3RhdGUkMSIsImZpbmlzaF9zdHJpbmckMSIsImFjYyIsInJlYWRfc3BhY2UiLCJyZWFkX29iamVjdF9lbmQiLCJmaWVsZF9uYW1lIiwicmVhZF9pZGVudCIsInJlYWRfY29sb24iLCJyZWFkX2pzb24iLCJyZWFkX29iamVjdF9zZXAiLCJmaWVsZF9uYW1lJDAiLCJhY2MkMCIsInJlYWRfYXJyYXlfZW5kIiwicmVhZF9hcnJheV9zZXAiLCJmaW5pc2hfY29tbWVudCIsImZpbmlzaF9lc2NhcGVkX2NoYXIiLCJtYXBfc3RyaW5nIiwiYyQwIiwib2NhbWxfbGV4X3N0YXRlJDIiLCJjJDEiLCJkJDAiLCJmaW5pc2hfc3RyaW5nbGl0IiwiZmluaXNoX3ZhcmlhbnQiLCJyZWFkX2d0IiwicmVhZF9sdCIsInJlYWRfY29tbWEiLCJzdGFydF9hbnlfdmFyaWFudCIsInJlYWRfZW9mIiwicmVhZF9udWxsIiwicmVhZF9udWxsX2lmX3Bvc3NpYmxlIiwicmVhZF9ib29sIiwib2NhbWxfbGV4X3JlYWRfaW50X3JlYyIsInJlYWRfaW50Iiwib2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIiwicmVhZF9pbnQzMiIsIm9jYW1sX2xleF9yZWFkX2ludDY0X3JlYyIsInJlYWRfaW50NjQiLCJvY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIiwicmVhZF9udW1iZXIiLCJyZWFkX3N0cmluZyIsIm1hcF9pZGVudCIsIm9jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyIsInJlYWRfY2VsbCIsImluaXRfYWNjIiwicmVhZF9zZXF1ZW5jZSIsIm9jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyIsInJlYWRfbGlzdF9yZXYiLCJyZWFkX3R1cGxlIiwicmVhZF90dXBsZV9lbmQiLCJyZWFkX3R1cGxlX2VuZDIiLCJyZWFkX3R1cGxlX3NlcCIsInJlYWRfdHVwbGVfc2VwMiIsIm9jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkcyIsInJlYWRfa2V5IiwicmVhZF9maWVsZCIsInJlYWRfYWJzdHJhY3RfZmllbGRzIiwicmVhZF9sY3VybCIsInN0YXJ0X2FueV90dXBsZSIsInJlYWRfbHBhciIsInJlYWRfcnBhciIsInJlYWRfbGJyIiwicmVhZF9yYnIiLCJmaW5pc2hfc2tpcF9zdHJpbmdsaXQiLCJza2lwX2pzb24kMiIsIm9jYW1sX2xleF9za2lwX2pzb25fcmVjIiwic2tpcF9pZGVudCIsInNraXBfanNvbiIsImZpbmlzaF9za2lwX3ZhcmlhbnQiLCJmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCIsImJ1ZmZlcl9qc29uJDIiLCJvY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIiwiYnVmZmVyX3NwYWNlIiwiYnVmZmVyX29iamVjdF9lbmQiLCJidWZmZXJfaWRlbnQiLCJidWZmZXJfY29sb24iLCJidWZmZXJfanNvbiIsImJ1ZmZlcl9vYmplY3Rfc2VwIiwiYnVmZmVyX2FycmF5X2VuZCIsImJ1ZmZlcl9hcnJheV9zZXAiLCJmaW5pc2hfYnVmZmVyX2NvbW1lbnQiLCJyZWFkX2ludDgiLCJyZWFkX2xpc3QiLCJyZWFkX2FycmF5IiwidGwiLCJyIiwicmVhZF9maWVsZHMiLCJmcm9tX2xleGJ1ZiIsImZyb21fc3RyaW5nJDAiLCJmcm9tX2NoYW5uZWwkMCIsImljIiwiZnJvbV9maWxlIiwic2VxX2Zyb21fbGV4YnVmIiwiZmluIiwiZmluX2UiLCJzZXFfZnJvbV9zdHJpbmciLCJzZXFfZnJvbV9jaGFubmVsIiwic2VxX2Zyb21fZmlsZSIsImZuYW1lJDAiLCJsaW5lc2VxX2Zyb21fY2hhbm5lbCIsImxudW0wIiwibGluZSIsImxpbmVzZXFfZnJvbV9maWxlIiwicHJldHRpZnkiLCJjb21wYWN0IiwidHlwZXJyIiwianMiLCJhc3NvYyIsIm9iaiIsIm1lbWJlciIsImluZGV4Iiwid3JhcHBlZF9pbmRleCIsIm1hcCIsInRvX2Fzc29jIiwidG9fb3B0aW9uIiwidG9fYm9vbCIsInRvX2Jvb2xfb3B0aW9uIiwidG9fbnVtYmVyIiwidG9fbnVtYmVyX29wdGlvbiIsInRvX2Zsb2F0IiwidG9fZmxvYXRfb3B0aW9uIiwidG9faW50IiwidG9faW50X29wdGlvbiIsInRvX2xpc3QiLCJ0b19zdHJpbmckMSIsInRvX3N0cmluZ19vcHRpb24iLCJjb252ZXJ0X2VhY2giLCJmaWx0ZXJfbWFwIiwiZmxhdHRlbiIsImwyIiwiZmlsdGVyX2luZGV4IiwiZmlsdGVyX2xpc3QiLCJmaWx0ZXJfbWVtYmVyIiwiZmlsdGVyX2Fzc29jIiwiZmlsdGVyX2Jvb2wiLCJmaWx0ZXJfaW50IiwiZmlsdGVyX2Zsb2F0IiwiZmlsdGVyX251bWJlciIsImZpbHRlcl9zdHJpbmciLCJrZXlzIiwidmFsdWVzIiwiY29tYmluZSIsImZpcnN0Iiwic2Vjb25kIiwidG9fYmFzaWMiLCJoZXgkMiIsIndyaXRlX3NwZWNpYWwkMSIsImZpbmlzaF9zdHJpbmckMiIsIndyaXRlX3N0cmluZyQxIiwianNvbl9zdHJpbmdfb2Zfc3RyaW5nJDEiLCJ3cml0ZV9udWxsJDEiLCJ3cml0ZV9ib29sJDEiLCJ3cml0ZV9kaWdpdHMkMSIsIndyaXRlX2ludCQxIiwiZmxvYXRfbmVlZHNfcGVyaW9kJDEiLCJ3cml0ZV9mbG9hdCQxIiwid3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMkMSIsIndyaXRlX2Zsb2F0X3ByZWMkMSIsIndyaXRlX3N0ZF9mbG9hdCQxIiwid3JpdGVfc3RkX2Zsb2F0X3ByZWMkMSIsIndyaXRlX2ludGxpdCQwIiwiaXRlcjIkMSIsImZfc2VwJDEiLCJ3cml0ZV92YXJpYW50JDAiLCJ3cml0ZV90JDEiLCJ3cml0ZV90dXBsZSQwIiwid3JpdGVfbGlzdCQxIiwid3JpdGVfYXNzb2MkMSIsIndyaXRlX3N0ZF92YXJpYW50JDAiLCJ3cml0ZV9zdGRfanNvbiQxIiwid3JpdGVfc3RkX3R1cGxlJDAiLCJ0b19idWZmZXIkMSIsInRvX3N0cmluZyQyIiwidG9fY2hhbm5lbCQxIiwidG9fb3V0cHV0JDEiLCJ0b19maWxlJDEiLCJzZXFfdG9fYnVmZmVyJDEiLCJzZXFfdG9fc3RyaW5nJDEiLCJzZXFfdG9fY2hhbm5lbCQxIiwic2VxX3RvX2ZpbGUkMSIsInNvcnQkMSIsInBwX2xpc3QkMSIsImlzX2F0b20kMSIsImZvcm1hdCQxIiwicHAkMyIsInBwJDQiLCJzaG93JDEiLCJlcXVhbCQxIiwicHJldHR5X3ByaW50JDEiLCJwcmV0dHlfdG9fc3RyaW5nJDEiLCJwcmV0dHlfdG9fY2hhbm5lbCQxIiwiaGV4JDMiLCJjdXN0b21fZXJyb3IkMCIsImxleGVyX2Vycm9yJDAiLCJyZWFkX2p1bmskMCIsImxvbmdfZXJyb3IkMCIsIm1pbjEwJDAiLCJtYXgxMCQwIiwiZXh0cmFjdF9wb3NpdGl2ZV9pbnQkMCIsImV4dHJhY3RfbmVnYXRpdmVfaW50JDAiLCJuZXdsaW5lJDAiLCJhZGRfbGV4ZW1lJDAiLCJyZWFkX2pzb24kMyIsIm9jYW1sX2xleF9yZWFkX2pzb25fcmVjJDAiLCJmaW5pc2hfc3RyaW5nJDMiLCJyZWFkX3NwYWNlJDAiLCJyZWFkX29iamVjdF9lbmQkMCIsInJlYWRfaWRlbnQkMCIsInJlYWRfY29sb24kMCIsInJlYWRfanNvbiQwIiwicmVhZF9vYmplY3Rfc2VwJDAiLCJyZWFkX2FycmF5X2VuZCQwIiwicmVhZF9hcnJheV9zZXAkMCIsImFjYyQxIiwicmVhZF90dXBsZV9lbmQkMCIsInJlYWRfdHVwbGVfc2VwJDAiLCJjb25zIiwiZmluaXNoX3ZhcmlhbnQkMCIsImZpbmlzaF9jb21tZW50JDAiLCJmaW5pc2hfZXNjYXBlZF9jaGFyJDAiLCJtYXBfc3RyaW5nJDAiLCJmaW5pc2hfc3RyaW5nbGl0JDAiLCJyZWFkX2d0JDAiLCJyZWFkX2x0JDAiLCJyZWFkX2NvbW1hJDAiLCJzdGFydF9hbnlfdmFyaWFudCQwIiwicmVhZF9lb2YkMCIsInJlYWRfbnVsbCQwIiwicmVhZF9udWxsX2lmX3Bvc3NpYmxlJDAiLCJyZWFkX2Jvb2wkMCIsIm9jYW1sX2xleF9yZWFkX2ludF9yZWMkMCIsInJlYWRfaW50JDAiLCJvY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMkMCIsInJlYWRfaW50MzIkMCIsIm9jYW1sX2xleF9yZWFkX2ludDY0X3JlYyQwIiwicmVhZF9pbnQ2NCQwIiwib2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyQwIiwicmVhZF9udW1iZXIkMCIsInJlYWRfc3RyaW5nJDAiLCJtYXBfaWRlbnQkMCIsIm9jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyQwIiwicmVhZF9zZXF1ZW5jZSQwIiwib2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjJDAiLCJyZWFkX2xpc3RfcmV2JDAiLCJvY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMiLCJwb3MiLCJyZWFkX3R1cGxlJDAiLCJyZWFkX3R1cGxlX2VuZDIkMCIsInJlYWRfdHVwbGVfc2VwMiQwIiwib2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzJDAiLCJyZWFkX2Fic3RyYWN0X2ZpZWxkcyQwIiwicmVhZF9sY3VybCQwIiwic3RhcnRfYW55X3R1cGxlJDAiLCJyZWFkX2xwYXIkMCIsInJlYWRfcnBhciQwIiwicmVhZF9sYnIkMCIsInJlYWRfcmJyJDAiLCJmaW5pc2hfc2tpcF92YXJpYW50JDAiLCJza2lwX2pzb24kMCIsImZpbmlzaF9za2lwX3N0cmluZ2xpdCQwIiwic2tpcF9qc29uJDMiLCJvY2FtbF9sZXhfc2tpcF9qc29uX3JlYyQwIiwic2tpcF9pZGVudCQwIiwiZmluaXNoX2J1ZmZlcl92YXJpYW50IiwiYnVmZmVyX2pzb24kMCIsImJ1ZmZlcl9zcGFjZSQwIiwiZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQkMCIsImJ1ZmZlcl9qc29uJDMiLCJvY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjJDAiLCJidWZmZXJfb2JqZWN0X2VuZCQwIiwiYnVmZmVyX2lkZW50JDAiLCJidWZmZXJfY29sb24kMCIsImJ1ZmZlcl9vYmplY3Rfc2VwJDAiLCJidWZmZXJfYXJyYXlfZW5kJDAiLCJidWZmZXJfYXJyYXlfc2VwJDAiLCJidWZmZXJfdHVwbGVfZW5kIiwiYnVmZmVyX3R1cGxlX3NlcCIsImZpbmlzaF9idWZmZXJfY29tbWVudCQwIiwianVuayQwIiwicmVhZF9pbnQ4JDAiLCJyZWFkX2xpc3QkMCIsInJlYWRfYXJyYXkkMCIsInJlYWRfZmllbGRzJDAiLCJmcm9tX2xleGJ1ZiQwIiwiZnJvbV9zdHJpbmckMiIsImZyb21fY2hhbm5lbCQyIiwiZnJvbV9maWxlJDAiLCJzZXFfZnJvbV9sZXhidWYkMCIsInNlcV9mcm9tX3N0cmluZyQwIiwic2VxX2Zyb21fY2hhbm5lbCQwIiwic2VxX2Zyb21fZmlsZSQwIiwibGluZXNlcV9mcm9tX2NoYW5uZWwkMCIsImxpbmVzZXFfZnJvbV9maWxlJDAiLCJwcmV0dGlmeSQwIiwiY29tcGFjdCQwIiwidHlwZXJyJDAiLCJhc3NvYyQwIiwibWVtYmVyJDAiLCJpbmRleCQwIiwibWFwJDAiLCJ0b19hc3NvYyQwIiwidG9fb3B0aW9uJDAiLCJ0b19ib29sJDAiLCJ0b19ib29sX29wdGlvbiQwIiwidG9fbnVtYmVyJDAiLCJ0b19udW1iZXJfb3B0aW9uJDAiLCJ0b19mbG9hdCQwIiwidG9fZmxvYXRfb3B0aW9uJDAiLCJ0b19pbnQkMCIsInRvX2ludF9vcHRpb24kMCIsInRvX2xpc3QkMCIsInRvX3N0cmluZyQzIiwidG9fc3RyaW5nX29wdGlvbiQwIiwiY29udmVydF9lYWNoJDAiLCJmaWx0ZXJfbWFwJDAiLCJmbGF0dGVuJDAiLCJmaWx0ZXJfaW5kZXgkMCIsImZpbHRlcl9saXN0JDAiLCJmaWx0ZXJfbWVtYmVyJDAiLCJmaWx0ZXJfYXNzb2MkMCIsImZpbHRlcl9ib29sJDAiLCJmaWx0ZXJfaW50JDAiLCJmaWx0ZXJfZmxvYXQkMCIsImZpbHRlcl9udW1iZXIkMCIsImZpbHRlcl9zdHJpbmckMCIsImtleXMkMCIsInZhbHVlcyQwIiwiY29tYmluZSQwIiwiaGV4JDQiLCJ3cml0ZV9zcGVjaWFsJDIiLCJmaW5pc2hfc3RyaW5nJDQiLCJ3cml0ZV9zdHJpbmckMiIsImpzb25fc3RyaW5nX29mX3N0cmluZyQyIiwid3JpdGVfbnVsbCQyIiwid3JpdGVfYm9vbCQyIiwid3JpdGVfaW50bGl0JDEiLCJ3cml0ZV9mbG9hdGxpdCQwIiwid3JpdGVfc3RyaW5nbGl0JDAiLCJpdGVyMiQyIiwiZl9zZXAkMiIsIndyaXRlX3ZhcmlhbnQkMSIsIndyaXRlX3QkMiIsIndyaXRlX3R1cGxlJDEiLCJ3cml0ZV9saXN0JDIiLCJ3cml0ZV9hc3NvYyQyIiwid3JpdGVfc3RkX3ZhcmlhbnQkMSIsIndyaXRlX3N0ZF9qc29uJDIiLCJ3cml0ZV9zdGRfdHVwbGUkMSIsInRvX2J1ZmZlciQyIiwidG9fc3RyaW5nJDQiLCJ0b19jaGFubmVsJDIiLCJ0b19vdXRwdXQkMiIsInRvX2ZpbGUkMiIsInNlcV90b19idWZmZXIkMiIsInNlcV90b19zdHJpbmckMiIsInNlcV90b19jaGFubmVsJDIiLCJzZXFfdG9fZmlsZSQyIiwic29ydCQyIiwicHBfbGlzdCQyIiwiaXNfYXRvbSQyIiwiZm9ybWF0JDIiLCJwcCQ1IiwicHAkNiIsInNob3ckMiIsImVxdWFsJDIiLCJwcmV0dHlfcHJpbnQkMiIsInByZXR0eV90b19zdHJpbmckMiIsInByZXR0eV90b19jaGFubmVsJDIiLCJoZXgkNSIsImN1c3RvbV9lcnJvciQxIiwibGV4ZXJfZXJyb3IkMSIsInJlYWRfanVuayQxIiwibG9uZ19lcnJvciQxIiwibWluMTAkMSIsIm1heDEwJDEiLCJleHRyYWN0X3Bvc2l0aXZlX2ludCQxIiwibWFrZV9wb3NpdGl2ZV9pbnQiLCJleHRyYWN0X25lZ2F0aXZlX2ludCQxIiwibWFrZV9uZWdhdGl2ZV9pbnQiLCJuZXdsaW5lJDEiLCJhZGRfbGV4ZW1lJDEiLCJyZWFkX2pzb24kNCIsIm9jYW1sX2xleF9yZWFkX2pzb25fcmVjJDEiLCJmaW5pc2hfc3RyaW5nbGl0JDEiLCJyZWFkX3NwYWNlJDEiLCJyZWFkX29iamVjdF9lbmQkMSIsInJlYWRfaWRlbnQkMSIsInJlYWRfY29sb24kMSIsInJlYWRfanNvbiQxIiwicmVhZF9vYmplY3Rfc2VwJDEiLCJyZWFkX2FycmF5X2VuZCQxIiwicmVhZF9hcnJheV9zZXAkMSIsInJlYWRfdHVwbGVfZW5kJDEiLCJyZWFkX3R1cGxlX3NlcCQxIiwiZmluaXNoX3ZhcmlhbnQkMSIsImZpbmlzaF9jb21tZW50JDEiLCJmaW5pc2hfc3RyaW5nJDUiLCJmaW5pc2hfZXNjYXBlZF9jaGFyJDEiLCJtYXBfc3RyaW5nJDEiLCJyZWFkX2d0JDEiLCJyZWFkX2x0JDEiLCJyZWFkX2NvbW1hJDEiLCJzdGFydF9hbnlfdmFyaWFudCQxIiwicmVhZF9lb2YkMSIsInJlYWRfbnVsbCQxIiwicmVhZF9udWxsX2lmX3Bvc3NpYmxlJDEiLCJyZWFkX2Jvb2wkMSIsIm9jYW1sX2xleF9yZWFkX2ludF9yZWMkMSIsInJlYWRfaW50JDEiLCJvY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMkMSIsInJlYWRfaW50MzIkMSIsIm9jYW1sX2xleF9yZWFkX2ludDY0X3JlYyQxIiwicmVhZF9pbnQ2NCQxIiwib2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyQxIiwicmVhZF9udW1iZXIkMSIsInJlYWRfc3RyaW5nJDEiLCJtYXBfaWRlbnQkMSIsIm9jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyQxIiwicmVhZF9zZXF1ZW5jZSQxIiwib2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjJDEiLCJyZWFkX2xpc3RfcmV2JDEiLCJvY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMkMCIsInJlYWRfdHVwbGUkMSIsInJlYWRfdHVwbGVfZW5kMiQxIiwicmVhZF90dXBsZV9zZXAyJDEiLCJvY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHMkMSIsInJlYWRfYWJzdHJhY3RfZmllbGRzJDEiLCJyZWFkX2xjdXJsJDEiLCJzdGFydF9hbnlfdHVwbGUkMSIsInJlYWRfbHBhciQxIiwicmVhZF9ycGFyJDEiLCJyZWFkX2xiciQxIiwicmVhZF9yYnIkMSIsImZpbmlzaF9za2lwX3ZhcmlhbnQkMSIsInNraXBfanNvbiQxIiwiZmluaXNoX3NraXBfc3RyaW5nbGl0JDEiLCJza2lwX2pzb24kNCIsIm9jYW1sX2xleF9za2lwX2pzb25fcmVjJDEiLCJza2lwX2lkZW50JDEiLCJmaW5pc2hfYnVmZmVyX3ZhcmlhbnQkMCIsImJ1ZmZlcl9qc29uJDEiLCJidWZmZXJfc3BhY2UkMSIsImZpbmlzaF9idWZmZXJfc3RyaW5nbGl0JDEiLCJidWZmZXJfanNvbiQ0Iiwib2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyQxIiwiYnVmZmVyX29iamVjdF9lbmQkMSIsImJ1ZmZlcl9pZGVudCQxIiwiYnVmZmVyX2NvbG9uJDEiLCJidWZmZXJfb2JqZWN0X3NlcCQxIiwiYnVmZmVyX2FycmF5X2VuZCQxIiwiYnVmZmVyX2FycmF5X3NlcCQxIiwiYnVmZmVyX3R1cGxlX2VuZCQwIiwiYnVmZmVyX3R1cGxlX3NlcCQwIiwiZmluaXNoX2J1ZmZlcl9jb21tZW50JDEiLCJqdW5rJDEiLCJyZWFkX2ludDgkMSIsInJlYWRfbGlzdCQxIiwicmVhZF9hcnJheSQxIiwicmVhZF9maWVsZHMkMSIsImZyb21fbGV4YnVmJDEiLCJmcm9tX3N0cmluZyQ0IiwiZnJvbV9jaGFubmVsJDQiLCJmcm9tX2ZpbGUkMSIsInNlcV9mcm9tX2xleGJ1ZiQxIiwic2VxX2Zyb21fc3RyaW5nJDEiLCJzZXFfZnJvbV9jaGFubmVsJDEiLCJzZXFfZnJvbV9maWxlJDEiLCJsaW5lc2VxX2Zyb21fY2hhbm5lbCQxIiwibGluZXNlcV9mcm9tX2ZpbGUkMSIsInByZXR0aWZ5JDEiLCJjb21wYWN0JDEiLCJ5b2pzb25fb2ZfdW5pdCIsInlvanNvbl9vZl9ib29sIiwiYiIsInlvanNvbl9vZl9zdHJpbmciLCJzdHIiLCJ5b2pzb25fb2ZfYnl0ZXMiLCJieXRlcyIsInlvanNvbl9vZl9jaGFyIiwiYyIsInlvanNvbl9vZl9pbnQiLCJuIiwieW9qc29uX29mX2Zsb2F0IiwieW9qc29uX29mX2ludDMyIiwieW9qc29uX29mX2ludDY0IiwieW9qc29uX29mX25hdGl2ZWludCIsInlvanNvbl9vZl9yZWYiLCJ5b2pzb25fb2ZfYSIsInJmIiwieW9qc29uX29mX2xhenlfdCIsImx2IiwieW9qc29uX29mX29wdGlvbiIsIngiLCJ5b2pzb25fb2ZfcGFpciIsInlvanNvbl9vZl9iIiwiYSIsInlvanNvbl9vZl90cmlwbGUiLCJ5b2pzb25fb2ZfYyIsInlvanNvbl9vZl9saXN0IiwibHN0IiwieW9qc29uX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwiaSIsInlvanNvbl9vZl9oYXNodGJsIiwieW9qc29uX29mX2tleSIsInlvanNvbl9vZl92YWwiLCJodGJsIiwiY29sbCIsImsiLCJ2IiwiYWNjIiwieW9qc29uX29mX29wYXF1ZSIsInlvanNvbl9vZl9mdW4iLCJyZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzIiwib2ZfeW9qc29uX2Vycm9yX2V4biIsImV4YyIsInlvanNvbiIsIm9mX3lvanNvbl9lcnJvciIsIndoYXQiLCJ1bml0X29mX3lvanNvbiIsImJvb2xfb2ZfeW9qc29uIiwic3RyaW5nX29mX3lvanNvbiIsImJ5dGVzX29mX3lvanNvbiIsImNoYXJfb2ZfeW9qc29uIiwiaW50X29mX3lvanNvbiIsImZsb2F0X29mX3lvanNvbiIsImludDMyX29mX3lvanNvbiIsImludDY0X29mX3lvanNvbiIsIm5hdGl2ZWludF9vZl95b2pzb24iLCJyZWZfb2ZfeW9qc29uIiwiYV9vZl95b2pzb24iLCJsYXp5X3Rfb2ZfeW9qc29uIiwib3B0aW9uX29mX3lvanNvbiIsInBhaXJfb2ZfeW9qc29uIiwiYl9vZl95b2pzb24iLCJiX3lvanNvbiIsImFfeW9qc29uIiwidHJpcGxlX29mX3lvanNvbiIsImNfb2ZfeW9qc29uIiwiY195b2pzb24iLCJsaXN0X29mX3lvanNvbiIsInJldl9sc3QiLCJhcnJheV9vZl95b2pzb24iLCJ0IiwiaCIsImxlbiIsInJlcyIsInQkMCIsImgkMCIsImhhc2h0Ymxfb2ZfeW9qc29uIiwia2V5X29mX3lvanNvbiIsInZhbF9vZl95b2pzb24iLCJhY3QiLCJ2X3lvanNvbiIsImtfeW9qc29uIiwib3BhcXVlX29mX3lvanNvbiIsImZ1bl9vZl95b2pzb24iLCJzcHJpbnRmIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwidGFnIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyIsInJldl9mbGRfbmFtZXMiLCJmbGRfbmFtZXNfc3RyIiwicmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMiLCJyZWNvcmRfZXh0cmFfZmllbGRzIiwicmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCIsInBhcmFtJDEiLCJmaWVsZCIsInBhcmFtJDIiLCJyZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzIiwidW5kZWZpbmVkJDAiLCJyZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b20iLCJyZWNvcmRfcG9seV9maWVsZF92YWx1ZSIsIm5vX3ZhcmlhbnRfbWF0Y2giLCJub19tYXRjaGluZ192YXJpYW50X2ZvdW5kIiwicHRhZ19ub19hcmdzIiwicHRhZ19pbmNvcnJlY3Rfbl9hcmdzIiwiY25zdHIiLCJwdGFnX3Rha2VzX2FyZ3MiLCJuZXN0ZWRfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIiwiZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIiwiZW1wdHlfdHlwZSIsInN5bWJvbCIsInlvanNvbl9vZl9zb3VyY2VfcG9zaXRpb24iLCJ2X2xhd19oZWFkaW5ncyIsInZfZW5kX2NvbHVtbiIsInZfZW5kX2xpbmUiLCJ2X3N0YXJ0X2NvbHVtbiIsInZfc3RhcnRfbGluZSIsInZfZmlsZW5hbWUiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJhcmckMSIsImJuZHMkMSIsImFyZyQyIiwiYm5kcyQyIiwiYXJnJDMiLCJibmRzJDMiLCJhcmckNCIsImJuZHMkNCIsIm1vbmV5X29mX2NlbnRzX3N0cmluZyIsImNlbnRzIiwibW9uZXlfb2ZfdW5pdHNfaW50IiwidW5pdHMiLCJtb25leV9vZl9jZW50c19pbnRlZ2VyIiwibW9uZXlfdG9fZmxvYXQiLCJtIiwibW9uZXlfb2ZfZGVjaW1hbCIsImQiLCJtb25leV90b19zdHJpbmciLCJtb25leV90b19jZW50cyIsIm1vbmV5X3JvdW5kIiwiZGVjaW1hbF9vZl9zdHJpbmciLCJkZWNpbWFsX3RvX2Zsb2F0IiwiZGVjaW1hbF9vZl9mbG9hdCIsImRlY2ltYWxfb2ZfaW50ZWdlciIsImRlY2ltYWxfdG9fc3RyaW5nIiwibWF4X3ByZWNfZGlnaXRzIiwiaSIsInNpZ24iLCJuIiwiaW50X3BhcnQiLCJuJDAiLCJkaWdpdHMiLCJsZWFkaW5nX3plcm9lcyIsImRpZ2l0IiwibnVtX2xlYWRpbmdfemVyb2VzIiwiaSQwIiwiZm10IiwiZGVjaW1hbF9yb3VuZCIsInEiLCJkZWNpbWFsX29mX21vbmV5IiwiaW50ZWdlcl9vZl9zdHJpbmciLCJzIiwiaW50ZWdlcl90b19zdHJpbmciLCJpbnRlZ2VyX3RvX2ludCIsImludGVnZXJfb2ZfaW50IiwiaW50ZWdlcl9leHBvbmVudGlhdGlvbiIsImUiLCJpbnRlZ2VyX2xvZzIiLCJ5ZWFyX29mX2RhdGUiLCJ5IiwibW9udGhfbnVtYmVyX29mX2RhdGUiLCJpc19sZWFwX3llYXIiLCJ5JDAiLCJkYXlfb2ZfbW9udGhfb2ZfZGF0ZSIsImQkMCIsImRhdGVfb2ZfbnVtYmVycyIsInllYXIiLCJtb250aCIsImRheSIsImRhdGVfdG9fc3RyaW5nIiwiZmlyc3RfZGF5X29mX21vbnRoIiwibGFzdF9kYXlfb2ZfbW9udGgiLCJkdXJhdGlvbl9vZl9udW1iZXJzIiwiZHVyYXRpb25fdG9fc3RyaW5nIiwiZHVyYXRpb25fdG9feWVhcnNfbW9udGhzX2RheXMiLCJ5b2pzb25fb2ZfcnVudGltZV92YWx1ZSIsInYwJDQiLCJ2MCQ1IiwidjAkNiIsInYwIiwidjAkNyIsInYwJDAiLCJ2MCQ4IiwidjAkMSIsInYwJDkiLCJ2MCQyIiwidjAkMTAiLCJ2MCQzIiwidjEiLCJ2MCQxMSIsInYwJDEyIiwidjEkMCIsInYwJDEzIiwidjAkMTQiLCJ2MSQxIiwidjEkMiIsInYxJDMiLCJ2MCQxNSIsInYwJDE2IiwidjEkNCIsInYwJDE3IiwidjAkMTgiLCJ1bmVtYmVkZGFibGUiLCJlbWJlZF91bml0IiwiZW1iZWRfYm9vbCIsIngiLCJlbWJlZF9tb25leSIsImVtYmVkX2ludGVnZXIiLCJlbWJlZF9kZWNpbWFsIiwiZW1iZWRfZGF0ZSIsImVtYmVkX2R1cmF0aW9uIiwiZW1iZWRfYXJyYXkiLCJmIiwieW9qc29uX29mX2luZm9ybWF0aW9uIiwidiIsInlvanNvbl9vZl9ldmVudCIsInlvanNvbl9vZl92YXJfZGVmIiwieW9qc29uX29mX2Z1bl9jYWxsIiwidl9ib2R5Iiwidl9pbnB1dHMiLCJ2X25hbWUiLCJ2X2Z1bl9jYWxscyIsInZfdmFsdWUiLCJ2X3BvcyIsInZfb3V0cHV0Iiwidl9mdW5faW5wdXRzIiwidl9mdW5fbmFtZSIsImxvZ19yZWYiLCJyZXNldF9sb2ciLCJyZXRyaWV2ZV9sb2ciLCJsb2dfYmVnaW5fY2FsbCIsImluZm8iLCJsb2dfZW5kX2NhbGwiLCJsb2dfdmFyaWFibGVfZGVmaW5pdGlvbiIsImVtYmVkIiwibG9nX2RlY2lzaW9uX3Rha2VuIiwicG9zIiwicHBfZXZlbnRzIiwib3B0IiwicHBmIiwiZXZlbnRzIiwic3RoIiwiaXNfZmlyc3RfY2FsbCIsImZvcm1hdF92YXJfZGVmIiwidmFyJDAiLCJmb3JtYXRfcG9zX29wdCIsImZvcm1hdF92YWx1ZSIsImZvcm1hdF92YXJfZGVmcyIsImZvcm1hdF92YXJfZGVmX3dpdGhfZnVuX2NhbGxzIiwidmFyX3dpdGhfZnVuIiwiZnVuX2NhbGwiLCJmb3JtYXRfZXZlbnQiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJ4JDMiLCJ4JDQiLCJuYW1lIiwiYXR0cnMiLCJuYW1lJDAiLCJ2YWx1ZSIsImVsdHMiLCJ2YXJfZGVmX3dpdGhfZnVuIiwib3V0cHV0IiwiYm9keSIsImZ1bl9pbnB1dHMiLCJmdW5fbmFtZSIsImJvZHkkMCIsImlucHV0cyIsImVtcHR5IiwiZW1wdHlfY3R4IiwicmF3X2V2ZW50X3RvX3N0cmluZyIsIm5hbWUkMSIsInRha2Vfd2hpbGUiLCJwIiwibCIsInQiLCJoIiwicmVzdCIsInQkMCIsInBhcnNlX3Jhd19ldmVudHMiLCJyYXdfZXZlbnRzIiwibmJfcmF3X2V2ZW50cyIsImlzX2Z1bmN0aW9uX2NhbGwiLCJpbmZvcyIsImlzX3Zhcl9kZWYiLCJwYXJzZV9ldmVudHMiLCJjdHgiLCJjdHgkMCIsInZhcl9uYW1lIiwiYm9keV9jdHgiLCJscyQwIiwiY3R4JDEiLCJyZXN0JDAiLCJyZXN0JDEiLCJjdHgkMiIsImluZm9zJDAiLCJwYXJzZV9mdW5fY2FsbCIsInJlc3QkMiIsImN0eCQzIiwicmVzdCQzIiwidmFyX2RvdF9zdWJzY29wZV92YXJfbmFtZSIsImxzIiwiY3R4JDQiLCJpbmZvcyQxIiwicmF3X2V2ZW50cyQwIiwiZnVuX2NhbGxzIiwicmVzdCQ0IiwiaW5mb3MkMiIsImZ1bl9jYWxsJDAiLCJmdW5fY2FsbHMkMCIsImZ1bl9jYWxscyQxIiwicmVzdCQ2IiwidmFsdWUkMCIsIm5hbWUkMiIsInZhcl9jb21wIiwicmVzdCQ1IiwiY3R4JDYiLCJjdHgkNSIsImJvZHlfcmV2IiwidmFyX2RlZiIsIm91dHB1dCQwIiwibXNnIiwiaGFuZGxlX2RlZmF1bHQiLCJleGNlcHRpb25zIiwianVzdCIsImNvbnMiLCJhY2MiLCJleGNlcHQiLCJuZXdfdmFsIiwiaGFuZGxlX2RlZmF1bHRfb3B0IiwiYiIsIm5vX2lucHV0IiwiY29tcGFyZV9wZXJpb2RzIiwicDEiLCJwMiIsInAxX2RheXMiLCJwMl9kYXlzIiwiZXF1YWxfcGVyaW9kcyIsIm9fbm90Iiwib19sZW5ndGgiLCJhIiwib19taW51c19pbnQiLCJpMSIsIm9fbWludXNfcmF0Iiwib19taW51c19tb24iLCJtMSIsIm9fbWludXNfZHVyIiwib19hbmQiLCJvX29yIiwib194b3IiLCJvX2VxIiwib19tYXAiLCJvX3JlZHVjZSIsImRmdCIsImxlbiIsInIiLCJvX2NvbmNhdCIsIm9fZmlsdGVyIiwib19hZGRfaW50X2ludCIsImkyIiwib19hZGRfcmF0X3JhdCIsIm9fYWRkX21vbl9tb24iLCJtMiIsIm9fYWRkX2RhdF9kdXIiLCJkYSIsImR1Iiwib19hZGRfZHVyX2R1ciIsIm9fc3ViX2ludF9pbnQiLCJvX3N1Yl9yYXRfcmF0Iiwib19zdWJfbW9uX21vbiIsIm9fc3ViX2RhdF9kYXQiLCJvX3N1Yl9kYXRfZHVyIiwiZGF0IiwiZHVyIiwib19zdWJfZHVyX2R1ciIsIm9fbXVsdF9pbnRfaW50Iiwib19tdWx0X3JhdF9yYXQiLCJvX211bHRfbW9uX3JhdCIsImkxX2FicyIsImkyX2FicyIsInNpZ25faW50IiwicmF0X3Jlc3VsdCIsInJlbWFpbmRlciIsInJlcyIsIm9fbXVsdF9kdXJfaW50Iiwib19kaXZfaW50X2ludCIsIm9fZGl2X3JhdF9yYXQiLCJvX2Rpdl9tb25fbW9uIiwib19kaXZfbW9uX3JhdCIsInIxIiwib19kaXZfZHVyX2R1ciIsImQxIiwiZDIiLCJvX2x0X2ludF9pbnQiLCJvX2x0X3JhdF9yYXQiLCJvX2x0X21vbl9tb24iLCJvX2x0X2R1cl9kdXIiLCJvX2x0X2RhdF9kYXQiLCJvX2x0ZV9pbnRfaW50Iiwib19sdGVfcmF0X3JhdCIsIm9fbHRlX21vbl9tb24iLCJvX2x0ZV9kdXJfZHVyIiwib19sdGVfZGF0X2RhdCIsIm9fZ3RfaW50X2ludCIsIm9fZ3RfcmF0X3JhdCIsIm9fZ3RfbW9uX21vbiIsIm9fZ3RfZHVyX2R1ciIsIm9fZ3RfZGF0X2RhdCIsIm9fZ3RlX2ludF9pbnQiLCJvX2d0ZV9yYXRfcmF0Iiwib19ndGVfbW9uX21vbiIsIm9fZ3RlX2R1cl9kdXIiLCJvX2d0ZV9kYXRfZGF0Iiwib19lcV9pbnRfaW50Iiwib19lcV9yYXRfcmF0Iiwib19lcV9tb25fbW9uIiwib19lcV9kdXJfZHVyIiwib19lcV9kYXRfZGF0Iiwib19mb2xkIiwib19ub3QkMCIsIm9fbGVuZ3RoJDAiLCJvX3RvcmF0X2ludCIsIm9fdG9yYXRfbW9uIiwib190b21vbmV5X3JhdCIsIm9fZ2V0RGF5Iiwib19nZXRNb250aCIsIm9fZ2V0WWVhciIsIm9fZmlyc3REYXlPZk1vbnRoIiwib19sYXN0RGF5T2ZNb250aCIsIm9fcm91bmRfbW9uIiwib19yb3VuZF9yYXQiLCJvX21pbnVzX2ludCQwIiwib19taW51c19yYXQkMCIsIm9fbWludXNfbW9uJDAiLCJvX21pbnVzX2R1ciQwIiwib19hbmQkMCIsIm9fb3IkMCIsIm9feG9yJDAiLCJvX2VxJDAiLCJvX21hcCQwIiwib19yZWR1Y2UkMCIsIm9fY29uY2F0JDAiLCJvX2ZpbHRlciQwIiwib19hZGRfaW50X2ludCQwIiwib19hZGRfcmF0X3JhdCQwIiwib19hZGRfbW9uX21vbiQwIiwib19hZGRfZGF0X2R1ciQwIiwib19hZGRfZHVyX2R1ciQwIiwib19zdWJfaW50X2ludCQwIiwib19zdWJfcmF0X3JhdCQwIiwib19zdWJfbW9uX21vbiQwIiwib19zdWJfZGF0X2RhdCQwIiwib19zdWJfZGF0X2R1ciQwIiwib19zdWJfZHVyX2R1ciQwIiwib19tdWx0X2ludF9pbnQkMCIsIm9fbXVsdF9yYXRfcmF0JDAiLCJvX211bHRfbW9uX3JhdCQwIiwib19tdWx0X2R1cl9pbnQkMCIsIm9fZGl2X2ludF9pbnQkMCIsIm9fZGl2X3JhdF9yYXQkMCIsIm9fZGl2X21vbl9tb24kMCIsIm9fZGl2X21vbl9yYXQkMCIsIm9fZGl2X2R1cl9kdXIkMCIsIm9fbHRfaW50X2ludCQwIiwib19sdF9yYXRfcmF0JDAiLCJvX2x0X21vbl9tb24kMCIsIm9fbHRfZHVyX2R1ciQwIiwib19sdF9kYXRfZGF0JDAiLCJvX2x0ZV9pbnRfaW50JDAiLCJvX2x0ZV9yYXRfcmF0JDAiLCJvX2x0ZV9tb25fbW9uJDAiLCJvX2x0ZV9kdXJfZHVyJDAiLCJvX2x0ZV9kYXRfZGF0JDAiLCJvX2d0X2ludF9pbnQkMCIsIm9fZ3RfcmF0X3JhdCQwIiwib19ndF9tb25fbW9uJDAiLCJvX2d0X2R1cl9kdXIkMCIsIm9fZ3RfZGF0X2RhdCQwIiwib19ndGVfaW50X2ludCQwIiwib19ndGVfcmF0X3JhdCQwIiwib19ndGVfbW9uX21vbiQwIiwib19ndGVfZHVyX2R1ciQwIiwib19ndGVfZGF0X2RhdCQwIiwib19lcV9pbnRfaW50JDAiLCJvX2VxX3JhdF9yYXQkMCIsIm9fZXFfbW9uX21vbiQwIiwib19lcV9kdXJfZHVyJDAiLCJvX2VxX2RhdF9kYXQkMCIsIm9fZm9sZCQwIiwidmVyc2lvbiIsImdpdF92ZXJzaW9uIiwicmFpc2UiLCJleG4iLCJtb2R1bGUiLCJnbG9iYWxUaGlzIiwic3ltYm9sIiwieCIsInkiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiY29tcGFyZSIsImVxdWFsIiwibWF4IiwibWluIiwiZXF1YWwkMCIsImVxdWFsJDEiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwiY29tcGFyZSQyIiwiZXF1YWwkMiIsIm1heCQwIiwibWluJDAiLCJnbG9iYWwiLCJub19oYW5kbGVyIiwibnVsbCIsInVuZGVmaW5lZCIsInJldHVybiQwIiwibWFwJDAiLCJmIiwiYmluZCIsInRlc3QiLCJpdGVyJDAiLCJjYXNlJDAiLCJnIiwiZ2V0Iiwib3B0aW9uIiwieCQwIiwidG9fb3B0aW9uIiwicmV0dXJuJDEiLCJtYXAkMSIsImJpbmQkMCIsInRlc3QkMCIsIml0ZXIkMSIsImNhc2UkMSIsImdldCQwIiwib3B0aW9uJDAiLCJ0b19vcHRpb24kMCIsImNvZXJjZSIsImNvZXJjZV9vcHQiLCJuZmMiLCJuZmQiLCJuZmtjIiwibmZrZCIsInN0cmluZ19jb25zdHIiLCJvYmplY3Rfa2V5cyIsImFycmF5X2xlbmd0aCIsImFycmF5X2dldCIsImFycmF5X3NldCIsImFycmF5X21hcCIsImEiLCJpZHgiLCJhcnJheV9tYXBpIiwic3RyX2FycmF5IiwibWF0Y2hfcmVzdWx0IiwibWF0aCIsImVycm9yX2NvbnN0ciIsIm5hbWUiLCJlIiwibWVzc2FnZSIsInN0YWNrIiwidG9fc3RyaW5nIiwicmFpc2VfanNfZXJyb3IiLCJzdHJpbmdfb2ZfZXJyb3IiLCJKU09OIiwiZGVjb2RlVVJJIiwicyIsImRlY29kZVVSSUNvbXBvbmVudCIsImVuY29kZVVSSSIsImVuY29kZVVSSUNvbXBvbmVudCIsImVzY2FwZSIsInVuZXNjYXBlIiwiaXNOYU4iLCJpIiwicGFyc2VJbnQiLCJzJDAiLCJwYXJzZUZsb2F0IiwiZXhwb3J0X2pzIiwiZmllbGQiLCJqc29vX2V4cG9ydHMiLCJleHBvcnQkMCIsImV4cG9ydF9hbGwiLCJvYmoiLCJrZXkiLCJsaXN0X29mX25vZGVMaXN0Iiwibm9kZUxpc3QiLCJsZW5ndGgiLCJhY2MiLCJpJDAiLCJhY2MkMCIsImkkMSIsImRpc2Nvbm5lY3RlZCIsInByZWNlZGluZyIsImZvbGxvd2luZyIsImNvbnRhaW5zJDAiLCJjb250YWluZWRfYnkiLCJpbXBsZW1lbnRhdGlvbl9zcGVjaWZpYyIsImhhcyIsInQiLCJtYXNrIiwiYWRkIiwiYXBwZW5kQ2hpbGQiLCJwIiwibiIsInJlbW92ZUNoaWxkIiwicmVwbGFjZUNoaWxkIiwibyIsImluc2VydEJlZm9yZSIsIm5vZGVUeXBlIiwiY2FzdCIsImVsZW1lbnQiLCJ0ZXh0IiwiYXR0ciIsImhhbmRsZXIiLCJyZXMiLCJldmVudCIsImZ1bGxfaGFuZGxlciIsInRoaXMkMCIsImludm9rZV9oYW5kbGVyIiwiZXZlbnRUYXJnZXQiLCJtYWtlJDAiLCJhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMiLCJjYXB0dXJlIiwib25jZSIsInBhc3NpdmUiLCJpdGVyIiwiYiIsImFkZEV2ZW50TGlzdGVuZXIiLCJ0eXAiLCJoIiwiY2FwdCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJpZCIsInByZXZlbnREZWZhdWx0IiwiY3JlYXRlQ3VzdG9tRXZlbnQiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsImRldGFpbCIsIm9wdF9pdGVyIiwiYXJyYXlCdWZmZXIiLCJpbnQ4QXJyYXlfaW5CdWZmZXIiLCJpbnQxNkFycmF5X2luQnVmZmVyIiwidWludDE2QXJyYXlfaW5CdWZmZXIiLCJpbnQzMkFycmF5X2luQnVmZmVyIiwidWludDMyQXJyYXlfaW5CdWZmZXIiLCJmbG9hdDMyQXJyYXlfaW5CdWZmZXIiLCJmbG9hdDY0QXJyYXlfaW5CdWZmZXIiLCJzZXQiLCJnZXQkMSIsInVuc2FmZV9nZXQiLCJkYXRhVmlldyIsIm9mX2FycmF5QnVmZmVyIiwiYWIiLCJ1aW50OCIsImZpbHRlcl9tYXAiLCJxIiwidiIsInYkMCIsImJsb2JfcmF3IiwiY29udGVudFR5cGUiLCJlbmRpbmdzIiwib3B0aW9ucyIsIm9wdGlvbnMkMCIsImJsb2JfZnJvbV9zdHJpbmciLCJibG9iX2Zyb21fYW55IiwibCIsImEkMCIsImwkMCIsImZpbGVuYW1lIiwiZmlsZSIsIm5hbWUkMCIsImRvY19jb25zdHIiLCJkb2N1bWVudCIsImJsb2IiLCJzdHJpbmciLCJhcnJheUJ1ZmZlciQwIiwibG9hZHN0YXJ0IiwicHJvZ3Jlc3MiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsImxvYWRlbmQiLCJmaWxlUmVhZGVyIiwib25JRSIsImNsaWNrIiwiY29weSQwIiwiY3V0IiwicGFzdGUiLCJkYmxjbGljayIsIm1vdXNlZG93biIsIm1vdXNldXAiLCJtb3VzZW92ZXIiLCJtb3VzZW1vdmUiLCJtb3VzZW91dCIsImtleXByZXNzIiwia2V5ZG93biIsImtleXVwIiwibW91c2V3aGVlbCIsIndoZWVsIiwiRE9NTW91c2VTY3JvbGwiLCJ0b3VjaHN0YXJ0IiwidG91Y2htb3ZlIiwidG91Y2hlbmQiLCJ0b3VjaGNhbmNlbCIsImRyYWdzdGFydCIsImRyYWdlbmQiLCJkcmFnZW50ZXIiLCJkcmFnb3ZlciIsImRyYWdsZWF2ZSIsImRyYWciLCJkcm9wIiwiaGFzaGNoYW5nZSIsImNoYW5nZSIsImlucHV0IiwidGltZXVwZGF0ZSIsInN1Ym1pdCIsInNjcm9sbCIsImZvY3VzIiwiYmx1ciIsImxvYWQkMCIsInVubG9hZCIsImJlZm9yZXVubG9hZCIsInJlc2l6ZSIsIm9yaWVudGF0aW9uY2hhbmdlIiwicG9wc3RhdGUiLCJlcnJvciQwIiwiYWJvcnQkMCIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJwcm9ncmVzcyQwIiwidXBkYXRlcmVhZHkiLCJjYWNoZWQiLCJvYnNvbGV0ZSIsImRvbUNvbnRlbnRMb2FkZWQiLCJhbmltYXRpb25zdGFydCIsImFuaW1hdGlvbmVuZCIsImFuaW1hdGlvbml0ZXJhdGlvbiIsImFuaW1hdGlvbmNhbmNlbCIsInRyYW5zaXRpb25ydW4iLCJ0cmFuc2l0aW9uc3RhcnQiLCJ0cmFuc2l0aW9uZW5kIiwidHJhbnNpdGlvbmNhbmNlbCIsImNhbnBsYXkiLCJjYW5wbGF5dGhyb3VnaCIsImR1cmF0aW9uY2hhbmdlIiwiZW1wdGllZCIsImVuZGVkIiwiZ290cG9pbnRlcmNhcHR1cmUiLCJsb2FkZWRkYXRhIiwibG9hZGVkbWV0YWRhdGEiLCJsb2Fkc3RhcnQkMCIsImxvc3Rwb2ludGVyY2FwdHVyZSIsIm1lc3NhZ2UkMCIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwibWFrZSQxIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsImxvYyIsImdldEVsZW1lbnRCeUlkIiwicG5vZGUiLCJnZXRFbGVtZW50QnlJZF9leG4iLCJnZXRFbGVtZW50QnlJZF9vcHQiLCJnZXRFbGVtZW50QnlJZF9jb2VyY2UiLCJjcmVhdGVFbGVtZW50IiwidW5zYWZlQ3JlYXRlRWxlbWVudCIsImRvYyIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZWx0IiwiZWwiLCJjcmVhdGVIdG1sIiwiY3JlYXRlSGVhZCIsImNyZWF0ZUxpbmsiLCJjcmVhdGVUaXRsZSIsImNyZWF0ZU1ldGEiLCJjcmVhdGVCYXNlIiwiY3JlYXRlU3R5bGUiLCJjcmVhdGVCb2R5IiwiY3JlYXRlRm9ybSIsImNyZWF0ZU9wdGdyb3VwIiwiY3JlYXRlT3B0aW9uIiwiY3JlYXRlU2VsZWN0IiwiY3JlYXRlSW5wdXQiLCJjcmVhdGVUZXh0YXJlYSIsImNyZWF0ZUJ1dHRvbiIsImNyZWF0ZUxhYmVsIiwiY3JlYXRlRmllbGRzZXQiLCJjcmVhdGVMZWdlbmQiLCJjcmVhdGVVbCIsImNyZWF0ZU9sIiwiY3JlYXRlRGwiLCJjcmVhdGVMaSIsImNyZWF0ZURpdiIsImNyZWF0ZUVtYmVkIiwiY3JlYXRlUCIsImNyZWF0ZUgxIiwiY3JlYXRlSDIiLCJjcmVhdGVIMyIsImNyZWF0ZUg0IiwiY3JlYXRlSDUiLCJjcmVhdGVINiIsImNyZWF0ZVEiLCJjcmVhdGVCbG9ja3F1b3RlIiwiY3JlYXRlUHJlIiwiY3JlYXRlQnIiLCJjcmVhdGVIciIsImNyZWF0ZUlucyIsImNyZWF0ZURlbCIsImNyZWF0ZUEiLCJjcmVhdGVJbWciLCJjcmVhdGVPYmplY3QiLCJjcmVhdGVQYXJhbSIsImNyZWF0ZU1hcCIsImNyZWF0ZUFyZWEiLCJjcmVhdGVTY3JpcHQiLCJjcmVhdGVUYWJsZSIsImNyZWF0ZUNhcHRpb24iLCJjcmVhdGVDb2wiLCJjcmVhdGVDb2xncm91cCIsImNyZWF0ZVRoZWFkIiwiY3JlYXRlVGZvb3QiLCJjcmVhdGVUYm9keSIsImNyZWF0ZVRyIiwiY3JlYXRlVGgiLCJjcmVhdGVUZCIsImNyZWF0ZVN1YiIsImNyZWF0ZVN1cCIsImNyZWF0ZVNwYW4iLCJjcmVhdGVUdCIsImNyZWF0ZUkiLCJjcmVhdGVCIiwiY3JlYXRlQmlnIiwiY3JlYXRlU21hbGwiLCJjcmVhdGVFbSIsImNyZWF0ZVN0cm9uZyIsImNyZWF0ZUNpdGUiLCJjcmVhdGVEZm4iLCJjcmVhdGVDb2RlIiwiY3JlYXRlU2FtcCIsImNyZWF0ZUtiZCIsImNyZWF0ZVZhciIsImNyZWF0ZUFiYnIiLCJjcmVhdGVEZCIsImNyZWF0ZUR0IiwiY3JlYXRlTm9zY3JpcHQiLCJjcmVhdGVBZGRyZXNzIiwiY3JlYXRlRnJhbWVzZXQiLCJjcmVhdGVGcmFtZSIsImNyZWF0ZUlmcmFtZSIsImNyZWF0ZUF1ZGlvIiwiY3JlYXRlVmlkZW8iLCJjcmVhdGVDYW52YXMiLCJodG1sX2VsZW1lbnQiLCJlbGVtZW50JDAiLCJ1bnNhZmVDb2VyY2UiLCJ0YWciLCJhcmVhIiwiYmFzZSIsImJsb2NrcXVvdGUiLCJib2R5IiwiYnIiLCJidXR0b24iLCJjYW52YXMiLCJjYXB0aW9uIiwiY29sIiwiY29sZ3JvdXAiLCJkZWwiLCJkaXYiLCJkbCIsImZpZWxkc2V0IiwiZW1iZWQiLCJmb3JtIiwiZnJhbWVzZXQiLCJmcmFtZSIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWQiLCJociIsImh0bWwiLCJpZnJhbWUiLCJpbWciLCJpbnB1dCQwIiwiaW5zIiwibGFiZWwiLCJsZWdlbmQiLCJsaSIsImxpbmsiLCJtYXAkMiIsIm1ldGEiLCJvYmplY3QiLCJvbCIsIm9wdGdyb3VwIiwib3B0aW9uJDEiLCJwYXJhbSIsInByZSIsInNjcmlwdCIsInNlbGVjdCQwIiwic3R5bGUiLCJ0YWJsZSIsInRib2R5IiwidGQiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpdGxlIiwidHIiLCJ1bCIsImF1ZGlvIiwidmlkZW8iLCJ1bnNhZmVDb2VyY2VFdmVudCIsImNvbnN0ciIsImV2IiwibW91c2VFdmVudCIsImtleWJvYXJkRXZlbnQiLCJ3aGVlbEV2ZW50IiwibW91c2VTY3JvbGxFdmVudCIsInBvcFN0YXRlRXZlbnQiLCJtZXNzYWdlRXZlbnQiLCJldmVudFJlbGF0ZWRUYXJnZXQiLCJldmVudEFic29sdXRlUG9zaXRpb24iLCJldmVudEFic29sdXRlUG9zaXRpb24kMCIsImVsZW1lbnRDbGllbnRQb3NpdGlvbiIsImdldERvY3VtZW50U2Nyb2xsIiwiYnV0dG9uUHJlc3NlZCIsImFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyV2l0aCIsImR4IiwiZHkiLCJhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lciIsInRyeV9rZXlfY29kZV9sZWZ0IiwidHJ5X2tleV9jb2RlX3JpZ2h0IiwidHJ5X2tleV9jb2RlX251bXBhZCIsInRyeV9rZXlfY29kZV9ub3JtYWwiLCJtYWtlX3VuaWRlbnRpZmllZCIsInJ1bl9uZXh0IiwidmFsdWUiLCJzeW1ib2wkMTEiLCJvZl9ldmVudCIsImV2dCIsImNoYXJfb2ZfaW50IiwiZW1wdHlfc3RyaW5nIiwibm9uZSIsIm9mX2V2ZW50JDAiLCJlbGVtZW50JDEiLCJ0YWdnZWQiLCJvcHRfdGFnZ2VkIiwidGFnZ2VkRXZlbnQiLCJvcHRfdGFnZ2VkRXZlbnQiLCJzdG9wUHJvcGFnYXRpb24iLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjIiwicmVxIiwiY2FsbGJhY2siLCJub3ciLCJsYXN0IiwiZHQiLCJkdCQwIiwiaGFzUHVzaFN0YXRlIiwiaGFzUGxhY2Vob2xkZXIiLCJoYXNSZXF1aXJlZCIsIm92ZXJmbG93X2xpbWl0Iiwic2V0VGltZW91dCIsImxvb3AiLCJzdGVwIiwicmVtYWluIiwic3RlcCQwIiwiY2IiLCJjbGVhclRpbWVvdXQiLCJqc19hcnJheV9vZl9jb2xsZWN0aW9uIiwiZm9ybURhdGEiLCJmb3JtRGF0YV9mb3JtIiwiZmlsdGVyX21hcCQwIiwiaGF2ZV9jb250ZW50IiwiZm9ybV9lbGVtZW50cyIsImkkMiIsInYkMiIsInN0aCIsIm5hbWUkMSIsImxpc3QiLCJ2JDEiLCJhcHBlbmQiLCJmb3JtX2NvbnRlbnRzIiwiZm9ybV9lbHQiLCJlbXB0eV9mb3JtX2NvbnRlbnRzIiwicG9zdF9mb3JtX2NvbnRlbnRzIiwiY29udGVudHMiLCJnZXRfZm9ybV9jb250ZW50cyIsInJlYWR5c3RhdGVjaGFuZ2UiLCJsb2Fkc3RhcnQkMSIsInByb2dyZXNzJDEiLCJhYm9ydCQxIiwiZXJyb3IkMSIsImxvYWQkMSIsInRpbWVvdXQiLCJsb2FkZW5kJDAiLCJjcmVhdGUiLCJpbXBvcnRfc2NyaXB0cyIsInNjcmlwdHMiLCJzZXRfb25tZXNzYWdlIiwianNfaGFuZGxlciIsInBvc3RfbWVzc2FnZSIsIndlYlNvY2tldCIsImlzX3N1cHBvcnRlZCIsImRlZmF1bHRDb250ZXh0QXR0cmlidXRlcyIsIndlYmdsY29udGV4dGxvc3QiLCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IiLCJnZXRDb250ZXh0IiwiY3R4IiwiZ2V0Q29udGV4dFdpdGhBdHRyaWJ1dGVzIiwicmVnZXhwIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF93aXRoX2ZsYWciLCJibHVudF9zdHJfYXJyYXlfZ2V0Iiwic3RyaW5nX21hdGNoIiwiciIsInNlYXJjaF9mb3J3YXJkIiwibWF0Y2hlZF9zdHJpbmciLCJtYXRjaGVkX2dyb3VwIiwicXVvdGVfcmVwbCIsImdsb2JhbF9yZXBsYWNlIiwic19ieSIsInJlcGxhY2VfZmlyc3QiLCJmbGFncyIsImxpc3Rfb2ZfanNfYXJyYXkiLCJpZHgkMSIsImFjY3UiLCJpZHgkMCIsImFjY3UkMCIsInNwbGl0IiwiYm91bmRlZF9zcGxpdCIsInF1b3RlIiwicmVnZXhwX3N0cmluZyIsInJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIiwiaW50ZXJydXB0IiwicGx1c19yZSIsInVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIiwidXJsZGVjb2RlIiwidXJsZW5jb2RlIiwib3B0Iiwid2l0aF9wbHVzIiwiZGVmYXVsdF9odHRwX3BvcnQiLCJkZWZhdWx0X2h0dHBzX3BvcnQiLCJwYXRoX29mX3BhdGhfc3RyaW5nIiwiYXV4IiwiaiIsIndvcmQiLCJlbmNvZGVfYXJndW1lbnRzIiwiZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmciLCJsZW4iLCJkZWNvZGVfYXJndW1lbnRzIiwidXJsX29mX2pzX3N0cmluZyIsInByb3Rfc3RyaW5nIiwic3NsIiwicGF0aF9zdHIiLCJ1cmwiLCJ1cmxfb2Zfc3RyaW5nIiwic3RyaW5nX29mX3VybCIsImZyYWciLCJhcmdzIiwicGF0aCIsInBvcnQiLCJob3N0IiwiZnJhZyQwIiwiYXJncyQwIiwicGF0aCQwIiwicG9ydCQwIiwiaG9zdCQwIiwiZnJhZyQxIiwiYXJncyQxIiwicGF0aCQxIiwicHJvdG9jb2wiLCJwYXRoX3N0cmluZyIsImFyZ3VtZW50cyQwIiwiZ2V0X2ZyYWdtZW50Iiwic2V0X2ZyYWdtZW50IiwiZ2V0JDIiLCJzZXQkMCIsInUiLCJhc19zdHJpbmciLCJ1cGRhdGVfZmlsZSIsImNvbnRlbnQiLCJvYyIsInNldF9jaGFubmVsX2ZsdXNoZXIiLCJvdXRfY2hhbm5lbCIsImYkMCIsInNldF9jaGFubmVsX2ZpbGxlciIsImluX2NoYW5uZWwiLCJtb3VudCIsInByZWZpeCIsInVubW91bnQiLCJqc19vZl9vY2FtbF92ZXJzaW9uIiwiZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMiLCJpc19zdXBwb3J0ZWQkMCIsIm9ic2VydmUiLCJub2RlIiwiYm94IiwiYm94JDAiLCJpc19zdXBwb3J0ZWQkMSIsIm9ic2VydmUkMCIsImVudHJ5X3R5cGVzIiwiZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCIsImlzX3N1cHBvcnRlZCQyIiwib2JzZXJ2ZSQxIiwiY2hpbGRfbGlzdCIsImF0dHJpYnV0ZXMiLCJjaGFyYWN0ZXJfZGF0YSIsInN1YnRyZWUiLCJhdHRyaWJ1dGVfb2xkX3ZhbHVlIiwiY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIiwiYXR0cmlidXRlX2ZpbHRlciIsImNyZWF0ZSQwIiwiYWRkJDAiLCJrIiwicmVtb3ZlIiwiZmluZCIsImtleXMiLCJyZXZpdmVyIiwidW5zYWZlX2lucHV0IiwibWxJbnQ2NF9jb25zdHIiLCJvdXRwdXQiLCJzdHJpbmdfb2ZfbmFtZSIsIm5hbWVfb2Zfc3RyaW5nIiwicmdiX29mX25hbWUiLCJyZ2IiLCJoc2wiLCJzdHJpbmdfb2ZfdCIsImIkMCIsImckMCIsInIkMCIsImIkMSIsImckMSIsInIkMSIsImIkMiIsImckMiIsInIkMiIsImEkMSIsImgkMCIsImhleF9vZl9yZ2IiLCJibHVlIiwiZ3JlZW4iLCJyZWQiLCJpbl9yYW5nZSIsImpzX3Rfb2ZfanNfc3RyaW5nIiwianMiLCJtbCIsImZhaWwiLCJyZV9yZ2IiLCJyZV9yZ2JfcGN0IiwicmVfaHNsIiwiaV9vZl9zX28iLCJmX29mX3MiLCJhbHBoYSIsInJlZCQwIiwiZ3JlZW4kMCIsImJsdWUkMCIsImFscGhhJDAiLCJyZWQkMSIsImdyZWVuJDEiLCJibHVlJDEiLCJhbHBoYSQxIiwic3RyaW5nX29mX3QkMCIsImYkMSIsImYkMiIsImYkMyIsImYkNCIsImYkNSIsImYkNiIsImYkNyIsImYkOCIsImYkOSIsImYkMTAiLCJmJDExIiwiZiQxMiIsImpzJDAiLCJtbCQwIiwicmUiLCJzdHJpbmdfb2ZfdCQxIiwianMkMSIsIm1sJDEiLCJsaXN0ZW4iLCJ0YXJnZXQiLCJjcmVhdGVFbGVtZW50JDAiLCJ1bnNhZmVDcmVhdGVFbGVtZW50JDAiLCJjcmVhdGVBJDAiLCJjcmVhdGVBbHRHbHlwaCIsImNyZWF0ZUFsdEdseXBoRGVmIiwiY3JlYXRlQWx0R2x5cGhJdGVtIiwiY3JlYXRlQW5pbWF0ZSIsImNyZWF0ZUFuaW1hdGVDb2xvciIsImNyZWF0ZUFuaW1hdGVNb3Rpb24iLCJjcmVhdGVBbmltYXRlVHJhbnNmb3JtIiwiY3JlYXRlQ2lyY2xlIiwiY3JlYXRlQ2xpcFBhdGgiLCJjcmVhdGVDdXJzb3IiLCJjcmVhdGVEZWZzIiwiY3JlYXRlRGVzYyIsImNyZWF0ZUVsbGlwc2UiLCJjcmVhdGVGaWx0ZXIiLCJjcmVhdGVGb250IiwiY3JlYXRlRm9udEZhY2UiLCJjcmVhdGVGb250RmFjZUZvcm1hdCIsImNyZWF0ZUZvbnRGYWNlTmFtZSIsImNyZWF0ZUZvbnRGYWNlU3JjIiwiY3JlYXRlRm9udEZhY2VVcmkiLCJjcmVhdGVGb3JlaWduT2JqZWN0IiwiY3JlYXRlRyIsImNyZWF0ZUdseXBoIiwiY3JlYXRlR2x5cGhSZWYiLCJjcmVhdGVoa2VybiIsImNyZWF0ZUltYWdlIiwiY3JlYXRlTGluZUVsZW1lbnQiLCJjcmVhdGVMaW5lYXJFbGVtZW50IiwiY3JlYXRlTWFzayIsImNyZWF0ZU1ldGFEYXRhIiwiY3JlYXRlTWlzc2luZ0dseXBoIiwiY3JlYXRlTVBhdGgiLCJjcmVhdGVQYXRoIiwiY3JlYXRlUGF0dGVybiIsImNyZWF0ZVBvbHlnb24iLCJjcmVhdGVQb2x5bGluZSIsImNyZWF0ZVJhZGlhbGdyYWRpZW50IiwiY3JlYXRlUmVjdCIsImNyZWF0ZVNjcmlwdCQwIiwiY3JlYXRlU2V0IiwiY3JlYXRlU3RvcCIsImNyZWF0ZVN0eWxlJDAiLCJjcmVhdGVTdmciLCJjcmVhdGVTd2l0Y2giLCJjcmVhdGVTeW1ib2wiLCJjcmVhdGVUZXh0RWxlbWVudCIsImNyZWF0ZVRleHRwYXRoIiwiY3JlYXRlVGl0bGUkMCIsImNyZWF0ZVRyZWYiLCJjcmVhdGVUc3BhbiIsImNyZWF0ZVVzZSIsImNyZWF0ZVZpZXciLCJjcmVhdGV2a2VybiIsInN2Z19lbGVtZW50IiwiZG9jdW1lbnQkMCIsImdldEVsZW1lbnRCeUlkJDAiLCJlbGVtZW50JDIiLCJ1bnNhZmVDb2VyY2UkMCIsImFsdEdseXBoIiwiYWx0R2x5cGhEZWYiLCJhbHRHbHlwaEl0ZW0iLCJhbmltYXRlIiwiYW5pbWF0ZUNvbG9yIiwiYW5pbWF0ZU1vdGlvbiIsImFuaW1hdGVUcmFuc2Zvcm0iLCJjaXJjbGUiLCJjbGlwUGF0aCIsImN1cnNvciIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImZpbHRlciIsImZvbnQiLCJmb250RmFjZSIsImZvbnRGYWNlRm9ybWF0IiwiZm9udEZhY2VOYW1lIiwiZm9udEZhY2VTcmMiLCJmb250RmFjZVVyaSIsImZvcmVpZ25PYmplY3QiLCJnbHlwaCIsImdseXBoUmVmIiwiaGtlcm4iLCJpbWFnZSIsImxpbmVFbGVtZW50IiwibGluZWFyRWxlbWVudCIsIm1ldGFEYXRhIiwibWlzc2luZ0dseXBoIiwibVBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsZ3JhZGllbnQiLCJyZWN0Iiwic2NyaXB0JDAiLCJzZXQkMSIsInN0b3AiLCJzdHlsZSQwIiwic3ZnIiwic3dpdGNoJDAiLCJzeW1ib2wkMTIiLCJ0ZXh0RWxlbWVudCIsInRleHRwYXRoIiwidGl0bGUkMCIsInRyZWYiLCJ0c3BhbiIsInVzZSIsInZpZXciLCJ2a2VybiIsIndpdGhDcmVkZW50aWFscyIsImV2ZW50U291cmNlIiwiZXZlbnRTb3VyY2Vfb3B0aW9ucyIsImNvbnNvbGUiLCJlbXB0eV9wb3NpdGlvbl9vcHRpb25zIiwiZ2VvbG9jYXRpb24iLCJpc19zdXBwb3J0ZWQkMyIsImVtcHR5X2ludGVyc2VjdGlvbl9vYnNlcnZlcl9vcCIsImludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZSIsImlzX3N1cHBvcnRlZCQ0Iiwib2JqZWN0X29wdGlvbnMiLCJvcHRpb25zJDEiLCJvcHRpb25zJDIiLCJpbnRsIiwiY29sbGF0b3JfY29uc3RyIiwiZGF0ZVRpbWVGb3JtYXRfY29uc3RyIiwibnVtYmVyRm9ybWF0X2NvbnN0ciIsInBsdXJhbFJ1bGVzX2NvbnN0ciIsImlzX3N1cHBvcnRlZCQ1IiwiZHVyYXRpb25fb2ZfanNvbyIsImQiLCJkdXJhdGlvbl90b19qc29vIiwiZGF5cyIsIm1vbnRocyIsInllYXJzIiwiZGF0ZV9vZl9qc29vIiwiZCQwIiwiZCQxIiwiZGF5IiwibW9udGgiLCJ5ZWFyIiwiZGF0ZV90b19qc29vIiwiZXZ0IiwicG9zIiwidiIsImluZm8iLCJldmVudCIsImV2ZW50X21hbmFnZXIiLCJleGVjdXRlX29yX3Rocm93X2Vycm9yIiwiZiIsInRocm93X2Vycm9yIiwiZGVzY3IiLCJwb3MkMCIsInBvcyQxIiwiZW1iZWRfcHJpc2VfZW5fY2hhcmdlIiwieCIsIngkMCIsIngkMSIsIngkMiIsIngkMyIsIngkNCIsImVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3NjbyIsImVtYmVkX3ByaXNlX2VuX2NvbXB0ZSIsImVtYmVkX3ZlcnNlbWVudF9hbGxvY2F0aW9ucyIsImVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaSIsIngkNSIsIngkNiIsIngkNyIsImVtYmVkX2NvbGxlY3Rpdml0ZSIsIngkOCIsImVtYmVkX2FsbG9jYXRpb25fZmFtaWxpYWxlc19hdiIsImVtYmVkX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMiLCJlbWJlZF92ZXJpZmljYXRpb25fYWdlX2luZmVyaWUiLCJlbWJlZF92ZXJpZmljYXRpb25fYWdlX3N1cGVyaWUiLCJlbWJlZF9zbWljIiwiZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvIiwiZW1iZWRfaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhIiwiZW1iZWRfZW5mYW50X2VudHJlZSIsImVtYmVkX2VuZmFudCIsImVtYmVkX2VuZmFudF9sZV9wbHVzX2FnZSIsImVtYmVkX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMiLCJlbWJlZF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2kiLCJlbWJlZF9hbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXYkMCIsImVtYmVkX2VuZmFudF9sZV9wbHVzX2FnZV9pbiIsImVtYmVkX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaSIsImVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZSQwIiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmllJDAiLCJlbWJlZF9zbWljX2luIiwiZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvJDAiLCJlbWJlZF9pbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmEkMCIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCIsImFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfMyIsImVuZmFudF9sZV9wbHVzX2FnZSIsImVuZmFudF9sZV9wbHVzX2FnZV9pbiIsImVuZmFudHMiLCJwb3RlbnRpZWxfcGx1c19hZ2VfMSIsInBvdGVudGllbF9wbHVzX2FnZV8yIiwibGVfcGx1c19hZ2UiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8iLCJkYXRlX25haXNzYW5jZSIsImRhdGVfY291cmFudGUiLCJhbm5lZXMiLCJyIiwidmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaSIsInNtaWMiLCJzbWljX2luIiwicmVzaWRlbmNlIiwiYnJ1dF9ob3JhaXJlIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtIiwibW9udGFudCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXMiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIiwiYWdlX2w1MTJfM18yIiwic21pY19kb3RfZGF0ZV9jb3VyYW50ZSIsInNtaWNfZG90X3Jlc2lkZW5jZSIsInJlc3VsdCIsInNtaWNfZG90X2JydXRfaG9yYWlyZSIsInJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xIiwicGxhZm9uZF9sNTEyXzNfMiIsImVuZmFudCIsImNvbmRpdGlvbnNfaG9yc19hZ2UiLCJkcm9pdF9vdXZlcnQiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiIsInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybSIsInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybSQwIiwicmVzc291cmNlc19tZW5hZ2UiLCJlbmZhbnRzX2FfY2hhcmdlIiwiYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlIiwicHJpc2VfZW5fY29tcHRlIiwibm9tYnJlX2VuZmFudHNfYWxpbmVhXzJfbDUyMV8zIiwidmVyc2lvbl9hdnJpbF8yMDA4X2RvdF9hZ2VfbWluIiwiYm1hZl9kb3RfZGF0ZV9jb3VyYW50ZSIsInJlc3VsdCQwIiwiYm1hZl9kb3RfbW9udGFudCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3ByZSIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlcyIsInJlc3VsdCQxIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfY29uIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfYWdlIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnIiwiZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9lbmZhbnRzIiwicmVzdWx0JDIiLCJlbmZhbnRfbGVfcGx1c19hZ2VfZG90X2xlX3BsdXMiLCJlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF8iLCJlc3RfZW5mYW50X2xlX3BsdXNfYWdlIiwicGxhZm9uZF9pX2lfZDUyMV8zIiwicGxhZm9uZF9pX2Q1MjFfMyIsImRyb2l0X291dmVydF9jb21wbGVtZW50IiwiZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlIiwibW9udGFudF9pbml0aWFsX2Jhc2VfcXVhdHJpZW1lIiwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lIiwibm9tYnJlX3RvdGFsX2VuZmFudHMiLCJzdW0xIiwic3VtMiIsIm5vbWJyZV9tb3llbl9lbmZhbnRzIiwibW9udGFudF9pbml0aWFsX2Jhc2VfcHJlbWllcl9lIiwiZHJvaXRfb3V2ZXJ0X2Jhc2UiLCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbiIsImFsbG9jYXRpb24iLCJjb21wbGVtZW50X2RlZ3Jlc3NpZiIsIm1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfcGFyXyIsIm1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzaWVtZSQwIiwibW9udGFudF9pbml0aWFsX2Jhc2VfZGV1eGllbWVfIiwicmFwcG9ydF9lbmZhbnRzX3RvdGFsX21veWVuIiwibW9udGFudF9pbml0aWFsX21ldHJvcG9sZV9tYWpvIiwibW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZSIsIm1vbnRhbnRfaW5pdGlhbF9iYXNlIiwibW9udGFudF9pbml0aWFsX21ham9yYXRpb24iLCJtb250YW50X3ZlcnNlX2NvbXBsZW1lbnRfcG91cl8iLCJtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuZWVfYmEiLCJtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuZWVfbWEiLCJtb250YW50X3ZlcnNlX2Jhc2UiLCJtb250YW50X3ZlcnNlX21ham9yYXRpb24iLCJtb250YW50X2Jhc2VfY29tcGxlbWVudF9wb3VyX2IiLCJtb250YW50X3ZlcnNlX2NvbXBsZW1lbnRfcG91cl8kMCIsIm1vbnRhbnRfdmVyc2UiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwiLCJpX2RhdGVfY291cmFudGUiLCJpX2VuZmFudHMiLCJpX3Jlc3NvdXJjZXNfbWVuYWdlIiwiaV9yZXNpZGVuY2UiLCJpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGUiLCJpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGUkMCIsImlfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XyIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3BlciIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3BlciQwIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzJDAiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXQiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9lbmYiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9hdmEiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9tb24iLCJpX21vbnRhbnRfdmVyc2UiLCJwcmlzZV9lbl9jaGFyZ2VfdG9fanNvbyIsImFyZyIsImFyZyQwIiwiYXJnJDEiLCJhcmckMiIsImFyZyQzIiwicHJpc2VfZW5fY2hhcmdlX29mX2pzb28iLCJwcmlzZV9lbl9jaGFyZ2UiLCJjb25zIiwic2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfIiwic2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfJDAiLCJzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSIsInByaXNlX2VuX2NvbXB0ZV90b19qc29vIiwicHJpc2VfZW5fY29tcHRlX29mX2pzb28iLCJ2ZXJzZW1lbnRfYWxsb2NhdGlvbnNfdG9fanNvbyIsInZlcnNlbWVudF9hbGxvY2F0aW9uc19vZl9qc29vIiwidmVyc2VtZW50X2FsbG9jYXRpb25zIiwiZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwiYXJnJDQiLCJhcmckNSIsImFyZyQ2IiwiZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzJDAiLCJjb2xsZWN0aXZpdGVfdG9fanNvbyIsImFyZyQ3IiwiY29sbGVjdGl2aXRlX29mX2pzb28iLCJjb2xsZWN0aXZpdGUiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAkMCIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQxIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc190b19qc29vIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vIiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDAiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kMSIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfdCIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfbyIsInNtaWNfdG9fanNvbyIsInNtaWNfb2ZfanNvbyIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQwIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDEiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkMCIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCQxIiwiZW5mYW50X2VudHJlZV90b19qc29vIiwiZW5mYW50X2VudHJlZSIsImVuZmFudF9lbnRyZWVfb2ZfanNvbyIsImVuZmFudF90b19qc29vIiwiZW5mYW50X29mX2pzb28iLCJlbmZhbnRfbGVfcGx1c19hZ2VfdG9fanNvbyIsImVuZmFudF9sZV9wbHVzX2FnZV9vZl9qc29vIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc190b19qc29vIiwiZnVuY3Rpb25faW5wdXQwIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDIiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAkMyIsImVuZmFudF9sZV9wbHVzX2FnZV9pbl90b19qc29vIiwiZW5mYW50X2xlX3BsdXNfYWdlX2luX29mX2pzb28iLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX3RvX2oiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2oiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kMiIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyQzIiwidmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pJDAiLCJzbWljX2luX3RvX2pzb28iLCJzbWljX2luX29mX2pzb28iLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMiIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQzIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDIiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkMyIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQ0IiwiZW5mYW50X2xlX3BsdXNfYWdlJDAiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kNCIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EkMCIsInNtaWMkMCIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ0IiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcyQwIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyQwIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDQiLCJlbWJlZF90eXBlX3ByZXQiLCJlbWJlZF90aXR1bGFpcmVfcHJldCIsImVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9kOCIsImVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9yOCIsImVtYmVkX2FtZWxpb3JlX3Bhcl9vY2N1cGFudCIsImVtYmVkX2xpbWl0ZV90cmFuY2hlIiwiZW1iZWRfbGltaXRlX3RyYW5jaGVfZGVjaW1hbCIsImVtYmVkX3ByZXN0YXRpb25fcmVjdWUiLCJlbWJlZF9wYXJlbnRfb3VfYXV0cmUiLCJlbWJlZF9zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUiLCJlbWJlZF9wYXJlbnRlIiwiZW1iZWRfZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pIiwiZW1iZWRfem9uZV9kX2hhYml0YXRpb24iLCJlbWJlZF9wYWllbWVudF9sb2dlbWVudF9kaXN0aW4iLCJlbWJlZF92ZXJzZW1lbnRfYSIsImVtYmVkX2RlcGVuc2VfbG9nZW1lbnQiLCJlbWJlZF9tb2RlX29jY3VwYXRpb25faW1wYXllIiwiZW1iZWRfdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0IiwiZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sIiwiZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZSIsImVtYmVkX3ByaXNlX2VuX2NoYXJnZSQwIiwiZW1iZWRfdHlwZV9sb2dlbWVudF9mb3llciIsImVtYmVkX2NhdGVnb3JpZV9lcXVpdmFsZW5jZV9sbyIsImVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsYyIsImVtYmVkX2NvbGxlY3Rpdml0ZSQwIiwiZW1iZWRfcHJpc2VfZW5fY2hhcmdlX2VuZmFudCIsImVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3NjbyQwIiwiZW1iZWRfZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pJDAiLCJlbWJlZF9jb252ZW50aW9uX2JhaWxsZXVyX3NvY2kiLCJlbWJlZF9jb252ZW50aW9uX2Ffbl9oX2EiLCJlbWJlZF9wZXJzb25uZV9zb3VzX2xvY2F0aW9uIiwiZW1iZWRfcGF0cmltb2luZSIsImVtYmVkX2NvbmRpdGlvbnNfZXRyYW5nZXJzIiwiZW1iZWRfcGVyc29ubmVfdml2YW50X2hhYml0dWVsIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uIiwiZW1iZWRfZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtIiwiZW1iZWRfcmVzc291cmNlc19haWRlc19wZXJzb25uIiwiZW1iZWRfY29udHJpYnV0aW9uc19zb2NpYWxlc19hIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlIiwiZW1iZWRfY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyIiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDAiLCJlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2UiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkMSIsImVtYmVkX3RyYWl0ZW1lbnRfZm9ybXVsZV9haWRlXyIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQyIiwiZW1iZWRfaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVuIiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lIiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDAiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkMSIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQyIiwiZW1iZWRfb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0IiwiZW1iZWRfaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQiLCJlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2UiLCJlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2UkMCIsImVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpbyQxIiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmllJDEiLCJlbWJlZF92ZXJpZmljYXRpb25fYWdlX3N1cGVyaWUkMSIsImVtYmVkX3NtaWMkMCIsImVtYmVkX3ByZXQiLCJlbWJlZF9uZXVmX291X2FuY2llbiIsImVtYmVkX3RyYW5jaGVfcmV2ZW51IiwiZW1iZWRfdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCIsImVtYmVkX2F1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIiwiZW1iZWRfZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sIiwiZW1iZWRfbG9nZW1lbnRfZm95ZXIiLCJlbWJlZF9lbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWwiLCJlbWJlZF9lbmZhbnRfYV9jaGFyZ2UiLCJlbWJlZF90eXBlX2JhaWxsZXVyIiwiZW1iZWRfbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfIiwiZW1iZWRfbmF0aW9uYWxpdGUiLCJlbWJlZF9jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDIiLCJlbWJlZF9wcm9wcmlldGFpcmUiLCJlbWJlZF9pbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGUiLCJlbWJlZF9lbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc18iLCJlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSIsImVtYmVkX2RlbWFuZGV1ciIsImVtYmVkX2xvY2F0aW9uIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29uIiwiZW1iZWRfY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCIsImVtYmVkX21vZGVfb2NjdXBhdGlvbiIsImVtYmVkX2xvZ2VtZW50IiwiZW1iZWRfbWVuYWdlIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29uJDAiLCJlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm4kMCIsImVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbCQwIiwiZW1iZWRfZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtJDAiLCJlbWJlZF9yZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm4kMCIsImVtYmVkX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYSQwIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDMiLCJlbWJlZF9jYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXIkMCIsImVtYmVkX2NhbGN1bF9ub21icmVfcGFydF9sb2dlbSQwIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDQiLCJlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2UkMCIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQ1IiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDYiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkMyIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQ0IiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDUiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkNiIsImVtYmVkX291dmVydHVyZV9kcm9pdHNfcmV0cmFpdCQwIiwiZW1iZWRfaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfIiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlJDEiLCJlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2UkMiIsImVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpbyQyIiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmllJDIiLCJlbWJlZF92ZXJpZmljYXRpb25fYWdlX3N1cGVyaWUkMiIsImVtYmVkX3NtaWNfaW4kMCIsImVtYmVkX2VsaWdpYmlsaXRlX3ByZXN0YXRpb25zXyQwIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wIiwiZXhvbmVyZV9jc2ciLCJ0YXV4X2NyZHMiLCJhaWRlX2ZpbmFsZSIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSIsInJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllcyIsImNvbmRpdGlvbl8yX2R1XzgzMl8yNSIsIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjYiLCJ0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjYiLCJ0cmFuY2hlIiwidHJhbmNoZV9oYXV0IiwidHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpIiwicmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzJDAiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8iLCJub21icmVfcGVyc29ubmVzX2FfY2hhcmdlIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fIiwibl9ub21icmVfcGFydHNfZDgzMl8xMSIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIiwiZGF0ZV9uYWlzc2FuY2VfYXNzdXJlIiwiYWdlX291dmVydHVyZV9kcm9pdCIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50IiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4iLCJtb2RlX29jY3VwYXRpb24iLCJhaWRlX3ZlcnNlZSIsIm1vbnRhbnRfYXBsIiwibW9udGFudF9jaGFyZ2VzIiwiZGVwZW5zZV9sb2dlbWVudCIsIm1vbnRhbnRfZGV0dGUiLCJtb2RlX29jY3VwYXRpb25faW1wYXllIiwiZGVwZW5zZV9sb2dlbWVudF9icnV0ZSIsInRvdGFsX2VjaGVhbmNlcyIsIm1lbnN1YWxpdGUiLCJsb3llciIsInRvdGFsIiwibW9udGFudF9sb3llciIsImRlcGVuc2VfbG9nZW1lbnRfbmV0dGUiLCJlY2hlYW5jZV9wcmV0X25ldHRlIiwibWVuc3VhbGl0ZV9uZXR0ZSIsImVjaGVhbmNlX3ByZXRfYnJ1dGUiLCJtZW5zdWFsaXRlX2JydXRlIiwibG95ZXJfbmV0IiwibG95ZXJfYnJ1dCIsInNldWlsX2ltcGF5ZV9kZXBlbnNlX2RlX2xvZ2VtZSIsIm1vbnRhbnRfaW1wYXllIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDUiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kNSIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EkMSIsInNtaWMkMSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSIsImxveWVyX3ByaW5jaXBhbF9iYXNlIiwiYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuIiwiem9uZSIsImxvZ2VtZW50X2VzdF9jaGFtYnJlIiwiYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlIiwidHlwZV9haWRlIiwiY29sb2NhdGlvbiIsInJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlIiwibG9nZW1lbnRfbWV1YmxlX2Q4NDJfMiIsImZyYWN0aW9uX2w4MzJfMyIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgyM18xNiIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdCIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbiIsInRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlIiwiYWJhdHRlbWVudF9mb3JmYWl0YWlyZV9kODIzXzE3IiwibG95ZXJfcmVmZXJlbmNlIiwibW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18xNiIsInBsYWZvbmRfbG95ZXJfZDgyM18xNl8yIiwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4IiwibG95ZXJfcHJpbmNpcGFsX2F2ZWNfcmVkdWN0aW9uIiwicGxhZm9uZF9zdXBwcmVzc2lvbl9kODIzXzE2IiwicGxhZm9uZF9kZWdyZXNzaXZpdGVfZDgyM18xNiIsImxveWVyX2VsaWdpYmxlIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnVlIiwicGFydGljaXBhdGlvbl9taW5pbWFsZSIsInJhcHBvcnRfbG95ZXJzIiwiYWlkZV9maW5hbGUkMCIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdCIsInRhdXhfbG95ZXJfZWxpZ2libGVfZm9ybXVsZSIsImNyZHMiLCJhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGkiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWIiLCJ0YXV4X2xveWVyX2VsaWdpYmxlX3RhdXhfYXJyb24iLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZHVjdGkiLCJ0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50IiwicGFydGljaXBhdGlvbl9yZXNzb3VyY2VzIiwicGFydGljaXBhdGlvbl9yZXNzb3VyY2VzJDAiLCJwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlIiwiYWlkZV9maW5hbGVfZm9ybXVsZSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQwIiwidHlwZV9sb2dlbWVudF9mb3llciIsImRhdGVfY29udmVudGlvbm5lbWVudCIsInJlZGV2YW5jZSIsImNvZWZmaWNpZW50X3JfZDgzMl8yNSIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNCIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMjQiLCJjb25kaXRpb25fMl9kdV84MzJfMjUkMCIsInBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZyIsImNhbGN1bF9ub21icmVfcGFydHNfZG90X2NvbmRpdCIsImNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZSIsImNhbGN1bF9ub21icmVfcGFydHNfZG90X3NpdHVhdCIsImNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYiIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNyIsImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MyIsImVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlIiwibl9ub21icmVfcGFydHNfZDgzMl8yNSQwIiwiYWxsb2NhdGlvbl9tZW5zdWVsbGUiLCJkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjciLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kMCIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSQxIiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDIiLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kMyIsImRlbm9taW5hdGV1ciIsImRlbm9taW5hdGV1ciQwIiwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4IiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZSIsImFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbSIsImVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIiwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4JDAiLCJhaWRlX2ZpbmFsZSQxIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtIiwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4JDEiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMSIsIm1lbnN1YWxpdGVfcHJpbmNpcGFsZSIsInR5cGVfdHJhdmF1eF9sb2dlbWVudCIsImRhdGVfc2lnbmF0dXJlX3ByZXQiLCJsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW4iLCJkYXRlX2VudHJlZV9sb2dlbWVudCIsImNvcHJvcHJpZXRlIiwic2l0dWF0aW9uX3I4MjJfMTFfMTNfMTciLCJ0eXBlX3ByZXQiLCJhbmNpZW5uZXRlX2xvZ2VtZW50IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzEwIiwibW9udGFudF9taW5pbWFsX2FpZGVfZDgzMl8xMCIsImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MyQwIiwibW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xIiwidGF1eF90cmFuY2hlX2luZmVyaWV1cmVfZDgzMl8xIiwidGF1eF90cmFuY2hlX3N1cGVyaWV1cmVfZDgzMl8xIiwidGF1eF9mcmFuY3NfdmVyc19ldXJvcyIsImFtZWxpb3JlX3Bhcl9vY2N1cGFudCIsImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MyQxIiwicmVzc291cmNlc19tZW5hZ2VfYXZlY19kODMyXzE4IiwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODMyIiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwIiwicGxhZm9uZF9zaWduYXR1cmUiLCJwbGFmb25kX2VudHJlZSIsInBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYiIsInBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYyIsIm1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMSQwIiwibWVuc3VhbGl0ZV9taW5pbWFsZSIsIm1lbnN1YWxpdGVfZWxpZ2libGUiLCJyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2wiLCJyZXNzb3VyY2VzX2RlbWFuZGV1ciIsInJlc3NvdXJjZXNfY29uam9pbnQiLCJwZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW4iLCJkZW1hbmRldXJfZXhlcmNlX2FjdGl2aXRlX3JlbXUiLCJjb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW4iLCJwZXJzb25uZXNfYV9jaGFyZ2UiLCJzaXR1YXRpb25fZmFtaWxpYWxlIiwiY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtIiwiZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXMiLCJkYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXQiLCJwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm8iLCJtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzgiLCJtb250YW50X2ZvcmZhaXRhaXJlX3JfODIyXzciLCJyZXNzb3VyY2VzX2ZvcmZhaXRhaXJlc19yODIyXzIiLCJwZXJzb25uZSIsInJlc3NvdXJjZXNfcGVyc29ubmVzX3ZpdmFudF9oYSIsImFiYXR0ZW1lbnQiLCJyZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGUiLCJhY2MiLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8iLCJtZW5hZ2UiLCJkZW1hbmRldXIiLCJjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3AiLCJjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZSIsInByZXQiLCJzZXVpbF9sODIyXzNfcGFydHNfcHJvcHJpZXRlIiwic2V1aWxfbDgyMl8zX3BhcnRzX3VzdWZydWl0Iiwic2V1aWxfbDgyMl81X3BhdHJpbW9pbmUiLCJ1c3VmcnVpdF9vdV9wcm9wcmlldGVfZmFtaWxsZSIsImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOSIsImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOCIsIm5vbWJyZV9wZXJzb25uZXNfbG9nZW1lbnQiLCJjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9taW4iLCJjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZSQwIiwiY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wJDAiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2RvdF8iLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2RvdF8kMCIsInBhdHJpbW9pbmVfdG90YWxfZGVtYW5kZXVyIiwiY29uZGl0aW9ucyIsImNvbmRpdGlvbl9uYXRpb25hbGl0ZSIsInBsYWZvbmRfaW5kaXZpZHVlbF9sODE1Xzlfc2VjdSIsImNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aSIsInVzdWZydWl0X291X3Byb3ByaWV0ZV9mYW1pbGxlJDAiLCJwYXJ0cyIsInBhcnRzJDAiLCJwYXJ0cyQxIiwicGFydHMkMiIsImNvbmRpdGlvbl9sb2dlbWVudF9tb2RlX29jY3VwYSIsImNvbmRpdGlvbl9vdXZlcnR1cmVfbDgyMl8xMF9wZSIsImFnZV9sMTYxXzE3XzJfc2VjdSIsInByZXN0YXRpb24iLCJlbGlnaWJpbGl0ZV9sb2dlbWVudCIsImFnZV9sMzUxXzhfMV9zZWN1IiwiZWxpZ2liaWxpdGUiLCJwZXJzb25uZV9hX2NoYXJnZSIsInBhcmVudCIsImNvbmRpdGlvbl8yX3I4MjNfNCIsInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV9hX2NoYSIsInBlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fYyIsImNvZWZmIiwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlIiwibm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jIiwibG95ZXJfcHJpbmNpcGFsIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xveWVyX3AiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3Jlc3NvdXIiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2JlbmVmaWMiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2RhdGVfY28iLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X25vbWJyZV8iLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3NpdHVhdGkiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3pvbmUiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xvZ2VtZW4iLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2FnZWVzX28iLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3R5cGVfYWkiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2NvbG9jYXQiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3JlZHVjdGkiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xvZ2VtZW4kMCIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYWlkZV9maSIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHJhaXRlbSIsImluZm9zIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSIsImNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kOCIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfMTUiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTUiLCJtb250YW50X21pbmltYWxfZGVwZW5zZV9uZXR0ZV8iLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8iLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kMCIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQxIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDIiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kMyIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ0IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDUiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kNiIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ3IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDgiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kOSIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlcyIsImVxdWl2YWxlbmNlX2xveWVyIiwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlIiwibG95ZXJfbWluaW1hbCIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZSIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjYyIsInJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYSIsImNoYXJnZXNfbWVuc3VlbGxlc19wcmV0IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzYiLCJtb250YW50X21pbmltYWxfYWlkZV9kODQyXzYiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTEiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTIiLCJjb2VmZmljaWVudF9kODQyXzExIiwiY29lZmZpY2llbnRfZDg0Ml8xMiIsImRhdGVfY2FsY3VsIiwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyIiwic2V1aWxfbWluaW1hbF9yZXNzb3VyY2VzX21lbmFnIiwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyJDAiLCJyZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfc2UiLCJwbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82Iiwic2V1aWxfbWluaW1hbF9kZXBlbnNlX25ldHRlX21pIiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZSQwIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDIiLCJyZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGkiLCJsb2NhdGlvbiIsImxvZ2VtZW50Zm95ZXIiLCJwcm9wcmlldGFpcmUiLCJsb2NhdGlvbiQwIiwicHJvcHJpZXRhaXJlJDAiLCJjYXRlZ29yaWVfY2FsY3VsX2FwbCIsInJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaSIsImJhaWxsZXVyIiwicGFyYW0wIiwidHJhaXRlbWVudF9mb3JtdWxlIiwidHJhaXRlbWVudF9mb3JtdWxlJDAiLCJsb2dlbWVudF9mb3llciIsInJlc3VsdCQzIiwicmVzdWx0JDQiLCJ0cmFpdGVtZW50X2Zvcm11bGUkMSIsInNvdXNfY2FsY3VsX3RyYWl0ZW1lbnQiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0iLCJpbmZvcm1hdGlvbnMiLCJkYXRlX2VtbWVuYWdlbWVudCIsImRlcGVuc2VzX2p1c3RpZmllZXNfcmVlbGxlbWVudCIsImRlbGFpX2FwcmVzX2VtbWVuYWdlbWVudF9sODIzXyIsImNvbmRpdGlvbl9yYW5nX2VuZmFudCIsImVsaWdpYmlsaXRlX2FwbF9kb3RfbWVuYWdlIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9kZW1hbmRldXIiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2RhdGVfY291cmEiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl8iLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl8kMCIsImVsaWdpYmlsaXRlX2FwbF9kb3RfZGF0ZV9jb3VyYSQwIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9lbGlnaWJpbGl0IiwiZGF0ZV9uYWlzc2FuY2Vfb3VfZ3Jvc3Nlc3NlIiwiY29uZGl0aW9uX3BlcmlvZGVfZGVtZW5hZ2VtZW50IiwicGxhZm9uZF9kODIzXzIyIiwibW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnQiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUiLCJjYXJhY3RlcmlzdGlxdWVzX3ByZXRfbDgzMV8xXzEiLCJjYXJhY3RlcmlzdGlxdWVzX3ByZXRfbDgzMV8xXzYiLCJwcm9wcmlldGUiLCJwcm9wcmlldGUkMCIsImNvbmRpdGlvbl9sb2dlbWVudF9wcmV0IiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfbWVuYWdlIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGVtYW5kIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9jIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0IiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0JDAiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9lbGlnaWIiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9ub21icmUiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb2VmZmkiLCJjb252ZW50aW9uIiwiY29udmVudGlvbiQwIiwiY29uZGl0aW9uX2xvZ2VtZW50X2JhaWxsZXVyIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuIiwiYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sIiwiZHVyZWVfbDg0MV8xXzMiLCJjb25kaXRpb25fYWNjZXNzaW9uX3Byb3ByaWV0ZSIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdCQxIiwiZWxpZ2liaWxpdGVfZGlzcG9zaXRpb25zX2NvbW11IiwiZGF0ZV9tYXJpYWdlIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDAiLCJlbGlnaWJpbGl0ZV9sODQxXzIiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIiwiYmFpbGxldXIkMCIsInJlc3VsdCQ1IiwicmVzdWx0JDYiLCJ0cmFpdGVtZW50X2Zvcm11bGUkMiIsInJlc3VsdCQ3IiwicmVzdWx0JDgiLCJ0cmFpdGVtZW50X2Zvcm11bGUkMyIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2kiLCJyZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY28iLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kMSIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQyIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDMiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kNCIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQ1IiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDAiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkMSIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQyIiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDMiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkNCIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQ1IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkMSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQyIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDMiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQ1IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDYiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkNyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDQiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkNSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ2IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDciLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkOCIsImFpZGVfZmluYWxlX2FwbCIsImFpZGVfZmluYWxlX2FsIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nIiwibWVuYWdlX3NhbnNfZW5mYW50c19nYXJkZV9hbHRlIiwiY2FsY3VsZXR0ZV9kb3RfbWVuYWdlIiwiY2FsY3VsZXR0ZV9kb3RfZGVtYW5kZXVyIiwiY2FsY3VsZXR0ZV9kb3RfZGF0ZV9jb3VyYW50ZSIsImNhbGN1bGV0dGVfZG90X3Jlc3NvdXJjZXNfbWVuYSIsImNhbGN1bGV0dGVfZG90X2VsaWdpYmlsaXRlIiwiY2FsY3VsZXR0ZV9kb3RfYWlkZV9maW5hbGVfZm9yIiwiY2FsY3VsZXR0ZV9kb3RfdHJhaXRlbWVudF9haWRlIiwiY2FsY3VsZXR0ZV9kb3RfY29lZmZpY2VudHNfZW5mIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlJDAiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUkMSIsImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZSQyIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlJDMiLCJ0eXBlX3ByZXRfdG9fanNvbyIsInR5cGVfcHJldF9vZl9qc29vIiwidGl0dWxhaXJlX3ByZXRfdG9fanNvbyIsInRpdHVsYWlyZV9wcmV0X29mX2pzb28iLCJ0aXR1bGFpcmVfcHJldCIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XyIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XyQwIiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X3QiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X28iLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IiwiYW1lbGlvcmVfcGFyX29jY3VwYW50X3RvX2pzb28iLCJhbWVsaW9yZV9wYXJfb2NjdXBhbnRfb2ZfanNvbyIsImxpbWl0ZV90cmFuY2hlX3RvX2pzb28iLCJsaW1pdGVfdHJhbmNoZV9vZl9qc29vIiwibGltaXRlX3RyYW5jaGUiLCJsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX3RvX2pzb28iLCJsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX29mX2pzb28iLCJsaW1pdGVfdHJhbmNoZV9kZWNpbWFsIiwicHJlc3RhdGlvbl9yZWN1ZV90b19qc29vIiwicHJlc3RhdGlvbl9yZWN1ZV9vZl9qc29vIiwicHJlc3RhdGlvbl9yZWN1ZSIsInBhcmVudF9vdV9hdXRyZV90b19qc29vIiwicGFyZW50X291X2F1dHJlX29mX2pzb28iLCJwYXJlbnRfb3VfYXV0cmUiLCJzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVfdG9fanMiLCJzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVfb2ZfanMiLCJzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUiLCJwYXJlbnRlX3RvX2pzb28iLCJwYXJlbnRlX29mX2pzb28iLCJwYXJlbnRlIiwiZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9nIiwiZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9nJDAiLCJ6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIiwiem9uZV9kX2hhYml0YXRpb25fb2ZfanNvbyIsInpvbmVfZF9oYWJpdGF0aW9uIiwicGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvJDAiLCJ2ZXJzZW1lbnRfYV90b19qc29vIiwidmVyc2VtZW50X2Ffb2ZfanNvbyIsInZlcnNlbWVudF9hIiwiZGVwZW5zZV9sb2dlbWVudF90b19qc29vIiwiZGVwZW5zZV9sb2dlbWVudF9vZl9qc29vIiwibW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV90b19qc29vIiwibW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9vZl9qc29vIiwidHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvIiwidHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvJDAiLCJ0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW4iLCJ0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW4kMCIsInNpdHVhdGlvbl9mYW1pbGlhbGVfdG9fanNvbyIsInNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvbyIsInByaXNlX2VuX2NoYXJnZV90b19qc29vJDAiLCJwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyQwIiwidHlwZV9sb2dlbWVudF9mb3llcl90b19qc29vIiwidHlwZV9sb2dlbWVudF9mb3llcl9vZl9qc29vIiwiY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsIiwiY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsJDAiLCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3AiLCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3AkMCIsImNvbGxlY3Rpdml0ZV90b19qc29vJDAiLCJjb2xsZWN0aXZpdGVfb2ZfanNvbyQwIiwicHJpc2VfZW5fY2hhcmdlX2VuZmFudF90b19qc29vIiwicHJpc2VfZW5fY2hhcmdlX2VuZmFudF9vZl9qc29vIiwicHJpc2VfZW5fY2hhcmdlX2VuZmFudCIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXyQxIiwic2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfJDIiLCJlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMkMSIsImVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyQyIiwiY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWxfdG9fIiwiY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwiLCJjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbF9vZl8iLCJjb252ZW50aW9uX2Ffbl9oX2FfdG9fanNvbyIsImNvbnZlbnRpb25fYV9uX2hfYSIsImNvbnZlbnRpb25fYV9uX2hfYV9vZl9qc29vIiwicGVyc29ubmVfc291c19sb2NhdGlvbl90b19qc29vIiwicGVyc29ubmVfc291c19sb2NhdGlvbiIsInBlcnNvbm5lX3NvdXNfbG9jYXRpb25fb2ZfanNvbyIsInBhdHJpbW9pbmVfdG9fanNvbyIsInBhdHJpbW9pbmUiLCJwYXRyaW1vaW5lX29mX2pzb28iLCJjb25kaXRpb25zX2V0cmFuZ2Vyc190b19qc29vIiwiY29uZGl0aW9uc19ldHJhbmdlcnMiLCJjb25kaXRpb25zX2V0cmFuZ2Vyc19vZl9qc29vIiwicGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50IiwicGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50JDAiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMCIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSQxIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDAiLCJyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2wkMSIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQwIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wJDEiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMCIsImNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mbyQxIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDAiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl8kMSIsInRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSIsInRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSQwIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDkiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTAiLCJpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDIiLCJpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDIkMCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQwIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jJDEiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjYyQxIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kkMSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X3RvXyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X29mXyIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfdG9faiIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfb2ZfaiIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X3RvX2pzbyIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X29mX2pzbyIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfdCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfbyIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyQwIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDEiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kNiIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ3IiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDYiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kNyIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfdCQwIiwidmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9vJDAiLCJzbWljX3RvX2pzb28kMCIsInNtaWNfb2ZfanNvbyQwIiwicHJldF90b19qc29vIiwicHJldF9vZl9qc29vIiwibmV1Zl9vdV9hbmNpZW5fdG9fanNvbyIsIm5ldWZfb3VfYW5jaWVuX29mX2pzb28iLCJuZXVmX291X2FuY2llbiIsInRyYW5jaGVfcmV2ZW51X3RvX2pzb28iLCJ0cmFuY2hlX3JldmVudSIsInRyYW5jaGVfcmV2ZW51X29mX2pzb28iLCJ0cmFuY2hlX3JldmVudV9kZWNpbWFsX3RvX2pzb28iLCJ0cmFuY2hlX3JldmVudV9kZWNpbWFsIiwidHJhbmNoZV9yZXZlbnVfZGVjaW1hbF9vZl9qc29vIiwiYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2VfdG9fanNvIiwiYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UiLCJhdXRyZV9wZXJzb25uZV9hX2NoYXJnZV9vZl9qc28iLCJkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGUiLCJkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGUkMCIsImxvZ2VtZW50X2ZveWVyX3RvX2pzb28iLCJsb2dlbWVudF9mb3llcl9vZl9qc29vIiwiZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfIiwiZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMiLCJlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc18kMCIsImVuZmFudF9hX2NoYXJnZV90b19qc29vIiwiZW5mYW50X2FfY2hhcmdlIiwiZW5mYW50X2FfY2hhcmdlX29mX2pzb28iLCJ0eXBlX2JhaWxsZXVyX3RvX2pzb28iLCJ0eXBlX2JhaWxsZXVyX29mX2pzb28iLCJ0eXBlX2JhaWxsZXVyIiwibG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnNfIiwibG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnNfJDAiLCJsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyIsIm5hdGlvbmFsaXRlX3RvX2pzb28iLCJuYXRpb25hbGl0ZV9vZl9qc29vIiwibmF0aW9uYWxpdGUiLCJjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF90b18iLCJjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9vZl8iLCJwcm9wcmlldGFpcmVfdG9fanNvbyIsInByb3ByaWV0YWlyZV9vZl9qc29vIiwiaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlIiwiaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlJDAiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMCIsImVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaSQxIiwicGVyc29ubmVfYV9jaGFyZ2VfdG9fanNvbyIsInBlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28iLCJkZW1hbmRldXJfdG9fanNvbyIsImRlbWFuZGV1cl9vZl9qc29vIiwibG9jYXRpb25fdG9fanNvbyIsImxvY2F0aW9uX29mX2pzb28iLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMCIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQxIiwiY2F0ZWdvcmllX2NhbGN1bF9hX3BfbF90b19qc29vIiwiY2F0ZWdvcmllX2NhbGN1bF9hX3BfbF9vZl9qc29vIiwiY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCIsIm1vZGVfb2NjdXBhdGlvbl90b19qc29vIiwibW9kZV9vY2N1cGF0aW9uX29mX2pzb28iLCJsb2dlbWVudF90b19qc29vIiwibG9nZW1lbnQiLCJsb2dlbWVudF9vZl9qc29vIiwibWVuYWdlX3RvX2pzb28iLCJtZW5hZ2Vfb2ZfanNvbyIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQyIiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfJDMiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMiIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSQzIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDIiLCJyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2wkMyIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQyIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wJDMiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTEiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTIiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMiIsImNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mbyQzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDE0IiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDIiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl8kMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxNSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxNiIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxNyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxOCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQyIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jJDMiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjYyQzIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDIiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kkMyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXyQwIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbl90Iiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbl9vIiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5fdG9fIiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5fb2ZfIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pJDAiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckMiIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyQzIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDgiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kOSIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyQ4IiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDkiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2kkMSIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaSQyIiwic21pY19pbl90b19qc29vJDAiLCJzbWljX2luX29mX2pzb28kMCIsImVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaSQyIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpJDMiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AkNCIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSQ0IiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvJDQiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl8kNCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUkMCIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50JDAiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMTAiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kMTAiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hJDIiLCJzbWljJDIiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTkiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMjAiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMjEiLCJyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2wkNCIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQ0IiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpJDQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MkNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjJDQiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMjIiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50JDAiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50JDAiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckNCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCJdLCJzb3VyY2VzIjpbIiIsIi9idWlsdGluLytpbnQ2NC5qcyIsIi9idWlsdGluLyttbEJ5dGVzLmpzIiwiL2J1aWx0aW4vK2ZhaWwuanMiLCIvYnVpbHRpbi8rc3RkbGliLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytpZWVlXzc1NC5qcyIsIi9idWlsdGluLytlZmZlY3QuanMiLCIvYnVpbHRpbi8rZnNfbm9kZS5qcyIsIi9idWlsdGluLytmcy5qcyIsIi9idWlsdGluLyt1bml4LmpzIiwiL2J1aWx0aW4vK3N5cy5qcyIsIi9idWlsdGluLytmc19mYWtlLmpzIiwiL2J1aWx0aW4vK25hdC5qcyIsIi9idWlsdGluLytncmFwaGljcy5qcyIsIi9idWlsdGluLyttYXJzaGFsLmpzIiwiL2J1aWx0aW4vK2lvLmpzIiwiL2J1aWx0aW4vK2djLmpzIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi96YXJpdGhfc3R1YnNfanMvYmlnaW50ZWdlci5qcyIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvemFyaXRoX3N0dWJzX2pzL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rYmlnYXJyYXkuanMiLCIvYnVpbHRpbi8ranNsaWIuanMiLCIvYnVpbHRpbi8rcGFyc2luZy5qcyIsIi9idWlsdGluLytpbnRzLmpzIiwiL2J1aWx0aW4vK2hhc2guanMiLCIvYnVpbHRpbi8rb2JqLmpzIiwiL2J1aWx0aW4vK2RvbWFpbi5qcyIsIi9idWlsdGluLytjb21wYXJlLmpzIiwiL2J1aWx0aW4vK2pzbGliX2pzX29mX29jYW1sLmpzIiwiL2J1aWx0aW4vK2JpZ3N0cmluZy5qcyIsIi9idWlsdGluLyttZDUuanMiLCIvYnVpbHRpbi8rYmFja3RyYWNlLmpzIiwiL2J1aWx0aW4vK3N0ci5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvYnVpbHRpbi8rYXJyYXkuanMiLCIvYnVpbHRpbi8rc3luYy5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2J1aWx0aW4vK3BybmcuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLWNzdHJ1Y3QuanMiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL3VjaGFyLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9pbnQ2NC5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvbGV4aW5nLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXQubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL3ByaW50ZXhjLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9maWxlbmFtZS5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvY29tcGxleC5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvY2FtbGludGVybmFsRm9ybWF0QmFzaWNzLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxBdG9taWMubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL3N0ZGxpYi5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvcGVydmFzaXZlcy5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvZmxvYXQubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL3JhbmRvbS5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvbGlzdC5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvaW5fY2hhbm5lbC5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvb3V0X2NoYW5uZWwubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2VpdGhlci5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvbmF0aXZlaW50Lm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9vYmoubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2NhbWxpbnRlcm5hbExhenkubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2xhenkubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL3NlcS5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvb3B0aW9uLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9yZXN1bHQubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2Jvb2wubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2J5dGVzLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9pbnQubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL3N0cmluZy5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvdW5pdC5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvbWFyc2hhbC5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvYXJyYXkubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2ludDMyLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9wYXJzaW5nLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9zZXQubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL21hcC5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvc3RhY2subWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL3F1ZXVlLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9zdHJlYW0ubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2J1ZmZlci5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvcHJpbnRmLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9hcmcubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2Z1bi5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvZ2MubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2RpZ2VzdC5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvaGFzaHRibC5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvd2Vhay5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvZm9ybWF0Lm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9zY2FuZi5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvY2FsbGJhY2subWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2NhbWxpbnRlcm5hbE9PLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxNb2QubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2dlbmxleC5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvZXBoZW1lcm9uLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9iaWdhcnJheS5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvZGF0ZXNfY2FsYy9kYXRlcy5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIveW9qc29uL3lvanNvbi5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvcHB4X3lvanNvbl9jb252X2xpYi95b2pzb25fY29udi5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvcHB4X3lvanNvbl9jb252X2xpYi95b2pzb25fY29udl9lcnJvci5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvcHB4X3lvanNvbl9jb252X2xpYi9wcHhfeW9qc29uX2NvbnZfbGliLm1sIiwiL3dvcmtzcGFjZV9yb290L3J1bnRpbWVzL29jYW1sL3J1bnRpbWUubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lLm1sIiwiIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9pbXBvcnQubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL2pzLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9kb21faHRtbC5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvZG9tLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC90eXBlZF9hcnJheS5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvZmlsZS5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvZm9ybS5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwveG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL3dvcmtlci5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvd2ViU29ja2V0cy5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvd2ViR0wubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL3JlZ2V4cC5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvdXJsLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9zeXNfanMubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL3Jlc2l6ZU9ic2VydmVyLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9wZXJmb3JtYW5jZU9ic2VydmVyLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9tdXRhdGlvbk9ic2VydmVyLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9qc3RhYmxlLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9qc29uLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9jU1MubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL2RvbV9ldmVudHMubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL2RvbV9zdmcubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL2V2ZW50U291cmNlLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9maXJlYnVnLm1sIiwiL2hvbWUvZGVtZXJpZ28vLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9nZW9sb2NhdGlvbi5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvaW50ZXJzZWN0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9kZW1lcmlnby8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL2ludGwubWwiLCIvd29ya3NwYWNlX3Jvb3QvcnVudGltZXMvanNvby9ydW50aW1lLm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvbGF3X3NvdXJjZS9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvbGF3X3NvdXJjZS9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2FwaV93ZWIubWwiLCIvd29ya3NwYWNlX3Jvb3QvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FpZGVzX2xvZ2VtZW50Lm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvbGF3X3NvdXJjZS9haWRlc19sb2dlbWVudF9hcGlfd2ViLm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvYXBpX3dlYi5tbCIsIi9ob21lL2RlbWVyaWdvLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvc3RkX2V4aXQubWwiXSwibWFwcGluZ3MiOiI7O0FBQ0EsQ0FBQyxTQUFVQTtJQUNULE9BQU9DOzs7O0tBQ0xDO09BQ0U7UUFDQztVQUFzQkYsOENBRWhCRztRQUNIQztJQUVSLFNBQVNEO01BQ1AsSUFBSUUsT0FBU0gsUUFBUUk7TUFDckIsb0JBQW9CRDtNQUNwQixPQUFPTCxvQkFDVCxDQWJEO0dBY0NBOzs7O0lDMk5GLFNBQVNPLG1CQUFtQkMsR0FBSyxTQUFRLFVBQVk7SUN6THJELFNBQVNDLGdCQUFn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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQ2tCS0M7S0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0N3QkFDO0tBQ0FDO0tBQ0FDO0tBSUFDO0tBQ0FDOzs7O0tDekJBQztLQW1IQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQ285RU1DO0tBUVFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQ2xsRmRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDc0VFQztLQUNBQztLQUNBQztLQUNBQzs7O0tBL0VZQztLQW1IWkM7S0FDQUM7S0FDQUM7S0FDQUM7OztLQW1JQUM7S0FDQUM7S0FDQUM7S0FDQUM7OztLQ3hQRkM7S0FDQUM7S0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7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b0UsZ0JBTFJXLElBUEtIOztvQkFPTEc7MENBWTZCO0lBM0oxQixTS3hRVEMsY0w0YWVmO01BQUs7UUFBSywrQkFBVkEsSUFBZ0M7MkJBQUc7SUFwS3pDLFNDN0pUZ0IsV0R1VVdyQyxHQUFJLDJCTXpjZk4sT055Y1dNLEVBQXdCO0lBMUsxQixTQzVKVHNDLGFEdVVhaEYsR0FBSSxxQk0xY2pCb0MsT04wY2FwQyxFQUEwQjtJQTNLOUIsU0MzSlRpRixZRHVVWWpGLEdBQUksb0JNM2NoQm9DLE9OMmNZcEMsRUFBeUI7SUE1SzVCLFNDMUpUa0YsVUR1VVU1SjtNQUF5QixxQk01Y25DOEcsT040Y21DLDRCQUF6QjlHLEdBQTBDO0lBN0szQyxTQ3pKVDZKLFlEdVVZM0YsR0FBeUIscUJNN2NyQzRDLE9ONmNxQyxVQUF6QjVDLEdBQTRDO0lBOUsvQyxTQ3hKVDRGLGNEdVVjcEY7TUFDaEIsY00vY0VvQyxPTjhjY3BDO01BQ1Esb0JNL2N0Qm9DO01OK2MrQyxxQk0vYy9DQSxPTitjMkQ7SUFoTGxELFNDdkpUaUQ7TUR3VW1CLG9CTWhkbkJqRCxXTmdkNEMscUJNaGQ1Q0EsT05nZHdEO0lBakwvQyxTQ3RKVGtELFdEMlVXNUMsR0FBSSwyQk1uZGZMLE9ObWRXSyxFQUF3QjtJQXJMMUIsU0NySlQ2QyxhRDJVYXZGLEdBQUkscUJNcGRqQnFDLE9Ob2RhckMsRUFBMEI7SUF0TDlCLFNDcEpUd0YsWUQyVVl4RixHQUFJLG9CTXJkaEJxQyxPTnFkWXJDLEVBQXlCO0lBdkw1QixTQ25KVHlGLFVEMlVVbks7TUFBeUIscUJNdGRuQytHLE9Oc2RtQyw0QkFBekIvRyxHQUEwQztJQXhMM0MsU0NsSlRvSyxZRDJVWWxHLEdBQXlCLHFCTXZkckM2QyxPTnVkcUMsVUFBekI3QyxHQUE0QztJQXpML0MsU0NqSlRtRyxjRDJVYzNGO01BQ2hCLGNNemRFcUMsT053ZGNyQztNQUNRLG9CTXpkdEJxQztNTnlkK0MscUJNemQvQ0EsT055ZDJEO0lBM0xsRCxTQ2hKVHVEO01ENFVtQixvQk0xZG5CdkQsV04wZDRDLHFCTTFkNUNBLE9OMGR3RDtJQTVML0MsU0MvSVR3RCxpQkQrVWUsY00vZGZ6RCxRTitkZSxrQksvZGZELE1MK2Q2QztJQWhNcEMsU0M5SVQyRCxnQkQrVXdDLDBCQUFiLGFBQWE7SUFqTS9CLFNDN0lUQyxvQkQrVW1DLHNDQUFhO0lBbE12QyxTQzVJVEMsa0JEK1U0Qyw0QkFBYixhQUFhO0lBbk1uQyxTQzNJVEMsc0JEK1V1QyxrQ0FBYTtJQXBNM0MsU0NoRlRDLHdCWDVPTCxJVTBoQnFDaEk7SUE5TnZCLFNDNUVUaUk7TURrVE07T0FGc0NDO09BQU5ySjtPQUFoQnNKO09BQU52SjtPQUVWLFNBRmdCdUosS0FFVCxVQUYrQkQ7TUFDdEMscUJBRFV0SixLQUFzQkM7SUFRdEIsSUFBaEJ1SixpQk1qZkF6RDtJTmlmZ0IsU0N0VGhCMEQsUUR3VFkvRztNQUNkO1FBRW1COztTQUNKLFNBTmI4RztTQU1hO21CQURYRSxhQUNBQztxQkFDQUU7Y0FDQyxtQkFIREgsa0JBR3FELFdBTjNDaEg7Y0FNK0Msa0JBRnpEaUgsV0FHUzttQkFGVEU7U0FEVyxvQkFEWEgsYUFDQUM7U0FLVSx3QkFYWkgsY0FNRUcsU0FDQUU7U0FJVSxTQUFWQztRQUFVO29CQUNlO0lBWlgsU0NwVGhCQyxrQkRrVWdCLGtCQWRoQlAsbUJBY3lEO0lBZHpDLFNDdlRoQlEsS0R1VUtDO01BQ1AsY0FDQSw2QkFGT0EsUUFFUztJQUVWO3NEQ3hVSkY7SUQ2VW9EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09DOWlCcEQ1RztPQUNBRjs7Ozs7Ozs7Ozs7Ozs7T0FTQUc7T0FDQUc7T0E2QkFDO09FeUNRUTtPRnZDUkM7T0FJQVI7T0NsQ0FDO09BQ0FDO09BQ0FDO09BTUFDO09BQ0FDO09BQ0FDOztPRG1HQU87T0FFQUM7T0FFQUc7T0FEQUQ7T0FFQUU7T0FFQUM7T0NyR0FJO09BREFDO09FUUFDO09DeEJBRztPQ0FBQztPQUNBQztPTGlJQTBDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BRUFFO09BREFEO09BR0FHO09BREFEO09LaEpBckQ7T0FEQUM7T0FFQU47T0FxQkEwRjtPQUNBbkY7T0FDQWtGO09BRUE3RTtPQUNBRjtPQUNBRztPQUNBRztPQUpBd0U7T0w4SUFEO09BQ0F0RTtPQUNBcUU7T0FDQUQ7T0FDQUQ7T0t2SkFqRTtPQUNBQztPQVNBK0Q7T0QvQkE3RDtPQURBQztPQUVBRjtPSmtMQTZEO09BQ0FqRDtPSTlJQVQ7T0pnSkFPO09BQ0FDO09BQ0FpRDtPQUNBRDtPQUNBRDtPQUNBRDtPQUNBRDtPQUNBRDtPSXpLQUQ7T0FDQW5DO09BeUhBa0M7O09KK0RBZDtPQUlBQztPQUNBVztPQUNBUDtPQUNBNUU7T0RzTElxQztPQ3JMSjZDO0lENlVvRDs7Ozs7T0M5aUJwRDVHO09BQ0FGOztPQVNBRztPQUNBRztPQTZCQUM7T0V5Q1FRO09GdkNSQztPQUlBUjtPQ2xDQUM7T0FDQUM7T0FDQUM7T0FNQUM7T0FDQUM7T0FDQUM7O09EbUdBTztPQUVBQztPQUNBRTtPQUNBQztPQUNBQztPQUVBQztPQ3JHQUk7T0FEQUM7T0VRQUM7T0N4QkFHO09DQUFDO09BQ0FDO09MaUlBMEM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0tqSkF0RDtPQURBQztPQUVBTjtPQXFCQTBGO09BQ0FuRjtPQUNBa0Y7T0FFQTdFO09BQ0FGO09BQ0FHO09BQ0FHO09BSkF3RTtPTDhJQUQ7T0FDQXRFO09BQ0FxRTtPQUNBRDtPQUNBRDtPS3ZKQWpFO09BQ0FDO09BU0ErRDtPRC9CQTdEO09BREFDO09BRUFGO09Ka0xBNkQ7T0FDQWpEO09JOUlBVDtPSmdKQU87T0FDQUM7T0FDQWlEO09BQ0FEO09BQ0FEO09BQ0FEO09BQ0FEO09BQ0FEO09JektBRDtPQUNBbkM7T0F5SEFrQztPSitEQWQ7T0FJQUM7T0FDQVc7T0FDQVA7T0FDQTVFO09BQ0FrRjtJRDZVb0Q7YU8vaUJwRG9CLEtBQUt2SSxHQUFJLFVBQUpBLEVBQVU7YUFDZndJLE1BQU14SSxHQUFJLFVBQUpBLEVBQVc7YUFFakJ5SSxlQUFVLHlCQUVJO2FBRWRDLGdCQUFXLHlCQUVFO2FBRWJDO01BQVksbUJBQ0osSUFBTDNJLFdBQUssVUFBTEEsR0FDTSxRQUFJO2FBRWI0STtNQUFhLGtCQUNMLFNBQ0MsSUFBTDVJLFdBQUssVUFBTEEsRUFBVzthQUVmNkksU0FBUy9JLEVBRVhnSjtNakJ2Q0gsU2lCdUNHQSxNQURVLElBQUw5SSxFQUNMOEksS0FEZSxxQkFESmhKLEVBQ05FLElBQ1csT0FBaEI4STthQUVFQyxVQUFVakosRUFDWmdKO01qQjFDSCxTaUIwQ0dBLEtBQWUsT0FBZkEsRUFDVyxJQUFMOUksRUFETjhJLEtBQ2lCLHFCQUZMaEosRUFFTkU7YUFFSmdKLElBQUtULEtBQU1DO01qQjdDaEIsbUJpQjhDYSxJQUFMeEksV0FBVSxxQkFEUnVJLEtBQ0Z2STtNQUNNLElBQUxpSjtNQUFXLHFCQUZKVCxNQUVQUzthQUVKQyxLQUFNWCxLQUFNQztNakJqRGpCLG1CaUJrRGEsSUFBTHhJLFdBQUssa0JBREZ1SSxLQUNIdkk7TUFDTSxJQUFMaUo7TUFBSyxrQkFGR1QsTUFFUlM7YUFNSkUsTUFBT1osS0FBTUMsTUFBTVksR0FBR0M7TUFBSyxTQUFSRDs7aUJBQUdDLE9BQ0osSUFBTkMsR0FEVUQsTUFDSixrQkFEWGQsVUFDS2U7O2lCQURPRjtpQkFBR0MsT0FFRixJQUFORSxLQUZRRixNQUVGLGtCQUZQYixXQUVDZTtNQUNxQixRQUFLO2FBRXhDQyxRQUFTakIsS0FBTUMsTUFBTVksR0FBR0M7TUFBSyxTQUFSRDs7aUJBQUdDLE9BQ04sSUFBTkMsR0FEWUQsTUFDTixrQkFEVGQsVUFDR2U7UUFFSztlQUhJRjtlQUFHQyxNQUlQO01BRkcsSUFBTkUsS0FGVUY7TUFFSixrQkFGTGIsV0FFRGUsS0FFSTs7OztPQWhEbEJoQjtPQUNBQztPQUVBQztPQUlBQztPQUlBQztPQUlBQztPQUlBQztPQUlBRTtPQUlBQztPQUlBRTs7O09BUUFDO09BS0FLOztJakI5REw7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09rQitDS0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SWxCL0NMO2FtQjBCc0JDLFNBQVNyRyxHQUFJLG1CQUFKQSxtQkFBa0I7YUFVM0JzRyxhQUFhbEosRUFBRTdFLEdBQUksc0JBQU42RSxFQUFFN0UsRUFBeUM7YUFDeERnTyxpQkFBaUJuSixFQUFFN0UsRUFBRW9FLEdBQ3hDLHNCQURvQ1MsRUFBRTdFLEVBQUVvRSxFQUNEOztLQVdyQzZKO0tBQ0FDO0tBRUFDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBRUFDO0tBRUFDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBSUFDO0tBQ0FDO0tBQ0FDO2FBd0JFQyxLQUFNQztNQUNBLGdCQURBQTtRQUVJO3lDQUZKQTtTQVRHLE1BUElEO1NBWWtDLFVBWmxDQTtRQVlrQyxVQVY3QzlLLE1BT0FnTDtrQ0FTeUI7YUFNM0JDLE9BQ0V2SztNbkJ2R1Q7U21CeUdVLFNBRkRBLE1BRWlCLGFBRmpCQTtZQUNBd0ssS0FEQXhLO3dCQUNBd0ssS0FEQXhLOztNQU1vQixHQUFuQixTQUxEd0ssU0FLb0IsYUFMcEJBO1lBSUFsSSxLQUpBa0k7d0JBSUFsSSxLQUVHO01BRUYsb0JBSkRBO2VBSkFrSTtlQVNHLDBDQUF1QzthQUUzQmxJLEtBQU1rSSxNQUNwQixPQURvQkEsT0FDQzthQUVQQyxHQUFJRCxNQUNsQixPQURrQkEsT0FDRzs7OEJBakJ4QkQsT0FhaUJqSSxLQUdBbUk7S0FJbkJDO0tBQ0FDO0tBQ0FDO0tBU0VDO2FBR0FDLE9BQU9ySjtNQUNULGNBRFNBLE1BQ1QsVUFEU0EsS0FIUG9KO01BS0E7TUFDRixnQ0FIU3BKLEVBR0Q7YUFFTnNKLE9BQU8vSyxHQUFJLE9BQUpBLG9CQUFvQzthQUUzQ2dMLHdCQUF3QjNDLEVBQUU0QyxFQUFFQztNQUM5QixjQUQ0QkQsTUFDNUIsVUFENEJBLElBQ04sT0FESTVDLFlBRXhCOzhCQUY0QjZDLFNBRWI7YUFHZkMsUUFBUTlDLEVBQUU0QztNQUNaLHdCQURVNUMsRUFBRTRDO01BRVoseUJBRlU1QyxFQUFFNEMsRUFFRDthQUdURyxhQUFhL0MsRUFBRTRDO01BQ2pCLHdCQURlNUMsRUFBRTRDO01BRWpCLDhCQUZlNUMsRUFBRTRDLEVBRUQ7YUFHZEksUUFBUWhELEVBQUU0QyxFQUFFakw7TUFDZCx3QkFEVXFJLEVBQUU0QztNQUVaLHlCQUZVNUMsRUFBRTRDLEVBQUVqTCxFQUVEO2FBR1hzTCxVQUFVakQsRUFBRTRDO01BQ2Qsd0JBRFk1QyxFQUFFNEM7TUFFZCwyQkFGWTVDLEVBQUU0QyxFQUVEO2FBR1hNLFVBQVVsRCxFQUFFNEM7TUFDZCx3QkFEWTVDLEVBQUU0QztNQUVkLDJCQUZZNUMsRUFBRTRDLEVBRUQ7YUFLWE8sU0FBUzdDLEdBQUc4QyxHQUFHN0MsR0FBRzhDLEdBQUdqSztNQUVGOzs7UUFGRUE7Ozs7UUFBVGdLOzs7VUFDYSxPQURoQjlDLE1BQVlsSCxTQUFUZ0s7Ozs7UUFBTUM7OztVQUVDLE9BRko5QyxNQUFNbkgsU0FBSGlLO1FBSWYsZUFKa0JqSyxNQUlsQixVQUFlLG1CQUpUa0gsR0FBRzhDLEdBQUc3QyxHQUFHOEMsR0FBR2pLO1FBSW1CO01BRHJDLDhDQUNxQzs7OztPQTNDeENxSjtPQUtBQztPQU9BSTtPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQU9BQzs7Ozs7OztPQTFDQVg7OztPQTNHZTVCO09BVUFDO09BQ0FDO09BWWpCQztPQUNBQztPQUVBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQUVBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQzs7T0FJQUM7T0FDQUM7T0FDQUM7VUF3QkVDOztPQTRCRk07T0FDQUM7T0FDQUM7Ozs7YUN0R0FlLHVCQUFzQyxlQUFlO2FBS3JEQyxpQkFBa0JDO01BQ0csSUFBbkJDLFFBRGdCRDtNQUVwQixTQVBFRjtNQU9GO1FBRWUsSUFBVEksT0FBUyxXQUhYRDtRQUlGLHNCQUxrQkQsSUFJZEU7UUFJSixPQUpJQTtZQUdEMUQ7bUNBQ0gseUJBQW9ELE1BRGpEQSxDQUN3RCxFQUEzRCxNQURHQSxFQUVJO2FBSVAyRCxxQkFBc0JIO01BQ0QsSUFBbkJDLFFBRG9CRDtNQUV4QixTQXBCRUY7TUFtQnFCLElBRW5CSSxPQUFTLFdBRlREO01BR0osc0JBSndCRCxJQUdwQkU7TUFDSixPQURJQSxNQUVFO2FBT0pFLE1BUUVDO01BRUosSUFBSUMsRUFBSixhQUZJRDtNQUVKLE9BQUlDLFVBRkFELE9BRUFDLFVBRkFELElBS0MsaUJBTERBLElBS3FCO2FDTnZCRSxVRFNXRjtNQUViLElBQUlDLEVBQUosYUFGYUQ7TUFFYixPQUFJQyxVQUZTRCxPQUVUQyxVQUZTRCxJQUtSLHFCQUxRQSxJQUtnQjs7O21CQTlDM0JOLGlCQWFBSSxxQkFZQUMsTUNPQUc7O2FDeVZFQyxRRHZWUWhOLEdBQ0osSUFBSlcsRUFBSSxzQkFDUixPQUZZWCxFQUVaLE9BRElXLENBRWdCO2FBRWxCc00sU0FBVS9NO01BQ0osSUFBSjRNLEVBQUksYUFESTVNO1NBQ1I0TSxvQ0FJRCxPQUxTNU07TUFFMEQsc0NBRjFEQSxFQU1UO2FBR0RnTixPQUFROUssR0FBYyxvQkFBZEEsY0FBa0Q7YUFTMUQrSyxNQUFJbk4sRUFBRVc7TUFDUjs7O21DQURRQTtxRER6RE40TCxpQkN5RE01TDtnQkFDQSxrQkFERlgsU0FDWTthQUVoQm9OLFFBQVFwTixFQUFFVztNQUNULFVBRFNBO1FBRVA7MkJBRk9BO1NBRVAsa0JBRk9BLGtCRDVEVjRMLGlCQzREVTVMO1FBRU8sMkJBRlRYO01BR0w7OzttQ0FIT1c7cURENURWNEwsaUJDNERVNUw7Z0JBR0Msa0JBSEhYLFNBR2E7Ozs7O09BTnJCbU47T0FUQUQ7T0FUQUQ7T0FxQkFHO09DNlRFSjtPRHpWRkQ7T0N5VkVDO09EbFZGQztPQVNBQzs7YUNuREFHLGFBQVcsUUFBRzthQUVkQyxTQUFPM00sU0FBTyxVQUFQQSxFQUZQME0sTUFFNkI7YUFFN0JFLEtBQUs1TSxFQUFFNk0sWUFBVSxVQUFaN00sRUFBRTZNLEtBQXdCO2FBRTNCQyxTQUFPQyxLQUFLQztNQUNaLHFCQURPRDtNQUNQO1lBRUtGLGNBQUg3TTtRQUFxQixVQUFyQkEsaUJ0QmpDWCxPc0I4QlM4TSxTQUdLRCxLQUhPRztNQUVULGtCQUZTQSxPQUc0QjthQUV4Q0MsTUFBSTVOLEVBQUU2TjtNQUFlLHFCQUFmQTtNQUFlO1FBRUk7U0FBcEJMO1NBQUg3TTtTQUF1QixvQnRCckNsQyxPc0JtQ1NpTixNQUFJNU4sRUFFQ3dOO1FBQWUscUJBRmhCeE4sRUFFRlc7TUFEQyxRQUNpQzthQUVwQ21OLFdBQVc5TixFQUFFNk47TXRCdkN0QixJc0J1Q3NCRTtNQUFTO1FBQU0scUJBQWZBO1FBQWU7VUFHeEIsSUFEQ1AsY0FBSDdNLFdBQ0UsbUJBSE9YLEVBRVRXO1VBQ0U7WUFFUSxJQUFMQztZQUFjLFVBQWRBLGlCdEI1Q2hCLE9zQnVDU2tOLFdBQVc5TixFQUVOd047VUFDRCxJQUhTTyxNQUVSUDs7UUFERixTQUlvQzthQUV2Q1EsT0FBT2hPLEVBQUU2TjtNdEI5Q2xCLElzQjhDa0JFO01BQVM7UUFBTSxxQkFBZkE7UUFBZTtjQUVuQlAsY0FBSDdNO1VBQ0QsY0FITVgsRUFFTFc7V0FFVSxVQUZWQSxpQnRCaERYLE9zQjhDU3FOLE9BQU9oTyxFQUVGd047Y0FGSU8sTUFFSlA7O1FBREYsU0FJZ0I7YUFFbkJTLE9BQU9KO01BQWUscUJBQWZBO01BQWU7WUFFakJMLGNBQUg3TTtRQUNJLGdCQURKQSxpQnRCdkRYLE9zQnFEU3NOLE9BRUtUO01BREYsUUFFbUI7YUFFdEJVLFNBQVNsTyxFQUFFNk47TUFBZSxxQkFBZkE7TUFBZTtRQUdqQjtTQURKTDtTQUFIN007O1NBQ08sb0J0QjdEbEIsT3NCMERTdU4sU0FBU2xPLEVBRUp3TjtRQUNGLDJCQUhNeE4sRUFFUFc7TUFEQyxRQUUwQjthQUk3QndOLFVBQVVuTyxFQUFFb08sSUFBSVA7VUFBSlEsVUFBSU47TUFDdEI7UUFBTSxxQkFEZ0JBO1FBQ2hCO1VBR1U7V0FESFA7V0FBSDdNO1dBQ00saUJBSkFYLEVBQUVxTyxNQUdSMU47V0FIUTBOO1dBQUlOLE1BR1RQOztRQURGLE9BRk9hLE1BS1E7YUFFcEIvSyxLQUFLdEQsRUFBRTZOO010QnhFaEIsSXNCd0VnQkU7TUFDYjtRQUFNLHFCQURPQTtRQUNQO2NBRU9QLGNBQUg3TTtVQUNKLFdBSktYLEVBR0RXO2NBSEdvTixNQUdBUDs7UUFERixTQUdNO2FBRVhlLE9BQU92TyxFQUFFd087TUFDVCxxQkFET3hPLEVBQUV3TztNQUNUOzZCQUVLQyxlQUFIOU47UUFBbUIsVUFBbkJBLGlCdEJsRlgsT3NCK0VTNE4sT0FBT3ZPLEVBR0Z5TztNQURELFFBQzZCO2FBRXJDQyxTQUFTQyxJQUNMLHFCQURLQSxNQUNMLGdCQUlHO2FBRVBDLE9BQU9EO01BQ0gscUJBREdBO01BQ0gsY0FDS0UsY0FBSGxPLDBCQUFHa087TUFHUCxRQUFJO2FBV0dDLFNBQU9DO1VBUEQ3SixPQUFLeUosR0FPSkk7TUFObEI7UUFBTSxxQkFEZ0JKO1FBQ2hCO1VBSUYseUJBTGF6Six5QkFBS3lKO1FBR2xCLE9BSGF6SixLQVFGO2FBVUo4SixNQUFNaFAsRUFBRStPO1VBUkRqVCxJQUFFNlMsR0FRREk7TUFQbkI7UUFBTSxxQkFEY0o7UUFDZDtjQUdLRSxjQUFIbE87VUFDSixXQUdhWCxFQVJDbEUsRUFJVjZFO1VBQ0osUUFMYzdFLGdCQUFFNlMsR0FJVEU7O1FBRFAsU0FNWTthQVVMSSxXQUFXalAsRUFBRWtQLE9BQUtIO1VBUk43SixLQVFDZ0ssT0FSSXBULElBQUU2UyxHQVFESTtNQVA3QjtRQUFNLHFCQUR3Qko7UUFDeEI7VUFJUztXQURKRTtXQUFIbE87V0FDTyxrQkFHT1gsRUFSQ2tGLEtBQUtwSixFQUlwQjZFO1dBQ08sSUFMYTdFO1dBQUxvSjtXQUFLcEo7V0FBRTZTLEdBSW5CRTs7UUFEUCxPQUhtQjNKLEtBU0c7YUFFcEJpSyxRQUFRQyxFQUFFVDtNdEJwSW5CLElzQm9JbUJFO01BQ2hCO1FBQU0scUJBRFVBO1FBQ1Y7VUFJRixJQURPRSxjQUFIcE8sV0FDSixnQkFMVXlPLEVBSU56TztVQUNKLGFBTFlrTyxLQUlMRTtVQURQO2lCQUVtQjthQUVqQk0sT0FBT0QsRUFBRVQ7TXRCM0lsQixJc0IySWtCRTtNQUNmO1FBQU0scUJBRFNBO1FBQ1Q7VUFJRixJQURPRSxjQUFIcE8sV0FDSixnQkFMU3lPLEVBSUx6TztVQUNKLFFBRkE7VUFFQSxJQUxXa08sS0FJSkU7O1FBRFAsU0FFa0I7YUFFaEJPLEtBQUtGLEVBQUVUO010QmxKaEIsSXNCa0pnQkU7TUFDYjtRQUFNLHFCQURPQTtRQUNQO2NBR0tFLGNBQUhwTztVQUNELGNBTEl5TyxFQUlIek8sR0FDUSxVQURSQTtjQUpLa08sS0FJRkU7O1FBRFAsU0FFaUM7YUFFL0JRLFNBQVN2UCxFQUFFMk87TXRCekpwQixJc0J5Sm9CRTtNQUNqQjtRQUFNLHFCQURXQTtRQUNYO1VBSUksSUFEQ0UsY0FBSHBPLFdBQ0Usa0JBTEtYLEVBSVBXO1VBQ0UsR0FHSitMLE9BQ0UsT0FERkE7VUFISSxJQUxPbUMsS0FJTkU7O1FBRFAsU0FNVTthQVNSUyxNQUFNeFAsRUFBRTJPLEdBQUdjO1VBQUhaLFFBQUdhO01BQ2pCO1FBQU0scUJBRFFiO1FBQ1I7VUFJSSxJQURDRSxjQUFIcE8sV0FDRSxtQkFMTytPO1VBS1A7Z0JBR0tDLGdCQUFIL087WUFDSixXQVRJWixFQUlKVyxFQUlJQztnQkFSRWlPLEtBSUhFLEtBSk1XLEtBUUZDOztVQURQO1FBSkosU0FPaUI7YUFFZkMsV0FBVzVQLEVBQUVrRixLQUFLeUosR0FBR2M7VUFBUnJLLFlBQUt5SixRQUFHYTtNQUMzQjtRQUFNLHFCQURrQmI7UUFDbEI7VUFJSSxJQURDRSxjQUFIcE8sV0FDRSxtQkFMaUIrTztVQUtqQjtZQUlTO2FBREpDO2FBQUgvTzthQUNPLGtCQVRGWixFQUFFb0YsT0FJWHpFLEVBSUlDO2FBUk93RTthQUFLeUosS0FJYkU7YUFKZ0JXLEtBUVpDOztVQURQLE9BUFd2SztRQUdmLE9BSGVBLE9BVVk7YUFFekJ5SyxTQUFTN1AsRUFBRTJPLEdBQUdjO1VBQUhaLFFBQUdhO01BQ3BCO1FBQU0scUJBRFdiO1FBQ1g7VUFJSSxJQURDRSxjQUFIcE8sV0FDRSxtQkFMVStPO1VBS1Y7WUFJRixJQURPQyxnQkFBSC9PLGFBQ0osZ0JBVE9aLEVBSVBXLEVBSUlDO1lBQ0osYUFUU2lPLEtBSU5FLEtBSlNXLEtBUUxDO1lBRFA7O1FBSkosU0FNNkI7YUFFM0JHLFFBQVE5UCxFQUFFMk8sR0FBR2M7VUFBSFosUUFBR2E7TUFDbkI7UUFBTSxxQkFEVWI7UUFDVjtVQUlJLElBRENFLGNBQUhwTyxXQUNFLG1CQUxTK087VUFLVDtZQUlGLElBRE9DLGdCQUFIL08sYUFDSixnQkFUTVosRUFJTlcsRUFJSUM7WUFDSixRQUZBO1lBRUEsSUFUUWlPLEtBSUxFLEtBSlFXLEtBUUpDOztVQURQO1FBSkosU0FNNEI7YUFFMUJJLFFBQU1DLEdBQUdyQixHQUFHYztVQUFIWixRQUFHYTtNQUNsQjtRQUFNLHFCQURTYixRQUNILG1CQURNYTtRQUNOOztZQUlSO2FBRHFCQzthQUFIL087YUFBWG1PO2FBQUhwTzthQUNKLGdCQUxRcVAsR0FJSnJQLEVBQWNDO1lBQ2xCLGFBTFdpTyxLQUlKRSxLQUpPVyxLQUlPQzs7O1NBRHJCO1FBS0EsU0FBSzthQUVITSxVQUFRQyxJQUFJdkIsR0FBR2M7VUFBSFosUUFBR2E7TUFDckI7UUFBTSxxQkFEWWIsUUFDTixtQkFEU2E7UUFDVDs7O1lBSUEsSUFEYUMsZ0JBQUgvTyxhQUNWLGFBTEVzUCxTQUlRdFA7WUFDVixTQUFKc0MsT0FMVTJMLFVBQUdhLEtBSUlDO1lBRU4sT0FEWHpNO1VBS0o7UUFGQSxvQkFFRTthQU1BaU4sU0FBU25RLEVBQUVsRSxFQUFFc1U7TUFDbkIsR0FEaUJ0VSxJQUFFc1U7UUFDTDtjQURHdFU7U0FFSixvQnRCclBoQixPc0JtUFNxVSxTQUFTblEsT0FBSW9RO1FBRVgscUJBRk9wUSxFQUFFbEU7TUFLZixRQUFHO2FBRUh1VSxLQUFLL1AsRUFBRU47TUFDVCxRQURPTTtRQUlMLGlDdEI5UEwsT3NCbVBTNlAsU0FPR25RLE9BQUZNO01BRUwsZ0NBRWM7YUFFVmdRLE9BQU8zUDtNQUNKLFVBRElBLGlCdEJoUWhCLE9zQmdRUzJQLE9BQU8zUCxTQUNLO2FBRVo0UCxRQUFRdlE7TUFDSCxvQnRCcFFkLE9zQm1RU3VRLFFBQVF2UTtNQUNSLHFCQURRQSxVQUNPO2FBTWZ3USxlQUFlN0I7TUFDckI7TUFBVSxnQkFEV0Esa0J0QjFReEIsT3NCMFFTNkIsZUFBZTdCLGVBQ1c7YUFPOUI4QixNQUFNOUI7TUFDRixxQkFERUE7TUFDRjtRQUlrQjtTQURiRTtTQUFIbE87U0FDZ0Isb0J0QnZSM0IsT3NCMFFTNlAsZUFRRTdCO1FBS0ssVUFETGhPLGlCdEJ0UlgsT3NCOEJTOE0sU0F3UEtvQjtNQURQLFFBRXdDO2FBTXRDNkIsU0FBUzFRLEVBQUVXO01BQ1QsSUFBSkMsRUFBSSxXQURPWixFQUFFVztNQUVSLFVBRExDLGlCdEI5UlAsT3NCNlJTOFAsU0FBUzFRLEVBQ1hZLFNBQ2tCO2FBV3BCK1AsUUFBUTNRLEVBQUVXO01BQ0wsb0J0QjNTVixPc0I2UlMrUCxTQWFJMVEsRUFBRVc7TUFDTCxzQnRCM1NWLFVzQjBTZUEsUUFDUzthQUlmaVEsU0FBUzVRLEVBQUVsRSxFQUFFNlM7TUFDYixxQkFEYUE7TUFDYjtRQUlXO1NBRE5FO1NBQUhsTztjQUpTN0U7U0FLQSxvQnRCcFRwQixPc0IrU1M4VSxTQUFTNVEsT0FJSjZPO1FBQ0QscUJBTEs3TyxFQUFFbEUsRUFJVDZFO01BREosUUFFaUM7YUFFMUJrUSxLQUFLN1EsRUFBRTJPO01BQ2xCLGlDdEJ2VEgsT3NCK1NTaUMsU0FPVTVRLE9BQUUyTyxTQUNIO2FBUVRtQyxVQUFVOVEsRUFBRVEsRUFBRW1PO01BQ2QscUJBRGNBO01BQ2Q7UUFJTSxJQURERSxjQUFIbE8sV0FDSSxlQUxJWCxFQUFFUSxFQUlWRztRQUVLLFVBRExvUSxtQnRCcFVYLE9zQitUU0QsVUFBVTlRLEVBS1IrUSxJQURHbEM7TUFEUCxRQUcwQjthQUU1Qm1DLEtBQUtoUixFQUFFUSxFQUFFbU87TUFDSixvQnRCeFVWLE9zQitUU21DLFVBUUM5USxFQUFFUSxFQUFFbU87TUFDSixzQnRCeFVWLFVzQnVVWW5PLFFBQ2dCO2FBS25CeVEsU0FBUzNRLEVBQUVxTztNQUNqQixhQURlck87ZUFyVGIrTTs7aUJBMFRRLHFCQUxPc0I7aUJBS1A7dUJBR0tFLGNBQUhsTzttQkFDSyxVQURMQSxFQUNLLFNBVEZMLFVBUUF1TztpQkFEUCxRQUUyQjthQUVqQ3FDLEtBQUs1USxFQUFFcU87TUFDVCxHQURPck8sTUFDTywwQkFBc0IsZ0JBRDdCQSxFQUFFcU8sR0FFSTthQW9CWHdDLEtBQUs3USxFQUFFcU87TUFDVCxZQURPck87O2lCQUFFcU87O3VCQWRReUMsSUFjVjlRLEVBZFl1TyxLQWNWRjttQkFiVDtxQkFBTSxxQkFEYUU7cUJBQ2I7dUJBSUYsc0JBTGF1Qzt1QkFLYixTQUFJQyxJQUVGLGtCQUhLdEM7dUJBQ1AsSUFMYXFDLElBS1RDLElBTFd4QyxLQUlSRTs7cUJBRFAsU0FpQmU7ZUFMTCx5QkFLSzthQUVidUMsV0FBV2xDLEVBQUVUO01BQ2IscUJBRGFBO01BQ2I7WUFHS0UsY0FBSGxPO1FBQ0Qsa0JBTFV5TyxFQUlUek87cUN0QjFYWCxPc0JzWFMyUSxXQUFXbEMsRUFJTlA7O01BRFAsUUFFOEM7YUFFNUMwQyxXQUFXbkMsRUFBRVQ7TXRCN1h0QixJc0I2WHNCRTtNQUNuQjtRQUFNLElBR0oyQyxLQUhJLFdBRGEzQztRQUNiLEdBR0oyQztjQUFTekMsS0FBVHlDLFFBQU03USxFQUFONlE7VUFDSyxjQUxVcEMsRUFJVHpPLFFBSldrTyxLQUlSRTtVQUM2QixPQUR0Q3lDO1FBREUsU0FFd0M7YUFFdENDLE1BQU16QixHQUFHckI7TUFDVCxxQkFEU0E7TUFDVDtRQUl3RDtTQURuREU7U0FBSGxPO1NBQ3NELGdCQUxsRHFQLEdBSUpyUDtTQUMwQyxvQnRCellyRCxPc0I2WFM0USxnQkFXSzFDO1NBQzhCLG9CdEJ6WTVDLE9zQm9ZUzRDLE1BQU16QjtTQUtpQixnQkFMakJBLEdBSUpyUDtTQUNTLG9CdEJ6WXBCLE9zQnNYUzJRLGdCQWtCS3pDO1FBQ0QseUJ0QnpZYixVc0J3WVdsTztNQURKLFFBRXFFOzthQXlCckUrUSxlQUdBLGtCQUFrQjthQWlCaEJDLFFBQVFoRDtNQUNkLFNBMUJhb0M7UUEyQkwscUJBRk1wQztRQUVOLGNBR0tFLGNBQUhsTyxXQUNLLFVBRExBLEVBQ0ssUUFERmtPO1FBRFAsUUFFb0I7TUE5QmQsSUFOR3JPLEVBTUgsUUFEQ3VRO01BQ0Q7UUFMQSxzQkFER3ZRO1FBQ0gsb0JBREdBLGtCRjdYYitMLGlCRTZYYS9MLEtBcUNkO2FBRUtvUixLQUFLakQ7TUFDWCxTQXJCVTNPO1FBc0JGLHFCQUZHMk87UUFFSCxjQUdLRSxjQUFIbE8sV0FDSyxVQURMQSxFQUNLLEtBREZrTztRQURQLFFBRWlCO01BekJSLElBQVRnRCxVQURJN1I7TUFDSztRQUtILElBQUpBLEVBQUksU0FMTjZSLE9BVkZILFNBZVEsa0JBQUoxUixJQUNELENBb0JOO2FBR0s4UixJQUFJbkQsR0FBR2M7TUFDUCxxQkFESWQ7TUFDSjtRQUlJLElBRENFLGNBQUhsTyxXQUNFLG1CQUxHOE87UUFLSDtjQUdLQyxnQkFBSDlPO1VBQ1UsYUFMZEQsRUFJSUMsa0J0QmpkZixPc0J5Y1NrUixJQUlLakQsS0FJSWE7UUFEUDtNQUpKLFFBTTRCO2FBRTFCcUMsS0FBSy9SLEVBQUUyTyxHQUFHYztNQUNWLHFCQURPZDtNQUNQO1FBSUksSUFEQ0UsY0FBSGxPLFdBQ0UsbUJBTE04TztRQUtOO1VBSVc7V0FETkM7V0FBSDlPO1dBQ1Msb0J0QjdkeEIsT3NCb2RTbVIsS0FBSy9SLEVBSUE2TyxLQUlJYTtVQUNELHFCQVRIMVAsRUFJSFcsRUFJSUM7UUFESjtNQUpKLFFBTThCO2FBRTVCb1IsV0FBV3JELEdBQUdjO01BQ2QscUJBRFdkO01BQ1g7WUFHS0UsY0FBSGxPO1FBQ0ssVUFETEEsaUJ0Qm5lWCxPc0IrZFNxUixXQUFjdkMsR0FJVFo7TUFEUCxrQkFIZ0JZLEtBS1U7YUE0QjVCd0MsY0FBYy9CLElBQUl2UCxFQUFFZ08sR0FBRy9OLEVBQUU2TztNQUN4QixzQkFEYVMsSUFBSXZQLEVBQUtDOzs7O2tCQWJuQixxQkFhcUI2TztrQkFickI7d0JBR0tDLGNBQUg5TzsyQkFVTnFSLGNBQWMvQixJQUFJdlAsRUFBRWdPLEdBVmQvTixFQUFHOE87a0JBRFAsVUFXZ0IvTyxFQUFFZ087O2dCQUFGaE87O2tCQU5kLHFCQU1nQmdPO2tCQU5oQjt3QkFHS0UsY0FBSGxPOzJCQUdOc1IsY0FBYy9CLElBSFJ2UCxFQUFHa08sS0FHY2pPLEVBQUU2TztrQkFKdkIsVUFJcUI3TyxFQUFFNk8sS0FJVzthQUVwQ3lDLGFBQWFoQyxJQUFJdkIsR0FBR2M7TUFDaEIscUJBRGFkLE1BQ1AsbUJBRFVjO01BQ1Y7O2NBTWVDLGdCQUFIOU8sYUFBWGlPLGNBQUhsTztpQkFiUnNSLGNBTWEvQixJQU9MdlAsRUFBR2tPLEtBQVdqTyxFQUFHOE87WUFIbEJ4TTs7cUJBREgsYUFDR0E7TUFFSCxPQUZHQSxDQUl3QjthQUczQmlQLFFBQVFDO01BQ1IscUJBRFFBO01BQ1I7WUFHVUMsZ0NBQVAxUjtRQUNJLFVBREpBLGlCdEJyaEJaLE9zQmloQlN3UixRQUlVRTtNQURaLFFBRXFCO2FBRW5CQyxRQUFRRjtNQUNSLHFCQURRQTtNQUNSO1lBR1VDLGdDQUFKelI7UUFDQyxVQUREQSxpQnRCNWhCZixPc0J3aEJTMFIsUUFJVUQ7TUFEWixRQUVxQjthQUV2QkUsTUFBTUg7TUFDSyxvQnRCaGlCaEIsT3NCd2hCU0UsUUFPRUY7TUFDUix5QnRCaGlCSCxPc0JpaEJTRCxRQWNFQyxnQkFDZ0I7YUFRbEJJLHlCQUF5QnhTLEVBQUUyTztNdEJ4aUJwQyxJc0J3aUJvQ0U7TUFDakM7UUFBTSxxQkFEMkJBO1FBQzNCO1VBSUksSUFEQ0UsY0FBSHBPLFdBQ0UsbUJBTHFCWCxFQUl2Qlc7VUFDRTtZQUVGLElBRFVDO1lBQ0Q7b0JBRENBO21DdEI5aUJyQixPc0J3aUJTNFIseUJBQXlCeFMsRUFJcEIrTztVQUNELElBTHVCRixLQUl0QkU7O1FBRFAsU0FNb0M7YUFFbEMwRCwwQkFBMEJ6UyxFQUFFMk87TXRCbmpCckMsSXNCbWpCcUNFO01BQ2xDO1FBQU0scUJBRDRCQTtRQUM1QjtVQUlJLElBRENFLGNBQUhwTyxXQUNFLG1CQUxzQlgsRUFJeEJXO1VBQ0UseUJBTHdCa08sS0FJdkJFO1VBQ0QsSUFHUzJEO1VBQ0Y7a0JBREVBOztvQnRCM2pCdEIsT3NCbWpCU0QsMEJBQTBCelMsRUFJckIrTztRQURQLFNBTTRDO2FBRTlDNEQsY0FBYzNTLEVBQUUyTztNQUVsQixvQnRCaGtCSCxPc0JtakJTOEQsMEJBV1V6UyxFQUFFMk87TUFDbEI7NkJ0Qi9qQkgsT3NCd2lCUzZELHlCQXNCVXhTLEVBQUUyTzttQkFFWTthQUU1QmlFLFVBQVV4RCxFQUFFVDtNQUNkLGNBQXlCaE8sR0FBUyxzQkFEdEJ5TyxFQUNhek8sRUFBYztNQUExQixvQnRCbmtCaEIsT3NCOENTcU4sWUFvaEJRVztNQUNkLHlCdEJua0JILE9zQjhDU1gsT0FvaEJNb0IsRUFBRVQsZUFDNkI7YUFXekNrRSxLQUFLQztNQUNELDRCdEIva0JULE9zQnVDU2hGLFdBb0RKYyxPQW1mS2tFLFdBQ3NCO2FBRXZCQyxVQUFVRDtNQUNHLGVBREhBLEtBQ0c7TUFDaEIsWUFEQ0c7UUFFSyxZQUZFRCxPQUdUO01BR2EsVUFOWEMscUJ0QmxsQlAsT3NCaWxCU0YsVUFDS0MsYUFNb0I7aUJBTWZFLFdBQVdKO01BQ3JCLHFCQURxQkE7TUFDckI7UUFFVSxJQURKSyxlQUFKeEUsWUFDUSxtQkFEUkE7UUFDUTtVQVFXO1dBUFpFO1dBQUhsTztXQU9lLGFBWFh1UztXQVdXOztXQUNXLG9CdEIxbUJ6QyxVc0JrbUJrQnJFLEtBT0ltRTtXQUNTLG9CdEIxbUIvQixnQnNCZ21CZUc7VUFVRSx5QnRCMW1CakIsVXNCa21CZXhTLEVBT0FzUztRQVJJLElBY1csYUFqQlhDLFlBaUJXO1FBQ04sVUFEVEcsdUJ0Qi9tQmYsV3NCK21Cc0JELFFBZlBEO01BcUJSLGlCQXZCWUQsYUF1Qlc7YUFrQnpCSSxZQUFZdFQsRUFBRTJPLEdBQUdjO01BQ25CLGNBQ1c5TztRQUNQLGNBQVNDLEdBQ1Asa0JBSlFaLEVBRUhXLEVBQ0VDLEVBQ0Y7UUFEUCxzQnRCMW9CUCxPc0JtQ1NnTixXQW9tQmE2QixTQUtYO01BSlUsU0FKTnFELFV0QnBvQmYsT3NCbUNTbEYsV0FvbUJVZTtNQUZoQixvQnRCcm9CSCxXc0J3Qkt0QixNQTRtQlV5Rjs0QnRCcG9CZixPc0JxRFM3RSxrQkF5bEJKO2FBRUFzRixRQUFRNUUsR0FBR2M7TUFDYiw0QkFBaUI5TyxFQUFFQyxHQUFLLFVBQVBELEVBQUVDLEVBQVcsRUFEcEIrTixHQUFHYyxHQUN3QjthQUVuQytELGFBQWFDO01BQ2YsU0FBUXZRO1FBQ0EscUJBRk91UTtRQUVQLFVBSUYsSUFERzlTLFdBQ0gsVUFER0EsRUFKRHVDO1FBR0YsUUFFVztNQUxqQixPQUFRQSxDQU9QO2FBRUN3USxhQUFhL0U7TUFDZixJQUFJbk8sS0FEV21PO01BQ2Y7UUFFUSxxQkFGSm5PO1FBRUksY0FHS21PLFlBQUhoTyxXQUxOSCxPQUtTbU8sYUFBSGhPO1FBREosUUFHTTthQUlOZ1QsS0FBSzdYO01BQ1gsU0FEV0EsVUFDRixVQURFQSxpQnRCenFCZCxPc0J5cUJTNlgsaUJBQ2dCOzs7O09BdGxCcEJqRjtPQU9BRTtPQWdCU0U7T0FuQ0x4TDtPQVBBNks7T0FxREthO09BV0FDO09BR0xFO09BT0FFO09BT0FDO09BT0FDO09Ba0JBQztPQVlBSTtPQVlBQztPQVdBQztPQVdBQztPQVVBRTtPQTNNSjVDO09BRUFDO09BRUFDO09BOE5BOEM7T0EzS0k5QjtPQWlMQStCO09BR0FDO09BZUpFO09Bd0JBRTtPQXZRSS9DO09BbVJLaUQ7T0F4UUw3QztPQVBBRjtPQWdTSmtEO09BaUJBRTtPQXNCQUM7T0FRSUc7T0FPQUM7T0FPQUU7T0FrREFFOztPQVNBQztPQWtKQW1CO09BbmpCQXRGO09BdUJBUTtPQUtBQzs7T0ErWUE0RDtPQVdBQztPQVdBQztPQXVDSkU7T0EwSUFxQjtPQVRBRDtPQXhHQWY7O09BK0JBSTtPQUlBQztPQWlGQVk7T0FVQUU7T0FZSUM7O1FDdnBCSkM7YUFDQUMsS0FBSzNULEdBQUksVUFBSkEsRUFBVTthQUNmNFQsTUFBTWxJLEVBQUdtSSxXQUFVLEdBQWJuSSxHQUFvQyxJQUFMMUwsRUFBL0IwTCxLQUFvQyxPQUFMMUwsRUFBaUIsT0FBN0M2VCxTQUFvRDthQUM3REM7TUFBTSxVQUFtQixJQUFMOVQsV0FBSyxPQUFMQTtNQUFpQixzQ0FBNEI7YUFDakUrVCxLQUFLckksRUFBRTVMLEdBQUksR0FBTjRMLEdBQTRDLElBQUwxTCxFQUF2QzBMLEtBQTRDLGtCQUExQzVMLEVBQXFDRSxHQUFaLFFBQW9CO2FBQ3BEZ1UsWUFBTyxVQUFtQixJQUFMdEksV0FBSyxPQUFMQSxFQUFpQixRQUFJO2FBQzFDdUksTUFBSW5VLEVBQUU0TCxHQUFJLEdBQUpBLEdBQTBDLElBQUwxTCxFQUFyQzBMLEtBQStDLHFCQUFqRDVMLEVBQXVDRSxJQUFaLFFBQTJCO2FBQzFEa1UsT0FBTVIsS0FBTUM7TXZCekJqQixVdUJ5QjJDLElBQUwzVCxXQUFLLGtCQUExQjJULEtBQXFCM1QsR0FBc0IsT0FBakQwVDthQUNOUyxPQUFLclU7TXZCMUJWLFV1QjBCaUMsSUFBTEUsV0FBSyxrQkFBdkJGLEVBQWtCRSxHQUFtQjthQUMxQ29VLGVBQVUsZ0JBQXVDO2FBQ2pEQyxlQUFVLGdCQUF1QzthQUVqREMsUUFBTXhFLEdBQUd5RSxHQUFHckk7TUFBSyxHQUFScUk7V0FBR3JJLFFBQ0FzSSxHQURBdEksTUFDVHVJLEdBRE1GLHdCQUFIekUsR0FDSDJFLEdBQVNEOztPQUNBLEtBRkF0SSxHQUVBO01BQ1QsUUFBSzthQUVSd0ksVUFBUTFFLElBQUl1RSxHQUFHckk7TUFBSyxHQUFScUk7O1dBQUdySSxJQUNHLElBQU5zSSxHQURHdEksTUFDRyxrQkFEVjhELFNBQ0l3RTtRQUdFO01BREEsT0FIQ3RJLE9BSUE7YUFFZnlJLFVBQVdqQjtNdkJ6Q2hCLFV1QnlDK0QsSUFBTDFULFdBQUssVUFBTEEsR0FBbEIsVUFBeEIwVDthQUNYa0IsZUFBVSxVQUFnQyxJQUFMNVUsV0FBSyxVQUFMQSxLQUFWLFFBQWtCO2FBQzdDNlU7TUFBUyxVQUF1QyxJQUFMN1UsV0FBSyxzQnZCM0NyRCxPc0IwQktvTixTQ2lCMkNwTjtNQUFqQixPRG5CMUJtTixLQ21CNEQ7Ozs7T0F6QjVEdUc7T0FDQUM7T0FDQUM7T0FDQUU7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FLQUk7T0FNQUM7T0FDQUM7T0FDQUM7O2FDekJBQyxHQUFHOVUsR0FBSSxVQUFKQSxFQUFRO2FBQ1grVSxNQUFNak0sR0FBSSxVQUFKQSxFQUFXO2FBQ2pCa00sUUFBTS9VLEVBQUc0VDtNQUFVLFNBQWI1VCxNQUFrQyxJQUFMRCxFQUE3QkMsS0FBa0MsT0FBTEQsRUFBb0IsT0FBOUM2VCxTQUFxRDthQUM5RG9CO01BQVMsbUJBQWlCLElBQUxqVixXQUFLLE9BQUxBO01BQW9CLHVDQUErQjthQUN4RWtWO01BQVksa0JBQWdDO01BQVosSUFBTHBNO01BQUssT0FBTEEsQ0FBNkM7YUFDeEVxTSxPQUFLbFYsRUFBRUg7TUFBSSxTQUFORyxNQUEyQixJQUFMRCxFQUF0QkMsS0FBMkIsa0JBQXpCSCxFQUFvQkUsR0FBMkIsT0FBakRDLENBQWtEO2FBQ3ZEbVYsT0FBNEJ0TSxHQUFyQixTQUFxQkEsTUFBSixJQUFMN0ksRUFBUzZJLEtBQUosT0FBTDdJLEVBQXlCLE9BQWhCNkksQ0FBaUI7YUFDN0N1TSxNQUFJdlYsRUFBZ0NnSjtNeEJ6QnpDLFN3QnlCeUNBLE1BQVgsSUFBTDlJLEVBQWdCOEksS0FBUixxQkFBeEJoSixFQUFnQkUsSUFBZ0MsT0FBaEI4STthQUNwQ3dNLFVBQVV4VixFQUFzQ0U7TXhCMUJyRCxTd0IwQnFEQSxLQUFhLE9BQWJBLEVBQWQsSUFBTDhJLEVBQW1COUksS0FBUixxQkFBOUJGLEVBQW1CZ0o7YUFDN0J5TSxPQUFNVCxHQUFJQztNeEIzQmYsbUJ3QjJCd0MsSUFBTC9VLFdBQUssa0JBQTdCOFUsR0FBd0I5VTtNQUF1QixJQUFMOEk7TUFBSyxrQkFBM0NpTSxNQUFzQ2pNO2FBQ2hEME0sT0FBSzFWO014QjVCVixtQndCNEIrQixJQUFMRSxXQUFLLGtCQUFyQkYsRUFBZ0JFLEdBQXNCO2FBQzNDeVYsV0FBVzNWO014QjdCaEIsa0J3QjZCc0QsU0FBZCxJQUFMZ0osV0FBSyxrQkFBeEJoSixFQUFtQmdKO2FBQzlCNE0sYUFBUSx5QkFBd0M7YUFDaERDLGdCQUFXLHlCQUF3QzthQUVuREMsUUFBT2QsR0FBSUMsTUFBTWMsR0FBR0M7TUFBSyxTQUFSRDs7aUJBQUdDLE9BQ04sSUFBTnRCLEdBRFlzQixNQUNOLGtCQURQaEIsUUFDQ047O2lCQURTcUI7aUJBQUdDLE9BRUEsSUFBTjFNLEdBRk0wTSxNQUVBLGtCQUZUZixXQUVHM0w7TUFDUixRQUFLO2FBRVgyTSxVQUFTakIsR0FBSUMsTUFBTWMsR0FBR0M7TUFBSyxTQUFSRDs7aUJBQUdDLE9BQ1IsSUFBTnRCLEdBRGNzQixNQUNSLGtCQURMaEIsUUFDRE47UUFFTztlQUhJcUI7ZUFBR0MsTUFJUDtNQUZLLElBQU4xTSxHQUZRME07TUFFRixrQkFGUGYsV0FFQzNMLEdBRUU7YUFFaEI0TTtNQUFZLG1CQUFpQixJQUFMaFcsV0FBSyxVQUFMQSxHQUF5QixRQUFJO2FBQ3JEaVc7TUFBVSxtQkFBaUIsSUFBTGpXLFdBQUssVUFBTEEsS0FBc0IsUUFBRTthQUM5Q2tXO01BQVM7UUFBaUIsSUFBTGxXLFdBQUssc0J4QjlDL0IsT3NCMEJLb04sU0VvQnFCcE47TUFBK0IsT0Z0QnBEbU4sS0VzQjZEOzs7O09BNUI3RDJIO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BRUFDO09BS0FHO09BTUFDO09BQ0FDO09BQ0FDOztJQ3pCK0IsU0FBL0JDLG1CekJyQkw7SXlCcUJvQyxJQUMvQkM7SUFEK0IsU0FHL0JDLGdCQUFXLGtCQUFpQztJQUhiLFNBWS9CQyxtQkFBWSxtQ0FBMEM7SUFadkIsbUJBWW5CLFdBQTBDO0lBWnZCOzs7c0J6QnJCcEM7T3lCcUJLSDtPQUNBQzs7T0FFQUM7T0FTQUM7SUFaK0I7YUNBL0I3WCxJQUFJMkI7TTFCckJULFEwQnFCU0EsaUJBQytDLE9BRC9DQSxFQUNtQixnQ0FBd0M7YUFPL0RtVyxRQU9BdlQ7TTFCcENMO00wQjZCZSxTQU9WQTtvQkFMUSwwQkFLUkE7OztvQkFOUTs7b0JBTVJBOztrQkFEUTtrQkFGQTttQkFEQTttQkFFQTs7O1FBR0UsSUFBSjZOLElBQUk7OEJBQUpBLE1BRE43TjtRQUNVLDRCQUFKNk47TUFLSixJQUFJdlEsRUFBSjs0QkFBSUE7TUFBSixzQkFBSUEsVUFOTjBDO01BTUUsc0JBQUkxQyxXQU5OMEM7TUFNRSxzQkFBSTFDLFVBTk4wQztNQU1FLDRCQUFJMUMsRUFLYzthQUVwQmtXLFVBQ0F4VDtNQURZLFNBQ1pBO01BRFk7Ozs7c0JBQ1pBLFlBSU07YUFFTnlULFVBQ0F6VDtNQURZLFNBQ1pBO01BRFk7Ozs7c0JBQ1pBLFlBSU07YUFFTjBULGdCQUNBMVQsR0FEa0IsWUFDbEJBLHlCQUNNO2FBRU4yVCxnQkFDQTNULEdBRGtCLFlBQ2xCQSx5QkFDTTthQUlONFQsVUFBUUMsR0FBR0MsSUFBSyxPQUFSRCxLQUFHQyxNQUFzQjthQUNqQ0MsUUFBT0YsR0FBUUMsSUFBUyxjQUFqQkQsS0FBUUMsV0FBMEI7Ozs7T0FyRHpDclk7T0FRQThYO09Bb0JBQztPQU9BQztPQU9BQztPQUlBQztPQU1BQztPQUNBRzs7O0t6QmpEQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FFQUM7S0FDQUM7YUFFQUMsS0FBS2hKO01BQ1AsT0FET0E7ZUFMTDZJO2VBS0s3SSxjQUVTLFlBaEJkcFUsYUFjS29VLFNBR0Y7YUFFSGlKLEtBQUtqSjtNQUNQLE9BRE9BLFlBWEw0SSxTQVdLNUksUUFFUyxZQXRCZHJVLGFBb0JLcVUsU0FHRjthQUVIa0osU0FBUzViO01BQUksY0FBSkEsTUFBSSxVQUFKQTs7Ozs7TUFKWCxXQUl5RTthQUN2RTZiLE9BQU83YjtNQUFPLGdCQUFQQTs7ZVV6QlAyRTtpQlZDZSwwQkF3QlIzRSxtQ0FBd0Q7YUFJL0Q4YixRQUFRcEosR0FBSSxPQUFKQSxXQUFXO2FBQ25CcUosUUFBUTNVLEdBQUksT0FBSkEsQ0FBZTthQUN2QjRVLFFBQVF0SjtNQUNWLGFBRFVBO2VVL0JSL047aUJWRTBCOzs7NkNBNkJsQitOO2dCQUVPO2FBRWZ1SixxQkFIRixXQUNpQjthQUlmQyxtQkR4REw7UUN5REtDO2FBQ0FDLFdEMURMO2FDeUVjQyxvQkFBb0JDLEdBQUksY0FBSkEsaUJBQXlCO2FBQzdDQyxrQkFBa0JELEdBQUksUUFBSkEsaUJBQWtDO2FBQ3BERSxpQkFBaUJGLEdBQUksT0FBSkEsWUFBbUM7YUFDcERHLFdBQVdqWSxFQUFFa08sR0FBSSxZQUFObE8sV0FBRWtPLENBQThDO2EwQm9kcEVnSyxZMUJuZDRCbFksR0FBSSxPQUFKQSxlQUErQjthQUUzRG1ZLGtCQUtGaks7TUFMd0IsUUFLeEJBO1FBSE8sU0FHUEE7VUFGTyxVQUVQQTtZQURPLFdBQ1BBO2NBQU8sYUFBUEEsRUFDSyw2QkFEbUI7WUFERjtVQURBO1FBREE7TUFETiw0QkFLQzthQUVma0ssbUJBR0ZsSztNQUh5QixRQUd6QkE7UUFETyxXQUNQQSxHQUFPLGFBQVBBLEVBQ0ssNkJBRG1CO1FBREY7TUFETiw0QkFHQzt1QkFKUSxXQUlSOzs7O09BbEVmMEk7T0FDQUM7T0FJQUc7T0FDQUM7T0FFQUM7T0FLQUM7T0FLQUM7T0FDQUM7c0JENUNMOztPQ2dES0M7T0FDQUM7T0FDQUM7T0FJQUM7T0FFQUM7T0FDQUM7T0FDQUM7T0FlU0M7T0FFQUc7T0FEQUQ7T0FFQUU7TzBCb2RUQztPMUJqZEFDO09BUUFDOzthYTlEQUMsU0FBT3ZXOzs7O1VBRkMsdURBQUx3Vzs7UUFERyxXQUdtQjthQUV6QkMsT0FBS3RWLEVBQUVuQixHQUFJLFVBQU5tQixFQUFFbkIsRUFBUTthQUVmTTtNQUFLLFVBRUcsSUFBUmEsV0FBUSxPQUFSQSxFQURNLHVCQUNHO2FBRVRkO01BQUssVUFFRyxJQUFMTCxXQUFLLE9BQUxBLEVBREcsdUJBQ0c7YUFFVDBXLElBRWMxVyxFQUFFOUI7TUFEbEIsUUFDa0JBO1lBQUZ5WSxNQUFFM0g7UUFDaEI7YUFEYzJIO2dCQUdUQyxJQUhTRCxPQUdaeFYsRUFIWXdWO3FCQUFFM0gsSUFHUSxPQUF0QjdOO1lBQTZCLFFBSGY2TixZQUFGMkgsSUFHVEMsSUFIVzVIOztVQUVSO01BSEksZ0NBS0E7YUFFWjZILFFBRWM3VyxFQUFFOUI7TUFEbEIsUUFDa0JBO1lBQUZ5WSxNQUFFM0g7UUFDaEI7YUFEYzJIO2dCQUdUQyxJQUhTRCxPQUdaeFYsRUFIWXdWO3FCQUFFM0gsSUFHUSxVQUF0QjdOO1lBQWtDLFFBSHBCNk4sWUFBRjJILElBR1RDLElBSFc1SDs7VUFFUjtNQUhJLGtDQUtBO2FBSVI4SCxXQUFXeFgsR0FBR0M7VUFBSHdYLFFBQUdDO01BQ3BCO1dBRGlCRDsyQkFHZjVWLEVBSGU0VixRQUFHRyxRQUdsQi9WLEVBSGtCNlYsTUFBSEQsVUFBR0M7O1FBRVosT0FGWUEsS0FHYzthQUVoQ0csSUFBSW5YLEdBQUksa0JBQUpBLElBQW1CO2FBTW5Cb1gsV0FBUzFkLEVBQUV3RSxFQUFFTjtNQUNuQixHQURpQk0sS0FBRnhFLEVBQ0E7TUFFTCxJQUFKcUUsRUFBSSxXQUhTSCxFQUFKbEU7TUFJUixVQUREcUUsRUFDQyxXQUpRckUsVUFBRXdFLEVBQUVOLEdBSU07b0JBU2xCNkQsSUFBSTdEO01BQ1gsUUFETzZEO1FBRVAsUUFGT0E7Y0FqQmdCdUssTUFBSXRTO1VBQzNCO2VBZ0JPK0gsT0FqQm9CL0gsU0FGekJ5ZCxJQUVxQm5MO1lBRWxCLFFBRnNCdFMsVUFFSixvQkFlWmtFLEVBakJnQmxFLEdBQUpzUyxlQUFJdFM7O1FBb0J0QixvQkFIRStILElBQUk3RDtNQUNLLGlDQUVLOztNQUVMLGNBRVhHLFdBQUhpQyxXQUFZLGNBQVpBLEVBQVksUUFBVGpDO01BREcsUUFDZTttQkFJYkg7TWQxRmI7UWM0RnFCLElBQWJvQyxXQUFIbUIsV0FBZ0IsYUFGUnZELEVBRVJ1RCxHQUE0QixVQUFoQnBELEVBQWdCLE1BRnBCSCxFQUVMb0M7TUFERztpQkFHR3RHLEVBQUVrRTtNZDlGaEI7UWNnR3FCLElBQWJvQyxXQUFIbUIsV0FBZ0IsYUFGTHZELEVBQUZsRSxFQUVUeUg7UUFBOEIsVUFBbEJwRCxFQUFrQixJQUZyQnJFLFVBQUVrRSxFQUVSb0M7TUFERztvQkFHRHBDLEVBQUVvQyxHQUFJLGFBQU5wQyxFQUFFb0MsRUFBYztxQkFFYnBDLEVBQUV5Wjs7OztVQUdRO1dBQWJyWDtXQUFIbUI7V0FBZ0IscUJBSFZ2RCxFQUdOdUQ7O21CQUFHbkI7O1FBREcsWUFHQztvQkFHQXBDO01kNUdkOzs7Y2M4R1FvQyxhQUFIbUI7VUFBUSxXQUZDdkQsRUFFVHVEO3NCQUFHbkI7O1FBREc7cUJBT0FwQyxFQUFFK1k7Ozs7Y0FGTDNXLFdBQUhtQjtVQUFRLFdBRUZ2RCxJQUZOdUQ7VUFBUSw4QkFBTG5COztRQURHLFNBR2lCO3lCQUVUcEMsRUFBRWtGLEtBQUs5QztVQUFMZ0QsWUFBSzJUO01BQ3ZCO1dBRHVCQTtVQUdEO1dBQWpCQyxJQUhrQkQ7V0FHckJ4VixFQUhxQndWO1dBR0Qsa0JBSE4vWSxFQUFFb0YsT0FHaEI3QjtXQUhnQjZCO1dBQUsyVCxJQUdsQkM7O1FBREcsT0FGVTVULE9BR2dCO3dCQUVqQnBGLEVBQUVvQyxFQUFFOEM7TUFDckIsR0FEbUI5QyxPQUdkMlcsSUFIYzNXLEtBR2pCbUIsRUFIaUJuQixLQUdMLGtCQUhHcEMsRUFHZnVELEVBQVksV0FIR3ZELEVBR1orWSxJQUhnQjdUO01BRWIsT0FGYUEsSUFHYztvQkFFeEJsRixFQUFFMEIsR0FBR0M7TUFDaEIsR0FEYUQ7V0FBR0M7VUFHYyxJQUFmeVgsS0FIQ3pYLE1BR0wrWCxHQUhLL1gsTUFHVHdYLEtBSE16WCxNQUdWaVksR0FIVWpZLE1BR2lCLGFBSG5CMUIsRUFHUjJaLEdBQVFEO1VBQW1DLFVBQXBCdlosRUFBb0IsT0FIbkNILEVBR0ptWixLQUFRQzs7T0FERCxLQUZFelgsR0FFRjtNQUVGLGlDQUF1QjtzQkFFeEIzQixFQUNVMEIsR0FBR0M7VUFBUnVELE9BQUtpVSxRQUFHQztNQUN0QjtXQURtQkQ7YUFBR0M7WUFHUzthQUFoQkUsS0FIT0Y7YUFHWE0sR0FIV047YUFHZkMsS0FIWUY7YUFHaEJRLEdBSGdCUjthQUdZLHFCQUp0Qm5aLEVBSU4yWixHQUFRRCxJQUhHeFU7O2FBQUtpVSxLQUdaRTthQUhlRCxLQUdQRTs7O1NBREQsS0FGUUYsS0FFUixPQUZBbFU7UUFJRixzQ0FFRTtxQkFHSmxGLEVBQUUwQixHQUFHQztVQUFId1gsUUFBR0M7TUFDakI7V0FEY0Q7YUFBR0M7Z0JBR0ZFLEtBSEVGLFFBR05NLEdBSE1OLFFBR1ZDLEtBSE9GLFFBR1hRLEdBSFdSO1lBR1EsV0FIVm5aLEVBR1QyWixHQUFRRDtnQkFIR1AsS0FHUEUsS0FIVUQsS0FHRkU7OztTQURELEtBRkdGLEtBRUg7UUFFRixtQ0FBd0I7MEJBRW5CcFosRUFBRWtGLEtBQUt4RCxHQUFHQztVQUFSeUQsWUFBSytULFFBQUdDO01BQzNCO1dBRHdCRDthQUFHQztZQUdRO2FBQXBCRSxLQUhZRjthQUdoQk0sR0FIZ0JOO2FBR3BCQyxLQUhpQkY7YUFHckJRLEdBSHFCUjthQUdXLGtCQUhsQm5aLEVBQUVvRixPQUdoQnVVLEdBQVFEO2FBSFF0VTthQUFLK1QsS0FHakJFO2FBSG9CRCxLQUdaRTs7O1NBREQsS0FGYUYsS0FFYixPQUZLaFU7UUFJUCx3Q0FBNkI7eUJBRXZCcEYsRUFBRTBCLEdBQUdDLEdBQUd1RDtNQUMxQixHQURvQnhEO1dBQUdDO2NBR1J5WCxLQUhRelgsTUFHWitYLEdBSFkvWCxNQUdoQndYLEtBSGF6WCxNQUdqQmlZLEdBSGlCalk7VUFHVSxrQkFIWjFCLEVBR2YyWixHQUFRRCxHQUFtQixZQUhaMVosRUFHWG1aLEtBQVFDLEtBSFdsVTs7T0FFWixLQUZTdkQsR0FFVCxPQUZZdUQ7TUFJZCx3Q0FBOEI7dUJBRTVCa0s7TWRsS2pCOzs7VWNvS2EsSUFBTGhOLGFBQUhtQixhQUFRLGdCQUZJNkwsRUFFWjdMO1VBQVEscUJBQUxuQjtVQURHOztzQkFHS2dOO01kdEtoQjs7O1Vjd0thLElBQUxoTixhQUFIbUIsYUFBUSxnQkFGRzZMLEVBRVg3TDtVQUFRLFFBREY7VUFDRSxZQUFMbkI7O1FBREc7d0JBR09nTixFQUFFMU4sR0FBR0M7VUFBSHdYLFFBQUdDO01BQ3BCO1dBRGlCRDthQUFHQztZQUdFO2FBQVBFLEtBSEtGO2FBR1RNLEdBSFNOO2FBR2JDLEtBSFVGO2FBR2RRLEdBSGNSO2FBR0ssZ0JBSFAvSixFQUdadUssR0FBUUQ7WUFBVyxhQUhMUCxLQUdWRSxLQUhhRCxLQUdMRTs7O1NBREQsS0FGTUYsS0FFTjtRQUVGLHNDQUEyQjt1QkFFekJoSyxFQUFFMU4sR0FBR0M7VUFBSHdYLFFBQUdDO01BQ25CO1dBRGdCRDthQUFHQztZQUdHO2FBQVBFLEtBSElGO2FBR1JNLEdBSFFOO2FBR1pDLEtBSFNGO2FBR2JRLEdBSGFSO2FBR00sZ0JBSFIvSixFQUdYdUssR0FBUUQ7WUFBVztnQkFITlAsS0FHVEUsS0FIWUQsS0FHSkU7OztTQURELEtBRktGLEtBRUw7UUFFRixxQ0FBMEI7aUJBRTVCelk7TWR0TGI7OztVY3dMYSxJQUFMeUIsYUFBSG1CLGFBQVEsd0JBQVJBLEVBRlE1QztVQUVBLFFBREY7VUFDRSxZQUFMeUI7O1FBREc7a0JBR0d6QjtNZDFMZDs7O2NjNExReUIsYUFBSG1CLHdCQUZTNUM7a0JBQ0g7c0JBQ0h5Qjs7UUFERzttQkFHSXpCO01kOUxmOzs7Y2NnTVl5Qiw4QkFBSk4sV0FBRnlCO1VBQWMsc0JBQWRBLEVBRlM1QyxHQUUwQixPQUFqQ21CO3NCQUFJTTs7UUFERDt1QkFHUXpCO01kbE1uQjs7O2Njb01ZeUIsOEJBQUpOLFdBQUZ5QjtVQUFjLHNCQUFkQSxFQUZhNUMsR0FFc0IsVUFBakNtQjtzQkFBSU07O1FBREQ7a0JBR0d6QjtNZHRNZDs7O2Njd01ZeUIsOEJBQUpOLFdBQUZ5QjttQkFGUTVDLEVBRWtCLE9BQXhCbUI7c0JBQUlNOztRQUREO3NCQUdPekI7TWQxTWxCOzs7Y2M0TVl5Qiw4QkFBSk4sV0FBRnlCO21CQUZZNUMsRUFFYyxVQUF4Qm1CO3NCQUFJTTs7UUFERDt1QkFHUXpCO01kOU1uQjs7O1VjZ05vQjtXQUFMeUI7O1dBQVRtQjtXQUFjLHdCQUFkQSxFQUZhNUM7VUFFQyxRQURUO1VBQ1MsWUFBTHlCOztRQURKO3NCQUdPekI7TWRsTmxCOzs7Y2NvTmV5Qiw4QkFBVG1CLHNCQUZZNUM7a0JBQ1A7c0JBQ0l5Qjs7UUFESjswQkFHV3pCO01kdE50QjtZY3dOdUJ5QixXQUFsQndYLGNBQUNyVyxFQUFEcVc7UUFDSywwQkFESnJXLEVBRmdCNUMsR0FFQ3lCLEtBQWxCd1gsS0FDeUMsYUFIeEJqWixFQUVDeUI7TUFEWjt5QkFJVXpCO01kM05yQjtZYzZOdUJ5QixXQUFsQndYLGNBQUNyVyxFQUFEcVc7ZUFBQ3JXLE1BRmU1QyxFQUVFeUIsS0FBbEJ3WCxLQUFxRCxZQUZyQ2paLEVBRUV5QjtNQURaO29CQUdHZ047TWQvTmQ7OztjY2lPVWhOLGFBQUx6QjtVQUFhLGNBRkp5TyxFQUVUek8sR0FBc0IsT0FBdEJBO3NCQUFLeUI7O1FBREM7c0JBR09nTjtNZG5PbEI7OztjY3FPVWhOLGFBQUx6QjtVQUFhLGNBRkF5TyxFQUViek8sR0FBc0IsVUFBdEJBO3NCQUFLeUI7O1FBREM7d0JBR09wQztNZHZPbEI7OztVYzBPa0IsSUFEUm9DLGFBQUx6QixhQUNhLGtCQUhBWCxFQUViVztVQUNhLEdBQ1IrTCxPQUFvQixPQUFwQkE7VUFEUSxZQURSdEs7O1FBREM7c0JBT0dnTjtNQUNYOzs7OztnQkFFT2hOLFdBQUx6QjtZQUFhLGNBSEp5TyxFQUdUek87Y0FBc0IsY0FBdEJBLDhCQUFLeUI7OztVQURDLG9CQUVEO3FCQUlHZ04sRUFBRXFLOzs7O1VBR2M7V0FBckJyWDtXQUFIekI7V0FBd0IsaUJBSGhCeU8sSUFHUnpPOzs7O21CQUFHeUI7O1FBREcsZ0JBR0U7MEJBRUdwQztNQUNiOzs7OztZQUdZLElBREhvQyxXQUFMekIsV0FDUSxpQkFKQ1gsRUFHVFc7WUFDUTtjQUVNLHlCQUFMVCw4QkFISmtDOztZQUNHLFVBREhBOztVQURDLG9CQU1KO3dCQUdNcEMsRUFER3laOzs7O1VBSUQ7V0FETHJYO1dBQUx6QjtXQUNVLGNBSEZYLEVBRVJXO1dBRU8saUJBREZnTzs7bUJBREF2TTs7UUFEQyxnQkFJRzsyQkFFR3BDLEVBQUVrRixLQUFLdVU7aUJBQUx2VSxzQkFBS3VVOzs7VUFJSDtXQURYclg7V0FBTHpCO1dBQ2dCLGlCQUpKWCxTQUdaVztXQUNnQjs7dUJBQUprWjtrQkFBTjNLOzttQkFERDlNOztRQURPLDhCQUlIO3lCQUVEZ04sRUFBRXFLOzs7O2NBR1ByWCxhQUFMekI7VUFBYSxjQUhIeU8sRUFHVnpPO1lBQXNCLGFBQXRCQSx5QkFBS3lCO1VBQTJDLFlBQWhEekIsc0JBQUt5Qjs7UUFEVztRQUFULHlCQUVHOzZCQUVJZ04sRUFBRXFLOzs7O1VBSUgsSUFEUnJYLGFBQUx6QixhQUNhLGlCQUpDeU8sRUFHZHpPO1VBQ2E7WUFDUyx5QkFBTFQsNEJBRlprQztVQUNRLElBRVUsd0JBQUwrRyxpQ0FIYi9HOztRQURZO1FBQVYsMEJBT0c7O01BRUU7UUFHSztTQURWQTs7U0FBSnhCO1NBQUZEO1NBQ2dCLGNBRFZ5QjtTQUNVOztxQkFEaEJ6QixFQUNNb1osT0FESm5aLEVBQ1FrWjtNQUZMLFVBRW9DO3FCQUU5QnBZLEdBQUdDO01BQ2pCLEdBRGNEO1dBQUdDO2NBR0Z5WCxLQUhFelgsTUFHTitYLEdBSE0vWCxNQUdWd1gsS0FIT3pYLE1BR1hpWSxHQUhXalk7VUFHb0IsYUFBL0JpWSxHQUFRRCxJQUF1QixRQUEzQlAsS0FBUUM7O09BREQsS0FGR3pYLEdBRUg7TUFFRixvQ0FBMEI7bUJBSTFCdU8sSUFHVnhPLEdBRElDO01BRE4sR0FFRUQ7V0FESUM7Y0FFWXFZLEdBRlpyWSxNQUVNc1ksR0FGTnRZLE1BRUV1WSxHQUROeFksTUFDQXlZLEdBREF6WTtVQUVLLHNCQUxLd08sSUFJVmlLLEdBQVVGO3lCQUdHLE1BUEgvSixJQUdWeE8sR0FDZ0JzWTtzQkFBaEJHLEdBRWEsTUFOSGpLLElBSUpnSyxHQUZGdlk7UUFDTSxPQUFWRDtNQURVLE9BQU5DLEVBS3dCO3VCQUdoQnVPLElBQUk5TjtNQUNsQixTQWtCUWdZLEtBQUs5WixFQUFFOEI7UUFDYixTQURXOUI7YUFBRThCOzs7Y0FHRTtlQURFSztlQUFONFg7ZUFBTkMsR0FGUWxZO2VBR0UsaUJBdEJIOE4sSUFxQlBvSyxHQUFNRCxhQUFOQyxnQkFBTUQ7Y0FDc0MsVUFBekM3WixFQURTaUM7O2tCQUZObkMsS0FBRThCOzs7OztlQU9KO2dCQUZjbVk7Z0JBQU5DO2dCQUFOQztnQkFBTkMsS0FMUXRZO2dCQU9KO2dDQTFCRzhOLElBd0JQd0ssS0FBTUQ7dUJBTUcsV0E5QkZ2SyxJQXdCUHdLLEtBQVlGO3lCQU9ILFdBL0JGdEssSUF3QkR1SyxLQUFNRDtnQ0FBTkMsUUFBTkM7MEJBQU1ELFFBQU1ELE1BQVpFO3dCQUFNRCxRQUFOQyxRQUFZRjt1QkFHTixXQTNCQ3RLLElBd0JEdUssS0FBTUQ7eUJBSUQsV0E1Qkp0SyxJQXdCUHdLLEtBQVlGO2dDQUFaRSxRQUFNRDswQkFBTkMsUUFBWUYsTUFBTkM7d0JBQU5DLFFBQU1ELFFBQU1EO2VBUU4sVUFQSHpKLElBRGV3SjtRQVluQjtZQWpCT2phO1NBaUJQLEdBakJPQSxJQWlCSHFhO1NBRVMsZUFGVEEsR0FqQkt2WTtTQW1CSTs7U0FDQSxpQkFGVHdZLEdBQ0l4QjtTQUNLOztTQTdCRzFYLEdBNEJaRjtTQTVCZUcsR0E2QmZGO1NBN0JrQnlEO1FBQzFCO2FBRG9CeEQ7ZUFBR0M7a0JBSVRxWSxHQUpTclksTUFJYnNZLEdBSmF0WSxNQUlqQnVZLEdBSmN4WSxNQUlsQnlZLEdBSmtCelk7Y0FLYixrQkFmS3dPLElBY1ZpSyxHQUFRRjtnQkFFRCxjQUZQRSxHQUp3QmpWLE1BQU54RCxHQUlkd1ksR0FKb0JoVjtjQU9qQixjQUhDK1UsR0FKZ0IvVSxNQUFIdkQsR0FJVHFZLEdBSlk5VTs7cUJBR2QsV0FIUXhELEdBQU13RDs7b0JBRWQsV0FGV3ZELEdBQUd1RDt5QkE2QmQ0VixNQUNvQjtNQXZDbEMsU0F3Q0lELFNBQVN2YSxFQUFFOEI7UUFDYixTQURXOUI7YUFBRThCOzs7Y0FHRTtlQURFSztlQUFONFg7ZUFBTkMsR0FGUWxZO2VBR0UsaUJBNUNIOE4sSUEyQ1BvSyxHQUFNRCxPQUFOQyxNQUFNRCxnQkFBTkM7Y0FDMkMsVUFBeEM5WixFQURTaUM7O2tCQUZObkMsS0FBRThCOzs7OztlQU9KO2dCQUZjbVk7Z0JBQU5DO2dCQUFOQztnQkFBTkMsS0FMUXRZO2dCQU9KO2dDQWhERzhOLElBOENQd0ssS0FBTUQ7dUJBR0EsV0FqREN2SyxJQThDRHVLLEtBQU1EO3dCQUFaRSxRQUFNRCxRQUFNRDt5QkFJRCxXQWxESnRLLElBOENQd0ssS0FBWUY7MEJBQVpFLFFBQVlGLE1BQU5DOzBCQUFNRCxNQUFaRSxRQUFNRDt1QkFNRyxXQXBERnZLLElBOENQd0ssS0FBWUY7d0JBQU5DLFFBQU5DLFFBQVlGO3lCQU9ILFdBckRGdEssSUE4Q0R1SyxLQUFNRDswQkFBTkMsUUFBTUQsTUFBWkU7MEJBQVlGLE1BQU5DLFFBQU5DO2VBUU0sVUFQSDNKLElBRGV3SjtRQVluQjtZQWpCT2phO1NBaUJQLEdBakJPQSxJQWlCSHFhO1NBRVMsV0FGVEEsR0FqQkt2WTtTQW1CSTs7U0FDQSxhQUZUd1ksR0FDSXhCO1NBQ0s7O1NBNUREMVgsR0EyRFJGO1NBM0RXRyxHQTREWEY7U0E1RGN5RDtRQUN0QjthQURnQnhEO2VBQUdDO2tCQUlMcVksR0FKS3JZLE1BSVRzWSxHQUpTdFksTUFJYnVZLEdBSlV4WSxNQUlkeVksR0FKY3pZO2NBS1Qsa0JBTkt3TyxJQUtWaUssR0FBUUY7Z0JBR0QsY0FIQ0EsR0FKWS9VLE1BQUh2RCxHQUlMcVksR0FKUTlVO2NBTWIsY0FGUGlWLEdBSm9CalYsTUFBTnhELEdBSVZ3WSxHQUpnQmhWOztxQkFHVixXQUhJeEQsR0FBTXdEOztvQkFFVixXQUZPdkQsR0FBR3VEO3lCQTREVjRWLE1BQ2dCO01BRXBCLElBQU5qWCxJQUFNLFNBaEVRekI7TUFnRVIsWUFBTnlCLElBQ3VCLEtBRHZCQSxJQWhFY3pCLE9BaUVxQjt1QkF5QzNCOE4sSUFBSTlOO01BQ2hCLFNBc0JRZ1ksS0FBSzlaLEVBQUU4QjtRQUNiLFNBRFc5QjthQUFFOEI7OztjQUlDO2VBRkdLO2VBQU40WDtlQUFOQyxHQUZRbFk7ZUFJQyxlQTNCSjhOLElBeUJMb0ssR0FBTUQ7ZUFFRyxRQUFKVSxPQUZMVCxXQUVLUyxPQUZDVixNQUFOQyxnQkFBTUQ7Y0FHK0MsVUFGbEQ3WixFQURTaUM7O2tCQUZObkMsS0FBRThCOzs7OztlQVVDO2dCQUZTbVk7Z0JBQU5DO2dCQUFOQztnQkFBTkMsS0FSUXRZO2dCQVVDLGVBakNKOE4sSUErQkx3SyxLQUFNRDtlQUVHLFNBQUpPO2dCQUVNO2dDQW5DTjlLLElBK0JDdUssS0FBTUQ7aUJBSUQ7d0JBQUpTO3VCQUpEUjt5QkFJQ1EsT0FKS1QsTUFBTkMsb0JBQU1EO2lCQUNUeko7O2dCQUtHLFFBSkRpSztrQkFjTSxJQUFKRSxJQUFJLFdBL0NOaEwsSUErQkx3SyxLQUFZRjtrQkFnQkQsU0FBSlU7K0JBaEJEVCxRQUFOQzs7bUJBa0JRLFFBRkRRO29CQUlNO29DQW5EUmhMLElBK0JDdUssS0FBTUQ7cUJBb0JDOzRCQUFKVzsyQkFwQkhWLFFBQU5DOzZCQW9CU1M7NkJBcEJHWCxNQUFOQyxRQUFOQzs2QkFBTUQsUUFBTUQsTUFBWkU7OztnQ0FBTUQsUUFBTkMsUUFBWUY7a0JBZ0JELElBZlJ6Sjs7a0JBTVEsSUFBSnFLLElBQUksV0F0Q05sTCxJQStCQ3VLLEtBQU1EO2tCQU9ELFNBQUpZOytCQVBQVixRQUFNRDs7bUJBU0UsUUFGRFc7b0JBSU07b0NBMUNSbEwsSUErQkx3SyxLQUFZRjtxQkFXQzs0QkFBSmE7MkJBWFRYLFFBQU1EOzZCQVdHWTs2QkFYR2IsTUFBWkUsUUFBTUQ7NkJBQU5DLFFBQVlGLE1BQU5DOzs7Z0NBQU5DLFFBQU1ELFFBQU1EO2tCQU9ELElBTlJ6SjtlQXdCSixVQXhCSUEsSUFEZXdKO1FBMkJuQjtZQW5DT2phO1NBbUNQLEdBbkNPQSxJQW1DSHFhO1NBRVMsZUFGVEEsR0FuQ0t2WTtTQXFDSTs7U0FDQSxpQkFGVHdZLEdBQ0l4QjtTQUNLOztTQWpERzFYLEdBZ0RaRjtTQWhEZUcsR0FpRGZGO1NBakRrQnlEO1FBQzFCO2FBRG9CeEQ7ZUFBR0M7Y0FLWCxJQURFcVksR0FKU3JZLE1BSWJzWSxHQUphdFksTUFJakJ1WSxHQUpjeFksTUFJbEJ5WSxHQUprQnpZLE1BS1IsYUFqQkZ3TyxJQWdCUmlLLEdBQVFGO2NBQ0UsU0FBSi9XO2dCQUNVLGNBRmhCaVgsR0FKd0JqVixNQUFOeEQsR0FJZHdZLEdBSmlCdlksR0FJVHFZLEdBSlk5VTtjQU9qQixPQUZEaEMsR0FHQyxjQUpQaVgsR0FKd0JqVixNQUFOeEQsR0FJZHdZLEdBSm9CaFY7Y0FLZCxJQUlILFVBTEMrVSxHQUpnQi9VLE1BQUh2RCxHQUlUcVksR0FKWTlVOztxQkFHZCxXQUhReEQsR0FBTXdEOztvQkFFZCxXQUZXdkQsR0FBR3VEO3lCQWlEZDRWLE1BQ29CO01BN0RsQyxTQThESUQsU0FBU3ZhLEVBQUU4QjtRQUNiLFNBRFc5QjthQUFFOEI7OztjQUlDO2VBRkdLO2VBQU40WDtlQUFOQyxHQUZRbFk7ZUFJQyxlQW5FSjhOLElBaUVMb0ssR0FBTUQ7ZUFFRyxRQUFKVSxPQUZMVCxVQUVLUyxPQUZMVCxNQUFNRCxnQkFBTkM7Y0FHcUQsVUFGbEQ5WixFQURTaUM7O2tCQUZObkMsS0FBRThCOzs7OztlQVVDO2dCQUZTbVk7Z0JBQU5DO2dCQUFOQztnQkFBTkMsS0FSUXRZO2dCQVVDLGVBekVKOE4sSUF1RUx3SyxLQUFNRDtlQUVHLFNBQUpPO2dCQUVNO2dDQTNFTjlLLElBdUVDdUssS0FBTUQ7aUJBSUQ7d0JBQUpTO3VCQUpEUjt3QkFJQ1EsT0FKRFIsUUFBTUQsZ0JBQU5DO2lCQUNIMUo7O2dCQUtHLE9BSkRpSztrQkFLTSxJQUFKRSxJQUFJLFdBOUVOaEwsSUF1RUN1SyxLQUFNRDtrQkFPRCxTQUFKVTsrQkFQUFIsUUFBTUQ7O21CQVNFLE9BRkRTO2dDQVBQUixRQUFNRCxRQUFNRDs7b0JBV0M7b0NBbEZSdEssSUF1RUx3SyxLQUFZRjtxQkFXQzs0QkFBSlc7MkJBWFRULFFBQU1EOzRCQVdHVTs2QkFYVFQsUUFBWUYsTUFBTkM7NkJBQU1ELE1BQVpFLFFBQU1EOztrQkFPSyxJQU5SMUo7O2tCQWVRLElBQUpxSyxJQUFJLFdBdkZObEwsSUF1RUx3SyxLQUFZRjtrQkFnQkQsU0FBSlk7K0JBaEJEWCxRQUFOQzs7bUJBa0JRLE9BRkRVO2dDQWhCRFgsUUFBTkMsUUFBWUY7O29CQW9CQztvQ0EzRlJ0SyxJQXVFQ3VLLEtBQU1EO3FCQW9CQzs0QkFBSmE7MkJBcEJIWixRQUFOQzs0QkFvQlNXOzZCQXBCSFosUUFBTUQsTUFBWkU7NkJBQVlGLE1BQU5DLFFBQU5DOztrQkFnQlcsSUFmUjNKO2VBd0JKLFVBeEJJQSxJQURld0o7UUEyQm5CO1lBbkNPamE7U0FtQ1AsR0FuQ09BLElBbUNIcWE7U0FFUyxXQUZUQSxHQW5DS3ZZO1NBcUNJOztTQUNBLGFBRlR3WSxHQUNJeEI7U0FDSzs7U0FwR0QxWCxHQW1HUkY7U0FuR1dHLEdBb0dYRjtTQXBHY3lEO1FBQ3RCO2FBRGdCeEQ7ZUFBR0M7Y0FLUCxJQURFcVksR0FKS3JZLE1BSVRzWSxHQUpTdFksTUFJYnVZLEdBSlV4WSxNQUlkeVksR0FKY3pZLE1BS0osYUFORndPLElBS1JpSyxHQUFRRjtjQUNFLFNBQUovVztnQkFDVSxjQUZoQmlYLEdBSm9CalYsTUFBTnhELEdBSVZ3WSxHQUphdlksR0FJTHFZLEdBSlE5VTtjQU9iLFFBRkRoQyxHQUlDLGNBTEMrVyxHQUpZL1UsTUFBSHZELEdBSUxxWSxHQUpROVU7Y0FLVixJQUdILFVBSlBpVixHQUpvQmpWLE1BQU54RCxHQUlWd1ksR0FKZ0JoVjs7cUJBR1YsV0FISXhELEdBQU13RDs7b0JBRVYsV0FGT3ZELEdBQUd1RDt5QkFvR1Y0VixNQUNnQjtNQUVwQixJQUFOalgsSUFBTSxTQXhHTXpCO01Bd0dOLFlBQU55QixJQUN1QixLQUR2QkEsSUF4R1l6QixPQXlHdUI7NkJBR2pCVixHQUFHQztVQUFId1gsUUFBR0M7TUFDekI7V0FEc0JEO2FBQUdDLHVCQUFIQyx1QkFBR0Q7VUFJZDtRQURBLE9BSGNBLFVBS2tCO2lDQUdqQmhYLEVBQUU5QjtVQUFGeVksTUFBRTNIO01BQzVCO1dBRDBCMkg7VUFNeEIsSUFES0MsSUFMbUJEO1VBTXhCLE9BTjBCM0gsS0FPeEIsUUFQd0JBLFlBQUYySCxJQUtuQkMsSUFMcUI1SDtVQU1YO1FBSGYsYUFIMEJBLG1CQU9HO3FCQVVuQnBCLEdBQUd0TyxHQUFHQztVQUFId1gsUUFBR0M7TUFDbEI7V0FEZUQ7YUFBR0M7WUFJRTthQUFORSxLQUpJRjthQUlSTSxHQUpRTjthQUlaQyxLQUpTRjthQUliUSxHQUphUjthQUlLLGdCQUpSbkosR0FJVjJKLEdBQVFEO1lBQVUsYUFKTFAsS0FJVEUsS0FKWUQsS0FJSkU7OztTQUZGLEtBRk1GLEtBRU47UUFDYSxTQUNxQjt1QkFFaENsSixJQUFJeE8sR0FBR0M7VUFBSHdYLFFBQUdDO01BQ3JCO1dBRGtCRDs7YUFBR0M7WUFNWCxJQURJRSxLQUxPRixRQUtYTSxHQUxXTixRQU1YLGFBTklsSixTQUtKd0o7WUFDQSxTQUFKeFcsT0FOWWlXLFVBQUdDLEtBS1BFO1lBRUcsT0FEWHBXO1VBRlE7UUFEQSxPQUhPa1csVUFRRztzQkFJZmhYO01BQ1QsU0FBUW1aLElBQUluWjtRQUFPLEdBQVBBO2NBRUhvWixLQUZHcFosS0FFUnpCLEVBRlF5QjtVQUVrQixVQUExQnpCLGlCZHBrQlAsT2Nra0JXNGEsSUFFQ0M7UUFEQyxRQUM2QjtNQUZ2QyxzQmRsa0JILE9ja2tCV0QsSUFEQ25aLFFBS0o7b0JBRUl5TDtNQUNULFNBQVE0TixPQUFPQyxNQUFNN047UUFDbkIsU0FEYTZOO1VBR1g7d0NBQW1CdE4sSUFBSXpOLEdBQUssVUFBTEEsRUFBSnlOLElBQWUsT0FIakJQO1FBS1IscUJBTFFBO1FBS1I7Y0FFTUwsY0FBSDdNO1VBQWlCLFVBQWpCQSxFQUFpQixPQVBsQithLGNBT0lsTztRQURGLFFBQ3FDO01BUHRELGtCQURTSyxJQVVLOzs7O09BempCWjhLOzs7T0FFQUU7T0FFQW5XO09BSUFEO09BSUFxVztPQVFBRztPQWVBTTs7T0FQQS9XO09BRUkwVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRY3JDSnlDLE9BQ0FDLE1BQ0FDO2FBU0FDLE1BQUluYixHQUFJLFlBQUpBLFdBQTRCO1FBQ2hDb2IscUJBQ0FDO2FBSUFDLE9BQU90YixHQUFJLE9BQUpBLE1BQWlCO2FBSXhCdWIsbUI1QnZDTDtRNEJ3Q0tDO2FBQ0FDLE1BQUl6YixFQUFFQyxHQUFRLE9BQVZELEtBQUVDLEVBQUZELEVBQUVDLENBQStCO2FBQ3JDeWIsTUFBSTFiLEVBQUVDLEdBQVEsT0FBUkEsS0FBRkQsSUFBRUMsQ0FBK0I7YUFVckMwYixZQUFVM2IsR0FBSSxtQ0FBSkEsRUFBcUI7Ozs7T0FsQy9CZ2I7T0FDQUM7T0FDQUM7T0FTQUM7T0FDQUM7T0FDQUM7T0FJQUM7T0FJQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FVQUM7O29CRFhLaGMsRUFBRTRDO01BQ0QsSUFBSjFDLEVBQUksa0JBRERGLEdBRVAsZ0JBRElFLElBREdGLEVBQUU0QyxHQUVULE9BREkxQyxDQUVIO29CQUVNRixFQUFFTjtNQUNELHdCQURETSxHQUNDLEtBRERBLFVBQ0M7O1lBQ1J4RTtRQUNFO1VBQWUsc0JBRmIwRSxFQUNKMUUsRUFDaUIsV0FIUmtFLEVBRVRsRTtVQUNpQixTQURqQkE7OztNQUdBLE9BSkkwRSxDQUlIO0lBRVM7a0JBRUhBO01BQ1AsNkJBRE9BLEdBRVAsb0JBRElxRDtNQUVKLGdCQUhPckQsSUFFSEwsSUFEQTBEO01BRUosT0FESTFELENBRUg7SUFOUyxrQkFRRTJCLEdBQXFCLGlDQUFyQkEsR0FBNkI7SUFSL0Isa0JBU0V0QixHQUFJLGlDQUFKQSxHQUE2QjtJQVQvQixhQVdKQSxFQUFFb0QsSUFBSUM7TTNCaEVmO2EyQmdFV0QsWUFBSUMsZ0NBQU5yRCxLQUFNcUQsV0FBSkQ7UUFJRSxJQUFKekQsRUFBSSxrQkFKRTBELEtBS1YsZ0JBTElyRCxFQUFFb0QsSUFJRnpELElBSk0wRCxLQUtWLE9BREkxRDtNQUZELDRDQUtGO0lBbEJPLG9CQW9CRzJCLEVBQUU4QixJQUFJQztNQUF1QixnQ0FBN0IvQixFQUFFOEIsSUFBSUMsS0FBc0M7SUFwQi9DLFNBdUJSMFksU0FBS2haLEVBQUV6QjtNQUNULE1BRE95QixJQUFFekIsTUFDVCxLQURTQSxVQUNULE1BQUlvQjtNQUFKLEdBRE9LOzs7T0FLQTtzQkFEa0IsOEJBSHJCTCxDQUlJO0lBNUJFLGdCQThCRDFDLEVBQUVpSSxLQUFLQztNQUNOOzZCQUFWLHFCQURTbEksR0FBRWlJLE1BQUtDO09BRWhCLG9CQURJN0U7TUFDSixRQUZXNEU7V0FHRStULE9BSEYvVCxLQUdOZ1U7O1dBQVFELFNBQVJDLFNBSE1oVTtNQUNELElBR05pVSxPQUFTLE1BQWIscUJBSlNsYyxLQUdKaWMsV0FGRDVZLE1BRVMyWTtNQUNBLE9BQVRFLE9BQ2UsZ0JBTFZsYyxFQUdKaWMsT0FERHRjLEVBQ1NxYyxPQUNURTtNQUNtRCxPQUhuRHZjLENBSUg7SUFwQ1MsY0FzQ0hLLEVBQUVvRCxJQUFJQyxJQUFJWDtNM0IzRnBCO2EyQjJGWVUsWUFBSUMsZ0NBQU5yRCxLQUFNcUQsV0FBSkQ7T0FHSix1QkFIRXBELEVBQUVvRCxJQUFJQyxJQUFJWDtNQUVaLDhDQUN1QjtJQXpDbEIsY0EyQ0gxQixHQUFHbWIsS0FBS2xiLEdBQUdtYixLQUFLL1k7TTNCaEcxQjs7O1EyQmdHMEJBOzs7O1FBQWI4WTs7OytCQUFIbmIsTUFBZ0JxQyxXQUFiOFk7Ozs7UUFBUUM7OzsrQkFBSG5iLE1BQVFvQyxXQUFMK1k7T0FJYix1QkFKRXBiLEdBQUdtYixLQUFLbGIsR0FBR21iLEtBQUsvWTtNQUdsQixrQ0FDK0I7SUEvQzFCLGdCQWlESXJDLEdBQUdtYixLQUFLbGIsR0FBR21iLEtBQUsvWTtNM0J0R2pDOzs7UTJCc0dpQ0E7Ozs7UUFBYjhZOzs7Z0NBQUhuYixNQUFnQnFDLFdBQWI4WTs7OztRQUFRQzs7OytCQUFIbmIsTUFBUW9DLFdBQUwrWTtPQUlwQix3QkFKU3BiLEdBQUdtYixLQUFLbGIsR0FBR21iLEtBQUsvWTtNQUd6QixrREFDc0M7SUFyRGpDLGdCQXdESDdELEVBQUV1RDtNQUNULDhCQURTQSxXQUNUOzs7UUFBNkI7cUJBRHRCdkQsRUFDc0Isc0JBRHBCdUQsRUFDVHpIO1VBQTZCLFNBQTdCQTs7O2NBQW1EO0lBekR6QyxpQkE0REZrRSxFQUFFdUQ7TUFDViw4QkFEVUEsV0FDVjs7O1FBQTZCO3FCQURyQnZELEVBQ1JsRSxFQUE2QixzQkFEbkJ5SCxFQUNWekg7VUFBNkIsU0FBN0JBOzs7Y0FBc0Q7SUE3RDVDLGtCQStFRCtnQixJQUVQemE7TTNCdElMLEcyQnNJS0E7UUFBSyxnQ0FGRXlhLGlCQUVQemEsRUFBSzs7Ozs7Y0FsQmlCO2VBS2hCSztlQUxLOUIsZ0NBT2tCbWM7ZUFQUCxhQUFYbmMsSUFBaUM7O3FCQUt0QzhCOztxQkFETTs7O1VBZ0I0QixrREFGeENMOzs7OztvQkFQTTBZO2dCQUNOLHVCQUxpQmlDO2dCQU1qQjtrQkFHT0YsTUFUVUUsVUFLakIsK0JBTDZCRDtnQkFNN0I7Z0VBTjZCQTs7eUJBSXZCaEM7O2NBRE4sdUJBSGlCaUMsUUFHakI7cUJBSGlCQTtZQUNYLE9BRFdBO01BVVg7SUFoRkUsZUFzRkp2YixHQUFHQztNQUNUOytCQURNRDtPQUNOLHdCQURTQztPQUdELG9CQUZKQyxLQUNBQztNQUVKLGdCQUpNSCxLQUdGckIsSUFGQXVCO01BSUosZ0JBTFNELEtBR0x0QixFQUZBdUIsR0FDQUM7TUFHSixPQUZJeEIsQ0FHSDtJQTVGUyxTQWtHUjZjO01BQVc7Ozs7O3lCQUVEO0lBcEdGLGNBc0dIeGM7TUFDUCw2QkFET0EsR0FDUDs7UUFFa0IsR0FEZDFFLE9BREErSCxPQUVjLCtCQUhYckQsRUFFSDFFO1VBRUY7UUFFRixJQUFJc1UsS0FMQXZNOztVQU1jLEdBTGQvSCxRQUlBc1UsUUFDYywrQkFQWDVQLEVBTUg0UDtZQUVGO1VBRUYsT0FSSXRVLFFBSUFzVSxLQUtGLElBWEs1UCxFQUVIMUUsTUFJQXNVLE9BSkF0VSw0QkFXRztJQW5IRyxtQkFxSEEwRTtNQUNWLHNDQURVQSxXQUNWOztZQUNBNkI7UUFDRTswQ0FIUTdCLEVBRVY2QjtVQUNFOzs7Ozs7Ozs7Ozs7O1VBRkUvQjtVQUVGLFNBREYrQjs7O01BT0EsR0FSSS9CLFNBUUoscUJBVFVFLEdBU1ksWUFUWkE7TUFDVixJQVNNdVEsSUFBSyxrQkFUUHpRO01BU087TUFUWCxJQVNXLDBCQVZERSxXQVVDOztZQUVUMUU7UUFDRTtzQ0FiTTBFLEVBWVIxRTtVQUNFLFNBV0VvSDs7Ozs7Ozs7Ozs7Ozs7Z0JBREUsc0JBYkY2TixJQVRGelE7Z0JBc0JJO3NDQWJGeVEsSUFURnpROzs7Z0JBa0JJLHNCQVRGeVEsSUFURnpRO2dCQWtCSTtzQ0FURnlRLElBVEZ6UTs7O2dCQWdCSSxzQkFQRnlRLElBVEZ6UTtnQkFnQkk7c0NBUEZ5USxJQVRGelE7OztnQkFvQkksc0JBWEZ5USxJQVRGelE7Z0JBb0JJO3NDQVhGeVEsSUFURnpROzs7OzthQXlCSSxzQkFoQkZ5USxJQVRGelE7YUF5Qkk7bUNBaEJGeVEsSUFURnpRLFdBdUJFNEM7YUFFRTttQ0FoQkY2TixJQVRGelEsWUF1QkU0QzthQUVFO21DQWhCRjZOLElBVEZ6USxXQXVCRTRDOzs7YUFURSxzQkFMRjZOLElBVEZ6UTthQWNJO21DQUxGeVEsSUFURnpRLEtBdUJFNEM7O21CQUFxQixzQkFkckI2TixJQVRGelEsS0F1QkU0Qzs7VUFXRjtVQXRCQSxTQURGcEg7OztNQXlCQSxPQTNCSWlWLEdBNEJIO0lBM0pPLGVBNkpKL1EsRUFBRVE7TUFDUixJQUFJNEIsRUFBSixxQkFEUTVCO01BQ1IsU0FBSTRCLEVBQ1UsT0FGTjVCO01BQ1IsSUFFVSxvQkFGTjRCLEdBRU0sS0FGTkEsVUFFTTs7WUFDUnRHO1FBQXNCO1VBQWUsc0JBRGpDcUUsRUFDSnJFLEVBQXFDLFdBSmpDa0UsRUFJa0Isc0JBSmhCUSxFQUlOMUU7VUFBcUMsU0FBckNBOzs7TUFDQSxPQUZJcUUsQ0FHSDtJQW5LTyxnQkFxS0hILEVBQUVRO01BQ1QsSUFBSTRCLEVBQUoscUJBRFM1QjtNQUNULFNBQUk0QixFQUNVLE9BRkw1QjtNQUNULElBRVUsb0JBRk40QixHQUVNLEtBRk5BLFVBRU07O1lBQ1J0RztRQUFzQjtVQUFlO1lBRGpDcUUsRUFDSnJFLEVBQXFDLFdBSmhDa0UsRUFJTGxFLEVBQXNCLHNCQUpmMEUsRUFJUDFFO1VBQXFDLFNBQXJDQTs7O01BQ0EsT0FGSXFFLENBR0g7SUEzS08scUJBNktFSCxFQUFFVyxFQUFFNEM7TUFDaEIsU0FEYzVDLEdBQ2QsMEJBRGdCNEMsV0FDaEI7O1lBQ0F6SDtRQUNFO1VBQUssa0JBSEtrRSxFQUNSRyxLQUVGLHNCQUhjb0QsRUFFaEJ6SDtVQUNPLFNBRFBBOzs7TUFHQSxPQUpJcUUsSUFJRjtJQWxMUSxzQkFvTEdILEVBQUV1RCxFQUFFNUM7TUFDakIsU0FEaUJBLEdBQ2pCLDBCQURlNEM7TUFDZjtZQUNBekg7UUFDRTtVQUFLLGtCQUhNa0UsRUFHWCxzQkFIYXVELEVBRWZ6SCxHQURJcUU7VUFFRyxTQURQckU7OztNQUdBLE9BSklxRSxJQUlGO0lBekxRLGtCQTJMRGlQLEVBQUU1TztNQUNYLDJCQURXQSxHQUVFMUU7TUFDWDtXQURXQSxNQURUd0UsRUFFWTtRQUNOLGNBSkQ4TyxFQUlGLHNCQUpJNU8sRUFFRTFFLElBRXFCO1FBQzNCLFFBSE1BO2lCQUlQO0lBak1JLG1CQW1NQXNULEVBQUU1TztNQUNaLDJCQURZQSxHQUVDMUU7TUFDWDtXQURXQSxNQURUd0UsRUFFWTtRQUNOLGNBSkE4TyxFQUlILHNCQUpLNU8sRUFFQzFFO1VBRXFCLFFBRnJCQTtRQUdOLFNBQ0Q7SUF6TUksMkJBMk1RMEUsR0FBSSxhRDdMcEJxVyxnQkM2TGdCclcsRUFBOEI7SUEzTXRDLDJCQTRNUUEsR0FBSSxhRGxNcEJvVyxnQkNrTWdCcFcsRUFBOEI7SUE1TXRDLFNBOE1SeWMsT0FBT2pkLEVBQUVRO01BQ1gsOEJBRFdBLEdBQ1UsT0FEVkE7TUFFRCxJQUFKTCxFQUFJLEtBRkNLO01BR00sc0JBRFhMLElBQ1csV0FIUkgsRUFFQyxzQkFGQ1E7TUFHTSxPQURYTCxDQUdIO0lBbk5PLDBCQXFOU0ssR0FBSSxjRHZNckJxVyxnQkN1TWlCclcsRUFBaUM7SUFyTjFDLDRCQXNOV0EsR0FBSSxjRDVNdkJvVyxnQkM0TW1CcFcsRUFBaUM7SUF0TjVDLHFCQXlOSzBjLE9BQU8xYztNQUN0QjtrQ0FEc0JBO09BQ3RCLDZCQURlMGM7T0FDZixLQUNJRSxXQURBRDtNQUFKO1lBRVlyaEI7UUFDVjthQURVQSxNQURSc2hCLFFBRWtCO1VBQ2YseUJBTGU1YyxFQUdWMUUsT0FFTCxzQkFMUW9oQixPQUdIcGhCO1dBRXlDO1VBQzlDLFFBSEtBOztNQU5hLFdBVUc7SUFoT2xCLG1CQW1PR3VoQixPQUFPN2M7TUFDcEI7a0NBRG9CQTtPQUNwQiw2QkFEYTZjO09BQ2IsS0FBSUYsUUFDQUc7T0FESixVQUVJQztNQUZKO1lBR1l6aEI7UUFDVjthQURVQSxNQUZSd2hCLFFBR2tCO1VBQ2Y7a0NBTmE5YyxFQUdoQitjLE9BQ1F6aEI7O1lBRUwsc0JBTk11aEIsT0FJRHZoQjtXQUVrRDtVQUN2RCxRQUhLQTs7TUFWVixXQWNtQjtJQTNPWCxTQThPSjBoQixVQUFVaGQsRUFBRWlkLElBQUkzaEIsRUFBRW9IO00zQm5TM0IsSTJCbVN5QmI7TUFDdEI7V0FEa0JvYixPQUFJcGIsSUFDTDtRQUNqQix5QkFGZ0I3QixFQUFNNkIsU0FBRWEsRUFFRyxPQUZMYjtRQUVZLFFBRlpBO2lCQUVxQztJQWhQakQsZUFtUEY3QixFQUFFMEMsR0FBSSxpQkFBTjFDLEVBQU0scUJBQU5BLEtBQUUwQyxFQUE4QjtJQW5QOUIsU0FzUEp5YSxjQUFjbmQsRUFBRWlkLElBQUkzaEIsRUFBRW9IO00zQjNTL0IsSTJCMlM2QmI7TUFDMUI7V0FEc0JvYixPQUFJcGIsSUFDVDtRQUNqQix5QkFGb0I3QixFQUFNNkIsU0FBRWEsRUFFRCxVQUZEYjtRQUVhLFFBRmJBO2lCQUUwQztJQXhQMUQsbUJBMlBFN0IsRUFBRTBDO01BQUkscUJBQU4xQyxFQUFNLHFCQUFOQSxLQUFFMEMsRUFBa0M7SUEzUHRDLG9CQThQRzFDLEVBQUUxRSxFQUFFb0g7TUFDakIsSUFBSWQsRUFBSixxQkFEYTVCO2NBQUUxRSxRQUNYc0csSUFEV3RHLEdBR2YsaUJBSGEwRSxFQUNUNEIsRUFEV3RHLEVBQUVvSDtNQUVNLGtEQUNOO0lBalFQLHdCQW9RTzFDLEVBQUUxRSxFQUFFb0g7TUFDckIsSUFBSWQsRUFBSixxQkFEaUI1QjtjQUFFMUUsUUFDZnNHLElBRGV0RyxHQUtqQixxQkFMZTBFLEVBQ2I0QixFQURldEcsRUFBRW9IO01BR25CLGtEQUVxQjtJQXpRYixTQTRRSjBhLFdBQVdwZCxFQUFFMUUsRUFBRW9IO00zQmpVeEIsSTJCaVVzQmI7TUFDbkI7Z0JBRG1CQTtVQUVuQix5QkFGaUI3QixFQUFFNkIsU0FBRWEsRUFFTSxPQUZSYjtVQUVlLFFBRmZBOztRQUNMLGdCQUMwQztJQTlROUMsZ0JBaVJEN0IsRUFBRTBDO01BQUksa0JBQU4xQyxFQUFNLHFCQUFOQSxXQUFFMEMsRUFBaUM7SUFqUmxDLHFCQW9SSTFDLEVBQUUxRSxFQUFFb0g7TTNCelVyQixTMkJ5VW1CcEgsNkJBQUYwRSxNQUFFMUUsR0FJZCxrQkFKWTBFLEVBQUUxRSxFQUFFb0g7TUFFaEIsa0RBRWdCO0lBeFJSLFNBMlJKMmEsZUFBZXJkLEVBQUUxRSxFQUFFb0g7TTNCaFY1QixJMkJnVjBCYjtNQUN2QjtnQkFEdUJBO1VBRXZCLHlCQUZxQjdCLEVBQUU2QixTQUFFYSxFQUVFLFVBRkpiO1VBRWdCLFFBRmhCQTs7UUFDVCxTQUNtRDtJQTdSdkQsb0JBZ1NHN0IsRUFBRTBDO01BQUksc0JBQU4xQyxFQUFNLHFCQUFOQSxXQUFFMEMsRUFBcUM7SUFoUzFDLHlCQW1TUTFDLEVBQUUxRSxFQUFFb0g7TTNCeFZ6QixTMkJ3VnVCcEgsNkJBQUYwRSxNQUFFMUU7T0FJbEIsc0JBSmdCMEUsRUFBRTFFLEVBQUVvSDtNQUVwQixrREFFb0I7SUF2U1osdUJBMlNNMUMsRUFBRTFFLEVBQUVvSDtNQUNwQixJQUFJZCxFQUFKLHFCQURnQjVCO2NBQUUxRSxRQUNkc0csSUFEY3RHO09BS2hCO1NBQVcsVUFMRzBFLEVBQ1o0QixFQURjdEcsRUFBRW9ILEdBS1A7OzsrQkFBNEM7O01BRnZELGtEQUU0RDtJQWhUcEQsa0JBb1RDMUMsRUFBRTBDLEdBQUkscUJBQU4xQyxJQUFFMEMsRUFBdUI7SUFwVDFCLHdCQXVUTzFDLEVBQUUxRSxFQUFFb0g7TTNCNVd4QixRMkI0V3NCcEgsNkJBQUYwRSxNQUFFMUU7T0FJakI7U0FBVyxXQUpJMEUsRUFBRTFFLEVBQUVvSCxHQUlSOzs7K0JBQTJDOztNQUZ0RCxrREFFMkQ7SUEzVG5ELG1CQWdVQ3ZDLEVBQU9DLEdBQVEsa0NBQWZELEVBQU9DLEVBQTBCO0lBaFVsQyx1QkFvVU1pYyxJQUFJcmM7TUFDcEI7O2lDQURvQkE7T0FDcEIsMEJBRG9CQTtNQUNwQjtZQUVBMUU7UUFDRTttQ0FKa0IwRSxFQUdwQjFFLE9BSGdCK2dCO1lBSWUsU0FIM0IxYztZQUlLLGNBTFdLLEVBR3BCMUUsV0FESXNVLE9BQ0p0VTtZQUVTLE9BRlRBOzs7O01BRkEsU0FBSXFFO01BUUosY0FUb0JLLElBRWhCNFAsV0FPWTtJQTdVTixxQkFpVkU1UCxHQUFJLGFEOVVkbVcsVUM4VVVuVyxFQUF3QjtJQWpWMUIscUJBa1ZFQSxHQUFJLGFEdFZka1csVUNzVlVsVyxFQUF3QjtJQWxWMUIsb0JBb1ZHQSxHQUFJLGNEalZmbVcsVUNpVlduVyxFQUEyQjtJQXBWOUIsc0JBcVZLQSxHQUFJLGNEelZqQmtXLFVDeVZhbFcsRUFBMkI7SUFyVmhDLGtCQXlWREE7TUFDVCxTQUFRK2EsSUFBSXpmO1FBQ1YsR0FEVUEsTUFDVixxQkFGTzBFLEdBRWM7UUFFWCxxQkFKSEEsRUFDRzFFLEdBR0EsS0FIQUE7UUFJSyxVQURUNkUsaUIzQmxaWCxPMkIrWVc0YSxnQkFJbUI7TUFKM0I7NEIzQi9ZSCxPMkIrWVdBLGVBTUg7SUFoV0ssaUJBa1dBL2E7TUFDVixTQUFRK2EsSUFBSXpmO1FBQ1YsR0FEVUEsTUFDVixxQkFGUTBFLEdBRWE7UUFFWCxxQkFKRkEsRUFDRTFFLEdBR0EsS0FIQUE7UUFJUyxhQUpUQSxFQUdKNkUsa0IzQjNaWCxPMkJ3Wlc0YSxnQkFJdUI7TUFKL0I7NEIzQnhaSCxPMkJ3WldBLGVBTUg7SUF6V0ssa0JBMldEemY7TUFDVCxZQUNjO01BU2Q7aUJBQ09vSDtVQUNGLEdBWkQ1QyxTQVlDLHFCQVhEMkU7WUFHWTthQUFWNlk7Y0FBVSxVQUFkLHFCQUhFN1k7WUFHWSx3QkFIWkEsWUFHRTZZO2FBQzBCO1lBRGhCLElBRVZDLFFBQVUsT0FGVkQ7WUFHSixLQU5FN1ksU0FLRThZLFVBTkZ6ZDtZQU9GLFNBREl5ZDtVQU9ELGVBWkQ5WSxPQURBM0UsS0FXRzRDO1VBRUY7a0JBQ007UUFmRnBIO01BV1QsV0FUSW1KLFNBREEzRSxLQWdCUztJQTVYSCxTQTRzQkowZCxNQW5UaUJsYyxFQUFFaEcsR0FHYixxQ0FIV2dHLEVBQUVoRyxHQUdhO0lBNVo1QixrQkE4WkNnRyxFQUFFaEcsR0FDWixzQkFEVWdHLEVBQUVoRyxjQUNrRDtJQS9ackQsdUJBaWFNZ0csRUFBRWhHLEdBRWIsd0JBRldnRyxFQUFFaEcsRUFFSTtJQW5hWix1QkFxYU1nRyxFQUFFaEcsR0FDZ0IscUNBRGxCZ0csRUFBRWhHLEdBRUk7SUF2YVosc0JBeWFLZ0csRUFBRWhHLEdBQ2hCLHdCQURjZ0csRUFBRWhHLGNBQ29EO0lBMWEzRCxzQkE0YUtnRyxFQUFFaEcsR0FDaEIsd0JBRGNnRyxFQUFFaEcsY0FDb0Q7SUE3YTNELHNCQSthS2dHLEVBQUVoRyxHQUNoQixxQkFEY2dHLEVBQUVoRyxjQUNvRDtJQWhiM0Qsc0JBa2JLZ0csRUFBRWhHLEdBRVosd0JBRlVnRyxFQUFFaEcsRUFFSTtJQXBiWCxzQkFzYktnRyxFQUFFaEcsR0FDbUMsd0JBQWxCLGlCQURuQmdHLEVBQUVoRyxHQUVJO0lBeGJYLHNCQTBiS2dHLEVBQUVoRyxHQUVaLHdCQUZVZ0csRUFBRWhHLEVBRUk7SUE1Ylgsc0JBOGJLZ0csRUFBRWhHLEdBQ21DLHdCQUFsQixpQkFEbkJnRyxFQUFFaEcsR0FFSTtJQWhjWCxTQXlyQk5taUIsTUFsUG1CbmMsRUFBRWhHLEVBQUU2RSxHQUczQix3QkFIdUJtQixFQUFFaEcsRUFHekIsYUFIMkI2RSxHQUdRO0lBMWN6QixzQkE0Y0ttQixFQUFFaEcsRUFBRTZFLEdBRWQsd0JBRlVtQixFQUFFaEcsRUFBRTZFLEVBRUk7SUE5Y2Isc0JBZ2RLbUIsRUFBRWhHLEVBQUU2RSxHQUNRLHdCQURabUIsRUFBRWhHLEVBQ1UsYUFEUjZFLEdBRUk7SUFsZGIsc0JBb2RLbUIsRUFBRWhHLEVBQUU2RSxHQUVkLHdCQUZVbUIsRUFBRWhHLEVBQUU2RSxFQUVJO0lBdGRiLHNCQXdkS21CLEVBQUVoRyxFQUFFNkU7TUFDUSx3QkFEWm1CLEVBQUVoRyxFQUMyQixpQkFEekI2RSxHQUVJO0lBMWRiLHNCQTRkS21CLEVBQUVoRyxFQUFFNkUsR0FFZCx3QkFGVW1CLEVBQUVoRyxFQUFFNkUsRUFFSTtJQTlkYixzQkFnZUttQixFQUFFaEcsRUFBRTZFO01BQ1Esd0JBRFptQixFQUFFaEcsRUFDMkIsaUJBRHpCNkUsR0FFSTtJQWxlYjthQTRlQ3VkLFFBQVE1ZCxFQUFFa08sRzNCamlCeEIsT0M0RWMrSixXMEJxZFFqWSxFQUFFa08sRUFBOEM7SUE1ZXpELFNBOGZDMlAsa0JBQWtCcmMsR0FBSSxjQUFKQSxnQkFBbUI7SUE5ZnRDLFNBK2ZDc2Msa0JBQWtCdGMsR0FBSSxjQUFKQSxnQkFBb0I7SUEvZnZDLFNBZ2dCQ3VjLGtCQUFrQnZjLEdBQUksY0FBSkEsZ0JBQW9CO0lBaGdCdkMsU0FpZ0JDd2Msa0JBQWtCeGM7TUFBSSxTQUFKQSxZQUFJLG9CQUFKQSxPQURJLFdBQ29CO0lBamdCM0MsU0FrZ0JDeWMsa0JBQWtCemMsR0FBSSxjQUFKQSxnQkFBa0I7SUFsZ0JyQyxTQXdnQkMwYyxjQUFjQyxHQUFHQyxHQUFHQztNQUMvQixRQUR5QkYsa0JBQUdDLGdCQUFHQyxPQUdmO0lBM2dCTixTQTZnQkNDLGNBQWNILEdBQUdDLEdBQUdDLEdBQUdFO01BQ2xDLFFBRHlCSixpQkFBR0Msa0JBQUdDLGdCQUFHRSxPQUlsQjtJQWpoQk4seUJBbWhCUS9jLEVBQUVoRztNQUNYLHNCQURTZ0csRUFBRWhHLEdBQ1gseUJBRFNnRztNQUNULFVBaEJnQjJjOzs7Ozs7Y0FzQ3JCLElBQUlwYyxJQXZCWXZHO2NBdUJoQixHQXBCQStFLE1Bb0JJd0IsSUFBNkI7Y0FBakMsSUFDSXFjLEdBQUssc0JBeEJLNWMsRUF1QlZPO2NBQ21CLHFCQUFuQnFjLElBQTZDO2NBRGpELElBRUloQixJQUZBcmI7Y0FFSixHQXRCQXhCLE1Bc0JJNmMsSUFBNkI7Y0FGakMsSUFHSWlCLEdBQUssc0JBMUJLN2MsRUF5QlY0YjtjQUNtQix5QkFBbkJpQjt1QkFBNkM7dUJBQ3ZDLHdCQTFDV0YsR0F1Q2pCQyxHQUVBQzs7Y0FHSixJQUFJRyxJQTdCWWhqQjtjQTZCaEIsR0ExQkErRSxNQTBCSWllLElBQTZCO2NBQWpDLElBQ0lDLEtBQUssc0JBOUJLamQsRUE2QlZnZDtjQUNtQixxQkFBbkJDLE1BQTZDO2NBRGpELElBRUlDLElBRkFGO2NBRUosR0E1QkFqZSxNQTRCSW1lLElBQTZCO2NBRmpDLElBR0lDLEtBQUssc0JBaENLbmQsRUErQlZrZDtjQUNtQixxQkFBbkJDLE1BQTZDO2NBSGpELElBSUlDLElBRkFGO2NBRUosR0E5QkFuZSxNQThCSXFlLElBQTZCO2NBSmpDLElBS0lMLEdBQUssc0JBbENLL2MsRUFpQ1ZvZDtjQUNtQix5QkFBbkJMO3VCQUE2Qzt1QkFDdkMsd0JBbERXSixHQTZDakJNLEtBRUFFLEtBRUFKOztjQVdKLElBQUlNLEtBN0NZcmpCO2NBNkNoQixHQTFDQStFLE1BMENJc2UsS0FBNkI7Y0FBakMsSUFDSUMsS0FBSyxzQkE5Q0t0ZCxFQTZDVnFkO2NBQ21CLHFCQUFuQkMsTUFBNkM7Y0FEakQsSUFFSUMsS0FGQUY7Y0FFSixHQTVDQXRlLE1BNENJd2UsS0FBNkI7Y0FGakMsSUFHSUMsS0FBSyxzQkFoREt4ZCxFQStDVnVkO2NBQ21CLHFCQUFuQkMsTUFBNkM7Y0FIakQsSUFJSUMsS0FGQUY7Y0FFSixHQTlDQXhlLE1BOENJMGUsS0FBNkI7Y0FKakMsSUFLSUMsS0FBSyxzQkFsREsxZCxFQWlEVnlkO2NBQ21CLHlCQUFuQkM7dUJBQTZDO3VCQUN2Qyx3QkFsRVdmLEdBNkRqQlcsS0FFQUUsS0FFQUU7Ozs7Y0FiSixJQUFJQyxJQXJDWTNqQjtjQXFDaEIsR0FsQ0ErRSxNQWtDSTRlLElBQTZCO2NBQWpDLElBQ0lDLEtBQUssc0JBdENLNWQsRUFxQ1YyZDtjQUNtQixxQkFBbkJDLE1BQTZDO2NBRGpELElBRUlDLElBRkFGO2NBRUosR0FwQ0E1ZSxNQW9DSThlLElBQTZCO2NBRmpDLElBR0lDLEtBQUssc0JBeENLOWQsRUF1Q1Y2ZDtjQUNtQixxQkFBbkJDLE1BQTZDO2NBSGpELElBSUlDLElBRkFGO2NBRUosR0F0Q0E5ZSxNQXNDSWdmLElBQTZCO2NBSmpDLElBS0lDLEtBQUssc0JBMUNLaGUsRUF5Q1YrZDtjQUNtQix5QkFBbkJDO3VCQUE2Qzt1QkFDdkMsd0JBMURXckIsR0FxRGpCaUIsS0FFQUUsS0FFQUU7O3VCQXpEaUJyQjtZQTBCckIsSUFBSXNCLEtBWFlqa0I7WUFXaEIsR0FSQStFLE1BUUlrZixLQUE2QjtZQUFqQyxJQUNJQyxLQUFLLHNCQVpLbGUsRUFXVmllO1lBQ21CLHFCQUFuQkMsTUFBNkM7WUFEakQsSUFFSUMsS0FGQUY7WUFFSixHQVZBbGYsTUFVSW9mLEtBQTZCO1lBRmpDLElBR0lDLEtBQUssc0JBZEtwZSxFQWFWbWU7WUFDbUIseUJBQW5CQztxQkFBNkM7cUJBQ3ZDLHdCQTlCV3pCLEdBMkJqQnVCLEtBRUFFOzs7VUFHSixJQUFJQyxJQWpCWXJrQjtVQWlCaEIsR0FkQStFLE1BY0lzZixJQUE2QjtVQUFqQyxJQUNJQyxLQUFLLHNCQWxCS3RlLEVBaUJWcWU7VUFDbUIscUJBQW5CQyxNQUE2QztVQURqRCxJQUVJQyxJQUZBRjtVQUVKLEdBaEJBdGYsTUFnQkl3ZixJQUE2QjtVQUZqQyxJQUdJQyxLQUFLLHNCQXBCS3hlLEVBbUJWdWU7VUFDbUIseUJBQW5CQzttQkFBNkM7bUJBQ3ZDLHdCQXBDVzdCLEdBaUNqQjJCLEtBRUFFOztxQkFuQ2lCN0IsSUFvQkgsaUJBcEJHQTs7VUFzQnJCLElBQUk4QixLQVBZemtCO1VBT2hCLEdBSkErRSxNQUlJMGYsS0FBNkI7VUFBakMsSUF0QndCQyxLQXVCZixzQkFSSzFlLEVBT1Z5ZTtVQUNtQix5QkF2QkNDO21CQXVCeUI7bUJBL0MxQ3RDLFdBd0JjTyxnQkFBRytCO01BbUVyQixxQkFBYTtJQXZrQlYseUJBeWtCUTFlLEVBQUVoRyxFQUlsQjBTO01BSEYsU0FBSWlTO1EzQi9uQlA7TTJCK25CRyxJQUNJNWYsSUFESixxQkFEa0JpQjtjQUloQjBNO1FBQ08sU0FEUEE7VUFJTyxVQUpQQTtZQVVPLFdBVlBBO2NBaUJPLGFBakJQQSxFQXlCSztjQVBILElBQUlrUyxLQXRCWTVrQjtjQXNCaEIsT0FwQkErRSxNQW9CSTZmOzt3QkFFSCxlQXhCYTVlLEVBQUVoRyxRQUlsQjBTO3dCQXFCRyxJQXpCYTFNLEVBQUVoRyxpQkFJbEIwUzt3QkFzQkcsSUExQmExTSxFQUFFaEcsaUJBSWxCMFM7d0JBdUJHLElBM0JhMU0sRUFzQlY0ZSxXQWxCTmxTOztZQVdFLElBQUltUyxPQWZZN2tCO1lBZWhCLE9BYkErRSxNQWFJOGY7O3NCQUVILGVBakJhN2UsRUFBRWhHLFFBSWxCMFM7c0JBY0csSUFsQmExTSxFQUFFaEcsaUJBSWxCMFM7c0JBZUcsSUFuQmExTSxFQWVWNmUsYUFYTm5TOztVQUtFLElBQUlvUyxPQVRZOWtCO1VBU2hCLE9BUEErRSxNQU9JK2Y7O29CQUVILGVBWGE5ZSxFQUFFaEcsUUFJbEIwUztvQkFRRyxJQVphMU0sRUFTVjhlLGFBTE5wUzs7UUFFRSxlQU5jMU0sRUFBRWhHLEVBSWxCMFM7UUFFRTtNQUZjLDRCQXlCQztJQXRtQlQsd0JBeW1CTzFNO01BQWpCLDZCQUFpQkEsV0FBRWhHO01BQ2pCO1dBRFcrRSxNQUFNL0UsRUFDRDtRQUVNLGdDQUhQZ0csRUFBRWhHO1FBR0s7Ozs7OztnQkF1QmxCLElBQUk0a0IsS0ExQlM1a0I7Z0JBNkJWOzttQkE3QkkrRSxNQTBCSDZmOzs7a0JBRUQsa0JBQWtCLHNCQTVCVjVlLEVBQUVoRzs7O2tCQTZCVixrQkFBa0Isc0JBN0JWZ0csRUEwQlA0ZTtrQkFLQyxRQUxEQSxhQTFCUzVrQjtnQkE4QlI7O2dCQUdMLElBQUk4a0IsT0FqQ1M5a0I7Z0JBcUNWOzttQkFyQ0krRSxNQWlDSCtmOzs7a0JBRUQsa0JBQWtCLHNCQW5DVjllLEVBQUVoRzs7O2tCQW9DVixrQkFBa0Isc0JBcENWZ0csRUFBRWhHOzs7a0JBcUNWLGtCQUFrQixzQkFyQ1ZnRyxFQWlDUDhlO2tCQU1DLFFBTkRBLGVBakNTOWtCO2dCQXNDUjs7Z0JBV0wsSUFBSStrQixPQWpEUy9rQjtnQkFxRFY7O21CQXJESStFLE1BaURIZ2dCOzs7a0JBRUQsa0JBQWtCLHNCQW5EVi9lLEVBQUVoRzs7O2tCQW9EVixrQkFBa0Isc0JBcERWZ0csRUFBRWhHOzs7a0JBcURWLGtCQUFrQixzQkFyRFZnRyxFQWlEUCtlO2tCQU1DLFFBTkRBLGVBakRTL2tCO2dCQXNEUjs7OztnQkFiTCxJQUFJZ2xCLE9BekNTaGxCO2dCQTZDVjs7bUJBN0NJK0UsTUF5Q0hpZ0I7OztrQkFFRCxrQkFBa0Isc0JBM0NWaGYsRUFBRWhHOzs7a0JBNENWLGtCQUFrQixzQkE1Q1ZnRyxFQUFFaEc7OztrQkE2Q1Ysa0JBQWtCLHNCQTdDVmdHLEVBeUNQZ2Y7a0JBTUMsUUFOREEsZUF6Q1NobEI7Z0JBOENSOzs7Y0FsQ0wsSUFBSWlsQixPQVpTamxCO2NBZVY7O2lCQWZJK0UsTUFZSGtnQjs7O2dCQUVELGtCQUFrQixzQkFkVmpmLEVBQUVoRzs7O2dCQWVWLGtCQUFrQixzQkFmVmdHLEVBWVBpZjtnQkFLQyxRQUxEQSxlQVpTamxCO2NBZ0JSOzs7WUFHTCxJQUFJNmtCLE9BbkJTN2tCO1lBc0JWOztlQXRCSStFLE1BbUJIOGY7OztjQUVELGtCQUFrQixzQkFyQlY3ZSxFQUFFaEc7OztjQXNCVixrQkFBa0Isc0JBdEJWZ0csRUFtQlA2ZTtjQUtDLFFBTERBLGVBbkJTN2tCO1lBdUJSOzsrQkFuQmEsUUFKTEE7O1lBTWIsSUFBSWtsQixPQU5TbGxCO1lBUVY7O2VBUkkrRSxNQU1IbWdCOzs7Y0FFRCxrQkFBa0Isc0JBUlZsZixFQU1Qa2Y7Y0FJQyxRQUpEQSxlQU5TbGxCO1lBU1I7UUErQ0YsU0FFYztJQW5xQmIsNEJBdXFCV2dHLEVBQUVoRztNQUN2QixJQUNJK0UsSUFESixxQkFEcUJpQjtjQUFFaEcsUUFFbkIrRSxNQUZtQi9FO1FBSXZCLEdBSnVCQSxNQUVuQitFLElBRVk7UUFDVixJQUdKb2dCLEdBSEksTUFMZW5mLEVBQUVoRztvQkFRckJtbEI7VUFETyxXQUNQQSxHQURxQjtVQUVuQixJQUFJUCxLQVRlNWtCO1VBU25CLEdBUEErRSxNQU9JNmYsS0FDZSxvQkFSbkI3ZixNQUZtQi9FO1VBU25CLElBR0UwUyxFQURJLE1BWFcxTSxFQUFFaEc7c0JBWWpCMFM7WUFFRSxJQUFJQyxNQU5Wd1MsbUJBSUl6UztZQUVFLGlCQUFJQztVQUY2QjtRQU5KLGlCQUVuQ3dTO01BTHVCLDJDQVlOO0lBdHJCVCw0QkF3ckJXbmYsRUFBRWhHLEVBS3JCMFM7TUFKRixJQUNJM04sSUFESixxQkFEcUJpQjtjQUFFaEcsUUFFbkIrRSxNQUZtQi9FO2dCQUtyQjBTO1VBQ08sV0FEUEE7WUFJTyxhQUpQQSxFQVdLO1lBTkgsSUFBSWtTLEtBVmU1a0I7WUFVbkIsR0FSQStFLE1BUUk2ZixLQUNlO1lBRG5CO2FBRUEsSUFQRmxTO2FBT0UsV0FBSUM7YUFBSixXQUFJQTtZQUdKLE1BZmlCM00sRUFBRWhHLEVBYWZtbEI7WUFFUSxNQWZLbmYsRUFBRWhHLFVBY2ZvbEI7WUFDUTtVQVJaLElBQUlQLE9BUGU3a0I7VUFPbkIsT0FMQStFLE1BS0k4ZixVQUN1QixNQVJWN2UsRUFBRWhHLEVBS3JCMFM7UUFBZ0I7TUFGTyw2Q0FhTjtJQXhzQlQsMkJBMnNCTzFNO01BQWpCLDZCQUFpQkEsV0FBRWhHO01BQ2pCO1dBRFcrRSxNQUFNL0UsRUFFRDtRQUNoQixHQUhpQkEsTUFBTitFLElBR0s7UUFDVixJQUVKMk4sRUFGSSxNQUpTMU0sRUFBRWhHO29CQU1mMFM7VUFBTyxXQUFQQSxFQUFxQjtVQUVuQixJQUFJa1MsS0FSUzVrQjtVQVFiLEdBUk8rRSxNQVFINmYsS0FDZTtVQURuQixJQUdFalMsSUFESSxNQVZLM00sRUFBRWhHO3NCQVdYMlM7WUFDTyxRQVpJM1M7VUFXd0I7UUFQbkMsSUFDK0IsSUFMcEJBO2lCQWNJO0lBenRCYiw0QkE2dEJXZ0csRUFBRWhHO01BQ3ZCLElBQ0krRSxJQURKLHFCQURxQmlCO2NBQUVoRyxRQUVuQitFLE1BRm1CL0U7UUFJdkIsR0FKdUJBLE1BRW5CK0UsSUFFWTtRQUNWLElBR0pvZ0IsR0FISSxpQkFMZW5mLEVBQUVoRztvQkFRckJtbEI7VUFETyxXQUNQQSxHQURxQjtVQUVuQixJQUFJUCxLQVRlNWtCO1VBU25CLEdBUEErRSxNQU9JNmYsS0FDZSxvQkFSbkI3ZixNQUZtQi9FO1VBU25CLElBR0UwUyxFQURJLGlCQVhXMU0sRUFBRWhHO3NCQVlqQjBTO1lBRUUsSUFBSUMsTUFOVndTLG1CQUlJelM7WUFFRSxpQkFBSUM7VUFGNkI7UUFOSixpQkFFbkN3UztNQUx1Qiw2Q0FZTjtJQTV1QlQsNEJBOHVCV25mLEVBQUVoRyxFQUtyQjBTO01BSkYsSUFDSTNOLElBREoscUJBRHFCaUI7Y0FBRWhHLFFBRW5CK0UsTUFGbUIvRTtnQkFLckIwUztVQUNPLFdBRFBBO1lBSU8sYUFKUEEsRUFXSztZQU5ILElBQUlrUyxLQVZlNWtCO1lBVW5CLEdBUkErRSxNQVFJNmYsS0FDZTtZQURuQjthQUVBLElBUEZsUzthQU9FLFdBQUlDO2FBQUosV0FBSUE7WUFHSixpQkFmaUIzTSxFQUFFaEcsRUFhZm1sQjtZQUVRLGlCQWZLbmYsRUFBRWhHLFVBY2ZvbEI7WUFDUTtVQVJaLElBQUlQLE9BUGU3a0I7VUFPbkIsT0FMQStFLE1BS0k4ZixVQUN1QixpQkFSVjdlLEVBQUVoRyxFQUtyQjBTO1FBQWdCO01BRk8sNkNBYU47SUE5dkJULDJCQWl3Qk8xTTtNQUFqQiw2QkFBaUJBLFdBQUVoRztNQUNqQjtXQURXK0UsTUFBTS9FLEVBRUQ7UUFDaEIsR0FIaUJBLE1BQU4rRSxJQUdLO1FBQ1YsSUFFSjJOLEVBRkksaUJBSlMxTSxFQUFFaEc7b0JBTWYwUztVQUFPLFdBQVBBLEVBQXFCO1VBRW5CLElBQUlrUyxLQVJTNWtCO1VBUWIsR0FSTytFLE1BUUg2ZixLQUNlO1VBRG5CLElBR0VqUyxJQURJLGlCQVZLM00sRUFBRWhHO3NCQVdYMlM7WUFDTyxRQVpJM1M7VUFXd0I7UUFQbkMsSUFDK0IsSUFMcEJBO2lCQWNJO0lBL3dCYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CRWJId0UsRUFBRTRDLEdBQ1QsbUNBRE81QyxFQUFFNEMsR0FDUTtvQkFDVjVDLEVBQUVOLEdBQ1QsbUNBRE9NLEVBQUVOLEdBQ1E7b0JBRVZRO01BQ1AsaUNBQU8scUJBREFBLElBQ2M7bUJBR2ZBLEVBQUVvRCxJQUFJQztNQUNaLGdDQUFNLHFCQURBckQsR0FBRW9ELElBQUlDLEtBQ2dCO3NCQXNCbkJnWixJQUVQemE7TTdCMUVMLEc2QjBFS0E7UUFBSyxpQ0FGRXlhLGlCQUVQemEsRUFBSzs7Ozs7Y0FsQmlCO2VBS2hCSztlQUxLOUIsaUNBT2tCbWM7ZUFQUCxhQUFYbmMsSUFBaUM7O3FCQUt0QzhCOztxQkFETTs7O1VBZ0I4QixrREFGMUNMOzs7OztvQkFQTTBZO2dCQUNOLHdCQUxpQmlDO2dCQU1qQjtrQkFHT0YsTUFUVUUsVUFLakIsZ0NBTDZCRDtnQkFNN0I7aUVBTjZCQTs7eUJBSXZCaEM7O2NBRE4sd0JBSGlCaUMsUUFHakI7d0NBSGlCQTtNQVVYO29CQVNEL2MsRUFBRVE7TUFDVCwrQkFEU0EsV0FDVDs7O1FBQTZCO3FCQUR0QlIsRUFDc0IsdUJBRHBCUSxFQUNUMUU7VUFBNkIsU0FBN0JBOzs7Y0FBb0Q7cUJBRzVDa0UsRUFBRVE7TUFDViwrQkFEVUEsV0FDVjs7O1FBQTZCO3FCQURyQlIsRUFDUmxFLEVBQTZCLHVCQURuQjBFLEVBQ1YxRTtVQUE2QixTQUE3QkE7OztjQUFzRDttQkFFaERrRSxFQUFFUTtNQUNSLGtDQURNUixFQUNFLHFCQURBUSxJQUNjO29CQUNmUixFQUFFUTtNQUNULG1DQURPUixFQUNFLHFCQURBUSxJQUNjOzBCQUNWUixFQUFFVyxFQUFFNEM7TUFDRixvQkFERnZELEVBQ0UscUJBREFXLEdBQUU0QyxFQUNPO3lCQUNadkQsRUFBRXVELEVBQUU1QztNQUNBLG1CQURKWCxFQUFFdUQsRUFDRSxxQkFEQTVDLEdBQ087c0JBQ2RYLEVBQUVRLEdBQ0EsZ0JBREZSLEVBQ0UscUJBREFRLEdBQ087dUJBQ1JSLEVBQUVRLEdBQ0EsaUJBREZSLEVBQ0UscUJBREFRLEdBQ087YUFNakIyZ0I7TUFBVzs7Ozs7eUJBRUQ7b0JBRUwzZ0I7TUFDSixxQkFESUEsU0FDUSxPQURSQTtNQUU4Qjs7UUFBN0IsV0FBSCx1QkFGRUE7OztRQUU4QixrQ0FGOUJBO09BSUYsT0FKRUE7TUFHSSxpQ0FBUSxxQkFIWkEsSUFJRDt1QkFHbUJBO01BQXpCLDRCQUF5QkEsR0FBSTFFO01BQzNCO1dBRHlCd0UsS0FBRXhFLEVBQ1osT0FEUTBFO1FBRXJCLGlDQUZxQkEsRUFBSTFFLEdBRXpCOzs7Ozs7U0FFUSxzQ0FBVyxxQkFKRTBFO1FBRXJCLElBR08sSUFMa0IxRTtpQkFPRTthQUd6QnNsQixZQUFVNWdCLEVBQUVpZCxJQUFJM2hCLEVBQUVvSDtNN0IvSDNCLEk2QitIeUJiO01BQ3RCO1dBRGtCb2IsT0FBSXBiLElBQ0w7UUFDakIsMEJBRmdCN0IsRUFBTTZCLFNBQUVhLEVBRUcsT0FGTGI7UUFFWSxRQUZaQTtpQkFFcUM7cUJBR25EN0IsRUFBRTBDLEdBQUksbUJBQU4xQyxFQUFNLHNCQUFOQSxLQUFFMEMsRUFBOEI7YUFHbENtZSxnQkFBYzdnQixFQUFFaWQsSUFBSTNoQixFQUFFb0g7TTdCdkkvQixJNkJ1STZCYjtNQUMxQjtXQURzQm9iLE9BQUlwYixJQUNUO1FBQ2pCLDBCQUZvQjdCLEVBQU02QixTQUFFYSxFQUVELFVBRkRiO1FBRWEsUUFGYkE7aUJBRTBDO3lCQUd4RDdCLEVBQUUwQztNQUFJLHVCQUFOMUMsRUFBTSxzQkFBTkEsS0FBRTBDLEVBQWtDOzBCQUduQzFDLEVBQUUxRSxFQUFFb0g7TUFDakIsSUFBSWQsRUFBSixzQkFEYTVCO2NBQUUxRSxRQUNYc0csSUFEV3RHLEdBR2IsbUJBSFcwRSxFQUNUNEIsRUFEV3RHLEVBQUVvSDtNQUVNLG9EQUNKOzhCQUdGMUMsRUFBRTFFLEVBQUVvSDtNQUNyQixJQUFJZCxFQUFKLHNCQURpQjVCO2NBQUUxRSxRQUNmc0csSUFEZXRHLEdBS2pCLHVCQUxlMEUsRUFDYjRCLEVBRGV0RyxFQUFFb0g7TUFHbkIsb0RBRXFCO2FBR2pCb2UsYUFBVzlnQixFQUFFMUUsRUFBRW9IO003QjdKeEIsSTZCNkpzQmI7TUFDbkI7Z0JBRG1CQTtVQUVuQiwwQkFGaUI3QixFQUFFNkIsU0FBRWEsRUFFTSxPQUZSYjtVQUVlLFFBRmZBOztRQUNMLGdCQUMwQztzQkFHL0M3QixFQUFFMEM7TUFBSSxvQkFBTjFDLEVBQU0sc0JBQU5BLFdBQUUwQyxFQUFpQzsyQkFHOUIxQyxFQUFFMUUsRUFBRW9IO003QnJLckIsUzZCcUttQnBILDhCQUFGMEUsTUFBRTFFO09BSWQsb0JBSlkwRSxFQUFFMUUsRUFBRW9IO01BRWhCLG9EQUVnQjthQUdacWUsaUJBQWUvZ0IsRUFBRTFFLEVBQUVvSDtNN0I1SzVCLEk2QjRLMEJiO01BQ3ZCO2dCQUR1QkE7VUFFdkIsMEJBRnFCN0IsRUFBRTZCLFNBQUVhLEVBRUUsVUFGSmI7VUFFZ0IsUUFGaEJBOztRQUNULFNBQ21EOzBCQUdwRDdCLEVBQUUwQztNQUFJLHdCQUFOMUMsRUFBTSxzQkFBTkEsV0FBRTBDLEVBQXFDOytCQUdsQzFDLEVBQUUxRSxFQUFFb0g7TTdCcEx6QixTNkJvTHVCcEgsOEJBQUYwRSxNQUFFMUU7T0FJbEIsd0JBSmdCMEUsRUFBRTFFLEVBQUVvSDtNQUVwQixvREFFb0I7NkJBR04xQyxFQUFFMUUsRUFBRW9IO01BQ3BCLElBQUlkLEVBQUosc0JBRGdCNUI7Y0FBRTFFLFFBQ2RzRyxJQURjdEc7T0FLaEI7U0FBVyxZQUxHMEUsRUFDWjRCLEVBRGN0RyxFQUFFb0gsR0FLUDs7OytCQUE0Qzs7TUFGdkQsb0RBRTREO3dCQUduRDFDLEVBQUUwQyxHQUFJLHVCQUFOMUMsSUFBRTBDLEVBQXVCOzhCQUduQjFDLEVBQUUxRSxFQUFFb0g7TTdCdE14QixRNkJzTXNCcEgsOEJBQUYwRSxNQUFFMUU7T0FJakI7U0FBVyxhQUpJMEUsRUFBRTFFLEVBQUVvSCxHQUlSOzs7K0JBQTJDOztNQUZ0RCxvREFFMkQ7K0JBRTNDMUM7TUFDbEIsOENBQWtCLHFCQURBQSxJQUNjOytCQUNkQTtNQUNsQiw4Q0FBa0IscUJBREFBLElBQ2M7Z0NBQ2JBO01BQ25CLDZDQUFtQixxQkFEQUEsSUFDYztrQ0FDWkE7TUFDckIsK0NBQXFCLHFCQURBQSxJQUNjOzJCQUdwQjBjLE9BQU8xYztNQUN0QjttQ0FEc0JBO09BQ3RCLDhCQURlMGM7T0FDZixLQUNJRSxXQURBRDtNQUFKO1lBRVlyaEI7UUFDVjthQURVQSxNQURSc2hCLFFBRWtCO1VBQ2YsMEJBTGU1YyxFQUdWMUUsT0FFTCx1QkFMUW9oQixPQUdIcGhCO1dBRXlDO1VBQzlDLFFBSEtBOztNQU5aLFdBVTRCO3lCQUdmdWhCLE9BQU83YztNQUNwQjttQ0FEb0JBO09BQ3BCLDhCQURhNmM7T0FDYixLQUFJRixRQUNBRztPQURKLFVBRUlDO01BRko7WUFHWXpoQjtRQUNWO2FBRFVBLE1BRlJ3aEIsUUFHa0I7VUFDZjttQ0FOYTljLEVBR2hCK2MsT0FDUXpoQjs7WUFFTCx1QkFOTXVoQixPQUlEdmhCO1dBRWtEO1VBQ3ZELFFBSEtBOztNQVZWLFdBY21COzZCQUdMK2dCLElBQUlyYztNQUNwQjs7a0NBRG9CQTtPQUNwQiwyQkFEb0JBO01BQ3BCO1lBRUExRTtRQUNFO29DQUprQjBFLEVBR3BCMUUsT0FIZ0IrZ0I7WUFJZSxTQUgzQjFjO1lBSUssZ0JBTFdLLEVBR3BCMUUsV0FESXNVLE9BQ0p0VTtZQUVTLE9BRlRBOzs7O01BRkEsU0FBSXFFO01BUUosZ0JBVG9CSyxJQUVoQjRQLFdBT1k7eUJBSUo1UDtNQUNaLHdDQUFZLHFCQURBQSxJQUNjO3lCQUNkQTtNQUNaLHdDQUFZLHFCQURBQSxJQUNjOzBCQUNiQTtNQUNiLHVDQUFhLHFCQURBQSxJQUNjOzRCQUNaQTtNQUNmLHlDQUFlLHFCQURBQSxJQUNjO3VCQUlsQkcsRUFBT0MsR0FBUSwyQkFBZkQsRUFBT0MsRUFBMEI7c0JBS25DSixHQUFJLHFDQUFKQSxHQUFxQjt1QkFFcEJBLEdBQUksb0NBQUpBLEdBQXNCO3NCQUV2QmdoQixHQUFJLHFDQUFKQSxHQUFxQjsrQkFJWmhoQixFQUFFMUU7TUFBc0IsNENBQXhCMEUsR0FBRTFFLEVBQStCOzhCQUNsQzBFO01BQXFCLDJDQUFyQkEsR0FBNEI7a0NBRXhCQSxFQUFFMUU7TUFBeUIsK0NBQTNCMEUsR0FBRTFFLEVBQWtDO2lDQUNyQzBFO01BQXdCLDhDQUF4QkEsR0FBK0I7a0NBRTlCQSxFQUFFMUU7TUFBeUIsK0NBQTNCMEUsR0FBRTFFLEVBQWtDO2lDQUNyQzBFO01BQXdCLDhDQUF4QkEsR0FBK0I7d0JBU3hDQSxFQUFFMUUsR0FBZSxxQ0FBakIwRSxHQUFFMUUsRUFBd0I7NkJBQ3JCMEUsRUFBRTFFO01BQW9CLDZDQUF0QjBFLEdBQUUxRSxFQUE2Qjs2QkFDL0IwRSxFQUFFMUU7TUFBb0IsMENBQXRCMEUsR0FBRTFFLEVBQTZCOzRCQUNoQzBFLEVBQUUxRTtNQUFtQix5Q0FBckIwRSxHQUFFMUUsRUFBNEI7NEJBQzlCMEUsRUFBRTFFO01BQW1CLHlDQUFyQjBFLEdBQUUxRSxFQUE0Qjs0QkFDOUIwRSxFQUFFMUU7TUFBbUIseUNBQXJCMEUsR0FBRTFFLEVBQTRCOzRCQUM5QjBFLEVBQUUxRTtNQUFtQiw2Q0FBckIwRSxHQUFFMUUsRUFBNEI7NEJBQzlCMEUsRUFBRTFFO01BQW1CLHlDQUFyQjBFLEdBQUUxRSxFQUE0Qjs0QkFDOUIwRSxFQUFFMUU7TUFBbUIsNkNBQXJCMEUsR0FBRTFFLEVBQTRCOzRCQUM5QjBFLEVBQUUxRTtNQUFtQix5Q0FBckIwRSxHQUFFMUUsRUFBNEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthQ3ZSM0MybEIscUJBQWMsUUFBSTthQUNsQkMsdUJBQWdCLFFBQUM7YUFDakJDLG1CQUFlLFlBQUk7dUJBRm5CRixTQUNBQyxXQUNBQzs7YUNZQUMsVUFBVUMsS0FBS2plLElBQUlDLElBQUkzRCxFQUFFNGhCO00vQmhDOUI7OztRK0JnQ29CbGU7Ozs7UUFBSUM7OzsrQkFBVGdlLFFBQVNoZSxXQUFKRDtPQUdaLDJDQUhPaWUsS0FBS2plLElBQUlDLElBQUkzRCxFQUFFNGhCO01BRXRCLGtEQUNxQztRQVl4Q0M7YUFDQUMsVUFBVUgsS0FBS2plO00vQmhEcEIsUStCZ0RvQkEsZ0NBQUxpZSxrQkFBS2plO09BR1osOEJBSE9pZSxLQUFLamU7TUFFWix5Q0FDeUI7YUFDNUJxZSxXQUFXSixLQUFLamUsS0FBb0Isc0JBQXpCaWUsS0FBS2plLFFBQXNDO2FBRXREc2UsV0FBV0wsS0FBS2plO00vQnREckIsUStCc0RxQkEsZ0NBQUxpZSxrQkFBS2plO1FBSU4sSUFBTkMsSUFBTSx1QkFKQ2dlLEtBQUtqZTtRQUlOLDZCQUpDaWUsY0FJUGhlLGdCQUpZRDtpQkFNWDtpQkFDQSxvQ0FQTWllLEtBQUtqZTtNQUViLDBDQU1GO2FBRUR1ZSxZQUFZTixLQUFLamU7TUFHUix1Q0FIR2llLE1BQUtqZSxJQUd5Qjs7Ozs7T0FuQzFDZ2U7O09Bc0JBTTtPQVVBQztPQWpCQUo7T0FDQUM7T0FJQUM7O0lDaEJhO29CQVlSN2YsRUFBRXBDO01BQ1QsU0FET29DLEVBQ087TUFDZCxRQUZPQTtRQU1JLHVCQU5KQSxFQU1hLFdBTlhwQyxNQU1FLEtBTkpvQyxVQU1JOztjQUNWdEc7VUFDRTtvQkFERkEsS0FDbUIsV0FSWGtFLEVBT1JsRTtZQUNFLFNBREZBOzs7UUFHQSxPQUpJdUo7TUFKUyxrQ0FRVjtJQXRCVyx1QkF3QkQrYyxHQUFHQyxHQUFHaFM7TUFDVix1QkFESStSLFFBQ0osS0FESUEsV0FDSjs7WUFDVnpoQjtRQUNFO1VBQWlCLFFBRG5CQSxLQUNtQixlQUhGMGhCLEdBQUdoUztVQUdELFNBRG5CMVA7OztNQUdBLE9BSkkwRSxHQUlEO0lBN0JZLGdCQWlDUjlCO01BQ1AsSUFBSW5CLEVBREdtQixhQUNQLGFBQUluQixNQUF3QyxlQURyQ21CLElBQ0huQixFQUF3RDtJQWxDN0Msa0JBb0NOdVgsR0FBR0Q7TUFDWixJQUFJaFksR0FES2lZO01BQ1QsYUFBSWpZO2VBQ1csT0FGSGdZOztpQkFHZSxlQUhsQkMsS0FDTGpZO2lCQUdDLDBCQUpJaVksR0FBR0QsR0FJVTtJQXhDUCxlQTBDVG5XLEVBQUVLLElBQUlDO01oQzlFZixRZ0M4RVdELFlBQUlDLFdBQU5OLGVBQU1NLFdBQUpEO09BR0gsc0JBSENMLEVBQUVLLElBQUlDO01BRVAsaUNBQ29CO0lBN0NWLGdCQStDUk4sRUFBRUssSUFBSUMsSUFBSTNEO01oQ25GcEIsUWdDbUZZMEQsWUFBSUMsV0FBTk4sZUFBTU0sV0FBSkQ7T0FHSiwrQkFIRUwsRUFBRUssSUFBSUMsSUFBSTNEO01BRVosa0NBQ3VCO0lBbERiLGdCQW9EUnlaLEdBQUdnRCxLQUFLakQsR0FBR2tELEtBQUsvWTtNaEN4RjFCOzs7UWdDd0YwQkE7Ozs7UUFBYjhZOzs7VUFBSGhELGdCQUFnQjlWLFdBQWI4WTs7OztRQUFRQzs7O1VBQUhsRCxnQkFBUTdWLFdBQUwrWTtPQUliLCtCQUpFakQsR0FBR2dELEtBQUtqRCxHQUFHa0QsS0FBSy9ZO01BR2xCLGtDQUMrQjtJQXhEckIsZ0JBMERSN0QsRUFBRXVEO01BQ1QsU0FEU0EscUJBQ1Q7OztRQUE2QjtxQkFEdEJ2RCxFQUFFdUQsTUFDVHpIO1VBQTZCLFNBQTdCQTs7O2NBQW1EO0lBM0RwQyxpQkE2RFBrRSxFQUFFdUQsRUFBRXpCO01BQ1osR0FEVXlCLGlCQUFFekI7T0FFVjtNQUVBLFNBSlF5QixxQkFJUjs7O1FBQTZCO3FCQUp2QnZELEVBQUV1RCxNQUlSekgsR0FKVWdHLE1BSVZoRztVQUE2QixTQUE3QkE7OztjQUFxRTtJQWpFeEQsZUFtRVRrRSxFQUFFdUQ7TUFDUixJQUFJbkIsRUFESW1CO01BQ1IsU0FBSW5CLEVBQ1U7TUFEZCxJQUVVLGlCQUZOQSxFQUVlLFdBSGJwQyxFQUFFdUQsT0FHRSxLQUZObkIsVUFFTTs7WUFDUnRHO1FBQ0U7Z0JBREZBLEtBQ2lCLFdBTGJrRSxFQUFFdUQsTUFJTnpIO1VBQ0UsU0FERkE7OztNQUdBLE9BSklxRSxDQUtIO0lBM0VZLGdCQTZFUkgsRUFBRXVELEVBQUV6QjtNQUNYLE9BRFN5QixhQUNULEdBRFd6QjtNQUNYLEdBQUl3Z0IsT0FDQUMsR0FFRjtNQUNHLFNBSkRELEdBS2E7TUFMakIsSUFNWSxpQkFOUkEsR0FNa0IsV0FQZnRpQixFQUFFdUQsS0FBRXpCLE9BT0MsS0FOUndnQixXQU1ROztZQUNSeG1CO1FBQ0U7Z0JBREZBLEtBQ2lCLFdBVGRrRSxFQUFFdUQsTUFRTHpILEdBUk9nRyxNQVFQaEc7VUFDRSxTQURGQTs7O01BR0EsT0FKSXFFLENBTUw7SUExRlksaUJBNEZQSCxFQUFFdUQ7TUFDVixTQURVQSxxQkFDVjs7O1FBQTZCO3FCQURyQnZELEVBQ1JsRSxFQURVeUgsTUFDVnpIO1VBQTZCLFNBQTdCQTs7O2NBQXNEO0lBN0Z2QyxnQkErRlJrRSxFQUFFdUQ7TUFDVCxJQUFJbkIsRUFES21CO01BQ1QsU0FBSW5CLEVBQ1U7TUFEZCxJQUVVLGlCQUZOQSxFQUVlLFdBSFpwQyxJQUFFdUQsT0FHQyxLQUZObkIsVUFFTTs7WUFDUnRHO1FBQ0U7Z0JBREZBLEtBQ2lCLFdBTFprRSxFQUlMbEUsRUFKT3lILE1BSVB6SDtVQUNFLFNBREZBOzs7TUFHQSxPQUpJcUUsQ0FLSDtJQXZHWSxtQkF5R0xvRDtNQUNWLFFBRFVBLHFCQUNLekgsTUFBRXVKO01BQ2Y7Z0JBRGF2SjtVQUMwQixhQUYvQnlILE1BQ0t6SCxHQUFFdUosS0FDd0IsSUFEMUJ2SixnQkFBRXVKO1FBQ0QsT0FEQ0EsSUFFTztJQTVHVCxTQStHVG9kOzs7O1VBRUk7Ozs7bUJBQUxDOztRQURHO0lBaEhPLGlCQXFIYnRnQjtNQUZVLEdBRVZBO1FBQ2tDO1NBRDlCSyxHQUFKTDs7U0FDa0MsaUJBQWpCLGNBRGpCQTs7ZUFBSUs7OztnQkFJTXFZLGNBQUo2SDtZQUFVLFdBQVZBO1lBQVUsOEJBQU43SDs7VUFERSxPQUZOdlg7TUFGQSxVQU1LO0lBMUhFLHFCQTRISHZELEVBQUVXLEVBQUU0QztNQUNoQixTQURjNUMsR0FDZCxLQURnQjRDLHFCQUNoQjs7WUFDQXpIO1FBQ0U7VUFBSyxrQkFIS2tFLEVBQ1JHLEtBRFlvRCxNQUVoQnpIO1VBQ08sU0FEUEE7OztNQUdBLE9BSklxRSxJQUlGO0lBaklhLHlCQW1JQ0gsRUFBRW9PLElBQUl3VTtNQUN0QixJQUFJL2UsSUFEa0IrZTtNQUN0QixTQUFJL2UsSUFDWSxVQUZFdUs7TUFDbEI7T0FFaUIsaUJBSERwTyxFQUFFb08sSUFBSXdVO09BR0w7O09BQ0ksNEJBSGpCL2UsSUFFT2dmO09BQ1UsU0FEZnhVO09BQ2UsS0FIakJ4SztPQUdpQjs7WUFFbkIvSDtRQUNFO1VBQWdCOzhCQVBKa0UsRUFLVnNPLFNBTGdCc1UsZ0JBTXBCOW1CO1dBQ2tCOztxQkFBWmtuQjtVQUVKLGlCQUhGbG5CLEtBQ1lpbkI7VUFBTSxTQURsQmpuQjs7O01BS0EsVUFOSXdTLFNBREF3VSxhQVFIO0lBL0lZLHNCQWlKRjlpQixFQUFFdUQsRUFBRTVDO01BQ2pCLFNBRGlCQSxHQUNqQixLQURlNEM7TUFDZjtZQUNBekg7UUFDRTtVQUFLLGtCQUhNa0UsRUFBRXVELE1BRWZ6SCxHQURJcUU7VUFFRyxTQURQckU7OztNQUdBLE9BSklxRSxJQUlGO0lBdEphLGtCQXdKTmlQLEVBQUU3TDtNQUNYLE1BRFdBLGFBRUV6SDtNQUNYO1dBRFdBLE1BRFR3RSxFQUVZO1FBQ04sY0FKRDhPLEVBQUU3TCxNQUVFekgsSUFFcUI7UUFDM0IsUUFITUE7aUJBSVA7SUE5SlMsbUJBZ0tMc1QsRUFBRTdMO01BQ1osTUFEWUEsYUFFQ3pIO01BQ1g7V0FEV0EsTUFEVHdFLEVBRVk7UUFDTixjQUpBOE8sRUFBRTdMLE1BRUN6SCxLQUVxQixRQUZyQkE7UUFHTixTQUNEO0lBdEtTLG9CQXdLSnNULEVBQUUxTixHQUFHQztNQUNoQixPQURhRCxjQUNiLEdBRGdCQztNQUNoQixHQUFJZ1osT0FDQUMsR0FDYTtNQUZqQixJQUdrQjllO01BQ2hCO1dBRGdCQSxNQUhkNmUsR0FJYTtRQUNQLGNBTkN2TCxFQUFFMU4sT0FJSzVGLEdBSkY2RixPQUlFN0Y7VUFFbUMsUUFGbkNBO1FBR1gsU0FDRDtJQWhMUyxtQkFrTExzVCxFQUFFMU4sR0FBR0M7TUFDZixPQURZRCxjQUNaLEdBRGVDO01BQ2YsR0FBSWdaLE9BQ0FDLEdBQ2E7TUFGakIsSUFHa0I5ZTtNQUNoQjtXQURnQkEsTUFIZDZlLEdBSWE7UUFDUCxjQU5BdkwsRUFBRTFOLE9BSU01RixHQUpINkYsT0FJRzdGLElBRW1DO1FBQzlDLFFBSFdBO2lCQUlaO0lBMUxTLGVBNExUNkUsRUFBRTRDO01BQ1IsTUFEUUEsYUFFS3pIO01BQ1g7V0FEV0EsTUFEVHdFLEVBRVk7UUFDa0Isc0JBSjFCaUQsTUFFS3pILEdBRlA2RSxHQUl3QztRQUN2QyxRQUhNN0U7aUJBSVA7SUFsTVMsZ0JBb01SNkUsRUFBRTRDO01BQ1QsTUFEU0EsYUFFSXpIO01BQ1g7V0FEV0EsTUFEVHdFLEVBRVk7UUFDRCxHQUpSSyxNQUFFNEMsTUFFSXpILEdBRXdCO1FBQzlCLFFBSE1BO2lCQUlQO0lBMU1TLG9CQTRNSnNULEVBQUU3TDtNQUNiLE1BRGFBLGFBRUF6SDtNQUNYO1dBRFdBLE1BRFR3RSxFQUVZO1FBRUosSUFBSkssRUFMSzRDLE1BRUF6SDtRQUlOLGNBTklzVCxFQUtIek8sR0FDUSxVQURSQTtRQUFJLElBRUgsSUFMSTdFO2lCQU9QO0lBck5TLG9CQXVOSmtFLEVBQUV1RDtNQUNiLE1BRGFBLGFBRUF6SDtNQUNYO1dBRFdBLE1BRFR3RSxFQUVZO1FBRU4sSUFFSkgsRUFGSSxXQUxDSCxFQUFFdUQsTUFFQXpIO1FBR0gsR0FFSnFFLEVBQWUsT0FBZkE7UUFGSSxJQUNJLElBSkRyRTtpQkFPUDtJQWhPUyxpQkFrT1A2RTtNQUNMLGNBREtBLE9BQ1M7TUFDWjthQUZHQTtPQUVIOztTQUZHQTtPQUtFLGlCQURKTCxFQURBMmlCO09BR0ksaUJBRkozaUIsRUFESW1lO09BR0EsS0FGSm5lO09BRUk7O1lBQ1J4RTtRQUNFO3NCQVJJNkUsTUFPTjdFLEdBQ0U7VUFDQSxNQUZGQSxLQUNNcW5CO1VBRUosTUFIRnJuQixLQUNVb25CO1VBQVIsU0FERnBuQjs7O01BS0EsVUFQSXlILEVBQ0F6QixFQU9IO0lBL09ZLG1CQWlQTHlCLEVBQUV6QjtNQUNaLE9BRFV5QixhQUNWLEdBRFl6QjtNQUNaLEdBQUlzaEIsT0FDQUMsR0FDYTtNQUEyQixTQUZ4Q0QsR0FHVztNQUhmLElBS1UsaUJBTE5BLE1BRE03ZixLQUFFekIsT0FNRixLQUxOc2hCLFdBS007O1lBQ1J0bkI7UUFDRTtVQUFnQixNQURsQkEsUUFQUXlILE1BT1J6SCxHQVBVZ0csTUFPVmhHO1VBQ2tCLFNBRGxCQTs7O01BR0EsT0FKSTZFLENBS0g7SUE1UFk7a0JBK1BSdVAsSUFBSTNNO01BQ1gsU0FBSStmLE9BQU9saEIsRUFBRXRHO1FBQ1gsVUFEV0EsNEJBQ1gsS0FBSXluQjtRQUFKLElBQUlBLGVBREtuaEI7VUFHUyxTQUZkbWhCLFlBR2lCLHNCQUxaaGdCO1VBS0osY0FMQTJNLElBS0ksaUJBTEEzTSxFQUVMZ2dCO1dBRzBDLE9BSDFDQTtVQUVjO1dBRWhCLEtBSkVBO1dBSWdCLHNCQU5YaGdCO1dBTVcsS0FIaEI1QztVQUdDLGNBTkF1UCxJQU1JLGlCQU5BM007V0FNb0MsT0FKekNnZ0I7VUFLRixPQUpFNWlCO1FBTUYsSUFQRTRpQixlQURLbmhCO1VBUXlCLFNBUDlCbWhCLFlBTzhCLHNCQVR6QmhnQjtVQVNTLHNCQVRiMk0sSUFTaUIsaUJBVGIzTSxFQUVMZ2dCO1dBUUcsT0FSSEE7UUFTRyxHQVRIQSxNQURLbmhCLEVBVWMsT0FUbkJtaEI7UUFTNEIsZ0JBVnJCem5CLEVBVXFDO01BVmxELFNBWVEwbkIsWUFBWXBoQixFQUFFdEcsRUFBRWtOO1FoQ2hUM0IsSWdDZ1R5QjNHO1FBQ3BCO1VBQVEsSUFBSitOLEVBQUksT0FEVWhPLEVBQUVDO1VBRWpCLGtCQWZFNk4sSUFlRSxpQkFmRTNNLEVBY0w2TSxVQURrQnBIO1lBR1osMEJBaEJEekYsRUFjTDZNO1lBRUYsaUJBaEJPN00sRUFhV2xCO1lBR1YsSUFIVUEsSUFDaEIrTjs7VUFJSyxpQkFsQkE3TSxFQWFXbEIsZ0JBQUUyRztVQUtiLFNBRUw7TUFuQk4sU0FxQkl5YSxRQUFRcmhCLEVBQUV0RyxFQUFFa047UUFBSTtVQUFJLHFCQUFaNUcsRUFBRXRHLEVBQUVrTjs7OztZQUEyQyxJQUFMM0csV0FBSyxpQkF0QmhEa0IsRUFzQjJDbEIsZ0JBQXRDMkcsRUFBMkM7b0JBQVM7TUFyQnBFLFNBc0JRMGEsV0FBV3RoQixFQUFFdEc7UWhDMVR4QixJZ0MwVHdCdUc7UUFDbkI7VUFBUSxlQURTRCxFQUFFQyxLQUVYLHNCQXpCQ2tCLEVBdUJVbWE7VUFFbkIsaUJBekJTbmEsRUF1QlVsQjtVQUNYLElBRFdBO21CQUdMO01BekJoQixTQTJCSXNoQixPQUFPdmhCLEVBQUV0RztRQUFJO1VBQUksb0JBQVZzRyxFQUFFdEc7OztnQ0FBd0MsSUFBTHVHLFdBQUssT0FBTEE7b0JBQU07TUEzQnRELE1BRFdrQixhQUNYLE9Bc0NJbkI7TUF0Q0o7WUF1Q0ErZDtRQUFvQztrQkFEaEMvZCxFQUNKK2QsSUFBZ0QsaUJBeENyQzVjLEVBd0NYNGM7VUFBb0MsU0FBcENBOzs7TUF2Q0EsU0FzQ0kvZDtNQUVKOzs7UUFDRTtVQUFRO2dDQTFDQ21CLEVBeUNYbEI7V0FFVSxzQkEzQ0NrQjtVQTJDVCxpQkEzQ1NBLEVBeUNYbEI7VUFDVSxJQUVFLFdBSFpBLE9BWmtCdkc7VUFDaEI7Z0JBQUkrbkIsUUFEWS9uQjtZQUNoQixHQURnQkEsTUFDWituQjtZQUVEOzhCQWhDRTNULElBZ0NFLGlCQWhDRTNNLEVBOEJMc2dCLG9CQURjRDthQU1ULGlCQW5DQXJnQixFQTZCT3pILFlBQUU4bkI7O2NBSVIsMEJBakNEcmdCLEVBOEJMc2dCO2NBR0YsaUJBakNPdGdCLEVBNkJPekg7Y0FJZCxPQUhFK25CLFlBRFkvbkIsRUFDWituQjtjQUl5QyxpQkFsQ3BDdGdCLFVBNkJTcWdCO1lBQ2xCLFNBV0Z2aEI7Ozs7TUF4Q0EsYUFzQ0lEO01BT0o7UUFBdUIsdUJBOUNabUIsUUE4Q2lDLHNCQTlDakNBO1FBOEN5QixpQkE5Q3pCQTtRQThDNEMsaUJBOUM1Q0EsVUE4Q1F5RjtRQUFJOzs7aUJBQTBDO0lBN1NsRCxxQkFpVERrSCxJQUFJM007TUFDbEIsU0FBSXVnQixNQUFNQyxRQUFRQyxRQUFRQyxLQUFLQyxRQUFRQyxRQUFRcEgsSUFBSXFIO1FBQ2pEO2VBRFFMLFVBQVFDO1NBQ2hCLE1BRDZCRSxVQUFRQztTQWtCRyxzQkFsQmhCRixLQUFLQztTQWtCYixzQkFuQkEzZ0IsRUFDUndnQjtTQUVLVSxHQUZMVjtTQUVRdmlCO1NBQUdrakIsR0FGVVI7U0FFUHppQjtTQUFHMlcsRUFGd0JnTTtRQUcvQztVQUFHLGtCQUpPbFUsSUFHSTFPLEdBQU1DO1lBU2xCLGlCQVh5Q3NiLElBRXBCM0UsWUFBSDNXO1lBU2xCLElBQ0lrakIsS0FWV0Q7WUFTZixHQUNJQyxPQVgwQkw7Y0FhNUI7bUJBWm1CbE07ZUFZTCxzQkFkSTZMLEtBWWhCVTtlQVZXRCxHQVVYQztlQVZjbGpCO2VBQUcyVzs7WUFjbkIsY0FqQlU3VSxFQUdIa2hCLEdBRmdDMUgsSUFFcEIzRSxVQURyQmlNLFFBQ1NJO1VBRVQsaUJBSnlDMUgsSUFFcEIzRSxZQUFUNVc7VUFFWixJQUNJc2pCLEtBSEtMO1VBRVQsR0FDSUssT0FKSlQ7WUFNRTtpQkFMbUJqTTthQUtYLHNCQVJFN1UsRUFNUnVoQjthQUhLTCxHQUdMSzthQUhRdGpCO2FBQVM0Vzs7VUFPbkIsY0FUa0I2TCxLQUVMUyxHQUYwQjNILElBRXBCM0UsVUFEU2tNLFFBQ2ZJLFFBZ0IrQztNQWxCcEUsU0FvQklPLFFBQVFDLE9BQU9uSSxJQUFJcUgsT0FBT3ZnQjtRQUM1QixTQUQ0QkEsWUFDNUI7Ozs7VUFDRTs7a0JBRlFxaEIsU0FDVnBwQjthQUNVLG1CQXZCTXlIO2FBdUJOLE1BRlc2Z0IsU0FDckJ0b0I7O2lCQURxQnNvQixVQUdmaFU7O2dCQUNtQixrQkF6QmJGLElBeUJpQixpQkFKWjZNLG9CQUVYL1Q7a0JBR0Y7d0JBRkVvSDttQkFFZSxzQkFMSjJNO21CQUtJLEtBRmYzTTtrQkFFRixpQkFMYTJNO2tCQUtiOztjQUdGLFNBTEkzTTtjQUtKLGlCQVJlMk0sc0JBRVgvVDtjQU1KLFNBUEZsTjs7OztnQkFRSTtNQTdCTixTQStCUXFwQixPQUFPRCxPQUFPbkksSUFBSXFILE9BQU92Z0I7UUFDL0IsR0FEK0JBLFNBQ1QsZUFEVHFoQixPQUFPbkksSUFBSXFILE9BQU92Z0I7UUFDMEIsT0FEMUJBLFlBQzBCLEdBRDFCQSxNQUV6Qm5DO1FBRUosT0FKV3dqQixTQUVQeGpCLE9BRmNxYixJQUFJcUgsU0FFbEIxaUIsT0FDQUM7UUFFSixPQUxXdWpCLE9BaENHM2hCLEVBZ0NIMmhCLFNBR1B2akIsT0FEQUQ7UUFHSixhQUxXd2pCLFNBR1B2akIsT0FEQUQsR0FGY3FiLElBQUlxSCxTQUVsQjFpQixPQUNBQyxHQUhjb2IsSUFBSXFILE9BT3JCO01BdENMLElBd0NJaGlCLEVBekNjbUI7TUFDbEIsR0F3Q0luQixPQUNnQixpQkExQ0ZtQixJQXlDZG5CO01BeENKO09BeUN5QyxHQURyQ0E7T0FDcUMsR0FEckNBLElBRUVWO09BRUksaUJBREpDLEdBQ1ksaUJBN0NBNEI7TUE4Q2hCLE9BSEk3QixHQUVBb0wsSUFEQW5MO01BR0osU0EvQ2dCNEIsRUE0Q1o1QixHQURBRDtNQUlKLGFBSElDLEdBREFELEdBRUFvTCxJQURBbkwsR0E1Q1k0QixJQWlEZjtJQWxXWSxrQkF5V05BO01BQ1QsU0FBUWdZLElBQUl6ZjtRQUNWLEdBRFVBLElBREh5SDtVQUlHLE1BSkhBLE1BQ0d6SCxHQUdBLEtBSEFBO1VBSUssVUFEVDZFLGlCaENqWlgsT2dDOFlXNGE7UUFLRCxRQUFPO01BTGQ7NEJoQzlZSCxPZ0M4WVdBLGVBT0g7SUFqWFUsbUJBbVhMaFk7TUFDVixTQUFRZ1ksSUFBSXpmO1FBQ1YsR0FEVUEsSUFERnlIO1VBSUUsTUFKRkEsTUFDRXpILEdBR0EsS0FIQUE7VUFJUyxhQUpUQSxFQUdKNkUsa0JoQzNaWCxPZ0N3Wlc0YTtRQUtELFFBQU87TUFMZDs0QmhDeFpILE9nQ3daV0EsZUFPSDtJQTNYVSxrQkF3WU40RTtNQUNULFdBQVEscUJBQW1CL1IsSUFBSXpOLEdBQUssVUFBTEEsRUFBSnlOLElBQWUsT0FEakMrUjtNQVhPLEdBRWQvZDtRQUNZO1NBRFJLLEdBQUpMOztTQUNZLGtCQURaQTtTQUVVLGlCQURKeUIsSUFETm5CO1NBRVUsSUFESm1COztlQURGcEI7OztnQkFLTXFZLGNBQUo2SDtZQUFVLFdBQVZBO1lBQVUsOEJBQU43SDs7VUFERSxPQUZOdlg7TUFIQSxVQVlLO0lBMVlFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FwQlJiNmhCLFVBQ0FDLFNBQ0FDO2FBSUFDLFVBQVc1a0IsR0FBWSxPQUFaQSxlQUF1QjthQUNsQzZrQixZQUFhN2tCLEdBQVksWUFBWkEsV0FBd0I7YUFDckM4a0IsT0FBUTlrQixHQUFZLE9BQVpBLFVBQWtCO1FBRTFCK2tCO2FBeUVBQyxXQUFXaGxCO01BQVEsU0FBUkEsS0FBUSx5QkFBUkE7TUFBUSxZQTdFbkI0a0IsVUE2RVc1a0IsT0FBOEI7YUFLekNpbEIsT0FBS2psQixHQUFJLDRCQUFKQSxFQXJGTEssU0FxRjhCO2FBQzlCNmtCLE9BQUtsbEIsR0FBSSw0QkFBSkEsRUFyRkxNLGFBcUZrQzthQWNsQzZrQixTQUFNbmxCLEVBQUVDLEdBQUksZ0NBQU5ELEVBQUVDLE1BQW1CO2FBRWxCbWxCLE1BQUtwbEIsRUFBV0M7TUFDM0IsTUFEZ0JELElBQVdDOztRQUNLLEdBQWhCLG1CQURXQSxRQUNLLG1CQURoQkQ7b0JBR1IsT0FIUUEsU0FBV0M7TUFFdEIsT0FGc0JBLFNBQVhELENBR2M7YUFFbkJxbEIsTUFBS3JsQixFQUFXQztNQUMzQixNQURnQkQsSUFBV0M7O1FBQ0ssR0FBaEIsbUJBRFdBLFFBQ0ssbUJBRGhCRDtvQkFHUixPQUhtQkMsU0FBWEQ7TUFFWCxPQUZXQSxTQUFXQyxDQUdHO2FBRW5CcWxCLFFBQVN0bEIsRUFBV0M7TUFDaEIsR0FES0QsVUFBV0M7UUFFMUIsTUFGZUQsSUFBV0M7O1VBRU0sR0FBaEIsbUJBRlVBLFFBRU0sbUJBRmpCRDtzQkFFOEMsVUFGbkNDLEVBQVhEO1FBRWtDLFVBRmxDQSxFQUFXQztNQUNGLFVBL0czQk0sUUFnSHNFO2FBRTdEZ2xCLFFBQVN2bEIsRUFBV0M7TUFDL0IsTUFEb0JELElBQVdDOztRQUNDLEdBQWhCLG1CQURlQSxRQUNDLG1CQURaRDtvQkFHWixPQUh1QkMsT0FBWEQsRUFBV0M7TUFFMUIsT0FGZUQsT0FBV0MsRUFBWEQsQ0FHVTthQUVuQndsQixRQUFTeGxCLEVBQVdDO01BQy9CLE1BRG9CRCxJQUFXQzs7UUFDQyxHQUFoQixtQkFEZUEsUUFDQyxtQkFEWkQ7b0JBR1osT0FIWUEsT0FBV0MsRUFBWEQ7TUFFZixPQUYwQkMsT0FBWEQsRUFBV0MsQ0FHRDthQUVuQndsQixZQUFhemxCLEVBQVdDO01BQ2hDLEdBRHFCRCxPQUNQLFVBRGtCQztNQUUzQixHQUYyQkEsT0FFYixVQUZFRDtNQUduQixNQUhtQkEsSUFBV0M7O1FBR0UsR0FBaEIsbUJBSGNBLFFBR0UsbUJBSGJEO29CQUd5QyxVQUg5QkMsRUFBWEQ7TUFHOEIsVUFIOUJBLEVBQVdDLEVBR21DO2FBSXBFeWxCLE9BQUsxbEIsR0FBSSwwQkFBSkEsRUFBZ0M7YUFhbkMybEIsWUFBWS9pQixFQUFFSyxJQUFJQyxJQUFJM0Q7TUFDeEIsVUFEZ0IwRCxNQUFJQztNQUNwQixhQURnQkQ7WUFDaEI5SCxFQURnQjhIO1FBQ2dCO2dCQUFoQzlILEtBRHdCb0U7VUFDUSxTQUFoQ3BFOzs7TUFkUyxRQWM0QzthQUtuRHlxQixNQUFNaGpCLEVBQUVLLElBQUlDLElBQUlnSTtNQUNsQixTQURVakk7TUFDVjs7O2lCQURjQzs7Ozs7Z0JBQUpELE1BQUlDO3dCQUFOTixnQkFBRUssTUFBSUM7TUFFWix3QkFGZ0JnSSxTQUVEO2FBRWYyYSxPQUFLbG1CLEVBQUVKO01BQ0ksSUFBVHdNLE9BQVMsdUJBRE5wTTtNQUVQLFlBRElvTSxTQURHcE0sRUFBRUo7TUFFVCxPQURJd00sTUFFRTthQUVKK1osT0FBS3JrQixFQUFFcEM7TUFDVCxRQURPb0M7UUFHSywrQkFITEEsR0FHSyxLQUhMQSxVQUdLOztjQUNWdEc7VUFDRTtvQkFERkEsS0FDbUIsV0FMWmtFLEVBSVBsRTtZQUNFLFNBREZBOzs7UUFHQSxPQUpJdUo7TUFGUSx3Q0FNVDthQUVIcWhCLFNBQU8vTSxHQUFHRDtNQUNaO1VBRFNDO09BQ1QsR0FEWUQ7T0FHQyw4QkFGVGhZLEtBQ0FDO01BRUoscUJBSlNnWSxLQUdMak4sU0FGQWhMO01BSUoscUJBTFlnWSxLQUdSaE4sT0FGQWhMLEdBQ0FDO01BR0osT0FGSStLLE1BR0U7YUFVSmlhLFNBQU92a0I7Ozs7VUFOVDtXQUlRSztXQUFOQztXQUxXL0IsRUFLWCtCO1dBSkYsYUFEYS9CLElBQ1M7O2lCQUlkOEI7O1FBSVIsdUNBQ2FzVyxJQUhKM1csRUFHTXRHO1FBQ2I7YUFEV2lkO2dCQUdIK0IsS0FIRy9CLE9BR1Q0SixLQUhTNUosT0FJTDZOLEtBREpqRTtZQUVBLHFCQUZBQSxPQUpBalcsT0FDVzVRLEVBSVA4cUI7WUFDSixRQUxXOXFCLElBSVA4cUIsU0FKSzdOLElBR0grQixLQUhLaGY7O1VBRUwsR0FGS0EsaUJBRFg0UTt3Q0FVRTthQUVKbWEsTUFBSXRqQixFQUFFSyxJQUFJQztNQUNaLE1BRE1OLEVBQUVLLElBQUlDO01BRUMsSUFBVDZJLE9BQVMsdUJBRkQ3STtNQUdaLHFCQUhNTixFQUFFSyxJQUVKOEksU0FGUTdJO01BR1osT0FESTZJLE1BRUU7YUFFSm9hLE9BQUt2akI7TUFDUCxNQURPQSxhQUVQLDhCQURJbkI7TUFFSixxQkFIT21CLElBRUhtSixTQURBdEs7TUFFSixPQURJc0ssTUFFRTthQUVKcWEsT0FBS3hqQixFQUFFSyxJQUFJQyxJQUFJM0Q7TUFDakIsTUFET3FELEVBQUVLLElBQUlDLDBCQUNiLG1CQURPTixFQUFFSyxJQUFJQyxJQUFJM0QsRUFFTTthQUVyQjhtQixPQUFLQyxJQUFJQyxLQUFLbkssSUFBSW9LLEtBQUt0akI7TUFDekIsTUFET29qQixJQUFJQyxLQUFjcmpCO01BRXpCLE1BRmdCa1osSUFBSW9LLEtBQUt0akI7TUFHekIsNEJBSE9vakIsSUFBSUMsS0FBS25LLElBQUlvSyxLQUFLdGpCLElBR1E7YUFFL0J1akIsVUFBUTdqQjtNQUNZLGNBRFpBLDRCWjVQZixPWTRQZUEsYUFDeUI7YUFFakM4akIsVUFFYWpsQjtNQURvQixrQ0FBZixTQUNMQSxJQUFGdEcsSUFBRWlkO01BQ2I7V0FEYUE7Y0FHTmpNLEVBSE1pTSxPQUdYdU8sRUFIV3ZPO1VBR0QsV0FIRGpkLEtBR1R3ckI7VUFBVSxRQUhEeHJCLGdCQUFFaWQsSUFHTmpNOztRQURDLE9BSE5KLE9BTUk7YUFHTjZhLE9BQUt2bkIsRUFBRXVEO01BQ1QsU0FEU0EscUJBQ1Q7OztRQUE2QjtxQkFEdEJ2RCxFQUFFdUQsTUFDVHpIO1VBQTZCLFNBQTdCQTs7O2NBQW9EO2FBR2xEMHJCLFFBQU14bkIsRUFBRXVELEVBQUV6QjtNQUNaLEdBRFV5QixpQkFBRXpCO09BRVY7TUFFQSxTQUpReUIscUJBSVI7OztRQUE2QjtxQkFKdkJ2RCxFQUFFdUQsTUFJUnpILEdBSlVnRyxNQUlWaEc7VUFBNkIsU0FBN0JBOzs7Y0FBcUU7YUFFckUyckIsTUFBSXpuQixFQUFFdUQ7TUFDUixNQURRQSxhQUVSLHlCQURJbkIsR0FDSixLQURJQSxVQUNKOztZQUNBdEc7UUFDRTtnQkFERkEsS0FDaUIsV0FKWGtFLEVBQUV1RCxNQUdSekg7VUFDRSxTQURGQTs7O01BR0EsT0FKSXFFLENBSUg7YUFFQ3VuQixPQUFLMW5CLEVBQUV1RCxFQUFFekI7TUFDWCxPQURTeUIsYUFDVCxHQURXekI7TUFDWCxHQUFJd2dCLE9BQ0FDLEdBRUY7TUFIRixJQUtVLHlCQUxORCxJQUtNLEtBTE5BLFdBS007O1lBQ1J4bUI7UUFDRTtnQkFERkEsS0FDaUIsV0FSWmtFLEVBQUV1RCxNQU9QekgsR0FQU2dHLE1BT1RoRztVQUNFLFNBREZBOzs7TUFHQSxPQUpJcUUsQ0FLSDthQUdEd25CLFFBQU0zbkIsRUFBRXVEO01BQ1YsU0FEVUEscUJBQ1Y7OztRQUE2QjtxQkFEckJ2RCxFQUNSbEUsRUFEVXlILE1BQ1Z6SDtVQUE2QixTQUE3QkE7OztjQUFzRDthQUVwRDhyQixPQUFLNW5CLEVBQUV1RDtNQUNULE1BRFNBLGFBRVQseUJBREluQixHQUNKLEtBRElBLFVBQ0o7O1lBQ0F0RztRQUNFO2dCQURGQSxLQUNpQixXQUpWa0UsRUFHUGxFLEVBSFN5SCxNQUdUekg7VUFDRSxTQURGQTs7O01BR0EsT0FKSXFFLENBSUg7YUFHQzBuQixZQUFVN25CLEVBQUVXLEVBQUU0QztNQUNoQixTQURjNUMsR0FDZCxLQURnQjRDLHFCQUNoQjs7WUFDQXpIO1FBQ0U7VUFBSyxrQkFIS2tFLEVBQ1JHLEtBRFlvRCxNQUVoQnpIO1VBQ08sU0FEUEE7OztNQUdBLE9BSklxRSxJQUlGO2FBR0EybkIsYUFBVzluQixFQUFFdUQsRUFBRTVDO01BQ2pCLFNBRGlCQSxHQUNqQixLQURlNEM7TUFDZjtZQUNBekg7UUFDRTtVQUFLLGtCQUhNa0UsRUFBRXVELE1BRWZ6SCxHQURJcUU7VUFFRyxTQURQckU7OztNQUdBLE9BSklxRSxJQUlGO2FBR0E0bkIsU0FBTzNZLEVBQUU3TDtNQUNYLE1BRFdBLGFBRUV6SDtNQUNYO1dBRFdBLE1BRFR3RSxFQUVZO1FBQ04sY0FKRDhPLEVBQUU3TCxNQUVFekgsSUFFcUI7UUFDM0IsUUFITUE7aUJBSVA7YUFHSmtzQixVQUFRNVksRUFBRTdMO01BQ1osTUFEWUEsYUFFQ3pIO01BQ1g7V0FEV0EsTUFEVHdFLEVBRVk7UUFDTixjQUpBOE8sRUFBRTdMLE1BRUN6SCxLQUVxQixRQUZyQkE7UUFHTixTQUNEO2FBR0ptc0IsTUFBSXRuQixFQUFFNEM7TUFDUixNQURRQSxhQUVLekg7TUFDWDtXQURXQSxNQURUd0UsRUFFWTtRQUNFLDRCQUpWaUQsTUFFS3pILEdBRlA2RSxHQUl3QztRQUN2QyxRQUhNN0U7aUJBS1A7YUFHSm9zQixTQUFTdm5CLEVBQUU0QztNQUNiLE1BRGFBLGFBRUF6SDtNQUNYO1dBRFdBLE1BRFR3RSxFQUVZO1FBQ0YsR0FKSEssS0FBRTRDLE1BRUF6SCxHQUV1QjtRQUM3QixRQUhNQTtpQkFLUDs7YUFJSnFzQixPQUFLalksSUFBSTNNO01BQ1gsU0FBSStmLE9BQU9saEIsRUFBRXRHO1FBQ1gsVUFEV0EsNEJBQ1gsS0FBSXluQjtRQUFKLElBQUlBLGVBREtuaEI7VUFJSjs7Y0FMQThOLElBS0ksZUFMQTNNLEVBRUxnZ0IsS0FHaUIsZUFMWmhnQixFQUVMZ2dCOzs7V0FHMEMsT0FIMUNBO1VBSUM7O2NBTkFyVCxJQU1JLGVBTkEzTSxFQUdMNUMsTUFHZ0IsZUFOWDRDLEVBRUxnZ0I7OztXQUl5QyxPQUp6Q0E7VUFLRixPQUpFNWlCO1FBTWM7V0FQZDRpQjs7VUFES25oQjs7Ozs7V0FRUyxXQVRiOE4sSUFTaUIsZUFUYjNNLEVBRUxnZ0IsS0FPOEIsZUFUekJoZ0IsRUFFTGdnQjtTQVFHLE9BUkhBO1FBU0csR0FUSEEsTUFES25oQixFQVVjLE9BVG5CbWhCO1FBUzRCLGtCQVZyQnpuQixFQVVxQztNQVZsRCxTQVlRMG5CLFlBQVlwaEIsRUFBRXRHLEVBQUVrTjtRWnpYN0IsSVl5WDJCM0c7UUFDcEI7VUFBUSxJQUFKK04sRUFBSSxPQURVaE8sRUFBRUM7VUFFakIsa0JBZkU2TixJQWVFLGVBZkUzTSxFQWNMNk0sR0FEa0JwSDtZQUdwQixlQWhCT3pGLEVBYVdsQixJQUdWLGVBaEJEa0IsRUFjTDZNLFFBRGdCL04sSUFDaEIrTjtVQUlLLHNCQWxCQTdNLEVBYVdsQixJQUFFMkcsR0FPbEI7TUFuQk4sU0FxQkl5YSxRQUFRcmhCLEVBQUV0RyxFQUFFa047UUFBSTtVQUFJLHFCQUFaNUcsRUFBRXRHLEVBQUVrTjs7OztZQUEyQyxJQUFMM0csV0FBSyxzQkF0QmhEa0IsRUFzQjJDbEIsSUFBdEMyRztvQkFBb0Q7TUFyQnBFLFNBc0JRMGEsV0FBV3RoQixFQUFFdEc7UVpuWTFCLElZbVkwQnVHO1FBQ25CO1VBQVEsSUFEV3FiLElBQ1gsT0FEU3RiLEVBQUVDO1VBRW5CLGVBekJTa0IsRUF1QlVsQixJQUVYLGVBekJDa0IsRUF1QlVtYTtVQUNYLElBRFdyYjttQkFHTDtNQXpCaEIsU0EyQklzaEIsT0FBT3ZoQixFQUFFdEc7UUFBSTtVQUFJLG9CQUFWc0csRUFBRXRHOzs7a0NBQXdDLElBQUx1RyxXQUFLLE9BQUxBO29CQUFNO01BM0J0RCxNQURXa0IsYUFDWCxPQXNDSW5CO01BdENKO1lBdUNBK2Q7UUFBb0M7a0JBRGhDL2QsRUFDSitkLElBQWdELGVBeENyQzVjLEVBd0NYNGM7VUFBb0MsU0FBcENBOzs7TUF2Q0EsU0FzQ0kvZDtNQUVKOzs7UUFDRTtVQUFRLElBYlV3aEIsSUFhVixlQTFDQ3JnQixFQXlDWGxCO1VBRUUsZUEzQ1NrQixFQXlDWGxCLElBRVUsZUEzQ0NrQjtVQTBDRCxJQUVFLFdBSFpsQixPQVprQnZHO1VBQ2hCO2dCQUFJK25CLFFBRFkvbkI7WUFDaEIsR0FEZ0JBLE1BQ1orbkI7WUFFRCxtQkFoQ0UzVCxJQWdDRSxlQWhDRTNNLEVBOEJMc2dCLFFBRGNEO2FBTVQsZUFuQ0FyZ0IsRUE2Qk96SCxFQUFFOG5COztjQUloQixlQWpDT3JnQixFQTZCT3pILEVBSU4sZUFqQ0R5SCxFQThCTHNnQjtjQUdGLE9BSEVBLFlBRFkvbkIsRUFDWituQjtjQUl5QyxlQWxDcEN0Z0IsSUE2QlNxZ0I7WUFDbEIsU0FXRnZoQjs7OztNQXhDQSxhQXNDSUQ7TUFPSjtRQUF1QixJQUFKNEcsRUFBSSxlQTlDWnpGO1FBOEN5QixlQTlDekJBLElBOENpQyxlQTlDakNBO1FBOENZLFNBQWdDLGVBOUM1Q0EsSUE4Q1F5Rjs7O01BdERqQixXQXNEK0Q7YUFJL0RvZixZQUFZbFksSUFBSTNNO01BQ2xCLFNBQUl1Z0IsTUFBTUMsUUFBUUMsUUFBUUMsS0FBS0MsUUFBUUMsUUFBUXBILElBQUlxSDtRQUNqRDtlQURRTCxVQUFRQztTQUNoQixNQUQ2QkUsVUFBUUM7U0FrQkcsb0JBbEJoQkYsS0FBS0M7U0FrQmIsb0JBbkJBM2dCLEVBQ1J3Z0I7U0FFS1UsR0FGTFY7U0FFUXZpQjtTQUFHa2pCLEdBRlVSO1NBRVB6aUI7U0FBRzJXLEVBRndCZ007UUFHL0M7VUFBRyxrQkFKT2xVLElBR0kxTyxHQUFNQztZQVNsQixlQVh5Q3NiLElBRXBCM0UsRUFBSDNXO1lBU2xCLElBQ0lrakIsS0FWV0Q7WUFTZixHQUNJQyxPQVgwQkw7Y0FhNUI7bUJBWm1CbE07ZUFZTCxvQkFkSTZMLEtBWWhCVTtlQVZXRCxHQVVYQztlQVZjbGpCO2VBQUcyVzs7WUFjbkIsY0FqQlU3VSxFQUdIa2hCLEdBRmdDMUgsSUFFcEIzRSxVQURyQmlNLFFBQ1NJO1VBRVQsZUFKeUMxSCxJQUVwQjNFLEVBQVQ1VztVQUVaLElBQ0lzakIsS0FIS0w7VUFFVCxHQUNJSyxPQUpKVDtZQU1FO2lCQUxtQmpNO2FBS1gsb0JBUkU3VSxFQU1SdWhCO2FBSEtMLEdBR0xLO2FBSFF0akI7YUFBUzRXOztVQU9uQixjQVRrQjZMLEtBRUxTLEdBRjBCM0gsSUFFcEIzRSxVQURTa00sUUFDZkksUUFnQitDO01BbEJwRSxTQW9CSU8sUUFBUUMsT0FBT25JLElBQUlxSCxPQUFPdmdCO1FBQzVCLFNBRDRCQSxZQUM1Qjs7OztVQUNFO1lBQVE7OEJBdkJNTixFQXFCTjJoQixTQUNWcHBCO2FBQ1UsTUFGV3NvQixTQUNyQnRvQjs7Y0FHeUI7Z0JBSkpzb0I7O2dCQUdmaFU7Ozs7Z0JBQ21CLFdBekJiRixJQXlCaUIsZUFKWjZNLElBR1gzTSxNQURBcEg7Z0JBR0YsZUFMYStULElBR1gzTSxhQUVlLGVBTEoyTSxJQUdYM007Z0JBRUY7O2NBR0YsZUFSZTJNLElBR1gzTSxhQURBcEg7Y0FNSixTQVBGbE47Ozs7Z0JBUUk7TUE3Qk4sU0ErQlFxcEIsT0FBT0QsT0FBT25JLElBQUlxSCxPQUFPdmdCO1FBQy9CLEdBRCtCQSxTQUNULGVBRFRxaEIsT0FBT25JLElBQUlxSCxPQUFPdmdCO1FBQzBCLE9BRDFCQSxZQUMwQixHQUQxQkEsTUFFekJuQztRQUVKLE9BSld3akIsU0FFUHhqQixPQUZjcWIsSUFBSXFILFNBRWxCMWlCLE9BQ0FDO1FBRUosT0FMV3VqQixPQWhDRzNoQixFQWdDSDJoQixTQUdQdmpCLE9BREFEO1FBR0osYUFMV3dqQixTQUdQdmpCLE9BREFELEdBRmNxYixJQUFJcUgsU0FFbEIxaUIsT0FDQUMsR0FIY29iLElBQUlxSCxPQU9yQjtNQXRDTCxJQXdDSWhpQixFQXpDY21CO01BQ2xCLEdBd0NJbkIsT0FDZ0IsaUJBMUNGbUIsSUF5Q2RuQjtNQXhDSixJQXlDeUMsR0FEckNBLFVBQ3FDLEdBRHJDQSxJQUVFVixPQUVKLHlCQURJQztNQUVKLE9BSElELEdBRUFvTCxJQURBbkw7TUFHSixTQS9DZ0I0QixFQTRDWjVCLEdBREFEO01BSUosYUFISUMsR0FEQUQsR0FFQW9MLElBREFuTCxHQTVDWTRCLElBaURmO2FBS0Q4a0IsU0FBTzlrQjtNQUNULFNBQVFnWSxJQUFJemY7UUFDVixHQURVQSxJQURIeUg7VUFJRyxNQUpIQSxNQUNHekgsR0FHQSxLQUhBQTtVQUlLLFVBRFQ2RSxpQlp4ZGIsT1lxZGE0YTtRQUtELFFBQU87TUFMZDs0QlpyZEwsT1lxZGFBLGVBT0g7YUFHSCtNLFVBQVEva0I7TUFDVixTQUFRZ1ksSUFBSXpmO1FBQ1YsR0FEVUEsSUFERnlIO1VBSUUsTUFKRkEsTUFDRXpILEdBR0EsS0FIQUE7VUFJUyxhQUpUQSxFQUdKNkUsa0JabmViLE9ZZ2VhNGE7UUFLRCxRQUFPO01BTGQ7NEJaaGVMLE9ZZ2VhQSxlQU9IO2FBYUhnTixTQUFPcEk7TUFDVDs7T0FBUSwyQkFBbUIvUixJQUFJek4sR0FBSyxVQUFMQSxFQUFKeU4sSUFBZSxPQURqQytSO09BVEMsYUFESXZIO09BRWQseUJBREkvVTtPQUNKLElBRElBOzthQURVK1U7OztjQUtOblcsWUFBSkM7VUFBVSxXQUFWQTtVQUFVLDhCQUFORDs7UUFERSxPQUZOYyxFQVVTO2FBR1hpbEIsYUFBYXhvQixFQUFFdUQ7TUFDakIsSUFBSW5CLEVBRGFtQjtNQUNqQixTQUFJbkIsRUFDVTtNQURkLElBRVUsaUJBRk5BLEVBRW1CLFdBSFJwQyxFQUFFdUQsT0FHUCxLQUZObkIsVUFFTTs7WUFDUnRHO1FBQ0U7Z0JBREZBLEtBQ3VCLFdBTFZrRSxFQUFFdUQsTUFJZnpIO1VBQ0UsU0FERkE7OztNQUdBLE9BSklxRSxDQUtIO2FBRURzb0IsZUFBZXpvQixFQUFFdUQ7TUFDbkIsTUFEbUJBLGFBRW5CLHlCQURJbkIsR0FDSixLQURJQSxVQUNKOztZQUNBdEc7UUFDRTtnQkFERkEsS0FDaUIsV0FKQWtFLEVBQUV1RCxNQUduQnpIO1VBQ0UsU0FERkE7OztNQUdBLE9BSklxRSxDQUlIOzs7Ozs7O3NCWnpnQk47OztPWTJMT3FtQjs7T0FLQUM7T0FTQUM7T0FnQkFDO09BY0FFO09BTUFDO09BTUFDO09BSUFDO09BS0FJO09BR0FDO09BVUFFO09BZ0NBSTtPQXRCQUY7T0F5QkFHO09BU0FDO09BUUFDO09BaERBTjtPQWNBRTtPQW1EQU07T0FUQUQ7T0FrQkFFO09BVUFDO09BV0FDO09Ba0RBQzs7T0FzREFDO09BV0FDO09BcUJBQztPQUtBQztPQVVBQzs7Ozs7O09BdmVGckQ7T0FDQUM7T0FDQUM7T0FzRkFNO09BQ0FDO09BdEZBN2tCO09BQ0FDO09BQ0FDO09BS0F3a0I7T0FDQXZrQjtPQUNBQztPQUNBQztPQVBBa2tCO09BQ0FDO09BQ0FDO09BMkVBRTtPQWxFQXBqQjtPQUNBRDs7T0FxRkF3akI7T0FFU0M7T0FLQUM7T0FLQUM7T0FJQUM7T0FLQUM7T0FLQUM7T0FPVEM7O3VCWnBLTDs7O1FZMkxPRzs7UUFLQUM7UUFTQUM7UUFnQkFDO1FBY0FFO1FBTUFDO1FBTUFDO1FBSUFDO1FBS0FJO1FBR0FDO1FBVUFFO1FBZ0NBSTtRQXRCQUY7UUF5QkFHO1FBU0FDO1FBUUFDO1FBaERBTjtRQWNBRTtRQW1EQU07UUFUQUQ7UUFrQkFFO1FBVUFDO1FBV0FDO1FBa0RBQzs7UUFzREFDO1FBV0FDO1FBcUJBQztRQUtBQztRQVVBQzs7O1FxQnRkRkMsU0FDQUMsUUFDQUM7YUFDQUMsT0FBS3ZvQixHQUFJLE9BQUpBLFNBQVk7YUFDakJ3b0IsT0FBS3hvQixHQUFJLE9BQUpBLFNBQVk7YUFDakJ5b0IsTUFBSXpvQixHQUFPLHlCQUFQQSxjQUFnQztRQUNwQzBvQixzQkFDQUM7YUFDQUMsU0FBTzVvQixHQUFJLE9BQUpBLE1BQWtCO0lBS1QsU0FIaEI2b0IsZ0JBSU03b0I7TUFDd0I7O2FBQXZCLG1CQUREQTs7O2FBQ3dCLGlCQUR4QkE7T0FFQSxVQUZBQTtNQUlBLFFBQUk7YUFTVjhvQixZQUFVOW9CLEdBQUksNkJBQUpBLEVBQWlCO2FBSTNCK29CLGdCQUFjN29CO01BRWhCO1FBQVMsK0JBRk9BOzs7K0JBR0U7UUFQRixXQU9NO2FBSXBCOG9CLFdBQVMzb0IsRUFBT0MsR0FBUSx3QkFBZkQsRUFBT0MsRUFBMEI7YUFDMUMyb0IsU0FBTzVvQixFQUFPQyxHQUFRLDhCQUFmRCxFQUFPQyxNQUF1QjthQUVyQzRvQixpQkFBaUJscEIsRUFBRW1wQjtNQUNiLHdCQURXbnBCLG1CQUFFbXBCLG1CQUNrQjthQUVyQ0MsTUFBSS9vQixFQUFFQyxHQUFXLHNCQUFiRCxFQUFFQyxHQUFGRCxFQUFFQyxDQUErQjthQUNyQytvQixNQUFJaHBCLEVBQUVDLEdBQVcseUJBQWJELEVBQUVDLEdBQUZELEVBQUVDLENBQStCO2FBS3JDZ3BCLGFBQWF0cEIsRUFBRThYO01BQ2QsaUJBRGNBLEtBRVosNkJBRlU5WCxFQUFFOFgsR0FqRGZ1USxNQURBRDtNQXNEb0QsTUFBSCxTQUpwQ3BvQixZQUFFOFgsUUFLUCxFQUxLOVgsSUFLQyxTQURWdXBCLEVBSld6UjtNQU1aLDZCQURDalksRUFMV2lZLEdBSVh5UixXQUUyQzthQUUvQ0MsYUFBYXhwQixFQUFFOFgsR0FDakIsT0FEZTlYLElBQ2MsU0FBbEIsYUFESUEsRUFBRThYLFNBQ2U7Ozs7T0EzRDlCc1E7T0FDQUM7T0FDQUM7T0FnREFnQjtPQVFBRTtPQXZEQWpCO09BQ0FDO09BQ0FDO09BRUFFO09BREFEO09BRUFFO09BRUFDO09BcUJBRTtPQUpBRDtPQVdBRTtPQUdBRTtPQUZBRDtPQUtBRztPQUNBQzs7YS9CNUNBSSxPQUFLenBCLEdBQUksc0JBQUpBLE1BQVk7YUFDakIwcEIsT0FBSzFwQixHQUFJLHNCQUFKQSxNQUFZO2FBQ2pCMnBCLE1BQUkzcEI7TUFBTyx5QkFBUEEsU0FBMkIsdUJBQTNCQSxFQUFnQzthQUdwQzRwQixTQUFPNXBCLEdBQUksOEJBQUpBLE1BQWtCO0lBR2IsSUFBVjZwQixVQUFVO2FBRFpDLGtCQUVFOXBCO01BQ3dCOzthQUF2QixtQkFiSGpHLE9BWUVpRzs7O2FBQ3dCLG1CQUR4QkEsRUFEQTZwQjtPQUdBLHNDQUZBN3BCO01BSUEsUUFBSTtJQUxNLFNBUVorcEIsWUFBVS9wQixHQUFJLGlDQUFKQSxFQUFpQjtJQVJmLFNBWVpncUIsZ0JBQWM5cEI7TUFFaEI7UUFBUyxpQ0FGT0E7OzsrQkFHRTtRQVBGLFdBT007SUFmUixTQTRCWitwQixXQUFTNXBCLEVBQU9DLEdBQVEsMEJBQWZELEVBQU9DLEVBQTBCO0lBNUI5QixTQTZCWjRwQixTQUFPN3BCLEVBQU9DLEdBQVEsZ0NBQWZELEVBQU9DLE1BQXVCO0lBN0J6QixTQStCWjZwQixtQkFBaUJucUIsRUFBRW1wQjtNQUNiOzhCQURXbnBCLEVBcENqQjlGLFdBcUNzQixlQURIaXZCLEVBcENuQmp2QixXQXFDcUM7SUFoQ3pCLFNBa0Naa3dCLE1BQUkvcEIsRUFBRUMsR0FBVyxzQkFBYkQsRUFBRUMsR0FBRkQsRUFBRUMsQ0FBK0I7SUFsQ3pCLFNBbUNaK3BCLE1BQUlocUIsRUFBRUMsR0FBVyx5QkFBYkQsRUFBRUMsR0FBRkQsRUFBRUMsQ0FBK0I7SUFuQ3pCLFNBd0NaZ3FCLGVBQWF0cUIsRUFBRThYO01BQ2QsaUJBRGNBLEVBbkRmL2Q7T0FxREcsK0JBRlVpRyxFQUFFOFgsR0FsRGY5ZCxNQURBRDtNQXVEb0Q7OztVQUFILHVCQUF6QiwrQkFKWGlHLEtBQUU4WDtPQUtQLGlCQUxLOVgsRUFLQyxlQURWdXBCLEVBSld6UjtNQU1aLCtCQURDalksRUFMV2lZLEdBTW1CLE9BRjlCeVIsSUFFMkM7SUE5Q25DLFNBZ0RaZ0IsZUFBYXZxQixFQUFFOFg7TUFDakIsc0JBRGU5WCxFQUNjLGVBQWxCLGVBRElBLEVBQUU4WCxNQUNlO0lBakRsQjs7O09BWFovZDtPQUNBQztPQUNBQztPQWlEQXF3QjtPQVFBQztPQXhEQWQ7T0FDQUM7T0FDQUM7T0FFQXh2QjtPQURBRDtPQUVBMHZCO09BRUFFO09BYUFFO09BSkFEO09Bb0JBRTtPQUdBRTtPQUZBRDtPQUtBRTtPQUNBQztJQW5DWTtRZ0JiWkcsU0FDQUMsUUFDQUM7YUFDQUMsT0FBSzNxQixHQUFJLE9BQUpBLFNBQVk7YUFDakI0cUIsT0FBSzVxQixHQUFJLE9BQUpBLFNBQVk7YUFDakI2cUIsTUFBSTdxQixHQUFPLHlCQUFQQSxjQUFnQztJQUUxQiwwQkFDQTthQUNWZ3JCLFNBQU9ockIsR0FBSSxPQUFKQSxNQUFrQjtJQUdiLFNBRFppckIsa0JBRUVqckI7TUFDd0I7O2FBQXZCLG1CQUREQTs7O2FBQ3dCLGlCQUR4QkE7T0FFQSxVQUZBQTtNQUlBLFFBQUk7SUFMTSxTQVFaa3JCLFlBQVVsckIsR0FBSSwrQkFBSkEsRUFBaUI7SUFSZixTQVlabXJCLGdCQUFjanJCO01BRWhCO1FBQVMsK0JBRk9BOzs7K0JBR0U7UUFQRixXQU9NO0lBZlIsU0FtQlprckIsV0FBUy9xQixFQUFPQyxHQUFRLHdCQUFmRCxFQUFPQyxFQUEwQjtJQW5COUIsU0FvQlorcUIsU0FBT2hyQixFQUFPQyxHQUFRLDhCQUFmRCxFQUFPQyxNQUF1QjtJQXBCekIsU0FzQlpnckIsbUJBQWlCdHJCLEVBQUVtcEI7TUFDYix3QkFEV25wQixtQkFBRW1wQixtQkFDa0I7SUF2QnpCLFNBeUJab0MsTUFBSWxyQixFQUFFQyxHQUFXLHNCQUFiRCxFQUFFQyxHQUFGRCxFQUFFQyxDQUErQjtJQXpCekIsU0EwQlprckIsTUFBSW5yQixFQUFFQyxHQUFXLHlCQUFiRCxFQUFFQyxHQUFGRCxFQUFFQyxDQUErQjtJQTFCekIsU0ErQlptckIsZUFBYXpyQixFQUFFOFg7TUFDZCxpQkFEY0EsS0FFWiwrQkFGVTlYLEVBQUU4WCxHQTFDZjJTLE1BREFEO01BK0NvRCxNQUFILFNBSnBDeHFCLFlBQUU4WCxRQUtQLEVBTEs5WCxJQUtDLFNBRFZ1cEIsRUFKV3pSO01BTVosK0JBRENqWSxFQUxXaVksR0FJWHlSLFdBRTJDO0lBckNuQyxTQXVDWm1DLGVBQWExckIsRUFBRThYO01BQ2pCLE9BRGU5WCxJQUNjLFNBQWxCLGVBRElBLEVBQUU4WCxTQUNlO0lBeENsQjs7O09BWlowUztPQUNBQztPQUNBQztPQXlDQWU7T0FRQUM7T0FoREFmO09BQ0FDO09BQ0FDO09BQ0F4aEI7T0FFQTBoQjtPQURBRDtPQUVBRTtPQUVBQztPQWFBRTtPQUpBRDtPQVdBRTtPQUdBRTtPQUZBRDtPQUtBRTtPQUNBQztJQTFCWTthZldaRyxPQUFPQyxJQUFJQyxNQUFNbG5CO01BQ047c0NBREppbkIsSUFBSUMsTUFBTWxuQjtPQUNOLFVBQVR5SDtPQUFTLFVBRE16SCxZQXZDakJ2SztNQXlDaUQ7a0JBRmhDdUs7UUFFZ0MsU0FGaENBO1FBRWdDLHFDQUZoQ0E7TUFPbkIsT0FOSXlILE1BTUU7YUFHSjBmLFdBQVdGLElBQUlDLE1BQU1sbkI7TUFDVjswQ0FEQWluQixJQUFJQyxNQUFNbG5CO09BQ1YsVUFBVHlIO09BQVMsVUFEVXpILFlBakRyQnZLO01BbURpRDtrQkFGNUJ1SztRQUU0QixTQUY1QkE7UUFFNEIscUNBRjVCQTtNQU92QixPQU5JeUgsTUFNRTthQWtFSjJmLGNBQWdCQyxJQUF1QnRzQjtNQUN6QyxHQURrQnNzQixJQUFpQixRQUFqQkEsc0JBQWlCQyxhQUFqQkM7TUFDbEI7WUFEa0JBLGVBUGhCN3hCLFNBbkhBRDtPQXFJcUMsS0FYckI4eEIsZUFQaEI3eEIsU0FuSEFEO09BMkgyQjtPQVFqQjs7Ozs7Ozs7T0FQRztNQURDO3VCQWpFaUJneUI7Z0JBRS9COzs2QkE4RHVDMXNCLEVBaEVuQnlzQixXQUN0QixxQkFEc0JBO2lCQUVwQixNQURFRSxXQUQ2QkQ7Z0JBYWpDLHdCQWJpQ0EsMEJBRzdCcHNCO2tCQVUrRDtzQkFibENvc0IsNkJBRzdCcHNCOztvQkFVK0QscUJBYmxDb3NCO21CQWlCMUI7cUJBakIwQkE7O29CQTRCM0I7cUJBREVFO3NCQUNGOzRCQUxLLHFCQXZCc0JGO29CQTRCM0IsR0FERUUsV0EzQnlCRiw2QkFHN0Jwc0I7cUJBMkJLO29CQUZILElBR0V1c0IsT0FBUyxrQkFKVEQ7b0JBTUosS0FqQzZCRixvQkErQnpCRyxTQS9CeUJIO29CQWlDN0IsWUFGSUc7a0JBU04sSUFBSXJzQixFQXhDMkJrc0I7a0JBd0MvQixZQXhDK0JBLFlBd0MzQmxzQjtrQkFBSixZQXhDK0Jrc0IsWUF3QzNCbHNCO2tCQUFKOzhCQXhDK0Jrc0IsWUF3QzNCbHNCO2tCQUFKLFlBeEMrQmtzQixZQXdDM0Jsc0I7a0JBQUosTUF4QytCa3NCLFdBd0MvQixLQU1JNWYscUJBTko7O3dCQU9BaFI7b0JBQ0U7c0JBQVEsSUFBSm9FLEVBQUksaUJBRk40TSxFQUNKaFI7c0JBQ1UsUUFBSm9FLEVBRUYsaUJBSkE0TSxFQUNKaFIsWUFDTW9FLElBUkZNO3NCQVFNLFNBRFYxRTs7O2dCQU9GLEtBdERzQjJ3QixhQUFXQyxvQkFHN0Jwc0I7Z0JBbURKLFlBdERpQ29zQixZQUc3QnBzQjtnQkFtREo7Ozs7Ozs7Ozs7O21CQXVCQzthQUVDd3NCLGFBQWNOLGVBQWVqb0I7TUFDL0I7ZUFEZ0Jpb0Isd0JBQ21Cdm5CLElBQUkzRSxHQUFLLGFBRGJpRSxHQUNJVSxNQUFJM0UsRUFBcUIsRUFBQzthQUUzRHlzQixjQUFjVCxJQUF1QjlyQjtNQUN2QyxHQURnQjhyQixJQUFpQixRQUFqQkEsc0JBQWlCQyxhQUFqQkM7TUFDaEI7WUFEZ0JBLGVBekJkN3hCLFNBbkhBRDtPQXdKcUMsS0FadkI4eEIsZUF6QmQ3eEIsU0FuSEFEO09Bc0pVOzs7Ozs7O2tDQVYyQjhGO09BRXhCLGNBRndCQTtNQUV4Qjt1QkFETWtzQixRQUFVLHNCQUE4Qjs7Ozs7Ozs7Ozs7bUJBYTVEO2FBRUNNLGFBQWFOLE9BQU9PO01BQ3RCLGdCQURlUCxjQUFPTztNQUN0QixZQURzQkE7TUFDdEIsUUFDdUM7YUFFckNDLGFBQWFSLE9BQU9TO01BQ3RCLFNBRGVUO01BQ2YsZ0JBRHNCUztNQUN0QixRQUErRDthQUU3RFgsZUFBZUUsUUFBUyxPQUFUQSxlQW5LZmh5QixhQW1Lc0Q7YUFFdEQweUIsT0FBT1Y7TUFDVCxJQUFJN29CLElBREs2b0I7TUFDVCxrQkFEU0Esb0JBQ0w3b0IsSUFDdUQ7YUFFekR3cEIsV0FBV1gsT0FBT2pJLEdBQUdDO01BQ3ZCLElBQUk3Z0IsSUFEbUI2Z0IsS0FBSEQsT0FDcEIsa0JBRGFpSSxVQUFPakksR0FDaEI1Z0IsSUFDcUM7YUFFdkN5cEIsZUFBZVosT0FBT2pJLEdBQUdDO01BQzNCLFFBRHdCRCxJQUNSLElBQ1Y1Z0IsSUFGcUI2Z0IsS0FBSEQsT0FHakIscUJBSFVpSSxVQUFPakksR0FFbEI1Z0I7TUFFRyxRQUVOO2FBRUQwcEIsZ0JBQWdCYixPQUFPNXdCLEdBQUksc0JBQVg0d0IsVUFBTzV3QixFQUFpQzthQUV4RDB4QixvQkFBb0JkLE9BQU81d0I7TUFDN0IsWUFENkJBLEtBRXRCLGVBRmU0d0IsVUFBTzV3QixLQUl2QjthQUdKMnhCLFlBQVlmLE9BQU81d0I7TUFDckIsc0JBRGM0d0Isc0JBQU81d0IsTUFDaUM7YUFFcEQ0eEIsYUFBYWhCLFFBQVMsT0FBVEEsYUFBb0M7YUFDakRpQixXQUFXakIsUUFBUyxPQUFUQSxhQUFtQzthQUU5Q2tCLGVBQWVsQixRQUFTLE9BQVRBLFVBQTJCO2FBQzFDbUIsYUFBYW5CLFFBQVMsT0FBVEEsVUFBMEI7YUFFdkNvQixTQUFTcEI7TUFDWDtXQURXQTtPQUNYLEtBQUlxQixRQXhNRnJ6QjtPQXdNRixXQURXZ3lCLGdCQUNQcUI7TUFIb0IsV0FTbkI7YUFNSEMsWUFBWXpMO01BQ2Q7O1VBRUl3TCxJQUhVeEw7TUFDZCxHQUVJd0wsUUF2TkZyekI7T0F5TkEsWUFGRXF6QixPQXBHRnB6QjtNQXVHRjtjQUF1Qjs7OztPQTFOckJEO09BeUlBb3lCO09BR0FDO09BbEJBVjtPQWtDQVc7T0FJQUU7T0FHQVY7T0FFQVk7T0F5QkFLO09BR0FDO09BQ0FDO09BRUFDO09BQ0FDO09BRUFDO09BYUFFO09BM0NBWDtPQUlBQztPQVFBQztPQUVBQztPQWhKQXZCO09BVUFHOztJK0JnQlU7Ozs7OztPQUNBO09BQ1MsbUIvQm5FbkIxeEI7TytCb0VpQixtQi9CcEVqQkE7Ozs7Ozs7Ozs7Ozs7SStCaUVVLFNBaUJWd3pCO01BQ0Y7ZUFuQkVEO09BbUJGLFFBQUlFO09BRVEscUJBRFJDO09BRVEscUJBRlJBO09BR1kseUJBSFpBLFEvQnBGRjF6QjtPK0J3RlksdUJBSlYwekIsUS9CcEZGMXpCO00rQnlGQSxPQXpCQXV6QixTQXFCRUksUUFGQUY7TUFNRixTQUpFRTtNQU1GLE9BM0JBSixTQXNCRUssUUFIQUg7TUFRRixTQUxFRztNQU9GLE9BN0JBTCxTQXVCRU0sWUFKQUo7TUFVRixTQU5FSTtNQVFGLE9BL0JBTixTQXdCRU8sVUFMQUw7TUFZRixTQVBFSztNQU9GLFNBWEVKO01BV0YsUUFFd0I7SUFoQ2QsU0FrQ1ZLO01BQ0YsT0FwQ0VSLG1CQW9DRixtQkFDdUI7SUFwQ1gsSUFzQ1ZTLHlDQUFnRCxRQUFLO0lBdEMzQyxTQXdDVkMsUUFBUUMsT0FBT0MsTUFBTUMsTUFBTXBDO01BQzdCO2dCQTFDRXVCO09BMENGLFFBMUNFQTtPQTBDRixlQTFDRUE7T0EwQ0YsV0ExQ0VBO09BMENGLGVBMUNFQTtPQTBDRixVQTFDRUE7T0EwQ0YsYUExQ0VBO01BMENGLFNBMUNFQTtNQTBDRixTQURpQlk7TUFDakIsVUFENkJuQztNQUM3QjtZQUFhNEMsTUFBSUM7UUFDZjtVQUFNLG9DQUZFWCxPQXpDUlgsSUEwQ1dxQixJQUFJQztVQUNUOzthQUVjLElBSExDLE1BR0ssV0FKQ1YsTUFBTXBDO2FBSVAsU0FKT0E7YUFJUCxVQUpPQTthQUlQLElBSFQ0QyxNQUFJQzs7bUJBUVg7bUJBU0EsbUJBakJPRCxNQUFJQzttQkFtQlgsbUJBbkJPRCxNQUFJQzs7YUFVWDtlQUUrRDtxQkF0RG5FdEI7Z0JBc0RtRTs0QkFBaEMsaUJBYjNCVywwQkF6Q1JYO2dCQXNEbUU7Z0JBWnBEd0I7Z0JBQUpDOzs7dUNBZVA7bUJBZldELFFBQUpDOzJCQUFJSDs7O2FBcUJYLFdBdEJJWCxpQ0FDR1UsTUFBSUM7WUFtQ1pJOztRQUNILElBQUlDLFVBOUVKM0I7UUE4RUEsVUFiRWM7UUFhRixVQVpFQztRQVlGLFNBWEVDO1FBV0YsVUFWRUM7UUFVRixTQVRFQztRQVNGLFNBUkVDO1FBUUYsVUFQRUM7UUFPRixHQURHTSxtQkFXQyxJQURLenZCLEVBVk55dkIsT0FXQyxPQURLenZCO1FBR0w7O2lCQUNPMnZCO1VBQ0EsWUFEQUE7WUFFdUIsc0JBRnZCQTtZQUVFLHdCQXBETGpCLDhCQXFDSmdCOzs7VUFnQlMsd0JBckRMaEIsVUFrREdpQixrQkFiUEQsYUFnQndEO1FBSnhELE1BYkRELElBa0JVO0lBOUZILFNBZ0dWRyxTQUFTN0IsSUFBSTN0QjtNQUNmLFNBRFcydEIsVUFBSTN0QixNQUNMLHdCQURDMnRCLHNCQUN3QjtJQWpHdkIsU0FtR1Y4QjtNbEM3TEwsSWtDOExnQmowQixFQXJHWG15QjtNQXNHQTtlQURXbnlCO1VBRU47aUJBdkdMbXlCLFVBcUdXbnlCO1dBR0Esb0JBeEdYbXlCO1dBd0dXLE1BeEdYQSxVQXFHV255QjtXQUlBLG9CQXpHWG15QjtVQTBHSyxpQkFGQytCLEdBQ0FDLElBQ2EsT0FGYkQ7VUFERCxJQUdzQixJQUxoQmwwQjs7UUFDSSxTQXRHZm15QjtRQXNHZSx3QkF0R2ZBLHVCQTZHZTtJQTVHTCxTQThHVmlDO01BQW9CLFNBL0dwQmpDLFFBK0dvQix3QkEvR3BCQSxzQkErR2dEO0lBOUd0QyxTQStHVmtDLGNBQWM3dkI7TUFBSSxTQWhIbEIydEIscUJBZ0hjM3RCO01BQUksd0JBaEhsQjJ0QixzQkFnSHFFO0lBL0czRCxTQWdIVm1DLFlBQVk5dkI7TUFBSSxTQWpIaEIydEIscUJBaUhZM3RCO01BQUksd0JBakhoQjJ0QixzQkFpSGlFO0lBaEh2RCxTQWtIVm9DLG9CQUFrQiw2QkFBOEI7SUFsSHRDLFNBbUhWQyxrQkFBZ0IsMkJBQTRCO0lBbkhsQyxTQW9IVkMsVUFBVWp3QixHQUFJLHFCQUFKQSxLQUE4QjtJQXBIOUIsU0FxSFZrd0IsUUFBUWx3QixHQUFJLG1CQUFKQSxLQUE0QjtJQXJIMUIsU0F1SFZtd0IscUJBQXFCWjtNQUN2QixrQkFsRkVuQix5QkFpRnFCbUIsSUFDZTtJQXhIMUIsU0EwSFZhLG1CQUEyQixRQUFFO0lBMUhuQjs7O09Ba0hWTDtPQUNBQztPQUNBQztPQUNBQztPQWxCQVQ7T0FXQUc7T0FDQUM7T0FDQUM7T0E5RUEzQjs7OztPQU1BRTtPQXdEQW1CO09BdUJBVztPQUdBQztJQTFIVTs7Ozs7a0JDVk5DLGNBQVMsVUFFRyxJQUFOckosV0FBTSxPQUFOQSxFQURHLFFBQ0k7a0JBT2I3YixPQUFPckosRUFBRWxDLEVBQUVDO1dBQ2IsR0FEU2lDLEVBQ3NDLE1BRHRDQSxLQUNMd3VCLEdBQXFDdEosV0FBckNzSjtXQUNKLEdBRmF6d0IsRUFFa0MsUUFGbENBLEtBRVQyd0IsR0FBcUNELGFBQXJDQztXQUNKLFNBRElBLE1BREFGLGNBQ0FFO3FCQUZLMXVCLEVBQUVsQyxFQUFFQyxPQUd5QztrQkFPcEQ0d0IsSUFBSTN1QixFQUFFbEMsRUFBRUM7V0FDVixHQURNaUMsRUFDeUMsTUFEekNBLEtBQ0Z3dUIsR0FBcUN0SixXQUFyQ3NKO1dBQ0osR0FGVXp3QixFQUVxQyxRQUZyQ0EsS0FFTjJ3QixHQUFxQ0QsYUFBckNDO1dBQ0osSUFESUEsY0FEQUY7YUFFZ0IsR0FIZHh1QjtlQU9nQixJQURDNHVCLEdBTmpCNXVCLEtBTVc2dUIsR0FOWDd1QixLQU1LOHVCLEdBTkw5dUIsS0FPZ0IsWUFEQzR1QjtlQUNkLGtCQURFRSxJQUVVLGNBRlZBLEdBQU1ELEdBRUksT0FGRUQsR0FOZjl3QixFQUFFQztlQVNDLEdBSFk2d0I7aUJBT21CLElBRFhHLElBTlJILE1BTUNJLElBTkRKLE1BTU5LLElBTk1MLE1BT21CLFlBRFhHLElBWnZCanhCLEVBQUVDO2lCQWFTLHFCQVBSK3dCLEdBQU1ELEdBTUFJLEtBQU9EO2VBREw7YUFOTjtXQVVKLElBZExSLGNBQ0FFO2FBYXlCLEdBZm5CM3dCO2VBbUJZLElBRENteEIsR0FsQmJueEIsS0FrQk9veEIsR0FsQlBweEIsS0FrQkNxeEIsR0FsQkRyeEIsS0FtQlksWUFEWHF4QjtlQUNGLGtCQURjRixJQUVSLHFCQXBCVGx2QixFQUFFbEMsRUFrQkdzeEIsSUFBTUQsR0FBTUQ7ZUFHWixHQUhBRTtpQkFPNkIsSUFEVEMsSUFOcEJELE1BTWFFLElBTmJGLE1BTU1HLElBTk5ILE1BTzZCLFlBRFRDLElBTmRGLEdBQU1EO2lCQU9KLHFCQXpCYmx2QixFQUFFbEMsRUF3QlN5eEIsS0FBT0Q7ZUFETDthQU5OO1dBV1gsU0ExQkVaLE1BREFGLGNBQ0FFO3FCQUZFMXVCLEVBQUVsQyxFQUFFQyxPQTRCOEM7a0JBSWxEeXhCLElBQUlqeEIsRUFFUm1NO1duQ3JJVCxHbUNxSVNBO2FBQ1UsSUFEQzNNLEVBQVgyTSxLQUFRNU0sRUFBUjRNLEtBQUsxSyxFQUFMMEssS0FDVSxvQkFIRm5NLEVBRUFUO2FBQ0UsU0FBSmdELEVBQ1UsT0FGaEI0SjthQUdFLFFBRkk1SixHQU1PLElBQUxvdUIsR0FBSyxJQVRMM3dCLEVBRUdSLEdBT0UsT0FQRkEsTUFPSG14QixHQVBSeGtCLEVBUTJCLElBUnRCMUssRUFBR2xDLEVBT0FveEI7YUFORSxJQUdGSixHQUFLLElBTkx2d0IsRUFFSHlCO2FBSVEsT0FKUkEsTUFJRzh1QixHQUpScGtCLEVBSzJCLElBRG5Cb2tCLEdBSkFoeEIsRUFBR0M7V0FERixZQUREUTtrQkFZUmt4QixVQUFVbHhCLEdBQUksWUFBSkEsTUFBb0M7a0JBUzFDbXhCLGdCQUFnQm54QjtXbkN4SjdCO2lCbUMwSnFCUixXQUFIRCxXQUFIa0M7YUFDRiwyQkFIZ0J6QixFQUVkeUIsR0FBR2xDLEVBQUdDO1dBREgsaUJBRFdRO2tCQUtoQm94QixnQkFBZ0JweEI7V25DN0o3QjtpQm1DK0pxQlIsV0FBSEQsV0FBSGtDO2FBQ0UsV0FERkEsRUFBR2xDLEVBQ0QsZ0JBSFlTLEVBRVJSO1dBREgsaUJBRFdRO2tCQVFoQnVULEtBQUs5UixFQUFFbEMsRUFBRUM7V0FDZixHQURXaUM7Z0JBQUlqQzs7Z0JBSTJDNnhCLEdBSjNDN3hCO2dCQUlxQ214QixHQUpyQ254QjtnQkFJK0JveEIsR0FKL0JweEI7Z0JBSXlCcXhCLEdBSnpCcnhCO2dCQUlhOHhCLEdBSmpCN3ZCO2dCQUlXNHVCLEdBSlg1dUI7Z0JBSUs2dUIsR0FKTDd1QjtnQkFJRDh1QixHQUpDOXVCO3VCQUkrQzR2QixjQUE5QkM7d0JBQ00sSUFEeEJmLEdBQU1ELEdBQ2tCLEtBRFpELEdBSlQ5d0IsRUFBRUM7eUJBSWE4eEIsY0FBOEJELEdBRTlCLFNBTmpCNXZCLEVBQUVsQyxFQUkyQnN4QixJQUFNRCxHQUFNRCxJQUdoRCxPQVBPbHZCLEVBQUVsQyxFQUFFQzthQUdDLHVCQUhIRCxFQUFGa0M7V0FFSyx1QkFGSGxDLEVBQUVDLEVBT0M7a0JBSVYreEI7V25DaExiO1dtQ2dMdUI7Ozs7ZUFFTSxJQUFOaHlCO2VBQU0sT0FBTkE7YUFETCxnQkFFVztrQkFFaEJpeUI7V25DckxiO1dtQ3FMMkI7Ozs7ZUFFRSxJQUFOanlCO2VBQU0sVUFBTkE7YUFETCxTQUVlO2tCQUVwQmt5QjtXbkMxTGI7V21DMEx1Qjs7OEJBR0gsK0JBQU4xUDtlQURlLElBQWZ4aUI7ZUFBZSxPQUFmQTthQURJLGdCQUVXO2tCQUVoQm15QjtXbkMvTGI7V21DK0wyQjs7OEJBR1AsK0JBQU4zUDtlQURlLElBQWZ4aUI7ZUFBZSxVQUFmQTthQURJLFNBRWU7a0JBSXBCb3lCO1dBQWlCOzs7bUJBR1ZueUIsV0FBSEQsV0FBYSxnQ0FBYkEsRUFBR0M7YUFEUyxJQUFOb3lCO2FBQU0sT0FBTkE7V0FETCwwQ0FFa0M7a0JBZ0IzQ3RrQixPQUFPaU0sR0FBR0Y7V0FDWixHQURTRTthQUlHLEdBSkFGO2VBSXFCLHdCQUpyQkEsSUFJUSxZQUpYRSxHQUlXLFFBSlJGO2FBR0ksT0FIUEU7V0FFTyxPQUZKRixFQUl3QztrQkFROUN3WSxNQUFNN3hCO1duQ3JPbkI7YW1DeU9tQixJQURDUixXQUFIRCxXQUFIa0MsV0FDSyxvQkFKQXpCLEVBR0ZUO2FBQ0UsU0FBSmdELEVBQ1UsVUFGWGQsSUFBTWpDO2FBR0osUUFGRCtDO2VBS21CLGdCQVRmdkMsRUFHQ1IsR0FNYztlQUFjLGVBTmxDaUMsRUFBR2xDLEVBTUM4d0IsSUFBSXlCLEtBQU1uQjthQUxUO2NBR2UsY0FQZjN3QixFQUdMeUI7Y0FJb0I7OzthQUF3QixVQUF4Qzh1QixHQUFJd0IsT0FBb0MsS0FBOUJsQixHQUpYdHhCLEVBQUdDO1dBRFQ7YUFXRmtOO2tCQUVBcUIsZ0JBQVcsZ0JBQW1DO2tCQUUxQ2lrQixJQUFJaHlCO1duQ3RQakI7OztlbUN5UG1CO2dCQURDUjtnQkFBSEQ7Z0JBQUhrQztnQkFDSyxvQkFIRnpCLEVBRUFUO2dCQUNFLFdBQUpnRDtlQUFJLFFBRkQ7ZUFFQyxJQURDd2YsYUFDTHhmLEVBREsvQyxFQUFOaUMsVUFBTXNnQjs7YUFERjtrQkFLTGtRLE9BQU9qeUIsRUFFWG1NO1duQzlQVCxHbUM4UFNBO2FBQ1UsSUFERTNNLEVBQVoyTSxLQUFTNU0sRUFBVDRNLEtBQU0xSyxFQUFOMEssS0FDVSxvQkFIQ25NLEVBRUZUO2FBQ0MsU0FBSmdEO2VBL0NSLEdBOENRZDtpQkEzQ0ksR0EyQ0VqQzttQkEzQ2tCLHdCQTJDbEJBLEdBM0NLLFdBMkNYaUMsRUEzQ1csUUEyQ0xqQztpQkE1Q0UsT0E0Q1JpQztlQTdDUSxPQTZDRmpDO2FBSVIsUUFIRStDLEdBUVMsSUFBTG91QixHQUFLLE9BWEozd0IsRUFFQ1IsR0FTRyxPQVRIQSxNQVNGbXhCLEdBVFZ4a0IsRUFXVyxJQVhMMUssRUFBR2xDLEVBU0NveEI7YUFSQSxJQUlBSixHQUFLLE9BUEp2d0IsRUFFTHlCO2FBS1MsT0FMVEEsTUFLSTh1QixHQUxWcGtCLEVBT1csSUFGRG9rQixHQUxEaHhCLEVBQUdDO1dBREg7a0JBY0wweUIsTUFBTXJ4QixHQUFHQztXQUNmLEdBRFlEO2dCQUFHQzs7Z0JBSTJDd1ksR0FKM0N4WTtnQkFJcUNxeEIsR0FKckNyeEI7Z0JBSStCK0gsR0FKL0IvSDtnQkFJeUJFLEdBSnpCRjtnQkFJYTBZLEdBSmhCM1k7Z0JBSVV3VSxHQUpWeFU7Z0JBSUlrVCxHQUpKbFQ7Z0JBSUZFLEdBSkVGO2tCQUk4Q3lZLE1BQTlCRTtpQkFFdEIsU0FGb0RGLEdBRXJDLFdBRnlCelEsR0FKbENoSTtpQkFPYzs4QkFIVmtULEdBSkRqVDtrQkFPVzs7a0JBQ0ksV0FKUnVVLEdBR0YrYztpQkFDUCxrQkFKSHJ4QixHQUdHMFgsTUFIRzFFO2VBT1YsU0FQc0J5RixHQU9QLFdBUEx6RixHQUpEalQ7ZUFZVzs4QkFSb0IrSCxHQUpsQ2hJO2dCQVljOztnQkFDSSxXQURWd3hCLEtBUmdDRjtlQVN2QyxrQkFEQTNaLEtBUjJCeFgsSUFBTTZIO2FBRDdCLE9BSExoSTtXQUVLLE9BRkZDLEVBY047a0JBRUh3eEIsTUFBTXp4QixHQUFHQztXQUNmLEdBRFlEO2dCQUFHQztlQUtMLElBRFl1VSxHQUpWeFUsTUFJSWtULEdBSkpsVCxNQUlGRSxHQUpFRixNQUtGLFdBRE1rVCxHQUpEalQsSUFLTDs7aUJBSW9CLElBRGJxeEIsV0FDYSxXQUxSOWMsR0FJTDhjO2lCQUNKLGtCQUxIcHhCLFNBQU1nVDtlQUNOLElBRUYsYUFBcUIsV0FIUHNCLEdBRUorYztlQUNILG9CQUhMcnhCO2FBRE07V0FEQSxRQU8yQjtrQkFVckN3eEIsVUFBVXZ5QjtXbkM5U3ZCO2FtQ2tUbUIsSUFEQ1IsV0FBSEQsV0FBSGtDLFdBQ0ssb0JBSkl6QixFQUdOVDthQUNFLFNBQUpnRCxFQUNVO2FBQ1QsUUFGREE7ZUFPSSxvQkFYSXZDLEVBR0hSO2VBUUQ7cUJBRVVteEIsWUFBSk4sWUFBcUIsZUFWaEM1dUIsRUFBR2xDLEVBVVE4d0IsSUFBSU07ZUFETDthQVJMLFlBR0EsVUFQSTN3QixFQUdUeUI7YUFJSzttQkFFVW92QixjQUFKTjs7O3VDQUF5Qyx1QkFBckNNLE1BTlp0eEIsRUFBR0MsRUFNeUQ7YUFEckQ7V0FOYiw0QkFBNEIsUUFBSztrQkFhL0JnekIsU0FBUzN4QixHQUFHQztlQUFIdWpCLFFBQUdIO1dBQ2xCO2dCQURlRyxRQUFHSDttQkFHSTdPLEdBSFBnUCxRQUdDdFEsR0FIRHNRLFFBR0x0akIsR0FIS3NqQjsyQkFBR0gsS0FJRztlQUNOLG9CQUZDblEsR0FIRW1RO2VBS0g7aUJBQ2EsSUFBUGlPLFlBQUpueEIsWUFBVyxjQUhsQkQsR0FHT0M7aUJBQVc7bUJBQThCLG9CQUFyQ214QixNQU5OOU4sS0FHT2hQLEdBSEo2TztpQkFPRDs7YUFMWSxTQUtQO2tCQUVoQnRILEtBQUsvYixHQUFHQztXQUNkLEdBRFdEO2dCQUFHQztlQUtKLElBRFl1VSxHQUpYeFUsTUFJS2tULEdBSkxsVCxNQUlERSxHQUpDRixNQUtELFdBRE1rVCxHQUpGalQsSUFLSjs7aUJBSWtCLElBRFhxeEIsV0FDVyxVQUxOOWMsR0FJTDhjO2lCQUNGLG1CQUxMcHhCO2VBQ0EsSUFFRixhQUFxQixVQUhQc1UsR0FFSitjO2VBQ0wsaUJBSEhyeEIsU0FBTWdUO2FBREMsT0FITmxUO1dBRUssUUFPd0I7a0JBSWxDNHhCLFVBQVU1eUIsRUFBRXdJO2VBQUYrSCxNQUFFNlM7V0FDbEI7Z0JBRGdCN1M7O2dCQUdINVEsRUFIRzRRO2dCQUdON1EsRUFITTZROztnQkFBRXVpQixPQUdScHpCLEVBQUdDLEVBSEt5akI7Z0JBQUY3UztnQkFBRTZTOzthQUVQLE9BRk9BLElBRzRCO2tCQWE1Q2xhLFFBQVFsSSxHQUFHQztXQUNrQixtQkFEbEJBLE1BQ0QsZUFERkQsTUFYUThILFFBQUdDO1dBQ25CO2dCQURnQkQ7a0JBQUdDO2lCQU1UO2tCQURzQmtxQixLQUxibHFCO2tCQUtTdXBCLEdBTFR2cEI7a0JBS0tDLEdBTExEO2tCQUtMbXFCLEtBTEVwcUI7a0JBS04wTSxHQUxNMU07a0JBS1ZvTCxHQUxVcEw7a0JBTU4sb0JBREpvTCxHQUFrQmxMO2lCQUNkLFNBQUp0RzttQkFHK0I7bUNBSlQ0dkIsR0FBSVc7b0JBSWIsZUFKVHpkLEdBQUkwZDtvQkFMRXBxQjtvQkFBR0M7O2lCQVFaLE9BRkRyRztlQUZNO2FBREMsT0FITXFHLFFBWTRCO2tCQUUvQ0YsTUFBTTdILEdBQUdDLElBQ1gscUJBRFFELEdBQUdDLE9BQ007a0JBRVhveUIsT0FBT3J5QixHQUFHQztlQUFIdWpCLFFBQUdIO1dBQ2hCO2dCQURhRztrQkFBR0g7aUJBT0o7a0JBRG9DaU8sR0FOaENqTztrQkFNMEJyYixHQU4xQnFiO2tCQU1vQmxqQixHQU5wQmtqQjtrQkFNTTdPLEdBTlRnUDtrQkFNR3RRLEdBTkhzUTtrQkFNSHRqQixHQU5Hc2pCO2tCQU9ELG9CQURJdFEsR0FBMEJsTDtpQkFDOUIsU0FBSnRHO21CQUVGLGdCQUhJeEIsR0FBMEJDO21CQUc5QixhQVRPcWpCLEtBTVNoUCxHQU5ONk8sS0FNZ0NpTzttQkFJdkM7eUJBSEQ1dkI7bUJBTUYscUJBUFV3UixHQUFNc0IsTUFBMEI4YzttQkFPMUMsYUFiTzlOLEtBTUh0akI7bUJBRE47aUJBRVEsU0FJTixVQUxJQSxHQUFNZ1QsUUFBb0IvUztpQkFLOUIsYUFYT3FqQixLQU1TaFA7aUJBT2hCO2VBUkY7YUFGQSxTQVU2RDtrQkFFM0QxUyxLQUFLdEQ7V25DeFhsQjs7O21CbUMwWG9CRyxhQUFIRCxhQUFIa0M7ZUFBWSxLQUZScEMsRUFFSm9DO2VBQXNCLFdBRmxCcEMsRUFFREU7MkJBQUdDOzthQURGO2tCQUdMaUosS0FBS3BKLEVBQUVRLEVBQUUwRTtlQUFGNkwsTUFBRTNMO1dBQ2Y7Z0JBRGEyTDtlQUdlO2dCQUFmNVEsRUFIQTRRO2dCQUdIN1EsRUFIRzZRO2dCQUdOM08sRUFITTJPO2dCQUdlLGtCQUhqQi9RLEVBR0RFLEVBQXVCLEtBSHRCRixFQUdKb0MsRUFIUWdEO2dCQUFGMkwsSUFHQTVRO2dCQUhFaUY7O2FBRUosT0FGSUEsT0FHa0M7a0JBRTNDK0osUUFBUUM7V25DallyQjs7O2VtQ21ZMEI7Z0JBQU5qUDtnQkFBSEQ7Z0JBQUhrQztnQkFBWSxnQkFGTGdOLEVBRUpsUDtlQUFTO2lCQUFPLGlCQUZaa1AsRUFFUGhOO2lCQUFtQixxQkFBYmpDO2lCQUFhOzs7ZUFEZjs7a0JBR0xrUCxPQUFPRDtXbkNyWXBCOzs7ZW1DdVkwQjtnQkFBTmpQO2dCQUFIRDtnQkFBSGtDO2dCQUFZLGdCQUZOZ04sRUFFSGxQO2VBQVM7OztpQkFBTyxnQkFGYmtQLEVBRU5oTjtpQkFBbUIsdUJBQWJqQztpQkFBYTtlQURmOztrQkFHTDZOLE9BQU9vQixFQUVYdEM7V25DM1lULEdtQzJZU0E7YUFFVztjQUZDM00sRUFBWjJNO2NBQVM1TSxFQUFUNE07Y0FBTTFLLEVBQU4wSztjQUVXLFdBSkFzQyxFQUVMaE47Y0FHSyxjQUxBZ04sRUFFRmxQO2NBSUUsV0FOQWtQLEVBRUNqUDthQUlELEdBREwyekIsT0FIQTF4QixNQUVBMlcsT0FGTTVZLE1BSU5veUIsSUFFcUIsT0FOM0J6bEIsRUFNa0MsWUFKNUJpTSxJQUZHN1ksRUFJSHF5QjthQUdDLGNBTER4WixJQUVBd1o7V0FMRztrQkFVTDNmLFVBQVV4RDtXbkNwWnZCO2FtQ3daMEI7Y0FGTmpQO2NBQUhEO2NBQUhrQztjQUVZLGdCQUpIZ04sRUFFVGhOO2NBRVk7O2NBQ04sY0FMR2dOLEVBRU5sUDtjQUlTLGtCQU5Ia1AsRUFFSGpQO2NBSU07O2dCQURYMnpCLElBR2dCLGdCQUpYQyxHQUVBRSxJQUVILGVBSkRELEdBRkM5ekIsRUFJRGcwQjthQUZVLFNBS0ssS0FMWEgsR0FGSDd6QixFQUlHK3pCO2FBR0gsaUJBTERELEdBRUFFO1dBTEU7a0JBVUxDO1dBQVc7YUFFZ0IsSUFBdkJoMEIsV0FBSGlDLFdBQTBCLGNBQXZCakM7YUFBTSxpQkFBVGlDO1dBREksUUFDZ0M7a0JBRXJDZ3lCOzs7O2VBRWdDO2dCQUF6QmowQjtnQkFBSEQ7Z0JBQUhrQztnQkFBK0IsVUFBNUJsQyxFQUE0QixvQkFBekJDOzt3QkFBTmlDOzthQURJO2tCQUdUaXlCLFNBQVM3ekIsR0FDWCxzQkFEV0EsRUFDTTtrQkFNWDhPLEtBQUszTztXbkM5YWxCOzs7ZW1DaWJtQjtnQkFEQ1I7Z0JBQUhEO2dCQUFIa0M7Z0JBQ0ssb0JBSER6QixFQUVEVDtlQUNFLFNBQUpnRCxFQUNVLE9BRlJoRDtlQUNFLElBRUgsYUFGRGdELEVBREsvQyxFQUFOaUMsVUFBTXNnQjs7YUFERjtrQkFlTDRSLFdBVGtCdDBCO1duQ3JiL0I7OzttQm1DaWNvQnV5QixlQUFIcHBCLGVBQUg0UDtlQUNBLGNBYmlCL1ksRUFZZG1KO2tDQUFINFA7Ozt5QkFUTTVZLFdBQUhELFdBQUhrQztxQkFDQSxjQUppQnBDLEVBR2RFLG1CQUFIa0M7K0JBQU1qQzs7bUJBRFQ7MkJBVVNveUI7O2FBRFQ7a0JBZ0JFZ0MsZUFUc0J2MEI7V25DdmNuQzs7O21CbUNtZG9CdXlCLGVBQUhwcEIsZUFBSDRQO2VBQ0EsY0FicUIvWSxFQVlsQm1KO2tDQUFINFA7Ozt5QkFUTTVZLFdBQUhELFdBQUhrQztxQkFDQSxjQUpxQnBDLEVBR2xCRSxtQkFBSGtDOytCQUFNakM7O21CQURUOzJCQVVTb3lCOzthQURUO2tCQWdCRWlDLFVBVGlCeDBCO1duQ3pkOUI7OzttQm1DcWVvQnV5QixlQUFIcHBCLGVBQUg0UDtlQUNBLGNBYmdCL1ksRUFZYm1KO2tDQUFHb3BCOzs7eUJBVEFweUIsV0FBSEQsV0FBSGtDO3FCQUNBLGNBSmdCcEMsRUFHYkUsbUJBQUdDOytCQUFOaUM7O21CQURIOzJCQVVHMlc7O2FBREg7a0JBZ0JFMGIsY0FUcUJ6MEI7V25DM2VsQzs7O21CbUN1Zm9CdXlCLGVBQUhwcEIsZUFBSDRQO2VBQ0EsY0Fib0IvWSxFQVlqQm1KO2tDQUFHb3BCOzs7eUJBVEFweUIsV0FBSEQsV0FBSGtDO3FCQUNBLGNBSm9CcEMsRUFHakJFLG1CQUFHQzsrQkFBTmlDOzttQkFESDsyQkFVRzJXOzthQURIO2tCQU9FMmIsU0FBUy96QjtXbkM3ZnRCOzs7ZW1DZ2dCbUI7Z0JBRENSO2dCQUFIRDtnQkFBSGtDO2dCQUNLLG9CQUhHekIsRUFFTFQ7ZUFDRSxTQUFKZ0QsRUFDVSxVQUZSaEQ7ZUFDRSxJQUVILGFBRkRnRCxFQURLL0MsRUFBTmlDLFVBQU1zZ0I7O2FBREY7a0JBTVRpUyxTQUFTdnlCLEVBQUVsQyxFQUFFQztXbkNwZ0J0QjtXbUN3Z0JPLFNBSldpQzthQUlrQixpQkFKbEJBO2FBSU0sK0JBSkpsQzs7O3NCQUFFQztlQUtnQixpQkFMaEJBO2VBS0UsMEJBTEpEOzJCQU1SLFlBTk1rQyxFQUFFbEMsRUFBRUM7V0FPRixhQVBGaUMsRUFPRSxJQVBBbEMsRUFBRUMsR0FPTztrQkFFaEIrSSxJQUFJbEosRUFFUjhNO1duQy9nQlQsR21DK2dCU0E7YUFFVTtjQUZDM00sRUFBWDJNO2NBQVE1TSxFQUFSNE07Y0FBSzFLLEVBQUwwSztjQUVVLFFBSkY5TSxFQUVIb0M7Y0FHSyxlQUxGcEMsRUFFQUU7Y0FJRSxRQU5GRixFQUVHRztnQkFBTmlDLE1BRUEyVyxPQUZHN1ksTUFHSGlKLE9BSE1oSixNQUlOb3lCLElBQ2tDLE9BTHZDemxCO2FBTU0sZ0JBSkRpTSxJQUNBNVAsSUFDQW9wQjtXQUxJO2tCQWVMemtCLFdBQVc5TixFQUVmOE07V25DL2hCVCxHbUMraEJTQTthQUVVO2NBRkMzTSxFQUFYMk07Y0FBUTVNLEVBQVI0TTtjQUFLMUssRUFBTDBLO2NBRVUsY0FKSzlNLEVBRVZvQztjQUdLLGVBTEtwQyxFQUVQRTtjQUlFLGNBTktGLEVBRUpHO2FBSUQsR0FETGdKO2VBSUMsSUFESXlyQixJQUhMenJCO2tCQUhBL0csTUFSTThYLE1BUUhoYSxNQU1FMDBCLE9BTkN6MEIsTUFSRzZaLEdBZThCLE9BUDVDbE47ZUFRVyxnQkFoQkFvTixHQWNEMGEsSUFkSTVhO2FBQ2hCLEdBRGFFO2VBSUQsR0FKSUY7aUJBSXFCLHdCQUpyQkE7aUJBSVEsZ0JBSlhFLEdBSVcsUUFKUkY7ZUFHQSxPQUhIRTthQUVHLE9BRkFGO1dBT0w7a0JBbUNUNmEsUUFBUXp5QjtXQUNWLEdBRFVBOzs7Ozs7Ozs7O3VCQVFZOzZDQVJaQTt3QkFwQlY7a0NBQVk5QixFQUFFOEI7MkJBQ1osVUFEVTlCOztxQ0FFQSxZQUZFOEI7O3lDQUdEMnlCLElBSEMzeUIsS0FHUDR5QixHQUhPNXlCLG9CQUdQNHlCLFFBQU1EOzs7a0NBSEMzeUI7Ozt1Q0FJSzZ5QixZQUFOM2EsV0FBTjRhLEtBSk85eUI7cURBSVA4eUIsVUFBTTVhLFFBQU0yYTs7O2tDQUpMN3lCOzs7Ozt5Q0FNVyt5QixZQUFOOWEsV0FBTkssYUFBTjBhLEtBTk9oekI7dURBTVBnekIsVUFBTTFhLFVBQU1MLFdBQU04YTsyQkFJckIsT0FWUTcwQixVQVdNLFVBRFYrMEIsR0FWTWp6QixHQVdJOzhCQUFKMlc7NkJBSU87OEJBRFJDLElBSENEOzhCQUdSdWMsSUFIUXZjOzhCQUlPLGFBZlR6WSxJQVVKKzBCLGdCQUlLcmM7OEJBQ1E7OzZCQUNmLGlCQUxFdlEsS0FHRjZzQixJQUNJNXNCLE9BQU82c0I7MkJBRkwsNEJBR2tCO3VCQUUxQixXQUFLLFNBbkJReGM7eUJBNEJFeWM7cUJBQWMsV0FBZEEsR0FBYyxTQUFRLFNBQVEsU0FBUTttQkFENUIseUJBQVEsU0FBUTtpQkFEcEIseUJBQVE7ZUFEWjthQURYO1dBREYsT0FqVk5ub0IsS0F1VmtEO2tCQUVsRG9vQixRQUFRMzVCLEVBQUUydEI7V0FDWiwwQkFBbUJqcEIsRUFBRUcsR0FBSyxXQUFMQSxFQUFGSCxFQUFjLEVBRHJCaXBCLEVBQUYzdEIsRUFDNEI7a0JBRXBDNDVCLE9BQU81NUIsR0FBSSxlQUFKQSxFQTVWUHVSLE1BNFYwQjtrQkFFdEJzb0IsWUFBYXp5QjtXQUFPLEdBQVBBO2FBRThCLElBQW5DbEgsS0FGS2tILEtBRVI0SixFQUZRNUosS0FFWHZDLEVBRld1QyxLQUU4QixlQUF0QzRKLEVBQUc5UTthQUFzQixVQUE1QjJFLGlCbkNsbEJmLE9tQ2dsQmFnMUI7V0FDRyxRQUMyRDtrQkFFbEU1Z0IsT0FBTzdSO1dBQWlCLG1CQUFqQkE7V0FBaUIsc0JuQ3BsQmpDLE9tQ2dsQmF5eUIsdUJBSXFDO2tCQUVyQ0MsVUFBVXAxQixFQUFFd0k7ZUFBRitILE1BQUU2UztXQUNsQjtnQkFEZ0I3Uzs7O2dCQUdON1EsRUFITTZRO2dCQUdUM08sRUFIUzJPO2dCQUFFdWlCLE9BR1JwekIsRUFBSGtDLEVBSFd3aEI7Z0JBQUY3UztnQkFBRTZTOzthQUVQLE9BRk9BLElBRzRCO2tCQUV4Q2lTLGdCQUFpQjN5QjtXQUFPLEdBQVBBO2FBRThCLElBQXZDbEgsS0FGU2tILEtBRVo0SixFQUZZNUosS0FFZnZDLEVBRmV1QyxLQUU4QixlQUExQzRKLEVBQUc5UTthQUFzQixVQUE1QjJFLGlCbkM3bEJmLE9tQzJsQmFrMUI7V0FDRyxRQUMrRDtrQkFFdEVDLFdBQVc1eUI7V0FBcUIsbUJBQXJCQTtXQUFxQixzQm5DL2xCekMsT21DMmxCYTJ5QiwyQkFJNkM7a0JBRWpERSxZQUFZQyxJQUFJeDFCO2VBQ0Z1USxJQURFdlEsRUFDQTBDO1dBQUk7Z0JBQU42TjtlQUdFLElBREw1USxFQUZHNFEsT0FFQTdRLEVBRkE2USxPQUVOM08sRUFGTTJPLE9BR0Usb0JBREY3USxFQUhGODFCO2VBSUksU0FFUjExQjtpQkFBTyxRQUFQQSxHQUNLLFdBSkNKLEVBQUhDLEVBRksrQyxHQUFGNk4sSUFFTjNPLEVBRlFjO3FCQUFGNk4sSUFFSDVROztlQUNLLFlBREZELEVBQUhDLEVBRksrQzs7O21DbkNsbUJ6QixPbUNnbEJheXlCLHdCQTJCc0I7O2lCQXpYMUJ0b0I7aUJBRUFxQjtpQkFFSWlrQjtpQkFuSEFmO2lCQVlKQztpQkE2R0llO2lCQWVBQztpQkFnQkFJO2lCQWtDQUU7aUJBU0E1VjtpQkE2Qko3VDtpQkFHQUw7aUJBR0l3cUI7aUJBZUF2d0I7aUJBcUpBNEY7aUJBakpBRTtpQkFLQStGO2lCQUlBRTtpQkFJQXJCO2lCQW9KQUY7aUJBeklBOEU7aUJBV0F1aEI7aUJBUUpFO2lCQXZQSW5DO2lCQUtBQztpQkFLQUM7aUJBS0FDO2lCQWZBSDtpQkFLQUM7aUJBZ0RBSztpQkF5TUFsakI7aUJBK0VBb2xCO2lCQS9EQUo7aUJBa0JBQztpQkFrQkFDO2lCQWtCQUM7aUJBNkVKSTtpQkFnQ0FrQjtpQkFiQWhoQjtpQkFXQStnQjtpQkFwQkFMO2lCQUdBQztJQXRnQkc7SURrQkc7Ozs7a0JFYk4vRSxjQUFTLGNBRUhySixvQkFERyxRQUNJO2tCQUViN2IsT0FBT3JKLEVBQUV6QixFQUFFeVgsRUFBRWpZO1dBQ04sY0FEQWlDLEdBQ2tCLFVBRFpqQyxHQUNZLEtBQUwyd0IsTUFBbEJGLGNBQWtCRTtxQkFEYjF1QixFQUFFekIsRUFBRXlYLEVBQUVqWSxPQUU0QztrQkFFekQweEIsVUFBVWx4QixFQUFFeVgsR0FBSSxZQUFOelgsRUFBRXlYLE1BQXVDO2tCQUVuRDJZLElBQUkzdUIsRUFBRXpCLEVBQUV5WCxFQUFFalk7V0FDWixHQURNaUMsTUFDbUNrbEIsRUFEbkNsbEIsS0FDRnd1QixHQUFxQ3RKLFdBQXJDc0o7V0FDSixHQUZZendCLE1BRTZCMHdCLElBRjdCMXdCLEtBRVIyd0IsR0FBcUNELGFBQXJDQztXQUNKLElBRElBLGNBREFGO2FBRWdCLEdBSGR4dUI7ZUFPZ0IsSUFETzR1QixHQU52QjV1QixLQU1pQjZ6QixHQU5qQjd6QixLQU1XNnVCLEdBTlg3dUIsS0FNSzh1QixHQU5MOXVCLEtBT2dCLFlBRE80dUI7ZUFDcEIsa0JBREVFLElBRWEsY0FGYkEsR0FBTUQsR0FBTWdGLEdBRUMsT0FGS2pGLEdBTnJCcndCLEVBQUV5WCxFQUFFalk7ZUFTRCxHQUhrQjZ3QjtpQkFPb0I7a0JBRFhHLElBTlRIO2tCQU1Fa0YsSUFORmxGO2tCQU1MSSxJQU5LSjtrQkFNWkssSUFOWUw7a0JBT29CLFlBRFhHLElBWjlCeHdCLEVBQUV5WCxFQUFFalk7aUJBYU8scUJBUFIrd0IsR0FBTUQsR0FBTWdGLEdBTU41RSxLQUFPRCxJQUFPOEU7ZUFEWjthQU5OO1dBVUosSUFkTHRGLGNBQ0FFO2FBYXlCLEdBZmpCM3dCO2VBbUJVLElBRE9teEIsR0FsQmpCbnhCLEtBa0JXZzJCLEdBbEJYaDJCLEtBa0JLb3hCLEdBbEJMcHhCLEtBa0JEcXhCLEdBbEJDcnhCLEtBbUJVLFlBRFhxeEI7ZUFDRixrQkFEb0JGLElBRWQscUJBcEJUbHZCLEVBQUV6QixFQUFFeVgsRUFrQkNvWixJQUFNRCxHQUFNNEUsR0FBTTdFO2VBR2xCLEdBSEFFO2lCQU9tQztrQkFEUkMsSUFOM0JEO2tCQU1vQjRFLElBTnBCNUU7a0JBTWFFLElBTmJGO2tCQU1NRyxJQU5OSDtrQkFPbUMsWUFEUkMsSUFOckJGLEdBQU00RSxHQUFNN0U7aUJBT1YscUJBekJibHZCLEVBQUV6QixFQUFFeVgsRUF3Qk91WixLQUFPRCxJQUFPMEU7ZUFEWjthQU5OO1dBV1gsU0ExQkV0RixNQURBRixjQUNBRTtxQkFGRTF1QixFQUFFekIsRUFBRXlYLEVBQUVqWSxPQTRCaUQ7YUFFM0RrTjtrQkFFQXFCLGdCQUFXLGdCQUFtQztrQkFFMUNrakIsSUFBSWp4QixFQUFFMDFCLEtBR1Y1TTtXcEM1SFQsR29DNEhTQTthQUNVLElBRFFuQyxFQUFsQm1DLEtBQWV0cEIsRUFBZnNwQixLQUFZclIsRUFBWnFSLEtBQVN2cEIsRUFBVHVwQixLQUFNcm5CLEVBQU5xbkIsS0FDVSxvQkFKRjlvQixFQUdDVDthQUNDLFNBQUpnRCxFQUVGLE9BSFFrVixNQUhGaWUsS0FHVjVNLEtBQU1ybkIsRUFIRXpCLEVBQUUwMUIsS0FHS2wyQixFQUFHbW5CO2FBSVgsUUFIRHBrQixHQU9PLElBQUxvdUIsR0FBSyxJQVhMM3dCLEVBQUUwMUIsS0FHS2wyQixHQVFGLE9BUkVBLE1BUVBteEIsR0FSUjdILEVBUzJCLElBVHJCcm5CLEVBQUdsQyxFQUFHa1ksRUFRSmtaO2FBUEUsSUFJRkosR0FBSyxJQVJMdndCLEVBQUUwMUIsS0FHSmowQjthQUtPLE9BTFBBLE1BS0U4dUIsR0FMUnpILEVBTTJCLElBRG5CeUgsR0FMQ2h4QixFQUFHa1ksRUFBR2pZO1dBRGIsWUFGTVEsRUFBRTAxQjtrQkFjTi9tQixLQUFLM087V3BDdklsQjs7O2VvQzJJbUI7Z0JBREtSO2dCQUFIaVk7Z0JBQUhsWTtnQkFBSGtDO2dCQUNJLG9CQUpEekIsRUFHQVQ7ZUFDQyxTQUFKZ0QsRUFDVSxPQUZKa1Y7ZUFDRixJQUVILGFBRkRsVixFQURTL0MsRUFBVGlDLFVBQVNzZ0I7O2FBRGI7a0JBZUU0UixXQVRxQnQwQjtXcEMvSWxDOzs7O2dCb0MySndCdXlCO2dCQUFIM047Z0JBQUh6YjtnQkFBSDRQO2VBQ0QsY0Fib0IvWSxFQVloQm1KOytCQUFHeWIsVUFBTjdMOzs7eUJBVFM1WSxXQUFIaVksV0FBSGxZLFdBQUhrQztxQkFDRCxjQUpvQnBDLEVBR2hCRSxnQkFBR2tZLFFBQU5oVzsrQkFBU2pDOzttQkFEYjsyQkFVYW95Qjs7YUFEYjtrQkFnQkVnQyxlQVR5QnYwQjtXcENqS3RDOzs7O2dCb0M2S3dCdXlCO2dCQUFIM047Z0JBQUh6YjtnQkFBSDRQO2VBQ0QsY0Fid0IvWSxFQVlwQm1KOytCQUFHeWIsVUFBTjdMOzs7eUJBVFM1WSxXQUFIaVksV0FBSGxZLFdBQUhrQztxQkFDRCxjQUp3QnBDLEVBR3BCRSxnQkFBR2tZLFFBQU5oVzsrQkFBU2pDOzttQkFEYjsyQkFVYW95Qjs7YUFEYjtrQkFnQkVpQyxVQVRvQngwQjtXcENuTGpDOzs7O2dCb0MrTHdCdXlCO2dCQUFIM047Z0JBQUh6YjtnQkFBSDRQO2VBQ0QsY0FibUIvWSxFQVlmbUo7K0JBQUd5YixVQUFHMk47Ozt5QkFUQXB5QixXQUFIaVksV0FBSGxZLFdBQUhrQztxQkFDRCxjQUptQnBDLEVBR2ZFLGdCQUFHa1ksUUFBR2pZOytCQUFUaUM7O21CQURKOzJCQVVJMlc7O2FBREo7a0JBZ0JFMGIsY0FUd0J6MEI7V3BDck1yQzs7OztnQm9DaU53QnV5QjtnQkFBSDNOO2dCQUFIemI7Z0JBQUg0UDtlQUNELGNBYnVCL1ksRUFZbkJtSjsrQkFBR3liLFVBQUcyTjs7O3lCQVRBcHlCLFdBQUhpWSxXQUFIbFksV0FBSGtDO3FCQUNELGNBSnVCcEMsRUFHbkJFLGdCQUFHa1ksUUFBR2pZOytCQUFUaUM7O21CQURKOzJCQVVJMlc7O2FBREo7a0JBT0UyYixTQUFTL3pCO1dwQ3ZOdEI7Oztlb0MyTm1CO2dCQURLUjtnQkFBSGlZO2dCQUFIbFk7Z0JBQUhrQztnQkFDSSxvQkFKR3pCLEVBR0pUO2VBQ0MsU0FBSmdELEVBQ1UsVUFGSmtWO2VBQ0YsSUFFSCxhQUZEbFYsRUFEUy9DLEVBQVRpQyxVQUFTc2dCOzthQURiO2tCQU1FaVEsSUFBSWh5QjtXcEMvTmpCOzs7ZW9DbU9tQjtnQkFERVI7Z0JBQUhEO2dCQUFIa0M7Z0JBQ0ksb0JBSkZ6QixFQUdDVDtnQkFDQyxXQUFKZ0Q7ZUFBSSxRQUZSO2VBRVEsSUFERXdmLGFBQ054ZixFQURNL0MsRUFBTmlDLFVBQU1zZ0I7O2FBRFY7a0JBS0U0VDtXcEN0T2I7V29Dc08yQjs7OzttQkFFQWxlLGFBQUhsWTsyQkFBR2tZO2FBRFQsZ0JBRWdCO2tCQUVyQm1lO1dwQzNPYjtXb0MyTytCOzs7O21CQUVKbmUsYUFBSGxZOzhCQUFHa1k7YUFEVCxTQUVtQjtrQkFFeEJvZTtXcENoUGI7V29DZ1AyQjs7OEJBR04sK0JBQU45VDttQkFER3RLLGFBQUhsWTsyQkFBR2tZO2FBREEsZ0JBRWdCO2tCQUVyQnFlO1dwQ3JQYjtXb0NxUCtCOzs4QkFHViwrQkFBTi9UO21CQURHdEssYUFBSGxZOzhCQUFHa1k7YUFEQSxTQUVvQjtrQkFFekJzZTtXQUFxQjs7O21CQUdWdjJCLFdBQUhpWSxXQUFIbFk7ZUFBZ0Isb0NBQWhCQSxFQUFHa1ksRUFBR2pZO2FBRE0sSUFBTm95QjthQUFNLE9BQU5BO1dBRE4sMENBRTRDO3VCQUUvQ3JZLEdBQUdGO1dBQ1gsR0FEUUU7YUFLSixHQUxPRjtlQUtNLHNCQUxOQSxJQUtNO2VBQ0YsV0FOUEUsR0FLQ3ZaLEVBQUd5WCxFQUNHLG1CQU5KNEI7YUFHSyxPQUhSRTtXQUVRLE9BRkxGLEVBTTJCO2tCQUVoQzRZLE9BQU9qeUIsRUFHWDhvQjtXcEMxUVQsR29DMFFTQTthQUNVLElBRE10cEIsRUFBaEJzcEIsS0FBYXJSLEVBQWJxUixLQUFVdnBCLEVBQVZ1cEIsS0FBT3JuQixFQUFQcW5CLEtBQ1Usb0JBSkM5b0IsRUFHRFQ7YUFDQSxTQUFKZ0QsRUFDVSxZQUZUZCxFQUFTakM7YUFHVCxRQUZEK0MsR0FLTyxJQUFMb3VCLEdBQUssT0FURjN3QixFQUdLUixHQU1ILE9BTkdBLE1BTVJteEIsR0FOUjdILEVBTWtELElBTjNDcm5CLEVBQUdsQyxFQUFHa1ksRUFNTGtaO2FBTEUsSUFHRkosR0FBSyxPQVBGdndCLEVBR0p5QjthQUlNLE9BSk5BLE1BSUM4dUIsR0FKUnpILEVBSWtELElBQTFDeUgsR0FKRWh4QixFQUFHa1ksRUFBR2pZO1dBRGQ7a0JBU0V3MkIsT0FBT2gyQixFQUFFWCxFQU1ieXBCO1dwQ3hSVCxHb0N3UlNBO2FBQ1UsSUFEUW5DLEVBQWxCbUMsS0FBZXRwQixFQUFmc3BCLEtBQVlyUixFQUFacVIsS0FBU3ZwQixFQUFUdXBCLEtBQU1ybkIsRUFBTnFuQixLQUNVLG9CQVBDOW9CLEVBTUZUO2FBQ0MsU0FBSmdEO2VBRUkscUJBVEdsRCxLQU1Eb1k7ZUFHRjtpQkFHRixJQURHaWUsY0FDSCxPQU5JamUsTUFLRGllLEtBTFg1TSxLQUFNcm5CLEVBTkt6QixFQVdBMDFCLEtBTElsMkIsRUFBR21uQjtlQUlKLFlBSlJsbEIsRUFBU2pDO2FBT0osUUFOTCtDLEdBVU8sSUFBTG91QixHQUFLLE9BakJGM3dCLEVBQUVYLEVBTUVHLEdBV0YsT0FYRUEsTUFXUG14QixHQVhSN0gsRUFZMkIsSUFackJybkIsRUFBR2xDLEVBQUdrWSxFQVdKa1o7YUFWRSxJQU9GSixHQUFLLE9BZEZ2d0IsRUFBRVgsRUFNUG9DO2FBUU8sT0FSUEEsTUFRRTh1QixHQVJSekgsRUFTMkIsSUFEbkJ5SCxHQVJDaHhCLEVBQUdrWSxFQUFHalk7V0FKRCx1QkFGREg7V0FFQyxZQUVHLElBQVI0MkIsa0JBQVEsWUFKTmoyQixFQUlGaTJCO1dBREc7a0JBaUJSdHpCLEtBQUt0RDtXcEN0U2xCOzs7bUJvQ3dTd0JHLGFBQUhpWSxhQUFIbFksYUFBSGtDO2VBQ0osS0FIT3BDLEVBRUhvQztlQUNNLFdBSEhwQyxFQUVBRSxFQUFHa1k7MkJBQUdqWTs7YUFETjtrQkFJTCtJLElBQUlsSjtXcEMzU2pCO2FvQytTb0I7Y0FET3NuQjtjQUFIbm5CO2NBQUhpWTtjQUFIbFk7Y0FBSGtDO2NBQ0ssUUFKSHBDLEVBR0ZvQztjQUVLLGVBTEhwQyxFQUdJb1k7Y0FHRCxRQU5IcFksRUFHT0c7YUFHSixVQUZMNFksSUFERzdZLEVBRUgwa0IsSUFDQTJOLElBSFlqTDtXQURoQjtrQkFPRXpXLEtBQUs3UTtXcENwVGxCO2FvQ3dUb0I7Y0FET3NuQjtjQUFIbm5CO2NBQUhpWTtjQUFIbFk7Y0FBSGtDO2NBQ0ssU0FKRnBDLEVBR0hvQztjQUVLLGVBTEZwQyxFQUdBRSxFQUFHa1k7Y0FHRCxTQU5GcFksRUFHTUc7YUFHSixVQUZMNFksSUFERzdZLEVBRUgwa0IsSUFDQTJOLElBSFlqTDtXQURoQjtrQkFPRWxlLEtBQUtwSixFQUFFeXBCLEVBQUV2a0I7ZUFBRjJ4QixNQUFFenhCO1dBQ2Y7Z0JBRGF5eEI7ZUFJQTtnQkFESTEyQixFQUhKMDJCO2dCQUdDemUsRUFIRHllO2dCQUdGMzJCLEVBSEUyMkI7Z0JBR0x6MEIsRUFIS3kwQjtnQkFJQSxrQkFKRjcyQixFQUdBRSxFQUFHa1ksRUFDTSxLQUpUcFksRUFHSG9DLEVBSE9nRDtnQkFBRnl4QixJQUdJMTJCO2dCQUhGaUY7O2FBRUosT0FGSUEsT0FJcUI7a0JBRTlCK0osUUFBUUM7V3BDblVyQjs7O2VvQ3FVOEI7Z0JBQU5qUDtnQkFBSGlZO2dCQUFIbFk7Z0JBQUhrQztnQkFBZSxnQkFGVGdOLEVBRUhsUCxFQUFHa1k7ZUFBUztpQkFBUyxpQkFGbEJoSixFQUVOaE47aUJBQXdCLHFCQUFmakM7aUJBQWU7OztlQURyQjs7a0JBR0xrUCxPQUFPRDtXcEN2VXBCOzs7ZW9DeVU4QjtnQkFBTmpQO2dCQUFIaVk7Z0JBQUhsWTtnQkFBSGtDO2dCQUFlLGdCQUZWZ04sRUFFRmxQLEVBQUdrWTtlQUFTOzs7aUJBQVMsZ0JBRm5CaEosRUFFTGhOO2lCQUF3Qix1QkFBZmpDO2lCQUFlO2VBRHJCOztrQkFXTDIyQixnQkFBZ0JDLEVBQUVwMkI7V3BDblYvQjtpQm9DcVZ3QlIsV0FBSGlZLFdBQUhsWSxXQUFIa0M7YUFDRiwyQkFIZ0IyMEIsRUFBRXAyQixFQUVoQnlCLEdBQUdsQyxFQUFHa1ksRUFBR2pZO1dBRE4saUJBRFc0MkIsRUFBRXAyQjtrQkFLbEJxMkIsZ0JBQWdCRCxFQUFFcDJCO1dwQ3hWL0I7aUJvQzBWd0JSLFdBQUhpWSxXQUFIbFksV0FBSGtDO2FBQ0ksV0FESkEsRUFBR2xDLEVBQUdrWSxFQUNGLGdCQUhVMmUsRUFBRXAyQixFQUVQUjtXQUROLGlCQURXNDJCLEVBQUVwMkI7a0JBUWxCdVQsS0FBSzlSLEVBQUVsQyxFQUFFa1ksRUFBRWpZO1dBQ2pCLEdBRFdpQztnQkFBTWpDOztnQkFLaUI2eEIsR0FMakI3eEI7Z0JBS1dteEIsR0FMWG54QjtnQkFLS2cyQixHQUxMaDJCO2dCQUtEb3hCLEdBTENweEI7Z0JBS1BxeEIsR0FMT3J4QjtnQkFJaUI4eEIsR0FKdkI3dkI7Z0JBSWlCNHVCLEdBSmpCNXVCO2dCQUlXNnpCLEdBSlg3ekI7Z0JBSUs2dUIsR0FKTDd1QjtnQkFJRDh1QixHQUpDOXVCO3VCQUt1QjR2QixjQURBQzt3QkFFRyxJQUYzQmYsR0FBTUQsR0FBTWdGLEdBRWUsS0FGVGpGLEdBSmY5d0IsRUFBRWtZLEVBQUVqWTt5QkFJaUI4eEIsY0FDQUQ7MEJBRU4sU0FQakI1dkIsRUFBRWxDLEVBQUVrWSxFQUtMb1osSUFBTUQsR0FBTTRFLEdBQU03RTswQkFHeEIsT0FST2x2QixFQUFFbEMsRUFBRWtZLEVBQUVqWTthQUdELHVCQUhIRCxFQUFFa1ksRUFBSmhXO1dBRUssdUJBRkhsQyxFQUFFa1ksRUFBRWpZLEVBUUM7a0JBTWhCOE4sT0FBT2lNLEdBQUdGO1dBQ1osR0FEU0U7YUFLTCxHQUxRRjtlQUtLLHNCQUxMQSxJQUtLO2VBQ0QsWUFOUEUsR0FLQXZaLEVBQUd5WCxFQUNJLG1CQU5KNEI7YUFHSSxPQUhQRTtXQUVPLE9BRkpGLEVBTTJCO2tCQUVyQ2lkLGVBQWUvYyxHQUFHaGEsRUFBRWtZLEVBQUU0QjtXQUN4QixHQURzQjVCLEdBRVYsSUFBTHdNLElBRmV4TSxLQUVWLFlBRks4QixHQUFHaGEsRUFFYjBrQixJQUZpQjVLLElBR2QsY0FIT0UsR0FBT0YsR0FHRjtrQkFFaEJ3WSxNQUFNN3hCO1dwQzNYbkI7YW9DK1htQjtjQURLUjtjQUFIaVk7Y0FBSGxZO2NBQUhrQztjQUNJLG9CQUpBekIsRUFHRFQ7YUFDQyxTQUFKZ0QsRUFDVSxVQUZWZCxLQUFNZ1csR0FBR2pZO2FBR1IsUUFGRCtDO2VBS21CLGdCQVRmdkMsRUFHS1IsR0FNVTtlQUFjLGVBTmpDaUMsRUFBR2xDLEVBQUdrWSxFQU1INFksSUFBSXlCLEtBQU1uQjthQUxUO2NBR2UsY0FQZjN3QixFQUdKeUI7Y0FJbUI7OzthQUF3QixVQUF4Qzh1QixHQUFJd0IsT0FBb0MsS0FBOUJsQixHQUpWdHhCLEVBQUdrWSxFQUFHalk7V0FEYjtrQkFTRTJqQixNQUFNOWpCLEVBQUV3QixHQUFHQztXQUNqQixHQURjRDtpQkFHcUIyWSxHQUhyQjNZLE1BR2V3VSxHQUhmeFUsTUFHUzAxQixHQUhUMTFCLE1BR0drVCxHQUhIbFQsTUFHSEUsR0FIR0Y7YUFHd0MsVUFIckNDLE9BR2tCMFk7ZUFDWjs0QkFETnpGLEdBSEFqVDtnQkFJTTs7O2dCQUNtQyxXQUw5Q3pCLEVBR2lCZ1csR0FDWjhjO2dCQUNxQixnQkFMMUI5eUIsRUFHSzBVLE1BQU13aUIsSUFDVkM7ZUFDTSw0QkFMUG4zQixFQUdEMEIsR0FDRkMsSUFEUStTOztZQURHLEtBRkhqVCxHQUVHO2NBRkhBO2FBT007Y0FEU3N4QixLQU5mdHhCO2NBTVMyMUIsS0FOVDMxQjtjQU1HK0gsR0FOSC9IO2NBTUgyWCxLQU5HM1g7Y0FPTSxjQURIK0gsR0FOTmhJO2NBT1M7OztjQUNtQyxXQVI5Q3hCLEVBT0tnekIsS0FEZUQ7Y0FFTSxnQkFSMUIveUIsRUFNUXdKLEdBQ1A2dEIsUUFEYUQ7YUFFUCw0QkFSUHAzQixFQU9IbVosS0FES0MsTUFBTTVQO1dBSWhCLDRCQUFZO2tCQUVWcXBCLE1BQU03eUIsRUFBRXdCLEdBQUdDO1dBQ2pCLEdBRGNEO2dCQUFHQzs7Z0JBSWtCd1ksR0FKbEJ4WTtnQkFJWXF4QixHQUpacnhCO2dCQUlNMDFCLEdBSk4xMUI7Z0JBSUErSCxHQUpBL0g7Z0JBSU5FLEdBSk1GO2dCQUdrQjBZLEdBSHJCM1k7Z0JBR2V3VSxHQUhmeFU7Z0JBR1MwMUIsR0FIVDExQjtnQkFHR2tULEdBSEhsVDtnQkFHSEUsR0FIR0Y7a0JBSXFCeVksTUFEQUU7aUJBR1Y7OEJBSFJ6RixHQUhBalQ7a0JBTVE7OztrQkFDWCxRQVBGekIsRUFHRDBCLEdBR0EwWDtrQkFDeUIsUUFQeEJwWixFQUdpQmdXLEdBR1YrYztpQkFDaUIsR0FEckJxRTttQkFJSSxJQUFORSxLQUpFRjttQkFJd0Isc0JBSDdCaDFCLEVBSk9zUyxHQU9zQixXQVYzQjFVLEVBR0swVSxHQUFNd2lCLEdBT1ZJLE1BSG1CbjNCO2lCQUVoQixZQUZOaUMsRUFKT3NTLEdBQU13aUIsR0FJUy8yQjtlQUtQOzhCQVJScUosR0FKSGhJO2dCQVlXOzs7Z0JBQ1gsVUFiRnhCLEVBWURtWixLQVJBeFg7Z0JBU3lCLFVBYnhCM0IsRUFZT2d6QixLQVJVRjtlQVNPLEdBRHJCdUU7aUJBSUksSUFBTkUsS0FKRUY7aUJBSXdCLHNCQUg3QnRlLElBVE92UCxHQVlzQixXQWhCM0J4SixFQUlLd0osR0FZSit0QixLQVpVSixJQVNTNUU7ZUFFaEIsWUFGTnhaLElBVE92UCxHQUFNMnRCLEdBU1M1RTtpQkFYdEIveEIsRUFGSWdCOztnQkFFSmhCLEVBRk9pQjtXQUVZLE9BQW5CakIsQ0FjMkM7a0JBRS9Dd04sT0FBT29CLEVBRVhxYTtXcEN0YVQsR29Dc2FTQTthQUVXO2NBRkl0cEIsRUFBZnNwQjtjQUFZclIsRUFBWnFSO2NBQVN2cEIsRUFBVHVwQjtjQUFNcm5CLEVBQU5xbkI7Y0FFVyxXQUpBcmEsRUFFTGhOO2NBR00sZUFMRGdOLEVBRUZsUCxFQUFHa1k7Y0FJRCxXQU5BaEosRUFFSWpQO2FBSUosR0FETHEzQjtrQkFIQXAxQixNQUVBMlcsT0FGUzVZLE1BSVRveUIsSUFDK0IsT0FMckM5SSxFQUs0QyxZQUh0QzFRLElBRkc3WSxFQUFHa1ksRUFJTm1hO2FBRUMsY0FKRHhaLElBRUF3WjtXQUxHO2tCQVNMemtCLFdBQVc5TjtXcEM5YXhCO2FvQ2tib0I7Y0FGSUc7Y0FBSGlZO2NBQUhsWTtjQUFIa0M7Y0FFSyxlQUpJcEMsRUFFVG9DO2NBR00sZUFMR3BDLEVBRU5FLEVBQUdrWTtjQUlELGVBTklwWSxFQUVBRzthQUlKLEdBRExzM0IsS0FHVyxJQUFON1MsSUFITDZTLE9BR1csWUFKWDFlLElBRkc3WSxFQU1FMGtCLElBRkwyTjthQUdRLGNBTFJ4WixJQUVBd1o7V0FMRztrQkFXTDNmLFVBQVV4RDtXcEMxYnZCO2FvQzhiMEI7Y0FGRmpQO2NBQUhpWTtjQUFIbFk7Y0FBSGtDO2NBRVcsZ0JBSkhnTixFQUVSaE47Y0FFVzs7Y0FDTCxlQUxFZ04sRUFFTGxQLEVBQUdrWTtjQUlLLGtCQU5IaEosRUFFQ2pQO2NBSUU7O2dCQURYcTNCLEtBR2tCLGdCQUpiekQsR0FFQUUsSUFFSCxlQUpERCxHQUZFOXpCLEVBQUdrWSxFQUlMOGI7YUFGVSxTQUtLLEtBTFhILEdBRkY3ekIsRUFBR2tZLEVBSUQ2YjthQUdILGlCQUxERCxHQUVBRTtXQUxFO2tCQVlMZCxVQUFVM0osRUFBRXpnQjtlQUFGNnRCLE1BQUVqVDtXQUNsQjtnQkFEZ0JpVDs7Z0JBR0MxMkIsRUFIRDAyQjtnQkFHRnplLEVBSEV5ZTtnQkFHTDMyQixFQUhLMjJCOztnQkFBRXZELE9BR1BwekIsRUFBR2tZLEVBQUdqWSxFQUhDeWpCO2dCQUFGaVQ7Z0JBQUVqVDs7YUFFUCxPQUZPQSxJQUdtQztrQkFFbkRsYSxRQUFRd0csSUFBSXluQixHQUFHQztXQVlpQixtQkFaakJBLE1BWUYsZUFaREQsTUFDTXJ1QixRQUFHQztXQUNuQjtnQkFEZ0JEO2tCQUFHQztpQkFNVDtrQkFEOEJrcUIsS0FMckJscUI7a0JBS2lCdXBCLEdBTGpCdnBCO2tCQUthNHRCLEdBTGI1dEI7a0JBS1NDLEdBTFREO2tCQUtEbXFCLEtBTEZwcUI7a0JBS0YwTSxHQUxFMU07a0JBS040dEIsR0FMTTV0QjtrQkFLVm9MLEdBTFVwTDtrQkFNTixvQkFESm9MLEdBQXNCbEw7aUJBQ2xCLFNBQUp0RzttQkFFSSxJQUFKNlgsSUFBSSxXQVRKN0ssSUFNSWduQixHQUFzQkM7bUJBR3RCLFNBQUpwYztxQkFFMEI7cUNBTEkrWCxHQUFJVztzQkFLMUIsZUFMQXpkLEdBQUkwZDtzQkFMRnBxQjtzQkFBR0M7O21CQVNGLE9BRFh3UjtpQkFEVyxPQURYN1g7ZUFGTTthQURDLE9BSE1xRyxRQVc2QjtrQkFFbERGLE1BQU02RyxJQUFJeW5CLEdBQUdDO1dBU2lCLG1CQVRqQkEsTUFTRixlQVRERCxNQUNNcnVCLFFBQUdDO1dBQ2pCO2dCQURjRDtrQkFBR0M7aUJBTWY7a0JBRHNDa3FCLEtBTHZCbHFCO2tCQUttQnVwQixHQUxuQnZwQjtrQkFLZTR0QixHQUxmNXRCO2tCQUtXQyxHQUxYRDtrQkFLQ21xQixLQUxKcHFCO2tCQUtBME0sR0FMQTFNO2tCQUtKNHRCLEdBTEk1dEI7a0JBS1JvTCxHQUxRcEw7a0JBTVosNkJBRElvTCxHQUFzQmxMO2lCQUMxQjttQkFBeUIsb0JBUHZCMEcsSUFNTWduQixHQUFzQkM7bUJBQ0w7cUJBQ0c7cUNBRk1yRSxHQUFJVztzQkFFNUIsZUFGRXpkLEdBQUkwZDtzQkFMSnBxQjtzQkFBR0M7O21CQU1VOzs7aUJBRmY7O2FBREMsT0FISUEsT0FRNkI7a0JBRTVDNHFCO1dBQVc7YUFFaUIsSUFBdkJoMEIsV0FBSGlDLFdBQTBCLGNBQXZCakM7YUFBTSxpQkFBVGlDO1dBREcsUUFDaUM7a0JBRXRDeTFCOzs7O2VBRXlDO2dCQUE5QjEzQjtnQkFBSGlZO2dCQUFIbFk7Z0JBQUhrQztnQkFBdUMsYUFBcENsQyxFQUFHa1ksR0FBaUMsb0JBQTlCalk7O3dCQUFUaUM7O2FBREc7a0JBR1QwMUIsU0FBU3QzQixHQUNYLHNCQURXQSxFQUNNO2tCQU1maTFCLFFBQVEzNUIsRUFBRTJ0QjtXQUNaOzZCQUFtQkE7c0JBQUwscUNBQVFzTixFQUFFNzJCLEVBQUx1cEIsRUFBcUI7b0JBRDVCQTtvQkFBRjN0QixFQUNrQztrQkFFMUM0NUIsT0FBTzU1QixHQUFJLGVBQUpBLEVBbFlQdVIsTUFrWTBCO2tCQUV0QnNvQixZQUFhenlCO1dBQU8sR0FBUEE7YUFFa0MsSUFBdkNsSCxLQUZLa0gsS0FFUDRKLEVBRk81SixLQUVUaEQsRUFGU2dELEtBRVg2ekIsRUFGVzd6QixLQUVrQyxlQUF6QzRKLEVBQUU5UTthQUEwQixhQUFoQys2QixFQUFFNzJCLGtCcEMzZmpCLE9vQ3lmYXkxQjtXQUNHLFFBQytEO2tCQUV0RTVnQixPQUFPMFU7V0FDSSxtQkFESkE7V0FDSSxzQnBDOWZwQixPb0N5ZmFrTSx1QkFLd0I7a0JBRXhCQyxVQUFVcDFCLEVBQUV3STtlQUFGK0gsTUFBRTZTO1dBQ2xCO2dCQURnQjdTOzs7Z0JBR0hxSCxFQUhHckg7Z0JBR043USxFQUhNNlE7Z0JBR1QzTyxFQUhTMk87Z0JBQUV1aUIsT0FHUnB6QixFQUFHa1ksRUFBTmhXLEVBSFd3aEI7Z0JBQUY3UztnQkFBRTZTOzthQUVQLE9BRk9BLElBR2tDO2tCQUU5Q2lTLGdCQUFpQjN5QjtXQUFPLEdBQVBBO2FBR2UsSUFEeEJsSCxLQUZTa0gsS0FFWDRKLEVBRlc1SixLQUViaEQsRUFGYWdELEtBRWY2ekIsRUFGZTd6QixLQUdlLGVBRDFCNEosRUFBRTlRO2FBQ087d0JBRGIrNkIsRUFBRTcyQjtvQ3BDdmdCakIsT29DcWdCYTIxQjtXQUNHLFFBRWdEO2tCQUV2REMsV0FBVzV5QjtXQUNJLG1CQURKQTtXQUNJLHNCcEMzZ0J4QixPb0NxZ0JhMnlCLDJCQU00QjtrQkFFaENFLFlBQVlDLElBQUl2TTtlQUNGb04sSUFERXBOLEVBQ0F2bUI7V0FBSTtnQkFBTjJ6QjtlQUdFO2dCQURDMTJCLEVBRkgwMkI7Z0JBRUF6ZSxFQUZBeWU7Z0JBRUgzMkIsRUFGRzIyQjtnQkFFTnowQixFQUZNeTBCO2dCQUdFLG9CQURMMzJCLEVBSEM4MUI7ZUFJSSxTQUVSMTFCO2lCQUFPLFFBQVBBLEdBQ0ssV0FKRkosRUFBR2tZLEVBQUdqWSxFQUZEK0MsR0FBRjJ6QixJQUVOejBCLEVBRlFjO3FCQUFGMnpCLElBRUcxMkI7O2VBQ0QsWUFETEQsRUFBR2tZLEVBQUdqWSxFQUZEK0M7OzttQ3BDOWdCekIsT29DeWZheXlCLHdCQThCc0I7O2lCQWxhMUJ0b0I7aUJBRUFxQjtpQkF3R0lpa0I7aUJBdEdBZjtpQkF5SkErRTtpQkE3TEo5RTtpQkFrTEllO2lCQStIQTlPO2lCQVlBK087aUJBMERKbnBCO2lCQWNBTDtpQkFwTEkvRjtpQkF1QkE4RjtpQkFNQStGO2lCQUlBRTtpQkE2RkFyQjtpQkFVQUY7aUJBWUE4RTtpQkEyQ0F1aEI7aUJBUUoyRDtpQkF2UUl4QjtpQkFLQUM7aUJBS0FDO2lCQUtBQztpQkFmQUg7aUJBS0FDO2lCQWdKQS9EO2lCQXBQQWxqQjtpQkFnRkFvbEI7aUJBL0RBSjtpQkFrQkFDO2lCQWtCQUM7aUJBa0JBQztpQkE2RkF2ckI7aUJBU0EySDtpQkF5TUprRTtpQkFhQStnQjtpQkFHQUM7aUJBekJBTjtpQkFHQUM7SUFsYkc7SUZxQkc7YUd0RVZxQyxnQkFBWSxjQUFvQjthQUVoQ0MsTUFBTXgzQixHQUFJLDBCQUFxQjthQUUvQnkzQixPQUFLejNCLEdBQUksVUFBSkEsVUFBNkI7YUFFbEMwM0IsS0FBS3YzQixFQUFFSCxHQUFJLFVBQU5HLEVBQUVILE1BQUksT0FBSkEsYUFBSSxRQUFtQzthQUU5QzIzQixJQUFJMzNCO01BQ04sU0FETUE7TUFDTjtZQUNNaUMsV0FBSkMsV0FGSWxDLE9BRUFpQyxHQUZBakMsMkJBRUprQztNQUNVLFdBQVc7YUFFckIwMUIsUUFBUTUzQjtNQUNWLFNBRFVBO01BQ1Y7WUFDTWlDLFdBQUpDLFdBRlFsQyxPQUVKaUMsR0FGSWpDLDhCQUVSa0M7TUFDVSxRQUFJO2FBRWQyMUIsSUFBSTczQjtNQUNOLFNBRE1BLEtBQ04sU0FDVyxJQUFUa0MsV0FBUyxPQUFUQSxHQUNTLFdBQVc7YUFFcEI0MUIsUUFBUTkzQjtNQUNWLFNBRFVBLEtBQ1YsU0FDVyxJQUFUa0MsV0FBUyxVQUFUQSxJQUNTLFFBQUk7YUFFYjYxQixXQUFTLzNCLEdBQUksYUFBSkEsUUFBYzthQUV2Qmc0QixTQUFPaDRCLEdBQUksT0FBSkEsSUFBUzthQUVoQmk0QixPQUFLejRCLEVBQUVRLEdBQUksY0FBTlIsRUFBRVEsS0FBbUI7YUFFMUJrNEIsT0FBSzE0QixFQUFFb08sSUFBSTVOLEdBQUksbUJBQVZSLEVBQUVvTyxJQUFJNU4sS0FBNEI7YUFJdkNtNEIsU0FBT240QixHQUFJLGdCQUFKQSxLQUFtQjthQUUxQmkxQixRQUFRNUwsRUFBRS90QixHQUFJLHFCQUFjNkUsR0FBSyxZQUFMQSxFQUFwQmtwQixFQUFpQyxFQUEvQi90QixFQUFrQzthQUU1Qzg4QixTQUFPcFgsR0FDRCxJQUFKaGhCLEVBQUksWUFDUixRQURJQSxFQURLZ2hCLEdBRVQsT0FESWhoQixDQUVIOzs7OztPQTdDQ3UzQjtPQU1BRztPQUVBQztPQUtBQztPQUtBQztPQUtBQztPQXJCQU47T0FFQUM7T0F3QkFNO09BRUFDO09BRUFDO09BRUFDO09BSUFDO09BRUFsRDtPQUVBbUQ7OzthQ2pDQUMsZ0JBQVksZ0JBSWY7YUFFR0MsUUFBTWpQLEdBQ1IsbUNBRWE7YUFFWCtILElBQUlqeEIsRUFBRWtwQjtNQUNSLFlBRE1scEIsS0FDTixLQURRa3BCO01BQ1I7Z0JBRFFBLDhCQUNKa1AsS0FESWxQLE9BQ0prUDtnQkFESWxQLGdCQUNKa1AsS0FESWxQLE9BQ0prUCxPQVlZO2FBS2RDLEtBQUtuUDtNQUNQLFNBRE9BLEtBQ1AsU0FFc0IsSUFBYm9QLGdCQUFhLE9BQWJBLFFBREEsYUFDb0I7YUFFM0JDLFNBQVNyUDtNQUNYLFNBRFdBLEtBQ1gsU0FFc0IsSUFBYm9QLGdCQUFhLFVBQWJBLFNBREEsUUFDeUI7YUFLaENFLE9BQUt0UDtNQUNQLFNBRE9BO01BQ1A7OztjQUtrQnJjLGFBTlhxYywyQkFNV3JjO1FBRmhCLFFBSktxYztRQUlMO01BRk8sYUFPQTthQUVQdVAsU0FBU3ZQO01BQ1gsU0FEV0E7TUFDWDs7O2NBS2tCcmMsYUFOUHFjLDJCQU1PcmM7UUFGaEIsUUFKU3FjO1FBSVQ7TUFGTyxRQU9LO2FBS1p3UCxPQVlFeFA7TUFBSyxhQUFMQSxVQVhlMFAsT0FBS1IsS0FXcEJsUDtNQVZGO1dBRHNCa1A7Y0FHYkUsUUFIYUYsUUFHSnZyQixLQUhJdXJCLFFBSWhCMXpCLE9BREc0ekI7YUFIUU0sS0FPSCxVQUhSbDBCLFNBRUssV0FGTEE7Y0FKV2swQixLQUlYbDBCLElBSmdCMHpCLEtBR0p2ckI7O1FBRFQsV0FGUStyQjtRQUVSLE9BRkVELE1BVzJEO2FBRXRFRSxXQUFTM1AsR0FDWCxhQURXQSxRQUNDO2FBRVY0UCxTQUFPNVAsR0FDVCxPQURTQSxJQUNEO2FBRU42UCxPQVFFMTVCLEVBQUU2cEI7TXRDNUhULElzQ3FIa0JrUCxLQU9UbFA7TUFOSjtXQURha1A7Y0FHSkUsUUFISUYsUUFHS3ZyQixLQUhMdXJCO1VBSVgsV0FHQS80QixFQUpPaTVCO2NBSElGLEtBR0t2ckI7O1FBRFQsU0FLYzthQUV2Qm1zQixPQVFFMzVCLEVBQUVrUCxPQUFLMmE7VUFQSTNrQixLQU9UZ0ssT0FQYzZwQixLQU9UbFA7TUFOVDtXQURrQmtQO1VBSUw7V0FESkUsUUFIU0Y7V0FHQXZyQixLQUhBdXJCO1dBSUwsa0JBR1gvNEIsRUFQV2tGLEtBR0orekI7V0FISS96QjtXQUFLNnpCLEtBR0F2ckI7O1FBRFQsT0FGSXRJLEtBT29CO2FBRWpDMDBCLFNBQVNDLEdBQUdDO01BQ2QsYUFEV0Q7TUFDWDtRQUNFLFNBRllDO1FBRVo7a0JBRllBOzs7O2tCQUFIRDs7Ozs7O2tCQUFHQzs7a0JBQUhEO2tCQVNQLFFBVE9BO2tCQUFHQyxRQUFIRCxNQUFHQyxRQUFIRCxNQUFHQyxRQUFIRCxNQUlQLFFBSk9BO2lCQVlDO2FBSVZFLFNBQU9sUTtNQUNULFNBQVF0TyxJQUFJclk7UUFBTyxHQUFQQTtjQUVPdkMsRUFGUHVDLEtBRVVzSyxLQUZWdEs7VUFFa0MsVUFBM0J2QyxpQnRDM0p0QixPc0N5Slc0YSxJQUVjL047UUFEWCxRQUM0QztNQUZ2RCxTQURTcWM7TUFDVCxzQnRDekpILE9zQ3lKV3RPLGVBSUc7YUFFVHllLFVBQVFuUSxFQUFFL3RCLEdBQUkscUJBQWM2RSxHQUFLLFdBQUxBLEVBQXBCa3BCLEVBQWlDLEVBQS9CL3RCLEVBQWtDO2FBRTVDbStCLFNBQU96WSxHQUNELElBQUpxSSxFQUFJLFlBQ1IsVUFESUEsRUFES3JJLEdBRVQsT0FESXFJLENBRUg7Ozs7O09BdklDZ1A7T0FXQWpIOztPQStCQXVIO09BV0FDO09BWEFEO09BYkFIO09BS0FFO09BTEFGO09BdkJBRjtPQTZEQU87T0FjQUc7T0FHQUM7T0FHQUM7T0FVQUM7T0FVQUM7T0FnQkFHO09BT0FDO09BRUFDOzs7OzthQ2pJQUM7TUFBUSw2QkFFREEsNEJBREMsUUFDZTthQUN2QjdEO01BQU8sNkJBRUFBLDBCQURDLFFBQ2E7YUFFckI4RCxVQUFVcjRCO01BQ0gsYUFER0EsWUFDWixxQkFEWUEsT0FDSCxpQkFBcUQ7YUFHeERzNEIsU0FBaURGLE1BQU05aEI7TXZDM0NoRSxJdUMyQ2dFd007TUFBSztrQkFBTEE7U0FBSyxPQUFMQTs7WUFPOUMsSUFESnVTLEdBTmtEdlMsT0FNdERzUyxHQU5zRHRTLE9BTzlDLGVBUHdDc1YsTUFNaERoRDtZQUNRO2tCQVA4Q3RTLElBTWxEdVM7O2NBQ0k7b0JBQ0FrRCxhQUFIOTJCLDBCQUFHODJCLElBRkpsRDtjQUlEOztZQWlCRTtlQTNCaUR2UzthQTJCakQsa0JBQUw1a0I7YUFBSyxpQkFBTEEsa0JuQjNDTHVNLGlCbUIyQ0t2TTthQTNCc0Q0a0I7Ozs7Ozt1QkFjMUQsSUFEc0IwVixZQUN0QixzQkFEc0JBLElBYm9DMVY7Y0FZakM7WUFJYiwrQkFoQndDc1Y7WUFnQnhDLFlBRUEsSUFBTEssZUFBSyxVQUFMQSxJQWxCbUQzVjtZQWlCaEQ7OztZQUtWLElBRE05aUIsRUFyQm9EOGlCO1lBc0IxRCxHQURNOWlCLGFBQ2lCLFVBRGpCQTtZQUM0QixTQUQ1QkEsS0FFYTtZQURuQixJQUVNM0IsRUFBSixzQkFISTJCO1lBR0osT0FISUE7WUFHSixVQUFJM0IsRUF4Qm9EeWtCOztRQUtuQyxPQUxtQ0EsSUEyQnBCO2FBR25DNFYsVUFBNkNoNkI7TUFFcEQ7aUJBRm9EQTtRQUVwRDtTQUNZOztTQURaO2tCQUVrQixJQUFUK0MsVUFBUyxVQUFUQTs7WUFFTyxJQUNWNlUsRUFEVSxTQU5vQzVYO1lBTXBDLFVBQ1Y0WDthQUNVOztjQUZBLFNBQ1ZBLE1BQW9CLElBQWRraUIsSUFBTmxpQixLQUFvQixPQUFwQkEsRUFBb0IsVUFBZGtpQjtjQUVEOztZQUVFOzsrQkFBTHQ2QjthQUFLLGtCQUFMQSxrQm5CekRMdU0saUJtQnlES3ZNO1lBQWU7Ozs7cUJBQ0csSUFBTnU2QixZQUFNLE9BQU5BO1lBQ0EsSUFBSjU1QixFQUFJLG1CQWJnQ0g7WUFhaEMsYUFBSkc7WUFBSSxPQUFKQTs7WUFFWixJQURNbUI7WUFDTixHQURNQSxhQUNpQixVQURqQkE7WUFDNEIsYUFENUJBO3NCQWQwQ3RCO3dCQWlCM0Msc0JBSENzQixhQUdtQzthQUcxQzI0QjtNQUFPLFVBRUcsSUFBTGo2QixXQUFLLGlCQUFMQSxHQURHLFFBQ2E7YUFHakJrNkIsVUFBeUNsNkI7TUFDL0M7aUJBRCtDQTtRQUMvQzs7a0JBQ2tCLElBQU40WCxVQUFNLE9BRjZCNVgsYUFFN0IsT0FBTjRYLEVBQU07Ozt3QkFDZSxPQUhjNVgsYUFHZDs7O1lBRTdCLElBRE1zQjtZQUNOLEdBRE1BLGFBQ2lCLFVBRGpCQTtZQUM0QixhQUQ1QkE7c0JBSnFDdEI7MENBSXJDc0I7O1FBSFYsVUFRVSxVQVRxQ3RCO1FBU3JDO1FBQ0ksU0FDYTthQUd6Qm02QjtNQUFPLFVBRU0sSUFBUnRFLGNBQVEsaUJBQVJBLE1BREcsUUFDbUI7YUFFdkJ1RSxVQUFVdDZCLEVBQUVFO01BQ2xCLE9BRGdCRjtRQUdSLG9CQUhVRTtRQUdWO1VBRUYsSUFERytDO1VBQ0gsVUFMWS9DO1VBS1o7V0FDaUIsa0JBTlBGLFVBQUVFO1dBTUs7Ozt1QkFGZCtDLEVBRUVzM0IsT0FGRnQzQixFQUVNNlUsR0FBRzJlO1FBQ04sWUFQTXYyQjtNQUNILFlBREdBLE9BT087YUFVdkJzNkIsTUFBTXg2QjtNdkNySVg7UXVDdUllOztTQVJPLGdCQU1YQSxFQUVEc2tCO1NBUlk7OztpQkFRWkEsU0FSSy9nQjtRQUFPLFNBQVZ1VTtRQUFVLE9BQWR5aUI7TUFPSzthQUdScnRCLEtBQUtoTjtNQUNELGlCQURDQTtNQUNELFVBQ00sSUFBTCtDLFdBQUssS0FGTC9DLEdBRUssT0FBTCtDO01BQ0csZUFBYTthQUdyQnczQixRQUFNdjZCLEdBQ0YsaUJBREVBLEdBQ0YsU0FDTSxnQkFDRixRQUFFO2FBR1Z3NkIsT0FBS2g3QixFQUFFaTdCO01BRVA7UUFBTSxpQkFGQ0E7UUFFRCxjQUNDMTNCLFdBQUssS0FITDAzQixNQUdzQixXQUh4Qmo3QixFQUdFdUQ7UUFDRyxTQUVIO2FBS1AyM0IsS0FBS2w3QixHQUFJLHVCQUFKQSxLQUF5RDthQUU5RG03QixVQUFRLzRCO01BQ1Y7TUFBd0IsbUNBQXFCekIsRUFBRXlCLEdBQUssVUFBUHpCLEVBQUV5QixFQUFpQixFQUR0REEsU0FDaUU7YUFHekVnNUIsVUFBVTU2QjtNQUNaLElBQUkwNUI7TUFBSjs7aUJBUUUsSUFBSWgzQixFQVJGZzNCO2lCQVFGLE9BQUloM0IsSUFBSixzQkFUVTFDOzJCQUNSMDVCLGNBVXFCLGdCQVhiMTVCLEVBU04wQzsyQkFHSyxFQUFDO2FBR1ZtNEIsV0FBUzc2QjtNQUNYLElBQUkwNUI7TUFBSjs7aUJBRUUsSUFBSWgzQixFQUZGZzNCO2lCQUVGLE9BQUloM0IsSUFBSixxQkFIUzFDOzJCQUNQMDVCLGNBSXFCLGVBTGQxNUIsRUFHTDBDOzJCQUdLLEVBQUM7YUFHVm80QixXQUFXLzJCO01BRXlCLHFCQUZ6QkEsR0FFeUIsK0JBQXFDO2FBS3pFZzNCLEtBQUt6L0IsRUFBRTBFLEdBQTBDLGNBQTFDQSxHQUFrQyx1QkFBcEMxRSxVQUFvRDthQUN6RDAvQixNQUFNMS9CLEVBQUUwRSxHQUFzQyxrQkFBeEMxRSxFQUF3QyxLQUF0QzBFLEtBQThDO2FBQ3REaTdCLE1BQU0zL0IsR0FBSSxrQkFBSkEsTUFBOEM7YUFFcEQ0L0IsS0FBSzE3QixFQUFFUTtNQUNUOzs7Ozs7bUJBQXVELGNBRDlDQSxHQUNpQyxlQUFLLFdBRHhDUixXQUNzRCxLQUFJO2FBRS9EMjdCLE1BQU0zN0IsRUFBRVE7TUFBSTs7Ozs7O21CQUFpRCxjQUFyREEsR0FBK0MscUJBQWpEUixVQUE2RCxLQUFJO2FBQ3ZFNDdCLE1BQU01N0I7TUFBSSxzQ0FBMkMscUJBQS9DQSxZQUErRDtRQUVyRTY3QjthQUNBQyxNQUFNOTdCO01BQUksc0NBQXlDLHVCQUE3Q0EsS0FBbUQsS0FBRzthQUl4RCs3QixLQUFnRC83QixFQUFFUTtNQUN4RDtNQUNBLFVBQVUsTUFGOENBO01BR3hEO01BQ0EsVUFKc0RSLEVBSTFDLEtBSjRDUTtNQUt4RDs2QkFDZ0I7YUFDZHc3QixVQUF3RGg4QjtNQUF4RDtPQUVVOztPQUZWOztjQUdVb1ksV0FBSDdVO1VBQ0w7VUFDQSxXQUxzRHZELEVBR2pEdUQ7VUFHTDtVQUNBLFVBUHNEdkQsRUFHOUNvWTtVQUlSOztjQUVRK2UsWUFBSkQ7VUFDSjtVQUNBLFVBWHNEbDNCLEVBU2xEazNCO1VBR0o7VUFDQSxVQWJzRGwzQixFQVM5Q20zQjtVQUlSO2dCQUVTO2dCQUNEO2lCQUNHLGlDQUFzQjs7Ozs7O09BNUVuQytEO09BRUFDO09BSUFDO09BZUFDO09BU0FDO09BekNBTjtPQVpBeHRCO09BTUF1dEI7T0FsREFOO09BbUJBRTtPQWhGQVQ7T0FxR0FZO09BZ0VBUztPQUNBQztPQUNBQztPQUVBQztPQUdBQztPQUNBQztPQUVBQztPQUNBQztPQUlJQzs7YUNyTEpFLFNBQU8zN0I7TUFDVjtnQkFEVUE7T0FFVix3QkFESThRO09BRUosb0JBRElDO01BQ0osVUFBSTdRLElBREE2USxJQUNBN1EsRUFDc0Q7YUFFdkQwN0IsU0FBU3A2QixHQUFJLGtCQUFKQSxZQUEwQzthQUNuRHE2QixXQUFTcjZCLEdBQUksV0FBSkEsWUFBbUM7YUFFNUNzNkIsTUFBSXQ2QixFQUFFOEIsSUFBSUM7TXhDeENmLFF3Q3dDV0QsWUFBSUMsV0FBTi9CLE9BQU0rQixXQUFKRDtPQUdILGtCQUhDOUIsS0FBRThCLElBQUlDO01BRVAsa0NBQ2lDO2FBR3BDdzRCLE9BQUtwVixJQUFJeEssT0FBT00sSUFBSVAsT0FBTzNZO014QzlDaEM7OztRd0M4Q2dDQTs7OztRQUFsQjRZOzs7VUFBSndLLFNBQXNCcGpCLFdBQWxCNFk7Ozs7UUFBV0Q7OzsrQkFBSk8sT0FBV2xaLFdBQVAyWTtPQUtwQix1QkFMS3lLLE9BQUl4SyxPQUFPTSxJQUFJUCxPQUFPM1k7TUFHeEIsbUNBRStDO2FBR2xEeTRCLE1BQUl4NkIsRUFBRThCO014Q3REWCxRd0NzRFdBLFVBQUY5QixRQUFFOEIsS0FHSCw2QkFIQzlCLEtBQUU4QjtNQUVQLGtDQUNpQzthQUdoQzI0QixTQUFPejZCLEdBQUksT0FBSkEsSUFBYzthQUVyQjA2QixRQUFNMTZCLEdBQUksaUJBQWU7YUFFekIyNkIsTUFBTTM2QjtNQUNSLGdCQURRQSxLQUNSLDRCQURRQSxNQUNSLFFBRWlDO2FBVS9CNDZCLE9BQU81NkIsRUFBRTY2QjtNQUNYLFlBRFM3NkIsS0FDVCxRQURTQSxLQUNULFdBQ0krNkI7O1dBQ0EvZSxjQUZBOGUsVUFET0Q7VUFJd0IsaUJBRC9CN2U7UUFFSix1QkFGSUE7U0FFcUMsSUFKckM4ZSxVQURPRDtVQU9KOztVQUNBO1FBRVUsSUFBYkcsV0FBYSxrQkFQYmhmO1FBVUosS0FiU2hjLE9BVUxnN0IsYUFWS2g3QjtRQWFULE9BSElnN0I7UUFHSixPQVZJaGY7UUFVSixJQWJTaGMsT0FBRTY2QixhQUFGNzZCO1VBaUJULElBaEJJODZCLFVBRE9ELGFBQUY3NkIsS0FrQlQ7O3NDQUFFO2FBb0NBaTdCLFNBQVNqN0IsRUFBRW9CO01BQ2IsSUFBSTg1QixJQURPbDdCO01BQ1gsR0FEV0EsUUFDUGs3QixJQUNvQixPQUZibDdCO01BRXVCLHNCQUZ2QkEsS0FDUGs3QixJQURTOTVCO01BRXFCLE9BRDlCODVCO01BQzhCLFFBRWI7UUFFbkJDLDhCQUNBQzthQUVJQyxnQkFBZ0JyN0IsRUFBRTBNO01BQ3hCO1lBQUl3dUIsSUFEa0JsN0I7UUFDdEIsR0FEc0JBLFFBQ2xCazdCLElBQ29CLE9BRkZsN0IsRUFIcEJtN0I7UUFJRixJQUVJMzhCLEVBQUksZ0JBSGN3QixLQUNsQms3QixJQURvQnh1QjtRQUdoQixTQUFKbE8sR0FFRSxPQUxnQndCLEVBSHBCbTdCO1FBU0csT0FMREQsTUFFQTE4QjtRQUdDLFNBQXVCO2FBRXRCODhCLG1CQUFtQnQ3QixFQUFFME07TUFDM0I7WUFBSXd1QixJQURxQmw3QjtRQUN6QixHQUR5QkEsUUFDckJrN0IsSUFDb0IsT0FGQ2w3QixFQVZ2Qm83QjtRQVdGLElBRUk1OEIsRUFBSSxtQkFIaUJ3QixLQUNyQms3QixJQUR1Qnh1QjtRQUduQixTQUFKbE8sR0FFRSxPQUxtQndCLEVBVnZCbzdCO1FBZ0JHLE9BTERGLE1BRUExOEI7UUFHQyxTQUF1QjthQUV0Qis4QixtQkFBbUJ2N0IsRUFBRTBNO01BQzNCO1lBQUl3dUIsSUFEcUJsN0I7UUFDekIsR0FEeUJBLFFBQ3JCazdCLElBQ29CLE9BRkNsN0IsRUFsQnZCbzdCO1FBbUJGLElBRUk1OEIsRUFBSSxtQkFIaUJ3QixLQUNyQms3QixJQUR1Qnh1QjtRQUduQixTQUFKbE8sR0FFRSxPQUxtQndCLEVBbEJ2Qm83QjtRQXdCRyxPQUxERixNQUVBMThCO1FBR0MsU0FBdUI7YUFFMUJnOUIsY0FBY3g3QixFQUFFdEIsRUFBRSs4QixPQUFPMTVCO01BQzNCLFNBRG9CMDVCO01BQ3BCOzs7O2FBRDJCMTVCOzZDQUFUckQsS0FBU3FELFdBQVAwNUI7TUFFZjtNQURMLElBRUlDLGFBSFkxN0IsT0FBVytCO01BRXlCLEdBRnBDL0IsT0FHWjA3QixhQUM0QixPQUpoQjE3QixFQUFXK0I7TUFLM0IsaUJBTGtCckQsRUFBRSs4QixPQUFKejdCLFVBQVcrQjtNQUszQixPQUZJMjVCO01BRUosUUFDMEI7YUFFeEJDLGFBQWEzN0IsRUFBRXRCLEVBQUUrOEIsT0FBTzE1QjtNQUNWLHFCQUREL0IsRUFDQyxxQkFEQ3RCLEdBQUUrOEIsT0FBTzE1QixJQUMyQjthQUVuRDY1QixXQUFXNTdCLEVBQUV0QjtNQUNmLDhCQURlQSxHQUNmLGFBRGFzQixPQUNUK0I7TUFBSixHQURhL0IsT0FFVDA3QixhQUM0QixPQUhuQjE3QixFQUNUK0I7TUFHSixpQkFKZXJELElBQUZzQixVQUNUK0I7TUFHSixPQUZJMjVCO01BRUosUUFDMEI7YUFFeEJHLFVBQVU3N0IsRUFBRXRCLEdBQWlCLGtCQUFuQnNCLEVBQW1CLHFCQUFqQnRCLEdBQTJDO2FBRXZEbzlCLFdBQVc5N0IsRUFBRSs3QixJQUNmLG9CQURhLzdCLEVBQUUrN0IsY0FDdUI7YUErQnBDQyxZQUFZaDhCLEVBQUV5QyxHQUFHVjtNQUNuQixTQURtQkEsWUFDbkIsa0NBRG1CQTtNQUVqQjtNQWJGLEdBV2MvQixlQUFLK0IsU0FYaUIsT0FXdEIvQixFQUFLK0I7TUFDbkIsSUE1QnFCazZCLGVBQWNuNkIsSUEyQnJCOUIsS0EzQjBCazhCLFFBMkJyQm42QixJQVg2QixLQVdsQy9CO01BMUJaO2lCQURzQ2s4QjtVQUc1QixJQUFKNzlCLEVBQUksTUF3QklvRSxRQTNCbUJYLElBQUtvNkI7VUFHNUIsU0FBSjc5QjtZQUVDOzRCQUxZNDlCLGVBR2I1OUI7YUFFQyxNQUwwQnlELE1BRzNCekQ7YUFFQyxVQUwrQjY5QixVQUdoQzc5QjthQUhhNDlCO2FBQWNuNkI7YUFBS282Qjs7WUEyQjFCbDhCLE9BM0JPaThCLHFCQTJCUGo4QjtVQUhkLE9BR2NBLE9BM0JPaThCOzRCQTJCRmw2QixJQU1IO1VBQ2hCO3NDQUFFO2FBRUFzNkIsY0FBYzE2QixHQUFHM0IsR0FDbkIsY0FEZ0IyQixHQUFHM0IsWUFDWTthQTRDN0JzOEIsZUFBZXQ4QixFQUFFOUIsRUFBRVE7TUFDckIsZ0NBRHFCQSxHQUVQODlCLFlBQVM3ZTtNQUNyQjtXQURxQkEsTUFqQkY0ZTtVQW1CWCxJQWVKRSxRQWZJLGdCQUpXLzlCLEVBRUVpZjtVQUViLFVBZUo4ZTtZQWRvQixVQUhaRDtjQUlQLFNBTlV4OEIsRUFtQlh5OEI7Y0FiQyxRQUpnQjllLFlBQVQ2ZSxZQUFTN2U7O1lBT2hCLElBeEJRb1AsTUFpQlFwUDtZQWhCdkIsR0FEcUI0ZSxTQUFOeFAsTUFDTTtZQXVCZCxJQXRCRCx3QkFhZXJ1QixFQWZOcXVCO3NCQWxCTTJQO2NBNEJsQixRQVZZM1AsY0FSZiw0QkF1QnFCcnVCLEdBdkJMNmY7Y0FDZDttQkFEZ0JvZSxTQUFGcGU7cUJBa0JUcWUsS0FsQldEOztrQkFFViwwQkFxQmFqK0IsRUF2Qkw2ZjtrQkFFUjs7Ozs7Ozs7OzsrQkFDMEMsUUFIbENBO2tCQUVSLElBZ0JEcWUsS0FsQlNyZTsrQkFtQmIsTUFJa0I3ZixFQWZOcXVCLE1BVVI2UCxPQVZRN1AsV0FVUjZQOzs7O2NBTEosUUFMWTdQLGNBS1o7Y0FoQ1MsVUFTUzJQOzs7bUNBTmQ7Y0E2QkosSUF0QkgsMEJBZ0NxQmgrQixHQWhDTHUyQixNQUFFajdCO2NBQ2hCO21CQURrQjJoQixPQUFGM2hCLEVBQ0M7Z0JBQ2QsbUJBOEJnQjBFLEVBaENIMUUsT0FERzBpQztrQkFHSyxRQUZSMWlDLFVBRVEsSUFGVmk3QixnQkFBRWo3QjtnQkFHYixtQkE2QmdCMEUsRUFoQ0gxRTtrQkFLWCxRQUxXQTtnQkFJZCxTQUpZaTdCO2tCQUlTLFFBSlBqN0IsVUFJTyxJQUpUaTdCLGdCQUFFajdCOzs7cUJBd0JmLE1BUWtCMEUsRUFoQ0h3ZSxTQWlCSDZQLG9CQWpCRy95Qjs7WUF5Q1gsSUFDV2dqQyxrQkFBUEM7WUFDSixXQVhVajlCLEVBV0csV0FYRDlCLEVBVVIrK0I7WUFESixJQVBPVCxZQUFTN2UsSUFRTHFmOztVQUdDLFVBWExSO1lBWVAsU0FkVXg4QjtZQWVWLFNBZlVBLEVBbUJYeThCO1lBSkMsUUFiZ0I5ZSxZQUFUNmUsWUFBUzdlOztvQkFpQmpCOGU7WUFEQyxTQWhCZ0I5ZSxZQUFUNmUsU0FpQlJDLFFBakJpQjllO1VBa0JoQixTQXBCVTNkLEVBbUJYeThCO1VBZkksSUFnQkgsS0FsQmdCOWUsWUFBVDZlLFNBaUJSQyxRQWpCaUI5ZTs7UUFxQnJCLGdCQXJCWTZlO1FBcUJaLFlBQXdCLFNBdkJUeDhCLEVBRUh3OEIsZUFzQkg7YUFFVFUsU0FBU2w5QixFQUFFK0I7TUFDUyxRQURUQSxVQUFGL0IsT0FBRStCLE1BSVQsT0FKU0EsSUFJVDtNQUZBLHVDQUVpQjthQUluQm83QixTQUFPbjlCO01BQ1QsU0FBUXlaLElBQUl6ZjtRQUVWLEdBSE9nRyxRQUNHaEcsRUFFYztRQUV0Qiw0QkFMS2dHLEtBQ0doRyxHQUlSLEtBSlFBO1FBS0ssVUFEVDZFLGlCeENyVFgsT3dDaVRXNGEsZ0JBS21CO01BTDNCOzRCeENqVEgsT3dDaVRXQSxlQU9IO2FBRUgyakIsVUFBUXA5QjtNQUNWLFNBQVF5WixJQUFJemY7UUFFVixHQUhRZ0csUUFDRWhHLEVBRWM7UUFFdEIsNEJBTE1nRyxLQUNFaEcsR0FJUixLQUpRQTtRQUtTLGFBTFRBLEVBSUo2RSxrQnhDL1RYLE93QzJUVzRhLGdCQUt1QjtNQUwvQjs0QnhDM1RILE93QzJUV0EsZUFPSDthQUVINGpCLFVBQVFyOUIsRUFBRStMO01BQWUsMkJ4Q3BVOUIsT3dDbUlLa3ZCLFNBaU1RajdCLFNBQUUrTCxJQUErQjthQUV6Q3V4QixTQUFPdGpDLEdBQ0QsSUFBSmdHLEVBQUksYUFDUixVQURJQSxFQURLaEcsR0FFVCxPQURJZ0csQ0FFSDthQWFDdTlCLFNBQVN2OUIsRUFBRW5CO01BQ2IsSUFBSTY4QixhQURPMTdCO01BQ1gsR0FEV0EsT0FDUDA3QixhQUM0QixPQUZyQjE3QjtNQUUrQixzQkFGL0JBLFVBQUVuQjtNQUU2QixPQUR0QzY4QjtNQUNzQyxRQUVoQjthQUV4QjhCLGFBQWF4OUIsRUFBRW5CO01BQ2pCLElBQUk2OEIsYUFEVzE3QjtNQUNmLEdBRGVBLE9BQ1gwN0IsYUFDNEIsT0FGakIxN0I7TUFHZixpQkFIZUEsVUFBRW5CO01BR2pCLE9BRkk2OEI7TUFFSixRQUMwQjthQUV4QitCLGFBQWF6OUIsRUFBRW5CO01BQ2pCLElBQUk2OEIsYUFEVzE3QjtNQUNmLEdBRGVBLE9BQ1gwN0IsYUFDNEIsT0FGakIxN0I7TUFHZixpQkFIZUEsVUFBRW5CO01BR2pCLE9BRkk2OEI7TUFFSixRQUMwQjthQUV4QmdDLGFBQWExOUIsRUFBRW5CO01BQ2pCLElBQUk2OEIsYUFEVzE3QjtNQUNmLEdBRGVBLE9BQ1gwN0IsYUFDNEIsT0FGakIxN0I7TUFHZixpQkFIZUEsVUFBRW5CO01BR2pCLE9BRkk2OEI7TUFFSixRQUMwQjthQUV4QmlDLGFBQWEzOUIsRUFBRW5CLEd4QzlXcEIsT3dDNFZLMitCLGFBa0JheDlCLEVBQUVuQixFQUNzQzthQUVyRCsrQixhQUFhNTlCLEVBQUVuQjtNQUM2QixJQUQ3QmtaLElBQzZCLGFBRDdCbFosVUFyQmYyK0IsYUFxQmF4OUIsRUFBRStYLElBQ3NDO2FBRXJEOGxCLGFBQWE3OUIsRUFBRW5CLEd4Q3BYcEIsT3dDa1dLNCtCLGFBa0JhejlCLEVBQUVuQixFQUNzQzthQUVyRGkvQixhQUFhOTlCLEVBQUVuQjtNQUM2QixJQUQ3QmtaLElBQzZCLGlCQUQ3QmxaLEdBQ3FDLG9CQUR2Q21CLEVBQUUrWCxJQUNzQzthQUVyRGdtQixhQUFhLzlCLEVBQUVuQixHeEMxWHBCLE93Q3dXSzYrQixhQWtCYTE5QixFQUFFbkIsRUFDc0M7YUFFckRtL0IsYUFBYWgrQixFQUFFbkI7TUFDNkIsSUFEN0JrWixJQUM2QixpQkFEN0JsWixHQUNxQyxvQkFEdkNtQixFQUFFK1gsSUFDc0M7Ozs7T0EvVnJEb2lCO09BTUFDO09BQ0FDO09BRUFDO09BTUFDO09BUUFDO09BTUFDO09BRUFDO09BRUFDO09BaUtBMEI7T0F1RUFhO09BcktBakM7T0FTSUk7T0FnQkFFO09BUkFEO09BMkJKTTtPQU9BQztPQWxCQUw7T0FRQUc7T0FrR0FXO09BdEZBUjtPQWdDQUU7T0F3RkFtQjtPQVVBQztPQVVBQztPQUVBQztPQWdCQUM7O09BTUFDO09BcUJBSTtPQUhBRDtPQWxCQUg7T0FxQkFJO09BSEFEO09BWkFGO09BcUJBSztPQUhBRDtPQVpBSDtPQXFCQU07T0FIQUQ7O2FwQ2xXQUUsdUJBQXFCLG1CQUFvQjthQUd6Q0MsZ0JBQWdCeGdDLFNBQVMwRDtNQUMzQixZQUQyQkEsWUFDM0IsV0FEMkJBO01BRzNCO2VBSGtCMUQ7ZUFFZHlnQztlQUVGLFlBQTBCLGVBSlZ6Z0MsU0FFZHlnQyxXQUF3QkMsTUFFdUM7YUFFakVDLGdCQUFnQjNnQyxVQUNsQixnQkFEa0JBLFNBQ007YUFHdEI0Z0MsYUFBYTVnQztNQUNDLGtDQUNoQjFEO01BQ0U7O1VBRkV1a0MsV0FDSnZrQyxFQUVJLFlBQTBCLGdCQUpmMEQsU0FFZjFEO1FBQ0UsU0FERkE7O1FBSUEsNEJBTEl1a0MsWUFLNEI7YUFHOUJDLGVBQWU5Z0MsU0FBUzBEO01BQzFCLFlBRDBCQSxZQUMxQixXQUQwQkE7TUFHYiw4QkFISTFELFNBRWJ5Z0MsV0FBd0JDLFNBQzhCO2FBYXhESyxlQUFlQztNQUFVLEdBQVZBLFNBRUQsSUFBVEMsTUFGVUQsV0FFRCxZQUFUQyxPQURHLFFBQ2dDO2FBU3hDQywrQkFHQTVnQyxJQUFJNmdDO01BQU8sVUFBWDdnQztPQUFXLE9BQVhBO2dCQUVBLGFBRkk2Z0M7Z0JBSUosYUFKSUE7Z0JBZ0NKLGNBaENJQTtpQkFzQ0osY0F0Q0lBOztPQUFPLE9BQVg3Z0M7Z0JBTUEsSUFEZTBnQyxRQUxmMWdDLE9BTTBCLDRCQURYMGdDLFNBTFhHOztVQVFKLElBRG9CQyxVQVBwQjlnQyxPQVErQiw0QkFEWDhnQyxXQVBoQkQ7O2NBU2dCRSxVQVRwQi9nQyxPQVNhbEMsTUFUYmtDO1VBVThCLGFBRGpCbEMsTUFDaUIsZUFEVmlqQyxhQVRoQkY7O2NBV2tCRyxVQVh0QmhoQyxPQVdlL0IsUUFYZitCO1VBYWlCLGFBRkYvQixRQUVFLGVBRksraUMsYUFYbEJIOztjQWNzQkksVUFkMUJqaEMsT0FjbUI1QixRQWRuQjRCO1VBZ0JxQixhQUZGNUIsUUFFRSxlQUZLNmlDLGFBZHRCSjs7Y0FpQmtCSyxVQWpCdEJsaEMsT0FpQmV6QixRQWpCZnlCO1VBbUJpQixhQUZGekIsUUFFRSxlQUZLMmlDLGFBakJsQkw7O2NBb0JvQk0sU0FwQnhCbmhDLE9Bb0Jlb2hDLFVBcEJmcGhDO1VBVDRCLEdBNkJKbWhDLFNBM0JYLFNBMkJXQSxvQkEzQm5CRTtVQThCSyxpQ0FIS0QsZ0JBcEJYUDs7VUF5QkosSUFEYVMsVUF4QmJ0aEMsT0F5QndCLDRCQURYc2hDLFdBeEJUVDs7Y0EwQnlCL2hDLE1BMUI3QmtCLE9BMEJvQnVoQyxVQTFCcEJ2aEM7d0JBMEJvQnVoQyxVQUFTemlDLE1BMUJ6QitoQzs7Y0E0QjJCN2hDLFFBNUIvQmdCLE9BNEJzQndoQyxVQTVCdEJ4aEM7d0JBNEJzQndoQyxVQUFTeGlDLFFBNUIzQjZoQzs7Y0FpQzhCbmhDLFNBakNsQ00sT0FpQ3VCTCxVQWpDdkJLO3dCQWlDdUJMLFVBQVdELFNBakM5Qm1oQztpQkFvQ0osSUFEeUJoaEMsUUFuQ3pCRyxPQW9DQSxjQUR5QkgsUUFuQ3JCZ2hDLE1Bc0NpQzthQTBHckNZLHdCQUF3Qi9pQyxPQUMxQixhQUQwQkEsY0FPWDthQTZCYmdqQyxjQUFjQztNQUErQiw4QkFBL0JBLFdBQXVEO2FBR3JFQyxrQkFBa0J6OEIsSUFBSTA4QjtNQUN4QjtnQ0FEb0IxOEI7T0FDcEIsUUFEb0JBLFNBQUkwOEI7T0FDeEIsS0FBSTk5QixNQUNBKzlCO01BREo7UUFHZ0I7dUJBSFovOUIsWUFDQSs5QjtTQUdGLDBCQURJOWpCO1FBRUosS0FOa0I3WSxTQUtkNDhCLFVBSkZoK0I7UUFLRixTQURJZytCO1FBRFU7OztNQVBZLFdBVzNCO2FBR0NDLGdCQUFnQjc4QixJQUFJL0I7TUFDdEIsa0JBRGtCK0I7TUFFbEIsZUFGa0JBLGNBQUkvQjtNQUV0QixTQUZrQitCO01BRWxCLFFBQ3NCO2FBR3BCODhCLGtCQUFrQjk4QixJQUFJekU7TUFDeEIsSUFBSXdoQyxRQUFKLHNCQUR3QnhoQztNQUV4QixrQkFGb0J5RSxJQUNoQis4QjtNQUVKLE9BSHdCeGhDLElBQUp5RSxjQUNoQis4QjtNQUVKLFNBSG9CLzhCLFNBQ2hCKzhCO01BRUosUUFDNEI7YUFHMUJDLGdCQUFnQmg5QixLQUNsQixrQkFEa0JBLGdCQUNrQjthQUtsQ2k5QixjQUFjdGtDO01BQVEsT0FBUkE7O2VBRW9COztlQUF3Qjs7Z0JBQ2hEOztnQkFBd0I7Ozs7Z0JBRkU7Z0JBQzFCLFdBQzJCO2FBSXJDdWtDLGNBQWdCN1YsSUFBUTl0QjtNQUFRLEdBQWhCOHRCLElBQUcsUUFBSEEsVUFBR0MsYUFBSDZWO01BQWdCLE9BQVI1akM7ZUFDYjtlQUFpQjtlQUNqQjtlQUFpQjtlQUNqQjtlQUFpQixPQUhaNGpDO2VBSUw7ZUFBaUI7Z0JBQ2hCLFVBQUc7YUF5RWZDLGFBQWFwOUIsSUFBSXE5QjtNQUFRLE9BQVJBO2VBQ1IsdUJBRElyOUI7ZUFFSjtnQkFDQSx1QkFISUEsUUFHbUI7YUFHaENzOUIsb0JBQW9CdDlCLElBQUl1OUI7TUFDMUIsT0FEMEJBLFNBQ1QsZ0JBREt2OUIsUUFBSXU5QixRQUNjO2FBSXRDQyxlQUFleDlCLElBQUl1N0I7TUFBVSxHQUFWQTtRQUVMLElBQVRDLE1BRmNEO1FBRWlCLHlCQUZyQnY3QixJQUVxQiw0QkFBL0J3N0I7TUFERyxRQUNpRDthQUt6RGlDLGVBQ0F6OUIsSUFBSXpIO01BQU8sVUFBUEE7T0FDVTs7UUFESCxTQUFQQTtjQUVnQjhDLEVBRmhCOUMsT0FFUzhrQyxNQUZUOWtDO1VBR0osYUFIQXlILElBRWFxOUI7VUFFUyx5QkFKdEJyOUIsSUFJc0IsNEJBRkYzRTtRQUlwQixJQURZcWlDLFFBTFJubEM7UUFNSixhQU5BeUgsSUFLWTA5QjtRQUNaLHVCQU5BMTlCLFFBT3VCO2FBR3ZCMjlCLGlCQUNFMzlCLElBQUl2SDtNQUFRLFVBQVJBLGtCQU1OLE9BTk1BLEtBTU4sa0JBTkV1SDtVQUVZM0UsRUFGUjVDO01BR04sZ0JBSEV1SDtNQUlvQix5QkFKcEJBLElBSW9CLDRCQUZSM0UsR0FJWTthQUsxQnVpQyxrQkFBa0I1OUIsSUFBSXJIO01BQVEsT0FBUkE7O2VBQ0gsdUJBRERxSDs7ZUFFQyx1QkFGREE7Ozs7OztnQkFJaEIsdUJBSmdCQTtnQkFLK0IsU0FBRTthQVluRDY5QixrQkFBa0I3OUIsSUFBSXU5QixTQUFTNWtDLE1BQU1KLElBQUlFLEtBQUt3RjtNQUNoRCxnQkFEb0IrQjtNQUVwQixvQkFGb0JBLElBQUl1OUI7TUFHeEIsa0JBSG9CdjlCLElBQWFySDtNQUlqQyxlQUpvQnFILElBQW1Cekg7TUFLdkMsaUJBTG9CeUgsSUFBdUJ2SDtNQU0zQyxnQkFOb0J1SCxJQUE0Qi9CO01BTzVCLHVCQVBBK0IsSUFPQSxjQVBhckgsT0FPUTthQUt2Q21sQyxrQkFBa0I5OUIsSUFBSXpHO01BQ3hCLE9BRHdCQTs7ZUFFTixnQkFGRXlHO2dCQUdGLGdCQUhFQTtNQUtwQixZQUx3QnpHLFNBTVYsZ0JBTk15RyxTQVFlO2FBYWpDKzlCLHlCQUF5Qm5vQztNQUFpQixVQUFqQkE7T0FBaUIsT0FBakJBO2dCQUNEO2dCQUNBO2dCQUVBO2dCQUNBO2dCQUNBO2dCQUVBO2lCQUNBOztPQVRrQixPQUFqQkE7Z0JBR0QsSUFBakI2RCxJQUhrQjdELGtCQUdELE9BQWpCNkQ7Z0JBSWlCLElBQVp1a0MsTUFQYXBvQyxrQkFPRCxPQUFab29DO2lCQUdJLElBQUwvL0IsRUFWY3JJLGtCQVVILDJCQUFYcUksSUFBNEI7YUFLdkNnZ0Msb0JBQW9CaitCLElBQUl0RztNQUFNLGNBQU5BLElBQ2pCLGtCQURhc0csWUFFZixnQkFGZUEsSUFBSXRHLElBRUk7YUFHNUJ3a0Msc0JBQXNCbCtCLElBQUl2RztNQUM1QiwrQkFENEJBLGFBQzVCOzs7UUFDRTs4QkFGc0J1RyxJQUVFLGdCQUZFdkcsSUFDNUI1QztVQUNFLFNBREZBOzs7Y0FFSTthQU1Fc25DLGFBRUpuK0IsSUFBSXJHO01KaGZULElJZ2ZTRTtNQUFTO2lCQUFUQTtRQXlCWTs7UUF6QkgsT0FBVEE7O2VBQ0k5QyxLQURKOEM7V0FDaUIsa0JBRHJCbUc7ZUFBSW5HLFFBQ0k5Qzs7O2VBQ0VDLE9BRk42QztXQUVpQixrQkFGckJtRztlQUFJbkcsUUFFTTdDOzs7ZUFDSEMsT0FISDRDO1dBR2lCLGtCQUhyQm1HO2VBQUluRyxRQUdHNUM7OztlQUNFQyxPQUpMMkM7V0FJaUIsa0JBSnJCbUc7ZUFBSW5HLFFBSUszQzs7O2VBQ0lDLE9BTFQwQztXQUtpQixrQkFMckJtRztlQUFJbkcsUUFLUzFDOzs7ZUFDSkMsT0FOTHlDO1dBTWlCLGtCQU5yQm1HO2VBQUluRyxRQU1LekM7OztlQUNBQyxPQVBMd0M7V0FPaUIsa0JBUHJCbUc7ZUFBSW5HLFFBT0t4Qzs7O2VBQ0RDLE9BUkp1QztXQVFpQixrQkFSckJtRztlQUFJbkcsUUFRSXZDOzs7ZUFVa0JDLE9BbEJ0QnNDLFdBa0JXdWtDLFVBbEJYdmtDO1dBbUJKLGtCQW5CQW1HO1dBbUI0QixhQW5CNUJBLElBa0JlbytCO1dBRWYsa0JBcEJBcCtCO2VBQUluRyxRQWtCc0J0Qzs7O2VBR0tFLE9BckIzQm9DLFdBcUJhd2tDLFlBckJieGtDO1dBc0JKLGtCQXRCQW1HO1dBc0I0QixhQXRCNUJBLElBcUJpQnErQjtXQUVqQixrQkF2QkFyK0I7ZUFBSW5HLFFBcUIyQnBDOzs7ZUFadEJFLE9BVExrQztXQVNpQixrQkFUckJtRztlQUFJbkcsUUFTS2xDOzs7ZUFDQUMsUUFWTGlDO1dBVWlCLGtCQVZyQm1HO2VBQUluRyxRQVVLakM7OztlQUNGQyxRQVhIZ0M7V0FXaUIsa0JBWHJCbUc7ZUFBSW5HLFFBV0doQzs7O2VBQ0dDLFFBWk4rQjtXQVlpQixrQkFackJtRztlQUFJbkcsUUFZTS9COzs7ZUFFUUMsUUFkZDhCO1dBZUosa0JBZkFtRztlQUFJbkcsUUFjYzlCO29CQVdBO2FBSWR1bUM7Z0JBSWEsSUFBTDVpQyxXQUFTLCtCQUFUQSxPQURHLFFBQzJCO2FBa0gxQzZpQyxjQUFjN0M7TUFDTixJQWhIRzE3QixJQWdISDtNQS9HVixTQUFRdytCLFFBRUo5QyxJQUFJNkI7WUFBSmtCLFVBQUlDOztRQUFZO21CQUFoQkQ7VUFxR2lCOztVQXJHRCxPQUFoQkE7O2lCQTBCSzFuQyxLQTFCTDBuQzthQTJCQSxnQkE5QlN6K0I7YUE4QmdCLG9CQTlCaEJBLElBR0wwK0I7YUE0QkosZ0JBL0JTMStCO2lCQUdUeStCLE1BMEJLMW5DLEtBMUJEMm5DOzs7aUJBNkJNMW5DLE9BN0JWeW5DO2FBOEJBLGdCQWpDU3orQjthQWlDZ0Isb0JBakNoQkEsSUFHTDArQjthQStCSixnQkFsQ1MxK0I7aUJBR1R5K0IsTUE2QlV6bkMsT0E3Qk4wbkM7OztpQkFDU3puQyxPQURid25DLFNBQ1FsbUMsSUFEUmttQzthQUVBLGdCQUxTeitCO2FBS2dCLG9CQUxoQkEsSUFHTDArQjthQUdKLGVBTlMxK0IsSUFJRHpIO2FBRWdCLGdCQU5meUg7aUJBR1R5K0IsTUFDYXhuQyxPQURUeW5DOzs7aUJBS2N4bkMsT0FMbEJ1bkMsU0FLYWptQyxNQUxiaW1DO2FBTUEsZ0JBVFN6K0I7YUFTZ0Isb0JBVGhCQSxJQUdMMCtCO2FBT0osZUFWUzErQixJQVFJeEg7YUFFVyxnQkFWZndIO2lCQUdUeStCLE1BS2tCdm5DLE9BTGR3bkM7OztpQkFVbUJ2bkMsT0FWdkJzbkMsU0FVaUJobUMsS0FWakJnbUMsU0FVWS9sQyxNQVZaK2xDLFNBVUs5bEMsTUFWTDhsQzthQS9HSixnQkE0R2F6K0I7YUEzR2Isb0JBMkdhQSxJQUdMMCtCO2FBN0dSLGtCQTBHYTErQixJQWFKckg7YUF0SFQsZUF5R2FxSCxJQWFHdEg7YUFySGhCLGlCQXdHYXNILElBYVF2SDthQXBIRCxnQkF1R1B1SCxJQXZHTyxjQW9IWHJIO2lCQVZMOGxDLE1BVXVCdG5DLE9BVm5CdW5DOzs7O2NBYXFCdG5DLE9BYnpCcW5DO2NBYW1CN2xDLE9BYm5CNmxDO2NBYWM1bEMsTUFiZDRsQztjQWFPM2xDLFFBYlAybEM7YUFjQSxrQkFqQlN6K0IsSUFHTDArQixXQWFHNWxDLFFBQU9ELE1BQUtEO2lCQWJuQjZsQyxNQWF5QnJuQyxPQWJyQnNuQzs7OztjQWdCeUJybkMsT0FoQjdCb25DO2NBZ0J1QjFsQyxPQWhCdkIwbEM7Y0FnQmtCemxDLE1BaEJsQnlsQztjQWdCV3hsQyxRQWhCWHdsQzthQWlCQSxrQkFwQlN6K0IsSUFHTDArQixXQWdCT3psQyxRQUFPRCxNQUFLRDtpQkFoQnZCMGxDLE1BZ0I2QnBuQyxPQWhCekJxbkM7Ozs7Y0FtQnFCcG5DLE9BbkJ6Qm1uQztjQW1CbUJ2bEMsT0FuQm5CdWxDO2NBbUJjdGxDLE1BbkJkc2xDO2NBbUJPcmxDLFFBbkJQcWxDO2FBb0JBLGtCQXZCU3orQixJQUdMMCtCLFdBbUJHdGxDLFFBQU9ELE1BQUtEO2lCQW5CbkJ1bEMsTUFtQnlCbm5DLE9BbkJyQm9uQzs7OztjQXNCcUJubkMsT0F0QnpCa25DO2NBc0JtQnBsQyxPQXRCbkJvbEM7Y0FzQmNubEMsTUF0QmRtbEM7Y0FzQk9sbEMsTUF0QlBrbEM7YUEvRUosZ0JBNEVheitCO2FBM0ViLG9CQTJFYUEsSUFHTDArQjthQTdFUixrQkEwRWExK0IsSUF5QkZ6RzthQWxHWCxlQXlFYXlHLElBeUJLMUc7YUFqR2xCLGlCQXdFYTBHLElBeUJVM0c7YUFoR0gsZ0JBdUVQMkcsSUF2RU8sZ0JBZ0dUekc7aUJBdEJQa2xDLE1Bc0J5QmxuQyxPQXRCckJtbkM7OztpQkFnQ09qbkMsT0FoQ1hnbkMsU0FnQ01qbEMsTUFoQ05pbEM7YUFpQ0EsZ0JBcENTeitCO2FBb0NnQixvQkFwQ2hCQSxJQUdMMCtCO2FBa0NKLGVBckNTMStCLElBbUNIeEc7YUFFa0IsZ0JBckNmd0c7aUJBR1R5K0IsTUFnQ1dobkMsT0FoQ1BpbkM7OztpQkFtREUvbUMsT0FuRE44bUM7YUFvREEsa0JBdkRTeitCO2lCQUdUeStCLE1BbURNOW1DOzs7aUJBSWVDLFFBdkRyQjZtQyxTQXVEZ0JobEMsSUF2RGhCZ2xDO2FBd0RBLHNCQTNEU3orQixJQTBET3ZHO2lCQXZEaEJnbEMsTUF1RHFCN21DOzs7aUJBR0ZDLFFBMURuQjRtQyxTQTBEY0UsTUExRGRGO2FBMkRBLG9CQTlEU3orQixJQTZESzIrQjtpQkExRGRGLE1BMERtQjVtQzs7O2lCQUlTQyxRQTlENUIybUMsU0E4RHFCOWtDLE1BOURyQjhrQyxTQThEWWxELFFBOURaa0Q7YUErREEsZ0JBbEVTeitCO2FBa0VnQixvQkFsRWhCQSxJQUdMMCtCO2FBZ0VKLGVBbkVTMStCLElBaUVHdTdCO2FBRWdCLGdCQW5FbkJ2N0I7YUFvRVQsYUFwRVNBLElBaUVZckc7YUFHRyxnQkFwRWZxRzthQW9Fd0MsZ0JBcEV4Q0E7aUJBR1R5K0IsTUE4RDRCM21DLFFBOUR4QjRtQzs7O2lCQW1FMEIzbUMsUUFuRTlCMG1DLFNBbUV1QjVrQyxRQW5FdkI0a0MsU0FtRWM5QyxVQW5FZDhDO2FBb0VBLGdCQXZFU3orQjthQXVFZ0Isb0JBdkVoQkEsSUFHTDArQjthQXFFSixlQXhFUzErQixJQXNFSzI3QjthQUVjLGdCQXhFbkIzN0I7YUF5RVQsYUF6RVNBLElBc0Vjbkc7YUFHQyxnQkF6RWZtRzthQXlFd0MsZ0JBekV4Q0E7aUJBR1R5K0IsTUFtRThCMW1DLFFBbkUxQjJtQzs7O2lCQW9DRTNrQyxRQXBDTjBrQzthQXFDQSxnQkF4Q1N6K0I7YUF3Q2dCLG9CQXhDaEJBLElBR0wwK0I7YUFzQ0osZ0JBekNTMStCO2lCQUdUeStCLE1Bb0NNMWtDLFFBcENGMmtDOzs7aUJBdUNFMWtDLFFBdkNOeWtDO2FBd0NBLGdCQTNDU3orQjthQTJDZ0Isb0JBM0NoQkEsSUFHTDArQjthQXlDSixnQkE1Q1MxK0I7aUJBR1R5K0IsTUF1Q016a0MsUUF2Q0Ywa0M7OztpQkF5RndCemtDLFFBekY1QndrQyxTQXlGZ0J2a0MsV0F6RmhCdWtDO2FBMEZBLHNCQTdGU3orQixJQTZGaUIseUJBRFY5RjtpQkF6RmhCdWtDLE1BeUY0QnhrQzs7O2lCQUdBRSxRQTVGNUJza0MsU0E0RmdCcmtDLFdBNUZoQnFrQztzQkE0RmdCcmtDO3lDQUVPNGpDO2VBQ3JCLGtCQWxHT2grQjtlQWtHcUIsa0JBbEdyQkEsSUFpR2NnK0I7OzJCQUZQNWpDLGNBSU93a0M7ZUFDckIsa0JBcEdPNStCO2VBb0dxQixrQkFwR3JCQSxJQW1HYzQrQjtpQkFoR3ZCSCxNQTRGNEJ0a0M7OztpQkE1Q3JCRSxRQWhEUG9rQzthQWlEQSxnQkFwRFN6K0I7YUFvRGdCLG9CQXBEaEJBLElBR0wwK0I7YUFrREosZ0JBckRTMStCO2lCQUdUeStCLE1BZ0RPcGtDLFFBaERIcWtDOzs7aUJBeUVnQ3BrQyxRQXpFcENta0MsU0F5RTBCbGtDLFNBekUxQmtrQyxTQXlFZWprQyxVQXpFZmlrQzthQTBFQSxnQkE3RVN6K0I7YUE2RWdCLG9CQTdFaEJBLElBR0wwK0I7YUEyRUosZUE5RVMxK0IsSUE0RU14RjthQXRTbkI7Y0E0Q0k4Rjt3QkFBV04sSUFBSW5KO2lCQUFVLElBR3pCb0gsRUFIeUIsWUFBVnBIO2lCQUFVLGNBR3pCb0g7MkJBRk8sZ0JBREkrQixRQUNKLGdCQURJQTtpQ0FHWC9COzZCQURPLGdCQUZJK0IsUUFFSixnQkFGSUE7NEJBR0osZ0JBSElBLElBR1gvQixFQUE2QjthQUVqQyxnQkF5S2ErQjthQTFOYjtjQW1ESzs4QkFtUHlCekY7a0JBbFByQixnQkFzS0l5RixRQXRLcUIsYUFrUEp6Rjs7Y0FyUzVCOzswQkFBSXVrQyxTQUFTN2dDO21CQUNpQzs4QkFEakNBO29CQUNlLFdBRGZBO29CQUVYLHlCQUZXQTttQkFFWDtvQkFDUTs4Q0FGSitnQztxQkFFSSxVQUE2QixvQkFGekJEOzs7O21CQURkLFdBR2dFO3dCQUg1REQ7Y0FBSjthQUlHLGdCQUFrQixnQkFxTlY5K0I7YUExTmIsSUFRa0JuSjs7YUFDaEI7a0JBRGdCQTtpQkFFWCx5QkFBbUIsWUFGUkE7bUJBR1QsUUFIU0E7aUJBS1Ysc0JBTFVBLEdBS1Y7O3FDQUNNLFdBNE1EbUo7OztxQkEzTUksUUFQQ25KOzs7bUJBUVQsSUFDWTRoQixJQVRINWhCO21CQVViLHlCQUFtQixZQURINGhCO3FCQWdCakIsV0F5TFN6WSxJQXpNUXlZO3FCQWdCakIsUUFoQmlCQSxZQVRINWhCOzttQkFRVDtvQkFHQyxvQkFGVzRoQjtvQkFFWDs7OztzQkFFSixXQXFNT3pZLFNBck1QLFdBcU1PQTs7Ozs7c0JBbk1ZLHlCQUFvQixZQU54QnlZO3dCQU9mLFdBa01PelksSUF6TVF5WTt3QkFPZixRQVBlQSxZQVRINWhCOzs7Ozs7cUJBa0JELHlCQUFvQixZQVRoQjRoQjt1QkFVZixXQStMT3pZLElBek1ReVk7dUJBV2YsV0E4TE96WSxJQXpNUXlZO3VCQVdmLFFBWGVBLFlBVEg1aEI7O3FCQXVCWixNQWRlNGhCLFlBY2YsSUFkZUEsWUFtQkZ3bUI7cUJBQ2pCO3VCQUFrQixXQUREQSxPQUNDLG9CQUFvQixZQURyQkE7eUJBT2YsUUFQZUE7dUJBRWYsV0FvTFNqL0IsSUF0TElvYjt1QkFHYixXQW1MU3BiO3VCQWxMVCxXQWtMU0EsSUF0TE1pL0I7dUJBSWYsR0FKZUEsV0FLQyxRQUxEQSxZQTVCRHBvQzs7ZUFEYixnQkFBa0IsZ0JBbU5WbUo7ZUF0UVg2OEIsZ0JBc1FXNzhCO21CQUdUeStCLE1BeUVvQ25rQyxRQXpFaENva0M7OztpQkE2RXVCamtDLFFBN0UzQmdrQyxTQTZFa0IvakMsUUE3RWxCK2pDO2FBOEVBLGdCQWpGU3orQjthQWlGZ0Isb0JBakZoQkEsSUFHTDArQjthQXRPb0IsT0FtVE5oa0M7Ozs7YUFFbEIsZ0JBbEZTc0Y7aUJBR1R5K0IsTUE2RTJCaGtDLFFBN0V2QmlrQzs7O2lCQWlGVy9qQyxRQWpGZjhqQzthQWtGQSxnQkFyRlN6K0I7YUFxRmdCLG9CQXJGaEJBLElBR0wwK0I7YUFtRkosc0JBdEZTMStCO2lCQUdUeStCLE1BaUZlOWpDLFFBakZYK2pDOzs7YUFzRndCO2NBRFI5akMsUUFyRnBCNmpDO2NBcUZlNWpDLElBckZmNGpDO2NBc0Y0Qix1Q0FEYjVqQyxJQUFLRDtjQUNRO2NBdEY1QjZqQztjQUFJQzs7O2FBMkNVO2NBREk1akMsUUExQ2xCMmpDO2NBMENRempDLE1BMUNSeWpDO2NBMkNjLHlCQUROempDOzthQUNNO21CQUFkMGY7ZUFDRTtpQ0EvQ08xYTtpQkErQ2tCLG9CQS9DbEJBLElBR0wwK0I7aUJBNkNGLGdCQWhETzErQjtpQkFnRFAsU0FGRjBhOzs7YUFBYyxJQTNDZCtqQixNQTBDa0IzakMsUUExQ2Q0akM7c0JBcUdlO01Bdkd2QixRQThHZ0JoRDthQXhXZHNCLGdCQXlQV2g5QixJQWtITTthQVdiby9COztPQXVCWTs7T0F2Qlo7Z0JBTVksSUFBUnJvQyxjQUFnQixlQUFoQkE7Z0JBT1UsSUFBUkMsZ0JBQWtCLGVBQWxCQTtnQkFOSyxJQUFSQyxnQkFBZSxlQUFmQTtnQkFDVSxJQUFSQyxnQkFBaUIsZUFBakJBO2dCQUVZLElBQVJDLGdCQUFxQixlQUFyQkE7Z0JBREksSUFBUkMsZ0JBQWlCLGVBQWpCQTtnQkFFUSxJQUFSQyxnQkFBaUIsZUFBakJBO2dCQUNPLElBQVJDLGdCQUFnQixlQUFoQkE7b0JBT1dDLGdCQUFKQyxZQUNJLFVBREpBLEdBQ0ksS0FEQUQ7O2NBRVFFLGdCQUFMVSxhQUFMVDtVQUNVLFVBRExTLElBQUxULElBQ1UsS0FEQUQ7aUJBTlYsSUFBUkUsZ0JBQWlCLGdCQUFqQkE7aUJBRFEsSUFBUkMsaUJBQWlCLGdCQUFqQkE7aUJBRU0sSUFBUkMsaUJBQWUsZ0JBQWZBO2lCQUNXLElBQVJDLGlCQUFrQixnQkFBbEJBO2lCQUNnQixJQUFSQyxpQkFBMEIsZ0JBQTFCQSxVQUtVO2FBRXhCc25DOztRQVNKOzhCQUdhLFFBQUk7U0FIakIscUJBRWEsUUFBSTtTQUZqQixxQkFDYSxRQUFJO1FBRGpCLDBCQUFhLFFBQUk7O09BVGI7O1VBY0o7O1dBQXFCLG9CQURidG9DO1dBQ2E7Ozs7Z0NBRUcsV0FGaEJ5b0MsTUFFZ0IsUUFBZTtVQUZsQiwwQkFDRyxXQURwQkMsTUFDb0IsUUFBZSxPQUQzQkYsR0FBSUQ7O1VBS2hCOztXQUFxQixzQkFEWHRvQztXQUNXOzs7O2dDQUVHLFdBRmhCNG9DLFFBRWdCLFFBQWU7VUFGbEI7a0NBQ0csV0FEcEJDLFFBQ29CLFFBQWU7O2tCQUQzQkY7a0JBQUlEOztVQUtoQjs7V0FBcUIsc0JBRGR6b0M7V0FDYzs7OztnQ0FFRyxXQUZoQitvQyxRQUVnQixRQUFlO1VBRmxCO2tDQUNHLFdBRHBCQyxRQUNvQixRQUFlOztrQkFEM0JGO2tCQUFJRDs7VUFLaEI7O1dBQXFCLHNCQURaNW9DO1dBQ1k7Ozs7Z0NBRUcsV0FGaEJrcEMsUUFFZ0IsUUFBZTtVQUZsQjtrQ0FDRyxXQURwQkMsUUFDb0IsUUFBZTs7a0JBRDNCRjtrQkFBSUQ7O1VBVWhCOztXQUFxQixzQkFEUi9vQztXQUNROzs7O2dDQUVHLFdBRmhCcXBDLFFBRWdCLFFBQWU7VUFGbEI7a0NBQ0csV0FEcEJDLFFBQ29CLFFBQWU7O2tCQUQzQkY7a0JBQUlEOztVQUxoQjs7V0FBcUIsc0JBRFpscEM7V0FDWTs7OztnQ0FFRyxXQUZoQndwQyxRQUVnQixRQUFlO1VBRmxCO2tDQUNHLFdBRHBCQyxRQUNvQixRQUFlOztrQkFEM0JGO2tCQUFJRDs7VUFVaEI7O1dBQXFCLHNCQURacnBDO1dBQ1k7Ozs7Z0NBRUcsV0FGaEIycEMsUUFFZ0IsUUFBZTtVQUZsQjtrQ0FDRyxXQURwQkMsUUFDb0IsUUFBZTs7a0JBRDNCRjtrQkFBSUQ7O1VBS2hCOztXQUFxQixzQkFEYnhwQztXQUNhOzs7O2dDQUVHLFdBRmhCOHBDLFFBRWdCLFFBQWU7VUFGbEI7a0NBQ0csV0FEcEJDLFFBQ29CLFFBQWU7O2tCQUQzQkY7a0JBQUlEOztVQWlDaEI7O1dBQXFCLHNCQUREM3BDO1dBQ0M7Ozs7Z0NBRUcsV0FGaEJpcUMsUUFFZ0IsUUFBZTtVQUZsQjtrQ0FDRyxXQURwQkMsUUFDb0IsUUFBZTs7a0JBRDNCRjtrQkFBSUQ7O1VBS0s7V0FETTdwQztXQUFMVTtXQUFMVDtXQUNJLHNCQURNRDtXQUNOOzs7O1dBQ1osU0FBTSxLQUZFQyxLQUFLUztXQUdELHNCQURqQlg7V0FDaUI7Ozs7Z0NBSUcsV0FKUnVxQyxNQUk4QixXQU45QkwsUUFNOEIsUUFBZTtXQUp4QyxxQkFHRyxXQUxaQyxRQUtrQyxXQUhsQ0ssTUFHa0MsUUFBZTtXQUh4QyxxQkFFRyxXQUZoQkMsTUFFc0MsV0FKdENMLFFBSXNDLFFBQWU7VUFGeEM7O29CQUNHLFdBSHBCQyxRQUcwQyxXQUQxQ0ssTUFDMEMsUUFBZTs7Ozs7VUE5QjdEOztXQUFxQix1QkFEWnZxQztXQUNZOzs7O2dDQUVHLFdBRmhCMHFDLFFBRWdCLFFBQWU7VUFGbEI7a0NBQ0csV0FEcEJDLFFBQ29CLFFBQWU7O2tCQUQzQkY7a0JBQUlEOztVQUxoQjs7V0FBcUIsdUJBRFp2cUM7V0FDWTs7OztnQ0FFRyxXQUZoQjZxQyxTQUVnQixRQUFlO1VBRmxCO2tDQUNHLFdBRHBCQyxTQUNvQixRQUFlOztrQkFEM0JGO2tCQUFJRDs7VUFVaEI7O1dBQXFCLHVCQURkMXFDO1dBQ2M7Ozs7Z0NBRUcsV0FGaEJnckMsU0FFZ0IsUUFBZTtVQUZsQjtrQ0FDRyxXQURwQkMsU0FDb0IsUUFBZTs7a0JBRDNCRjtrQkFBSUQ7O1VBS2hCOztXQUFxQix1QkFEWDdxQztXQUNXOzs7O2dDQUlHLFdBSlJpckMsU0FJUSxRQUFlO1dBSmxCLHFCQUdHLFdBSFpDLFNBR1ksUUFBZTtXQUhsQixxQkFFRyxXQUZoQkMsU0FFZ0IsUUFBZTtVQUZsQjtrQ0FDRyxXQURwQkMsU0FDb0IsUUFBZTs7Ozs7VUFLdkM7O1dBQXFCLHVCQURIbnJDO1dBQ0c7Ozs7Z0NBSUcsV0FKUm9yQyxTQUlRLFFBQWU7V0FKbEIscUJBR0csV0FIWkMsU0FHWSxRQUFlO1dBSGxCLHFCQUVHLFdBRmhCQyxTQUVnQixRQUFlO1VBRmxCO2tDQUNHLFdBRHBCQyxTQUNvQixRQUFlOzs7d0JBZ0J1QjthQWlCOUR4QixNQVdFcHFDLElBQUlTO01KbnlCWDtNSW15QmtCLFVBQVhUO2lCQUFJUztRQThDd0I7O2VBOUN4QkE7Ozs7Ozs7O2tCQStDYTs7T0EvQ04sT0FBWFQ7OztvQkFBSVM7O29CQUMwQixJQUFUb3JDLE1BRGpCcHJDLE9BQ2tDLHFCQUFqQm9yQzs7Ozs7Ozs7Ozs7OzhCQURyQjdyQztvQkFBSVM7O29CQUU4QixJQUFUcXJDLFFBRnJCcnJDLE9BRXdDLHFCQUFuQnFyQzs7Ozs7Ozs7Ozs7OzhCQUZ6QjlyQztvQkFBSVM7Ozs7b0JBSXdCLElBQVRzckMsUUFKZnRyQyxPQUkrQixxQkFBaEJzckM7Ozs7Ozs7Ozs7Ozs4QkFKbkIvckM7b0JBQUlTOzs7O29CQUs0QixJQUFUdXJDLFFBTG5CdnJDLE9BS3FDLHFCQUFsQnVyQzs7Ozs7Ozs7Ozs7OzhCQUx2QmhzQztvQkFBSVM7Ozs7b0JBT29DLElBQVR3ckMsUUFQM0J4ckMsT0FPaUQscUJBQXRCd3JDOzs7Ozs7Ozs7Ozs7OEJBUC9CanNDO29CQUFJUzs7OztvQkFNNEIsSUFBVHlyQyxRQU5uQnpyQyxPQU1xQyxxQkFBbEJ5ckM7Ozs7Ozs7Ozs7Ozs4QkFOdkJsc0M7b0JBQUlTOzs7O29CQVE0QixJQUFUMHJDLFFBUm5CMXJDLE9BUXFDLHFCQUFsQjByQzs7Ozs7Ozs7Ozs7OzhCQVJ2Qm5zQztvQkFBSVM7Ozs7b0JBRzBCLElBQVQyckMsUUFIakIzckMsT0FHa0MscUJBQWpCMnJDOzs7Ozs7Ozs7Ozs7OEJBSHJCcHNDO29CQUFJUzs7Ozs7Y0FnQ3dCLElBRGtCNHJDLFFBL0IxQzVyQyxPQStCcUM2ckMsTUEvQnJDN3JDLE9BZ0N3QixnQkFEa0I0ckM7Y0FDakMscUJBRDRCQzs7Ozs7OztzQkFFckI7OzsrQkFqQ3BCdHNDO29CQUFJUzs7Ozs7O2NBc0NHO2VBRG9COHJDLFFBckN2QjlyQztlQXFDaUIrckMsS0FyQ2pCL3JDO2VBcUNXZ3NDLEtBckNYaHNDO2VBc0NHLFNBQU0sV0FERWdzQztlQUVFLG9CQURmM3NDO2VBQ2U7O2NBQ1IsV0FESjZzQztjQUVJLFdBRkdEO2NBR2UsZUFMTkYsS0FLTSxXQUxBRDs7Ozs7Ozt1QkFNTDs7O21CQTNDdEJ2c0M7b0JBQUlTO1lBVTRCLElBQVRtc0MsUUFWbkJuc0MsT0FVcUMsc0JBQWxCbXNDO1VBQ1I7OytCQVhmNXNDO29CQUFJUzs7Ozs7cUJBYzRCLElBQVRvc0MsU0FkbkJwc0MsT0FjcUMsc0JBQWxCb3NDOzt1QkFDUjs7OytCQWZmN3NDO29CQUFJUzs7Ozs7O3FCQWtCd0IsSUFBVHFzQyxTQWxCZnJzQyxPQWtCK0Isc0JBQWhCcXNDOzt1QkFDTjs7OytCQW5CYjlzQztvQkFBSVM7Ozs7Ozs7cUJBc0I4QixJQUFUc3NDLFNBdEJyQnRzQyxPQXNCd0Msc0JBQW5Cc3NDOzt1QkFDVDs7OytCQXZCaEIvc0M7b0JBQUlTOzs7Ozs7OztxQkEyQk4sSUFEMkN1c0MsU0ExQnJDdnNDLE9BMkJZLHNCQUR5QnVzQzs7dUJBRWpCOztlQWhCVDtlQUlBO2VBSUY7ZUFJRztlQUtRO2VBS0o7ZUFVRTtnQkFJTCw4QkFBWTthQW1HL0JDLHVCQUVFcHNDLElBQUlvQjtNQUFTLGNBQWJwQixpQkFBSW9CLFlBQUpwQixPQUFJb0IsZUFHeUI7YUFyQy9CaXJDLGdCQUdBNXBDLE1BQU1yQjtNQUFTLEdBQWZxQjtRQUVxQixJQUFUNnBDLFFBRlo3cEMsU0FFNEIsMkJBQWhCNnBDLFFBRk5sckM7TUFDUyxPQURUQSxLQUVtRDthQTlEekRtckMsYUFFQW5yQztNSi8xQkwsSUkrMUJLRTtNQUFTO2lCQUFUQTtRQXFEOEI7O1FBckRyQixPQUFUQTtpQkEyQjhCLElBQXpCOUMsS0EzQkw4QyxXQTJCc0MsdUJBQWpDOUM7aUJBQ3lCLElBQXBCQyxPQTVCVjZDLFdBNEJzQyx1QkFBNUI3Qzs7ZUEzQkdDLE9BRGI0QyxXQUNRdEIsSUFEUnNCO1dBRXNDLDhCQUQ5QnRCLE9BQzhCLGFBRHpCdEI7O2VBRUtDLE9BSGxCMkMsV0FHYXJCLE1BSGJxQjtXQUlzQyw4QkFEekJyQixTQUN5QixhQURwQnRCOztXQUlKO1lBREtDLE9BTm5CMEM7WUFNYXBCLEtBTmJvQjtZQU1RbkIsTUFOUm1CO1lBT2MscUJBREsxQztZQUVMLGlDQUZEc0IsUUFDVHNzQztXQUNVLDhCQUZOcnNDLE1BRUpzc0M7O1dBR1U7WUFETzV0QyxPQVZyQnlDO1lBVWVqQixPQVZmaUI7WUFVVWhCLE1BVlZnQjtZQVdjLHVCQURPekM7WUFFUCxtQ0FGQ3dCLFVBQ1hzc0M7V0FDVSw4QkFGSnJzQyxNQUVOc3NDOztXQUdVO1lBRFc5dEMsT0FkekJ3QztZQWNtQmQsT0FkbkJjO1lBY2NiLE1BZGRhO1lBZWMsdUJBRFd4QztZQUVYLG1DQUZLMEIsVUFDZnFzQztXQUNVLDhCQUZBcHNDLE1BRVZxc0M7O1dBR1U7WUFETy90QyxPQWxCckJ1QztZQWtCZVgsT0FsQmZXO1lBa0JVVixNQWxCVlU7WUFtQmMsdUJBRE92QztZQUVQLG1DQUZDNEIsVUFDWG9zQztXQUNVLDhCQUZKbnNDLE1BRU5vc0M7O1dBR1U7WUFET2h1QyxPQXRCckJzQztZQXNCZVIsT0F0QmZRO1lBc0JVUCxNQXRCVk87WUF1QmMsdUJBRE90QztZQUVQLG1DQUZDOEIsVUFDWG1zQztXQUNVLDhCQUZKbHNDLE1BRU5tc0M7O2VBS09odUMsT0E3QlhvQyxXQTZCTUwsTUE3Qk5LO1dBOEJzQyw4QkFEaENMLFNBQ2dDLGFBRDNCL0I7a0JBWW1CLFlBekM5Qm9DO2tCQTBDOEIsWUExQzlCQTtrQkEyQzhCLFlBM0M5QkE7O2VBb0NtQmxDLE9BcENuQmtDLFdBb0NlckMsR0FwQ2ZxQztXQXFDbUIsVUFESnJDLEdBQ0ksYUFEQUc7O2VBRUVDLFFBdENyQmlDLFdBc0NpQmdzQyxLQXRDakJoc0M7V0F1Q3lCLFVBRFJnc0MsVUFDUSxhQURKanVDO2tCQVBTLElBQXhCQyxRQS9CTmdDLFdBK0J1Qyx3QkFBakNoQztrQkFDd0IsSUFBeEJDLFFBaENOK0IsV0FnQ3VDLHdCQUFqQy9CO2tCQWlCd0IsWUFqRDlCK0I7O1dBbURrRDtZQUR0QjlCLFFBbEQ1QjhCO1lBa0RnQk8sV0FsRGhCUDtZQW1Ea0Qsa0JBRHRCOUI7V0F6RFYsU0F5REZxQztvQ0F4REVzaEMsa0JBSWxCb0osYUFKa0JwSjs7O3FCQXdERnRoQzthQXZERXFrQztrQkFHbEJxRyxhQUhrQnJHO2tCSXZSZHptQztrQko4VDBCLElBQXZCK0IsUUFsQ1BGLFdBa0N3Qyx3QkFBakNFO2tCQVd1QixJQUFUQyxRQTdDckJILFdBNkN3Qyx1QkFBbkJHO2tCQUNTLElBQVRDLFFBOUNyQkosV0E4Q3FDLHVCQUFoQkk7a0JBQ1MsSUFBZkUsUUEvQ2ZOLFdBK0NzQyx1QkFBdkJNOztlQUNLRSxRQWhEcEJSLFdBZ0RlZ0IsSUFoRGZoQjtXQW9FVyxVQXBCSWdCO1lBb0JKLE9BcEJJQTt5QkFoRGZoQixRQWdEb0JRO3lCQWhEcEJSLFFBZ0RvQlE7cUJBaUNpQyx3QkFqQ2pDQTswQkFoRHBCUixRQWdEb0JROztZQW9CVCxPQXBCSVE7eUJBaERmaEIsUUFnRG9CUTt5QkFoRHBCUixRQWdEb0JRO3lCQWhEcEJSLFFBZ0RvQlE7eUJBaERwQlIsUUFnRG9CUTt5QkFoRHBCUixRQWdEb0JRO3lCQWhEcEJSLFFBZ0RvQlE7eUJBaERwQlIsUUFnRG9CUTt5QkFoRHBCUixRQWdEb0JRO3lCQWhEcEJSLFFBZ0RvQlE7O2VBZ0NlLElBQVYwckMsUUFoQ1ZsckM7ZUFnQ3VDLG9CQUE3QmtyQyxRQUE2QixhQWhDbEMxckM7MEJBaERwQlIsUUFnRG9CUTswQkFoRHBCUixRQWdEb0JROztlQWZGQyxRQWpDbEJULFdBaUNRbUIsTUFqQ1JuQjtXQWlDb0QsdUJBQTVDbUIsTUFBNEMsYUFBbENWLFVBb0J3QjthQTBDMUMycUMseUJBRUV4c0MsS0FBS2tCO01BQVMsY0FBZGxCLDBCQUFLa0Isa0JBRzBCOzs7O2FBV2pDcXNDLGFBR0F6dEMsSUFBSW9CO01BQVMsVUFBYnBCO09BQ2lCLFlBRGJvQjs7UUFBUyxTQUFicEI7Y0FFb0IwdEMsRUFGcEIxdEMsT0FFYThrQyxNQUZiOWtDLG9CQUVhOGtDLE1BQU80SSxHQUZoQnRzQzs7Y0FHc0I1QyxLQUh0QjRDLFNBR1ErakMsUUFIWm5sQyxvQkFHWW1sQyxTQUFjM21DO1FBQ3JCLG9CQUFtQjthQUt4Qm12QyxhQUdBM3RDLElBQUlFLEtBQUtrQjtNQUFxQix1QkFBOUJwQixJQUFTb0I7TUFBcUIsVUFBMUJsQjs7OztnQkFLMEMxQixhQUFaeUIsaUNBQVl6QjtVQUVmO1lBTk9DLGdCQUFMMEI7MEJBQUsxQjtNQURSLElBR1dDLGdCQUFMNEIsZUFBdEJzUixFQUhWMVI7Z0JBR2dDSSxTQUF0QnNSLEdBQTJCbFQsT0FJUzthQU05Q2t2QyxZQU1GekssSUFBSS9oQztNQUFlLHlCQUFuQitoQyxJQUFJL2hDO01BQWUsZ0NBQ2lCLElBQXZCOGtDLGNBQXVCLE9BQXZCQTtNQUNWLG1CQUFtQjthQWtMeEI0SCx1QkFLRXhyQyxJQUFJNmdDLElBQUkvaEM7TUFDdUIsMEJBRDNCK2hDLElBQUkvaEMsT0FDdUI7b0JBRC9Ca0IsSUFDZTRqQyxPQUFNNWtDLFFBQ3dCO2FBdkwvQ3VzQyxnQkFNRTFLLElBNElNL2hDO01BNUlPLFVBQWIraEM7T0FtSDJCLFlBeUJyQi9oQzs7T0E1SU8sT0FBYitoQzs7b0JBNElNL2hDO1lBMUkyQjthQURaMnNDLFdBMklmM3NDO2FBM0lINHNDLFNBREg3SzthQUVpQyxzQkFEOUI2SyxTQUFrQkQ7YUFDWTs7eUJBQWhCN0gsT0FBTTVrQzs7O29CQTBJakJGO1lBdkkyQjthQURQNnNDLGFBd0lwQjdzQzthQXhJRThzQyxXQUpSL0s7YUFLaUMsd0JBRHpCK0ssV0FBa0JEO2FBQ087O3lCQUFoQnJILE9BQU11Rzs7O1VBR25CO1dBRE9nQixXQVBYaEw7V0FPTW5qQyxJQVBObWpDO1dBUUkscUJBREVuakMsSUFxSUFvQjtXQXBJRjs7O1lBRUo7O2FBQW1DLHdCQUh4QitzQyxXQUV1QkM7YUFDQzs7OEJBQWhCQyxPQUFNakI7VUFFRzs7VUFHeEI7V0FEWWtCLFdBZGhCbkw7V0FjV2xqQyxNQWRYa2pDO1dBZUkscUJBRE9sakMsTUE4SExtQjtXQTdIRjs7O1lBRUo7O2FBQW1DLHdCQUhuQmt0QyxXQUVrQkM7YUFDQzs7OEJBQWhCQyxPQUFNbkI7VUFFRzs7VUFHeEI7V0FEaUJvQixXQXJCckJ0TDtXQXFCZWpqQyxLQXJCZmlqQztXQXFCVWhqQyxNQXJCVmdqQztXQXFCRy9pQyxNQXJCSCtpQztXQXNCSSxxQkFETWhqQyxNQUFLRCxLQXVIVGtCO1dBdEhGOzs7WUFFK0I7YUFERXN0QzthQUFicnVDO2FBQ1csd0JBSGRvdUMsV0FFZ0JDO2FBQ0Y7O3lCQUhoQ3R1QyxXQUVxQkMsT0FDTHN1QyxPQUFNcEI7VUFFTTs7VUFHM0I7V0FEbUJxQixXQTVCdkJ6TDtXQTRCaUIzaUMsT0E1QmpCMmlDO1dBNEJZN2lDLE1BNUJaNmlDO1dBNEJLNWlDLFFBNUJMNGlDO1dBNkJJLHFCQURRN2lDLE1BQUtFLE9BZ0hYWTtXQS9HRjs7O1lBRStCO2FBREl5dEM7YUFBZmx1QzthQUNXLHdCQUhaaXVDLFdBRWdCQzthQUNKOzt5QkFIOUJ0dUMsYUFFbUJJLE9BQ0xtdUMsT0FBTXRCO1VBRU07O1VBRzNCO1dBRHVCdUIsV0FuQzNCNUw7V0FtQ3FCcmlDLE9BbkNyQnFpQztXQW1DZ0IxaUMsTUFuQ2hCMGlDO1dBbUNTemlDLFFBbkNUeWlDO1dBb0NJLHFCQURZMWlDLE1BQUtLLE9BeUdmTTtXQXhHRjs7O1lBRStCO2FBRFE0dEM7YUFBbkJDO2FBQ1cseUJBSFJGLFdBRWdCQzthQUNSOzt5QkFIMUJ0dUMsYUFFZXV1QyxPQUNMRSxPQUFNRDtVQUVNOztVQUczQjtXQURtQkUsV0ExQ3ZCak07V0EwQ2lCa00sT0ExQ2pCbE07V0EwQ1l2aUMsTUExQ1p1aUM7V0EwQ0t0aUMsUUExQ0xzaUM7V0EyQ0ksc0JBRFF2aUMsTUFBS3l1QyxPQWtHWGp1QztXQWpHRjs7O1lBRStCO2FBRElrdUM7YUFBZkM7YUFDVyx5QkFIWkgsV0FFZ0JFO2FBQ0o7O3lCQUg5Qnp1QyxhQUVtQjB1QyxPQUNMRSxPQUFNRDtVQUVNOztVQUczQjtXQURtQkUsV0FqRHZCdk07V0FpRGlCd00sT0FqRGpCeE07V0FpRFlwaUMsTUFqRFpvaUM7V0FpREtuaUMsTUFqRExtaUM7V0FrREksc0JBRFFwaUMsTUFBSzR1QyxPQTJGWHZ1QztXQTFGRjs7O1lBRStCO2FBREl3dUM7YUFBZkM7YUFDVyx5QkFIWkgsV0FFZ0JFO2FBQ0o7O3lCQUg5QjV1QyxXQUVtQjZ1QyxPQUNMRSxPQUFNRDtVQUVNOztVQUczQjtXQURLRSxXQXhEVDdNO1dBd0RJbGlDLE1BeERKa2lDO1dBeURJLHNCQURBbGlDLE1Bb0ZFRztXQW5GRjs7O1lBRUo7O2FBQW1DLHlCQUgxQjR1QyxXQUV1QkM7YUFDRzs7OEJBQWhCRSxPQUFNRDtVQUVHOztVQUdLO1dBRDdCRSxXQS9ESmpOO1dBZ0VpQyx5QkFEN0JpTixXQTZFRWh2QztXQTVFMkI7O3dCQUFoQmt2QyxRQUFNRDs7VUFJVTtXQURkRSxZQW5FbkJwTjtXQW1FY2ppQyxJQW5FZGlpQztXQW9FaUMseUJBRGRvTixZQXlFYm52QztXQXhFMkI7O3dCQURuQkYsSUFDR3V2QyxRQUFNRDs7VUFHVTtXQURoQkUsWUF0RWpCdk47V0FzRVloaUMsSUF0RVpnaUM7V0F1RWlDLHlCQURoQnVOLFlBc0VYdHZDO1dBckUyQjs7d0JBRHJCRCxJQUNLeXZDLFFBQU1EOztvQkFxRWpCdnZDOzthQWpFbUJ5dkMsYUFpRW5CenZDO2FBakVPeWtDLFVBaUVQemtDO2FBbEV3QjB2QyxZQTFFOUIzTjthQTBFbUIyQyxZQTFFbkIzQzthQTBFVUgsUUExRVZHO1lBNEVDLG9CQUZrQjJDLGdCQUNORDthQUNxQztZQUNqQjtzQ0FISGlMLFlBQ0xEO2FBRVE7OzBCQUh2QjdOLFFBQ0c2QyxVQUVJbUwsUUFBTUQ7OztvQkErRGpCM3ZDO1lBM0R3QzthQURONnZDLGNBNERsQzd2QzthQTVEUzh2QyxXQTREVDl2QzthQTdEMEIrdkMsWUEvRWhDaE87YUErRXFCaU8sWUEvRXJCak87YUErRVlDLFVBL0VaRDthQWlGOEMsa0JBRC9CK047WUFDZCxvQkFBVSxVQUZVRTthQUdyQjtZQUQ4QzthQUc5Qyx5QkFMZ0NELFlBS1AsVUFKZUY7YUFJeEM7OzBCQUxZN04sVUFDRzhOLFdBR0VJLFFBQU1EOzs7b0JBeURqQmp3QztZQW5EMkI7YUFEVm13QyxjQW9EakJud0M7YUFwREZvd0MsWUF4RkpyTzthQXlGaUMseUJBRDdCcU8sWUFBbUJEO2FBQ1U7OzBCQUFoQkcsUUFBTUQ7OztvQkFtRGpCcndDO1lBaEQyQjthQURWdXdDLGNBaURqQnZ3QzthQWpERnd3QyxZQTNGSnpPO2FBNEZpQyx5QkFEN0J5TyxZQUFtQkQ7YUFDVTs7MEJBQWhCRyxRQUFNRDs7O1VBS1U7V0FESEUsWUFoRzlCNU87V0FnR2M5bEMsZUFoR2Q4bEM7V0FpR2lDLHlCQURINE8sWUE0Q3hCM3dDO1dBM0MyQjs7d0JBRG5CL0QsZUFDRzQwQyxRQUFNRDs7Y0FFT0UsWUFuRzlCL08sT0FtR2NnUCxlQW5HZGhQO1VBNEg0QixTQXpCZGdQO1lBMkJtQjtzQkEzQm5CQTthQTBCUTFNO2FBQU4zbEM7YUFDaUIseUJBRGpCQSxLQWVWc0I7YUFkMkI7O2FBQ0EseUJBNUJIOHdDLFlBMkJQdnlDO2FBQ1U7O2dDQURoQkksS0FESzBsQyxRQUVMNE0sTUFBTUQ7VUFHVTtvQkEvQm5CRDtXQThCUTlMO1dBQU5pTTtXQUNpQix5QkFEakJBLE9BV1ZseEM7V0FWMkI7O1dBQ0EseUJBaENIOHdDLFlBK0JQSztXQUNVOzs4QkFEaEJDLE9BREtuTSxRQUVMcU0sUUFBTUQ7O29CQVNqQnJ4QztZQXBDMkI7YUFEUnV4QyxjQXFDbkJ2eEM7YUFyQ0R3eEMsWUF2R0x6UDthQXdHaUMseUJBRDVCeVAsWUFBb0JEO2FBQ1E7OzBCQUFoQkcsUUFBTUQ7OztvQkFvQ2pCenhDO1lBakMyQjthQURzQjJ4QyxjQWtDakQzeEM7YUFsQzRCNHhDLFlBMUdsQzdQO2FBMEd3Qm5oQyxTQTFHeEJtaEM7YUEwR2FsaEMsVUExR2JraEM7YUEyR2lDLHlCQURDNlAsWUFBcUJEO2FBQ3RCOzswQkFEcEI5d0MsVUFBV0QsU0FDUGt4QyxRQUFNRDs7O29CQWlDakI3eEM7WUE5QjJCO2FBRFUreEMsY0ErQnJDL3hDO2FBL0JtQmd5QyxZQTdHekJqUTthQTZHZ0JoaEMsUUE3R2hCZ2hDO2FBOEdpQyx5QkFEUmlRLFlBQWtCRDthQUNWOzswQkFEakJoeEMsUUFDQ214QyxRQUFNRDs7O2NBRUw3MEMsS0FoSGxCMmtDLE9BZ0hhN2dDLElBaEhiNmdDO1VBNEllLFVBNUJGN2dDO1dBNEJFLE9BNUJGQTtvQkE2QnVCLDhCQTdCdkJBLElBQUs5RCxLQTRCWjRDO29CQUU4Qiw4QkE5QnZCa0IsSUFBSzlELEtBNEJaNEM7O2NBc0JVLFVBdEJWQTtnQkF5Qk47K0JBekJNQTtpQkF5QjZCLHlCQXJEakI1QyxLQW9EQSswQztpQkFDaUI7O2dDQUFoQkUsUUFBTUQ7Y0FFcEI7cUJBZCtCLDhCQXpDdkJseEMsSUFBSzlELEtBNEJaNEM7O1dBQVMsT0E1QkZrQjtvQkErQnVCLDhCQS9CdkJBLElBQUs5RCxLQTRCWjRDO29CQUk4Qiw4QkFoQ3ZCa0IsSUFBSzlELEtBNEJaNEM7b0JBSzhCLDhCQWpDdkJrQixJQUFLOUQsS0E0Qlo0QztvQkFNOEIsOEJBbEN2QmtCLElBQUs5RCxLQTRCWjRDO29CQU84Qiw4QkFuQ3ZCa0IsSUFBSzlELEtBNEJaNEM7b0JBUThCLDhCQXBDdkJrQixJQUFLOUQsS0E0Qlo0QztvQkFTOEIsOEJBckN2QmtCLElBQUs5RCxLQTRCWjRDO29CQVU4Qiw4QkF0Q3ZCa0IsSUFBSzlELEtBNEJaNEM7O2tCQWNxQnN5QyxZQTFDZHB4QyxPQTBDSytnQyxVQTFDTC9nQztxQkEwRGZ3ckM7MEJBaEJvQnpLLFVBQVNxUSxhQTFDVGwxQyxLQTRCWjRDOztjQWtCTjtlQUY2QnV5QyxZQTVDaEJyeEM7ZUE0Q09naEMsVUE1Q1BoaEM7ZUE4Q2Isb0NBRjZCcXhDLFlBNUNYbjFDLEtBNEJaNEM7ZUFrQk47Ozs7K0JBRm9Ca2lDLFVBQ0h5USxhQUEyQkQsUUFBTUQ7cUJBTmQsOEJBdkN2QnZ4QyxJQUFLOUQsS0E0Qlo0QztxQkFZOEIsOEJBeEN2QmtCLElBQUs5RCxLQTRCWjRDOztNQXZCSCxtQkFBbUI7YUErRHhCd3lDLCtCQUlBL04sVUFBVTFDLElBQUkvaEM7TUFBUyxVQUF2QnlrQztPQTBFNkIsNEJBMUVuQjFDLElBQUkvaEM7O09BQVMsT0FBdkJ5a0M7O29CQUFjemtDO1lBR1o7YUFGOEIyc0MsV0FEbEIzc0M7YUFDTjR5QyxlQURSbk87YUFHRTs2Q0FGTW1PLGVBREU3USxJQUNzQjRLO2FBRTlCOzt5QkFEaUJrRyxrQkFBaUIvTjs7O29CQUZ0QjlrQztZQU9aO2FBRmtDNnNDLGFBTHRCN3NDO2FBS0o4eUMsaUJBTFZyTzthQU9FOztnQkFGUXFPLGlCQUxBL1EsSUFLMEI4SzthQUVsQzs7eUJBRGlCa0csa0JBQWlCdk47OztvQkFOdEJ4bEM7WUFXWjthQUY0Qmd0QyxhQVRoQmh0QzthQVNQZ3pDLGlCQVRQdk87YUFXRTs7Z0JBRkt1TyxpQkFUR2pSLElBU29CaUw7YUFFNUI7O3lCQURpQmlHLGtCQUFpQmhHOzs7b0JBVnRCanRDO1lBZVo7YUFGZ0NtdEMsYUFicEJudEM7YUFhTGt6QyxpQkFiVHpPO2FBZUU7O2dCQUZPeU8saUJBYkNuUixJQWF3Qm9MO2FBRWhDOzt5QkFEaUJnRyxrQkFBaUIvRjs7O29CQWR0QnB0QztZQW1CWjthQUZ3Q3N0QyxhQWpCNUJ0dEM7YUFpQkRvekMsaUJBakJiM087YUFtQkU7O2dCQUZXMk8saUJBakJIclIsSUFpQmdDdUw7YUFFeEM7O3lCQURpQitGLGtCQUFpQjlGOzs7b0JBbEJ0QnZ0QztZQXVCWjthQUZnQ3l0QyxhQXJCcEJ6dEM7YUFxQkxzekMsaUJBckJUN087YUF1QkU7O2dCQUZPNk8saUJBckJDdlIsSUFxQndCMEw7YUFFaEM7O3lCQURpQjhGLG1CQUFpQjdGOzs7b0JBdEJ0QjF0QztZQTJCWjthQUZnQzR0QyxhQXpCcEI1dEM7YUF5Qkx3ekMsa0JBekJUL087YUEyQkU7O2dCQUZPK08sa0JBekJDelIsSUF5QndCNkw7YUFFaEM7O3lCQURpQjZGLG1CQUFpQjFGOzs7b0JBMUJ0Qi90QztZQStCWjthQUY4Qmt1QyxhQTdCbEJsdUM7YUE2Qk4wekMsa0JBN0JSalA7YUErQkU7O2dCQUZNaVAsa0JBN0JFM1IsSUE2QnNCbU07YUFFOUI7O3lCQURpQnlGLG1CQUFpQnRGOzs7b0JBOUJ0QnJ1Qzs7YUFtRGN3dUMsYUFuRGR4dUM7YUFtREM0ekMsV0FuREQ1ekM7YUFrRGE2ekMsa0JBbEQzQnBQO2FBa0RlcVAsYUFsRGZyUDtZQW9ERyxvQkFGWXFQLGlCQUNBRjthQUN1QztZQUVwRDs7O2dCQUp5QkMsa0JBbERqQjlSLElBbURrQnlNO2FBRzFCOzt5QkFIYW9GLFdBRUlHLG1CQUFpQnBGOzs7b0JBckR0QjN1QztZQTJEbUM7YUFGTjZ1QyxhQXpEN0I3dUM7YUF5RGdCZzBDLGFBekRoQmgwQzthQXlER2kwQyxXQXpESGowQzthQXdENkJrMEMsa0JBeEQzQ3pQO2FBd0Q4QjBQLGFBeEQ5QjFQO2FBd0RpQjJQLGFBeERqQjNQO2FBMkRpRCxrQkFGaEN3UDtZQUVkLG9CQUFVLFVBSElHO2FBSVo7WUFENEMsWUFFQSxVQUpuQko7WUFJM0Isb0JBQVUsVUFMaUJHO2FBTXpCO1lBSDRDO2FBSWhDLGtCQUFNLEtBTk5GLFlBQWFEO2FBT1gsc0JBRGZ0UDthQUNlOztZQUNSLFdBREpnRztZQUVJLFdBRkdEO1lBTG1DO2FBUy9DOztnQkFBaUMsVUFaUXlKLG1CQXhEakNuUyxJQXlEaUM4TTthQVd6Qzs7WUFHOEI7dUJBZGZvRixXQUFhRCxhQWNFLEtBSmJLO29CQUFpQnRGOzs7b0JBbkV0Qi91QztZQW1DWjthQUZnQ3l2QyxhQWpDcEJ6dkM7YUFpQ0xzMEMsa0JBakNUN1A7YUFtQ0U7O2dCQUZPNlAsa0JBakNDdlMsSUFpQ3dCME47YUFFaEM7OzBCQURpQjhFLG1CQUFpQnJGOzs7b0JBbEN0Qmx2QztZQXVDWjthQUZnQzZ2QyxjQXJDcEI3dkM7YUFxQ0x3MEMsa0JBckNUL1A7YUF1Q0U7O2dCQUZPK1Asa0JBckNDelMsSUFxQ3dCOE47YUFFaEM7OzBCQURpQjRFLG1CQUFpQnBGOzs7b0JBdEN0QnJ2QztZQTJDWjthQUZrQ213QyxjQXpDdEJud0M7YUF5Q0owMEMsa0JBekNWalE7YUEyQ0U7O2dCQUZRaVEsa0JBekNBM1MsSUF5QzBCb087YUFFbEM7OzBCQURpQndFLG1CQUFpQm5GOzs7b0JBMUN0Qnh2QztZQStDWjthQUZrRHV3QyxjQTdDdEN2d0M7YUE2Q0k0MEMsa0JBN0NsQm5RO2FBK0NFOztnQkFGZ0JtUSxrQkE3Q1I3UyxJQTZDMEN3TzthQUVsRDs7MEJBRGlCc0UsbUJBQWlCakY7OztNQTZCL0IsbUJBQW1CO2FBMEJ4QmtGLE9BUUUvUyxJQUFJL2hDLE9BQ1EsbUJBRForaEMsSUFDWSxVQUFXLEtBRG5CL2hDLFFBQ2dDO2FBTXRDKzBDLFlBQVlyUixNQUFNN0IsTUFBTS9oQztNQUMxQjtpQ0FEMEJBO09BQzFCLGFBRG9CK2hDLE1BQU42QjtPQUdaLFlBSGtCN0I7TUFHbEIsR0FERW1ULFdBREEvdkMsSUFhaUIsT0FkS25GO01BQzFCLElBY0UsV0FmWWlrQyxjQWVGLFdBYlJpUjtNQWFRLE9BZkVqUjtlQWlCRCxPQWpCYWprQyxNQWVwQjJHLE1BZEZ4QjtlQWlCUyxPQWxCYW5GLE1BZXBCMkcsSUFiRnV1QyxVQURBL3ZDOzs7U0FrQlcsT0FsQlhBOztXQWtCeUQ7OzthQUFsQyxnQkFuQkRuRjs7OzthQW1Ca0IsZ0JBbkJsQkE7Ozs7YUFtQm1DLGdCQW5CbkNBOzs7YUFvQnRCLGVBTEUyRyxNQUtjLGdCQXBCTTNHO2FBcUJ0QixPQXJCc0JBLE1BZXBCMkcsS0FiRnV1QyxVQURBL3ZDOzs7OztXQXFCc0IsT0FyQnRCQSxjQXFCc0IsZ0JBdEJBbkY7O2FBc0JtQzs7O2VBQWpCLGdCQXRCbEJBOzs7O2VBc0JtQyxnQkF0Qm5DQTs7O2VBdUJ0QixlQVJFMkcsTUFRYyxnQkF2Qk0zRztlQXdCdEIsT0F4QnNCQSxNQWVwQjJHLEtBYkZ1dUMsVUFEQS92Qzs7O3VCQXlCQSxPQTFCc0JuRixNQWVwQjJHLElBYkZ1dUMsVUFEQS92QztNQTJCRiw0QkFiSXdCLElBYXNCO2FBRzFCd3VDLGtCQUFrQm4yQyxLQUFLZ0I7TUFDZDtrQkFEU2hCO09BQ1QsMEJBRGNnQjtPQUduQixrQkFIbUJBOztNQUduQixTQUNKd0U7Ozs7Ozs7Ozs7O2dCQUZFVyxPQURBaEcsdUJBQ0FnRzs7ZUFPc0Q7OztpQkFBakIsZ0JBVGhCbkY7Ozs7aUJBU2lDLGdCQVRqQ0E7OztpQkFVYixJQUFObzFDLE1BQU0sT0FUUmoyQztpQkFVRixlQURJaTJDLFFBQ1ksZ0JBWE9wMUM7aUJBWXZCLE9BWnVCQSxNQVVuQm8xQyxPQVRGajJDLFNBQ0FnRztpQkFVRiw0QkFGSWl3Qzs7Ozs7Ozs7Ozs7O1FBTndCLGlCQUYxQmp3QyxPQURBaEc7VUFJUSxJQUFOMmtCLE1BQU0sT0FKUjNrQjtVQUtGLGVBREkya0IsUUFESnRmO1VBR0EsT0FQdUJ4RSxNQUtuQjhqQixPQUpGM2tCLFNBQ0FnRztVQUtGLDRCQUZJMmU7TUFTc0MsZUFaeEMzZSxNQURBaEc7UUFjUSxJQUFOd0gsSUFBTSxPQWRSeEg7UUFlRixPQWhCdUJhLE1BZW5CMkcsSUFkRnhILFNBQ0FnRztRQWNGLDRCQURJd0I7TUFJSixPQW5CdUIzRyxHQW1CcEI7YUFHSHExQyxzQkFBc0JyMUM7TUFDZDt1QkFEY0E7T0FDZCx3QkFBTnVrQztPQUVNLFdBRE43Z0M7TUFFSixpQkFISTZnQyxRQUVBNTlCLE1BREFqRDtNQUVKLDRCQURJaUQsSUFFc0I7YUFxQ3hCMnVDLGdCQUFnQngxQyxNQUFNZDtNQUNYO2tCQURXQTtPQUVYLHdCQUZLYztPQUdOO01BQ1YsZ0JBREl5RztNQUVKLGtCQUZJQSxJQUhZekc7TUFNaEIsZ0JBSEl5RztNQUlKLGtCQUpJQSxJQUlrQiw0QkFObEJwSDtNQU9KLGdCQUxJb0gsSUFEQWd2QztNQU1KLHVCQUxJaHZDLElBTWU7YUFFbkJpdkMsa0JBQWtCdDJDLE1BQU00QztNQUMxQixTQURvQjVDO1FBR2xCLHVDQUh3QjRDLFdBR3hCOztjQUVFNkI7VUFDRTs2Q0FOb0I3QixFQUt0QjZCO1lBQ0UsNEJBQ2M7WUFEZCxTQURGQTs7O1FBRkY7U0FPRSxPQU5JL0I7U0FRSTs7WUFGUixzQkFWc0JFLE9BR3BCMnpDO1NBU007c0JBRUZqeEMsR0FBSSxlQUZSK0IsSUFDQSszQixPQUNJOTVCLEdBQUksaUJBQThCO1NBRmhDLFVBVE5peEM7U0FTTSwyQkFaYzN6QztTQVlkOztjQUlWMUU7VUFDRTtnQkFDRW9ILEVBREYsdUJBakJzQjFDLEVBZ0J4QjFFO1lBQ0UsT0FDRW9IO2FBRUssSUFGTEE7O2NBQ0UsU0FKRnVGLFNBSXFCLG9CQUFxQixjQUFXLElBRHJEdkY7WUFERixTQURGcEg7OztRQU1BLDRCQVZJbUo7TUFXQyxPQXZCbUJ6RSxDQXVCbEI7YUFHTjZ6QyxZQUFZejJDLE1BQU0wQztNQXRFQSxPQXNFTjFDOzs7Ozs7Ozs7Ozs7Ozs7O01BQzZDLHlCQUQ3Q0EsTUFDNkMscUJBRHZDMEMsR0FDMEM7YUFDNURnMEMsY0FBYzEyQyxNQUFNMEM7TUF4REQsT0F3REwxQzs7Ozs7Ozs7Ozs7Ozs7OztNQUM4Qyx5QkFEOUNBLE1BQzhDLHFCQUR4QzBDLEdBQzJDO2FBQy9EaTBDLGtCQUFrQjMyQyxNQUFNMEM7TUFsREwsT0FrREQxQzs7Ozs7Ozs7Ozs7Ozs7OztNQUM4Qyx5QkFEOUNBLE1BQzhDLHFCQUR4QzBDLEdBQzJDO2FBQ25FazBDLGNBQWM1MkMsTUFBTTBDO01BcEVELE9Bb0VMMUM7Ozs7Ozs7Ozs7Ozs7Ozs7TUFDOEMseUJBRDlDQSxNQUM4Qyx1QkFEeEMwQyxHQUMyQzthQUkvRG0wQyxjQUFjajJDLE1BQU1kLEtBQUtpRDtNQUMzQixTQUFJK3pDO1FBQ0YsT0FGY2wyQztxQkFFVm0yQzs7O1FBS0osdUNBUHlCaDBDLEVBQUxqRCxLQUVoQmkzQyxLQUswQjtNQU5oQyxTQWVJQyxpQkFBaUJsMkM7UUFBWSxzQ0FoQk5pQztRQWdCTTtpQkFoQk5BO29DQWdCTmpDLEdBR0Y7TUFsQm5CLE9BRGdCRjs7U0F5QnFDO2dDQUE1QixnQkF6QlRBLE1BQU1kLE1BQUtpRDtVQVN6QiwwQkFEb0JqQztVQUVINUM7U0FDZjtjQURlQSxNQURiK0g7OzthQUdNLDBCQUpVbkYsSUFFSDVDLEdBRVA7Ozs7OzRCQUVDLFFBSk1BO2FBRVA7eUJBSlU0QyxJQU9RLElBUFJBO2tCQVFsQmsyQztlQUtTO2VBQ3VCO2VBQ0w7Z0JBS1kseUJBQTVCLGdCQTVCQ3AyQyxNQUFNZCxNQUFLaUQsR0E0QmtCO2FBVzNDazBDLGdCQUFnQmoyQztNQUNSLElBQU5xRyxJQUFNO01BQ1YsYUFESUEsSUFEY3JHO01BRWxCLHVCQURJcUcsSUFFZTthQXVMakI2dkMsMkJBS0UvZCxFQUFFM29CLElBQUl1eUIsSUFBSW5qQyxJQUFJRSxLQUFLcXBDLE1BQU1ucEM7TUFBUyxVQUF4Qko7a0JBQUlFO1NBVWhCLE9BVmdCQTsyQkFVWjBSLEVBQUV6TztvQkFDTSxJQUFOakMsSUFBTSxrQkFEUjBRLEVBQzRCLFdBWFgyM0IsTUFBTW5wQyxNQVVyQitDO29CQUNNLG1CQVhWbzJCLEtBQUUzb0IsSUFXRTFQLEtBWEVpaUMsSUFZd0M7MkJBVjVDaGdDO29CQUNRLElBQU5qQyxJQUFNLFdBSFNxb0MsTUFBTW5wQyxNQUV2QitDO29CQUNRLG1CQUhWbzJCLEtBQUUzb0IsSUFHRTFQLEtBSEVpaUMsSUFJd0M7UUFFaEQsSUFEMEJ2eEIsRUFMVjFSO1FBTWhCLGdCQUFJaUQ7VUFDUSxJQUFOakMsSUFBTSxrQkFGYzBRLEVBRU0sV0FQWDIzQixNQUFNbnBDLE1BTXZCK0M7VUFDUSxtQkFQVm8yQixLQUFFM29CLElBT0UxUCxLQVBFaWlDLElBUXdDOztRQVJaLFNBQXhCbmpDOztvQkFBSUU7OzZCQXNCWjBSLEVBQUV6TztzQkFDTTt1QkFBTmpDO3dCQUFNO29DQUFvQixrQkFENUIwUSxFQUNpRCxXQXZCaEMyM0IsTUFBTW5wQyxNQXNCckIrQztzQkFDTSxtQkF2QlZvMkIsS0FBRTNvQixJQXVCRTFQLEtBdkJFaWlDLElBd0J3Qzs2QkFWNUNoZ0M7c0JBQ1EsSUFBTmpDLElBQU0sc0JBQW9CLFdBZlhxb0MsTUFBTW5wQyxNQWN2QitDO3NCQUNRLG1CQWZWbzJCLEtBQUUzb0IsSUFlRTFQLEtBZkVpaUMsSUFnQndDO2NBQ1ZxVSxJQWpCdEJ0M0M7MEJBa0JaaUQ7WUFDUTthQUFOakM7Y0FBTTswQkFBb0Isa0JBRk1zMkMsSUFFZSxXQW5CaENqTyxNQUFNbnBDLE1Ba0J2QitDO1lBQ1EsbUJBbkJWbzJCLEtBQUUzb0IsSUFtQkUxUCxLQW5CRWlpQyxJQW9Cd0M7aUJBcEJwQ25qQztrQkFBSUU7OzJCQWtDWnd0QyxFQUFFOTdCLEVBQUV6TztvQkFDSTtxQkFBTmpDO3NCQUFNOzZCQURSd3NDLEVBQzRCLGtCQUQxQjk3QixFQUMrQyxXQW5DaEMyM0IsTUFBTW5wQyxNQWtDbkIrQztvQkFDSSxtQkFuQ1ZvMkIsS0FBRTNvQixJQW1DRTFQLEtBbkNFaWlDLElBb0N3QzsyQkFWNUN1SyxFQUFFdnFDO29CQUNNLElBQU5qQyxJQUFNLGlCQURSd3NDLEVBQzRCLFdBM0JYbkUsTUFBTW5wQyxNQTBCckIrQztvQkFDTSxtQkEzQlZvMkIsS0FBRTNvQixJQTJCRTFQLEtBM0JFaWlDLElBNEJ3QztZQUNmc1UsSUE3QmpCdjNDO3dCQThCWnd0QyxFQUFFdnFDO1VBQ007V0FBTmpDO1lBQU07bUJBRFJ3c0MsRUFDNEIsa0JBRkMrSixJQUVvQixXQS9CaENsTyxNQUFNbnBDLE1BOEJyQitDO1VBQ00sbUJBL0JWbzJCLEtBQUUzb0IsSUErQkUxUCxLQS9CRWlpQyxJQWdDd0MsRUFJQTthQTdEaER1VSxhQUlFbmUsRUFBRTNvQixJQUFJdXlCLElBQUluakMsSUFBSXVwQztNQUFTLFVBQWJ2cEM7T0FFWixnQkFBSW1EO1NBQ2tDLElBQWhDdzBDLFdBSEYvbUMsSUFHa0MsV0FIdEIyNEIsTUFFWnBtQztTQUNrQyxtQkFIcENvMkIsRUFHSW9lLFFBSEV4VSxJQUltQjs7UUFKRixTQUFibmpDO2NBS1FpakMsTUFMUmpqQyxPQUtDOGtDLE1BTEQ5a0M7MEJBTVJtRDtZQUNrQyxJQUFoQ3cwQyxXQVBGL21DLElBT2tDLFlBRnpCazBCLE1BQU83QixNQUUwQyxXQVA5Q3NHLE1BTVpwbUM7WUFDa0MsbUJBUHBDbzJCLEVBT0lvZSxRQVBFeFUsSUFRbUI7UUFFM0IsSUFEWWdDLFFBVEFubEM7UUFVWixnQkFBSTB0QyxFQUFFdnFDO1VBQ2dDLElBQWhDdzBDLFdBWEYvbUMsSUFXa0MsWUFGMUJ1MEIsUUFDUnVJLEVBQ3NELFdBWDFDbkUsTUFVVnBtQztVQUNnQyxtQkFYcENvMkIsRUFXSW9lLFFBWEV4VSxJQVltQjthQXZLdkJ5VSxzQkFHSnJlLEVBQUUzb0IsSUFBSXV5QjtVQUFOL0IsTUFBRXZ3QixVQUFJcTFCO01BQU87aUJBQVBBO1FBdUZOLGtCQXZGQTlFLElBQUV2d0I7O1FBQVcsT0FBUHExQjs7V0FFTixJQURLMW5DLEtBREMwbkM7V0FFTixnQkFBSXhnQzthQUNGLElBQUlpeUMsV0FISjltQyxNQUVFbkwsR0FDRixtQkFIRjA3QixJQUdNdVcsUUFGRG41QyxLQUd1Qjs7V0FFNUIsSUFEVUMsT0FMSnluQztXQU1OLGdCQUFJeGdDO2FBL0JJOzBCQStCSkE7Y0EvQkksd0JBQU54RTtjQUVNLFdBRE4wRDthQUVKLGlCQUhJMUQsTUFFQTJHLE1BREFqRDthQURNLElBZ0NGK3lDLFdBUEo5bUMsTUF0QkoscUJBREloSjtvQkFvQkUwdkMsWUFHSm5XLElBT011VyxRQUZJbDVDLE9BR2tCOztlQUNmQyxPQVRQd25DLFNBU0VsbUMsSUFURmttQztrQkFvSk53UixhQXBKQXRXLElBQUV2d0IsTUFTV25TLE9BQUxzQixhQUN5QmtCLEtBQU8sT0FBUEEsR0FBVTs7ZUFDekJ2QyxPQVhadW5DLFNBV09qbUMsTUFYUGltQztrQkFvSk53UixhQXBKQXRXLElBQUV2d0IsTUFXZ0JsUyxPQUFMc0IsTUE5SmJzMkM7O2VBZ0t1QjMzQyxPQWJqQnNuQyxTQWFXaG1DLEtBYlhnbUMsU0FhTS9sQyxNQWJOK2xDLFNBYUQ5bEMsTUFiQzhsQztrQkF3S05vUjtvQkF4S0FsVyxJQUFFdndCLE1BYXFCalMsT0FBWHVCLE1BQUtELEtBakZqQjIyQyxZQWlGS3oyQzs7O1lBRW9CdkIsT0FmbkJxbkM7WUFlYTdsQyxPQWZiNmxDO1lBZVE1bEMsTUFmUjRsQztZQWVDM2xDLFFBZkQybEM7a0JBd0tOb1I7b0JBeEtBbFcsSUFBRXZ3QixNQWV1QmhTLE9BQVh5QixNQUFLRCxPQWpGbkJ5MkMsY0FpRk92MkM7OztZQUVzQnpCLE9BakJ2Qm9uQztZQWlCaUIxbEMsT0FqQmpCMGxDO1lBaUJZemxDLE1BakJaeWxDO1lBaUJLeGxDLFFBakJMd2xDO2tCQXdLTm9SO29CQXhLQWxXLElBQUV2d0IsTUFpQjJCL1IsT0FBWDJCLE1BQUtELE9BakZ2QnUyQyxrQkFpRldyMkM7OztZQUVjM0IsT0FuQm5CbW5DO1lBbUJhdmxDLE9BbkJidWxDO1lBbUJRdGxDLE1BbkJSc2xDO1lBbUJDcmxDLFFBbkJEcWxDO2tCQXdLTm9SO29CQXhLQWxXLElBQUV2d0IsTUFtQnVCOVIsT0FBWDZCLE1BQUtELE9BakZuQnEyQyxjQWlGT24yQzs7ZUFFa0I3QixPQXJCbkJrbkMsU0FxQmFwbEMsT0FyQmJvbEMsU0FxQlFubEMsTUFyQlJtbEMsU0FxQkNsbEMsTUFyQkRrbEM7V0F5TndCLFVBcE1oQm5sQzt1QkFBS0Q7Y0E4TW5CLE9BOU1tQkE7Z0NBOE1mOFEsRUFBRXpPO3lCQUNNLElBQU5qQyxJQUFNLGNBL01MRixNQThNSDRRLEVBQUV6Tzt5QkFDTSxtQkFwT1ppK0IsT0FBRXZ3QixNQW9PSTNQLEtBL01tQmxDLE9BZ051QjtnQ0FWNUNtRTt5QkFDUTswQkFBTmpDOzJCQUFNLGNBdk1MRixNQXVNeUIsd0JBdk16QkEsT0FzTUhtQzt5QkFDUSxtQkE1TlppK0IsT0FBRXZ3QixNQTROSTNQLEtBdk1tQmxDLE9Bd011QjthQUVoRCxJQUQwQjRTLEVBek1QOVE7YUEwTW5CLGdCQUFJcUM7ZUFDUSxJQUFOakMsSUFBTSxjQTNNTEYsTUF5TW1CNFEsRUFDdEJ6TztlQUNRLG1CQWhPWmkrQixPQUFFdndCLE1BZ09JM1AsS0EzTW1CbEMsT0E0TXVCOzthQVJsQixTQXBNaEIrQjs7eUJBQUtEOztrQ0EyTmY4USxFQUFFek87MkJBQ00sSUFBTmpDLElBQU0sc0JBQW9CLGNBNU56QkYsTUEyTkg0USxFQUFFek87MkJBQ00sbUJBalBaaStCLE9BQUV2d0IsTUFpUEkzUCxLQTVObUJsQyxPQTZOdUI7a0NBWDVDbUU7MkJBQ1E7OENBbk5MbkMsTUFtTnlCLHdCQW5OekJBLE9Ba05IbUM7NEJBRVMsNEJBRFBqQzsyQkFDTyxtQkF6T2JrZ0MsT0FBRXZ3QixNQXlPSTQwQixPQXBObUJ6bUMsT0FxTndCO21CQUNYdzRDLElBdE5uQjEyQzsrQkF1TmZxQztpQkFDUSxJQUFOakMsSUFBTSxzQkFBb0IsY0F4TnpCRixNQXNOK0J3MkMsSUFDbENyMEM7aUJBQ1EsbUJBN09aaStCLE9BQUV2d0IsTUE2T0kzUCxLQXhObUJsQyxPQXlOdUI7c0JBek5sQytCO3VCQUFLRDs7Z0NBd09mNHNDLEVBQUU5N0IsRUFBRXpPO3lCQUNJLElBQU5qQyxJQUFNLGlCQURSd3NDLEVBQzRCLGNBek96QjFzQyxNQXdPRDRRLEVBQUV6Tzt5QkFDSSxtQkE5UFppK0IsT0FBRXZ3QixNQThQSTNQLEtBek9tQmxDLE9BME91QjtnQ0FYNUMwdUMsRUFBRXZxQzt5QkFDTTs0Q0FoT0xuQyxNQWdPeUIsd0JBaE96QkEsT0ErTkRtQzswQkFFTyx1QkFGVHVxQyxFQUNFeHNDO3lCQUNPLG1CQXRQYmtnQyxPQUFFdndCLE1Bc1BJNDBCLE9Bak9tQnptQyxPQWtPd0I7aUJBQ2hCeTRDLElBbk9kMzJDOzZCQW9PZjRzQyxFQUFFdnFDO2VBQ00sSUFBTmpDLElBQU0saUJBRFJ3c0MsRUFDNEIsY0FyT3pCMXNDLE1BbU8wQnkyQyxJQUMzQnQwQztlQUNNLG1CQTFQWmkrQixPQUFFdndCLE1BMFBJM1AsS0FyT21CbEMsT0FzT3VCOztlQXBPckNFLE9BdkJMZ25DLFNBdUJBamxDLE1BdkJBaWxDO2tCQW9KTndSLGFBcEpBdFcsSUFBRXZ3QixNQXVCUzNSLE9BQUwrQixNT3YzQ05vRDs7V1AwNENBLFVBMUNNNmhDLFNBMENOLFNBMUNFcjFCLG1CQUFJcTFCOzs7OztZQTRDVWhsQyxJQTVDVmdsQztZQUFKMWdCLGVBNENjdGtCO1lBNUNkMlA7WUFBSXExQjs7Ozs7WUE4Q1Eva0MsSUE5Q1Ira0M7WUFBSjJSLGVBOENZMTJDO1lBOUNaMFA7WUFBSXExQjs7O1dBa0RHO1lBRGlCOW1DLE9BakRwQjhtQztZQWlEU0wsVUFqRFRLO1lBa0RHLG1CQURNTDtXQUNOLGdCQUNKM2tDLEtBQ0gsbUJBcERGa2dDLE9BQUV2d0IsTUFrREU1UixJQURzQkcsT0FJc0I7O2VBQ3hCQyxRQXREbEI2bUMsU0FzRFc5a0MsTUF0RFg4a0M7O2FBdUROLElBQWEvQzthQUNYO3NCQXhERi9CLElBQUV2d0IsTUF3REEsV0FBWSxPQUREc3lCLElBREkvaEMsT0FBTy9CLFNBRWM7O1dBOUJ0QyxJQURNQyxRQXpCQTRtQztXQTBCTixnQkFBSTFqQyxFQUFFVzthQUFLO3NCQTFCWGkrQjt5QkFBRXZ3QixlQTBCNEN6QyxHQUFLLGtCQUEvQzVMLEVBQTBDNEwsRUFBeENqTCxFQUFrRDtzQkFEbEQ3RCxRQUN5RDs7V0FFL0QsSUFETUMsUUEzQkEybUM7V0E0Qk4sZ0JBQUkxakMsR0FBSyxtQkE1QlQ0K0IsT0FBRXZ3QixNQTRCRXJPLEdBREVqRCxRQUMwQzs7O1lBNUIxQ292QztZQTJFVWh0QyxXQTNFVnVrQztZQUFKNFIsZUEyRWNuMkM7WUEzRWRrUDtZQUFJcTFCOzs7Ozs7Y0E2RXVDMW1DLFFBN0V2QzBtQzs7O2NBQU42Ujt3QkFBRW5uQyxJQUFGMm9CLEVBNkU2Qy82QjswQkE3RTdDNGlDLElBOEVPNFc7bUJBQ0wsbUJBL0VGemUsS0FBRTNvQixPQThFS29uQyxPQURzQ3g1QyxLQUVxQjt3QkEvRWxFNGlDO3NCQUFFdndCLE1BQUZ1d0IsSUE2RTZDNWhDO2NBN0U3QzRoQztjQUFFdndCO2NBQUlxMUI7OztZQWlGdUMxa0MsUUFqRnZDMGtDOzs7WUFBTitSO3NCQUFFcm5DLElBQUYyb0IsRUFpRjZDLzZCO3dCQWpGN0M0aUMsSUFrRk80VyxNQUNMLG1CQW5GRnplLEtBQUUzb0IsT0FrRktvbkMsT0FEc0N4NUMsS0FFcUI7c0JBbkZsRTRpQztvQkFBRXZ3QixNQUFGdXdCLElBaUY2QzUvQjtZQWpGN0M0L0I7WUFBRXZ3QjtZQUFJcTFCOztrQkF3Q047O2VBa0JxQnprQyxRQTFEZnlrQyxTQTJERnlSLFdBM0RGOW1DO2tDQTRETyxtQkE1RFR1d0IsSUEyREl1VyxRQURpQmwyQyxRQUVjOztXQUtuQyxJQUpxQkMsUUE3RGZ3a0M7V0FpRU4sZ0JBQUlwakM7YUFDa0MsSUFBaEM2MEMsV0FsRUo5bUMsTUFrRW9DLHdCQURsQy9OO2FBQ2tDLG1CQWxFdENzK0IsSUFrRU11VyxRQUxlajJDLFFBTU87O1dBRTVCLElBRGVFLFFBcEVUc2tDO1dBcUVOLGdCQUFJeGdDO2FBQ0YsSUFBSWl5QyxXQXRFSjltQyxNQXFFRW5MLEdBQ0YsbUJBdEVGMDdCLElBc0VNdVcsUUFGUy8xQyxRQUdhOztlQUNSRSxRQXhFZG9rQyxTQXdFUzVqQyxJQXhFVDRqQzs7O29CQTJGTmdTLCtCQTNGQTlXLElBQUV2d0IsTUF3RWF2TyxJQUFLUjs7b0JBbUJwQm8yQyx3QkEzRkE5VyxJQUFFdndCLE1Bd0Vhdk8sSUFBS1I7O1dBMUNTO1lBRFhDLFFBN0JabWtDO1lBNkJTMWpDLEVBN0JUMGpDO1lBNkJFempDLE1BN0JGeWpDO1lBOEJ1QixnQkFEZDFqQztXQUNjOztvQkFrTzdCMjFDLHdCQWhRQS9XLElBQUV2d0IsTUE2QmdCOU8sUUFBVlU7O29CQW1PUjAxQyxpQkFoUUEvVyxJQUFFdndCLE1BNkJnQjlPLFFBQVZVLGFBMERIO2FBSUx5MUMsNkJBSUEzZSxFQUFFM29CLElBQUl0TyxJQUFJNmdDO01BQU8sVUFBWDdnQztPQUFXLE9BQVhBOztVQUM2Qjs7bUJBNkNuQzgxQywyQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7d0NBOENWaVYsb0JBOUNBN2UsRUFBRTNvQixJQUFRdXlCOztVQUV5Qjs7bUJBNENuQ2lWLDJCQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjt3Q0E4Q1ZpVixvQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7Z0JBYXlCOztVQUdBOzttQkE4Qm5DaVYsMkJBOUNBN2UsRUFBRTNvQixJQUFRdXlCO3dDQThDVmlWLG9CQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjs7T0FBTyxPQUFYN2dDOztVQUc2Qjs7bUJBMkNuQzgxQywyQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7d0NBOENWaVYsb0JBOUNBN2UsRUFBRTNvQixJQUFRdXlCOztVQUl5Qjs7bUJBMENuQ2lWLDJCQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjt3Q0E4Q1ZpVixvQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7O1VBS3lCOzttQkF5Q25DaVYsMkJBOUNBN2UsRUFBRTNvQixJQUFRdXlCO3dDQThDVmlWLG9CQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjs7VUFNeUI7O21CQXdDbkNpViwyQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7d0NBOENWaVYsb0JBOUNBN2UsRUFBRTNvQixJQUFRdXlCOztVQU95Qjs7bUJBdUNuQ2lWLDJCQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjt3Q0E4Q1ZpVixvQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7O1VBUXlCOzttQkFzQ25DaVYsMkJBOUNBN2UsRUFBRTNvQixJQUFRdXlCO3dDQThDVmlWLG9CQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjs7VUFTeUI7O21CQXFDbkNpViwyQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7d0NBOENWaVYsb0JBOUNBN2UsRUFBRTNvQixJQUFRdXlCOztVQVV5Qjs7bUJBb0NuQ2lWLDRCQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjt3Q0E4Q1ZpVixvQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7O1VBV3lCOzttQkFtQ25DaVYsNEJBOUNBN2UsRUFBRTNvQixJQUFRdXlCO3dDQThDVmlWLG9CQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjs7VUFZeUIsSUFBVi9oQyxNQVpuQmtCO1VBWTZCOzttQkFRbkMrMUMsNkJBcEJBOWUsRUFBRTNvQixJQVl1QnhQLE1BWmYraEM7d0NBb0JWa1YscUJBcEJBOWUsRUFBRTNvQixJQVl1QnhQLE1BWmYraEM7O1VBY3lCOzttQkFnQ25DaVYsNEJBOUNBN2UsRUFBRTNvQixJQUFRdXlCO3dDQThDVmlWLG9CQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjs7VUFleUI7O21CQStCbkNpViw0QkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7d0NBOENWaVYsb0JBOUNBN2UsRUFBRTNvQixJQUFRdXlCLE1BZ0JtRDthQUk3RGtWLDBCQUlBOWUsRUFBRTNvQixJQUFJeFAsTUFBTStoQztNQUFPLFVBQWIvaEM7UUFlcUI7O2lCQU8zQmczQywyQkF0QkE3ZSxFQUFFM29CLElBQVV1eUI7c0NBc0JaaVYsb0JBdEJBN2UsRUFBRTNvQixJQUFVdXlCOztPQUFPLE9BQWIvaEM7O1VBQ3FCLElBQW5CNUMsS0FERjRDO1VBQ3FCLHVCQUFTLHVCQURwQ200QixFQUFFM29CLElBQ01wUyxLQURJMmtDLElBQ3NEOztVQUN2QyxJQUFqQjFrQyxPQUZKMkM7VUFFcUIsdUJBQVMsdUJBRnBDbTRCLEVBQUUzb0IsSUFFUW5TLE9BRkUwa0MsSUFFc0Q7O1VBQ3ZDLElBQXBCemtDLE9BSEQwQztVQUdxQix1QkFBUyx1QkFIcENtNEIsRUFBRTNvQixJQUdLbFMsT0FIS3lrQyxJQUdzRDs7VUFDdkMsSUFBbEJ4a0MsT0FKSHlDO1VBSXFCLHVCQUFTLHVCQUpwQ200QixFQUFFM29CLElBSU9qUyxPQUpHd2tDLElBSXNEOztVQUN2QyxJQUFkdmtDLE9BTFB3QztVQUtxQix1QkFBUyx1QkFMcENtNEIsRUFBRTNvQixJQUtXaFMsT0FMRHVrQyxJQUtzRDs7VUFDdkMsSUFBbEJ0a0MsT0FOSHVDO1VBTXFCLHVCQUFTLHVCQU5wQ200QixFQUFFM29CLElBTU8vUixPQU5Hc2tDLElBTXNEOztVQUN2QyxJQUFsQnJrQyxPQVBIc0M7VUFPcUIsdUJBQVMsdUJBUHBDbTRCLEVBQUUzb0IsSUFPTzlSLE9BUEdxa0MsSUFPc0Q7O1VBQ3ZDLElBQW5CcGtDLE9BUkZxQztVQVFxQix1QkFBUyx1QkFScENtNEIsRUFBRTNvQixJQVFNN1IsT0FSSW9rQyxJQVFzRDs7VUFNdkMsSUFBVG5rQyxPQWRab0M7VUFjcUIsdUJBQVMsdUJBZHBDbTRCLEVBQUUzb0IsSUFjZ0I1UixPQWRObWtDLElBY3NEOztVQUd6RDtXQURrQmprQyxPQWhCckJrQztXQWdCZ0J4QixJQWhCaEJ3QjtXQWdCV2pDLElBaEJYaUM7V0FpQkcsU0FBTSxLQURFakMsS0FBS1M7VUFDYjtZQUNzQix1QkFsQi9CMjVCLEVBQUUzb0IsSUFrQjZCLGFBRDNCM1IsR0FEdUJDLFFBaEJmaWtDLElBa0I2Qzs7VUFUOUIsSUFBbEIvakMsT0FUSGdDO1VBU3FCO1lBQVcsdUJBVHRDbTRCLEVBQUUzb0IsSUFTT3hSLE9BVEcrakMsSUFTd0Q7O1VBQ3pDLElBQWxCOWpDLFFBVkgrQjtVQVVxQix1QkFBUyx1QkFWcENtNEIsRUFBRTNvQixJQVVPdlIsUUFWRzhqQyxJQVVzRDs7VUFDdkMsSUFBcEI3akMsUUFYRDhCO1VBV3FCLHVCQUFTLHVCQVhwQ200QixFQUFFM29CLElBV0t0UixRQVhLNmpDLElBV3NEO2lCQUN2QztpQkFDQSw4QkFLOEI7YUFJekRpVix5QkFHQTdlLEVBQUUzb0IsSUFBSXV5QjtNQUNSLFlBREl2eUI7TUFDSjs7ZUFwSk1nbkMsd0JBbUpKcmUsT0FBTTRKO29DQW5KRnlVLGlCQW1KSnJlLE9BQU00SixLQUM4RDthQStHcEVnVixzQkFJRTVlLEVBQUUzb0IsSUFBSXBTLEtBQUtpRSxNQUFNRDtNQUFLLEdBQVhDO1FBR2IsSUFEWTZwQyxRQUZDN3BDO1FBR2IsZ0JBQUlVO1VBQzJCLG1CQUo3Qm8yQixFQUFFM29CLElBQUlwUyxLQUVJOHRDLFFBRW1CLFdBSlo5cEMsRUFHZlcsR0FDZ0M7TUFIckIsWUFEWHlOLElBQWVwTztNQUNKOztlQXhRWG8xQyx3QkF1UUZyZSxPQUFNLzZCO29DQXZRSm81QyxpQkF1UUZyZSxPQUFNLzZCLE1BSTRCO2FBM1FoQys0QyxZQUdKaGUsRUFBRTNvQixJQUFJdXlCO01KOStDWCx1QkkyK0NTeVUsZ0JBR0pyZSxFQUFFM29CLElBQUl1eUI7YUEyRk5xVixtQkFJQWpmLEVBQUUzb0IsSUFBSXRPLElBQUk2Z0M7TUo3a0RmLHVCSXlrREsrVSx1QkFJQTNlLEVBQUUzb0IsSUFBSXRPLElBQUk2Z0M7YUFvQlZtVixnQkFJQS9lLEVBQUUzb0IsSUFBSXhQLE1BQU0raEM7TUpybURqQix1QklpbURLa1Ysb0JBSUE5ZSxFQUFFM29CLElBQUl4UCxNQUFNK2hDO2FBeUlab1YsWUFJRWhmLEVBQUUzb0IsSUFBSXBTLEtBQUtpRSxNQUFNRDtNSmx2RHhCLHVCSTh1REsyMUMsZ0JBSUU1ZSxFQUFFM29CLElBQUlwUyxLQUFLaUUsTUFBTUQ7YUFpRm5CaTJDLHdCQUlFbGYsRUFBRW5yQixFQUFFKzBCLElBQUluakMsSUFBSUU7TUFBUSxVQUFaRjtrQkFBSUU7VUFNVixHQU5VQTtZQU1HLHNCQU5mcTVCLEVBQUVuckIsRUFBRSswQixLQU1JLG9CSjcwRGY7WUk2MERlLHNCSjcwRGY7VUl5MERlLHNCQUZSNUosRUFBRW5yQixFQUFFKzBCO1VBRUksc0JKejBEZjtRSTIwRGUsc0JBSlI1SixFQUFFbnJCLEVBQUUrMEI7UUFJSSxzQkozMERmOztRSXUwRDJCLFNBQVpuakM7b0JBQUlFO1lBWVYsR0FaVUE7Y0FZRyxzQkFaZnE1QixFQUFFbnJCLEVBQUUrMEIsS0FZSSxvQkpuMURmO2NJbTFEZSxzQkpuMURmO1lJKzBEZSxzQkFSUjVKLEVBQUVuckIsRUFBRSswQjtZQVFJLHNCSi8wRGY7VUlpMURlLHNCQVZSNUosRUFBRW5yQixFQUFFKzBCO1VBVUksc0JKajFEZjtrQkl1MERtQmpqQztVQWtCVixHQWxCVUE7WUFrQlU7K0JBbEJ0QnE1QixFQUFFbnJCLEVBQUUrMEI7YUFrQlcsb0JKejFEdEI7YUl5MURlLG9CSnoxRGY7WUl5MURlLHNCSnoxRGY7VUlxMURzQixzQkFkZjVKLEVBQUVuckIsRUFBRSswQixLQWNJLG9CSnIxRGY7VUlxMURlLHNCSnIxRGY7UUl1MURzQixzQkFoQmY1SixFQUFFbnJCLEVBQUUrMEIsS0FnQkksb0JKdjFEZjtRSXUxRGUsc0JKdjFEZixhSXkxRHFEO2FBL0Y1Q3dWLHVCQUVGcGYsRUFBRW5yQixFQUFFKzBCO1VBQUovQixNQUFJOEU7TUFBTztpQkFBUEE7UUFzRUYsa0JBdEVGOUUsSUFBRWh6Qjs7UUFBUyxPQUFQODNCOztXQUVGLFNBRkVBLFNBRUksa0JBRlI5RSxJQUFFaHpCLEVBQ0c1UDtXQUNHLHNCSjl2RGY7O1dJZ3dEUyxXQUpFMG5DLFNBSUksa0JBSlI5RSxJQUFFaHpCLEVBR1EzUDtXQUNGLHNCSmh3RGY7O29CSTR2RFd5bkM7O2FBTUYsV0FORUEsU0FNSSxrQkFOUjlFLElBQUVoekIsRUFLa0IxUDthQUNaLHNCSmx3RGY7OztlSW93RFMsV0FSRXduQyxTQVFJLGtCQVJSOUUsSUFBRWh6QixFQU9xQnpQO2VBQ2Ysc0JKcHdEZjthSXN3RFM7cUJBVkV1bkM7Y0FVVyxrQkFWZjlFLElBQUVoekIsRUFTcUJ4UDtjQUNmLG9CSnR3RGY7YUlzd0RlLHNCSnR3RGY7O29CSTR2RFdzbkM7O2FBWUYsV0FaRUEsU0FZSSxrQkFaUjlFLElBQUVoekIsRUFXdUJ2UDthQUNqQixzQkp4d0RmOzs7ZUkwd0RTLFdBZEVxbkMsU0FjSSxrQkFkUjlFLElBQUVoekIsRUFhMEJ0UDtlQUNwQixzQkoxd0RmO2FJNHdEUztxQkFoQkVvbkM7Y0FnQlcsa0JBaEJmOUUsSUFBRWh6QixFQWUwQnJQO2NBQ3BCLG9CSjV3RGY7YUk0d0RlLHNCSjV3RGY7O2VJNndEMEJDLE9BakJma25DLFNBaUJTaG1DLEtBakJUZ21DLFNBaUJJbG1DLElBakJKa21DO2tCQXVFTnVTLHdCQXZFRXJYLElBQUVoekIsRUFpQmlCcFAsT0FBWGdCLElBQUtFOztlQUVRaEIsT0FuQmpCZ25DLFNBbUJXN2xDLE9BbkJYNmxDLFNBbUJNam1DLE1BbkJOaW1DO2tCQXVFTnVTLHdCQXZFRXJYLElBQUVoekIsRUFtQm1CbFAsT0FBWGUsTUFBS0k7O2VBRVVqQixPQXJCckI4bUMsU0FxQmUxbEMsT0FyQmYwbEMsU0FxQlUvbEMsTUFyQlYrbEM7a0JBdUVOdVMsd0JBdkVFclgsSUFBRWh6QixFQXFCdUJoUCxPQUFYZSxNQUFLSzs7ZUFFRW5CLFFBdkJqQjZtQyxTQXVCV3ZsQyxPQXZCWHVsQyxTQXVCTTVsQyxNQXZCTjRsQztrQkF1RU51Uyx3QkF2RUVyWCxJQUFFaHpCLEVBdUJtQi9PLFFBQVhpQixNQUFLSzs7ZUFFTXJCLFFBekJqQjRtQyxTQXlCV3BsQyxPQXpCWG9sQyxTQXlCTXpsQyxNQXpCTnlsQztrQkF1RU51Uyx3QkF2RUVyWCxJQUFFaHpCLEVBeUJtQjlPLFFBQVhtQixNQUFLSzs7b0JBekJYb2xDOzthQTRCRixZQTVCRUEsU0E0Qkksa0JBNUJSOUUsSUFBRWh6QixFQTJCZ0I3TzthQUNWLHNCSnh4RGY7OztlSTB4RFMsWUE5QkUybUMsU0E4Qkksa0JBOUJSOUUsSUFBRWh6QixFQTZCbUI1TztlQUNiLHNCSjF4RGY7YUk0eERTO3NCQWhDRTBtQztjQWdDVyxrQkFoQ2Y5RSxJQUFFaHpCLEVBK0JtQjVNO2NBQ2Isb0JKNXhEZjthSTR4RGUsc0JKNXhEZjtrQkl3eURTLFVBNUNFMGtDO2tCQThDRixVQTlDRUE7a0JBZ0RGLFVBaERFQTs7V0FrREYsWUFsREVBLFNBa0RJLGtCQWxEUjlFLElBQUVoekIsRUFpRGdCM007V0FDVixzQko5eURmOztlSSt5RCtCQyxRQW5EcEJ3a0MsU0FtRGE5a0MsTUFuRGI4a0M7O2FBb0RGLElBQWEvQzthQUVULG9CQXRETi9CLElBQUVoekIsRUFzREksV0FBWSxPQUZIKzBCLElBREUvaEMsT0FBT00sU0FHa0I7O1dBcEJ4QztvQkFsQ0V3a0M7WUFrQ1csa0JBbENmOUUsSUFBRWh6QixFQWlDSXhNO1lBQ0Usb0JKOXhEZjtXSTh4RGUsc0JKOXhEZjs7V0lneURTLFlBcENFc2tDLFNBb0NJLGtCQXBDUjlFLElBQUVoekIsRUFtQ0l0TTtXQUNFLHNCSmh5RGY7a0JJNHpEUyxVQWhFRW9rQzs7Ozs7Y0FpRXlDbmtDLFFBakV6Q21rQzs7O2NBQUo2UjswQkFpRTZDdjVDOzBCQWpFN0M0aUMsSUFrRW9Cd1gsS0FBTyxvQkFsRTNCcmYsRUFrRW9CcWYsSUFEeUJwNkMsS0FDSyxRQWxFbEQ0aUM7MEJBaUU2Q3IvQjtjQWpFN0NxL0I7Y0FBSThFOzs7WUFtRXlDaGtDLFFBbkV6Q2drQzs7O1lBQUorUjt3QkFtRTZDejVDO3dCQW5FN0M0aUMsSUFvRW9Cd1gsS0FBTyxvQkFwRTNCcmYsRUFvRW9CcWYsSUFEeUJwNkMsS0FDSyxRQXBFbEQ0aUM7d0JBbUU2Q2wvQjtZQW5FN0NrL0I7WUFBSThFOztrQkEwQ0Y7O1dBY0EsWUF4REVBLFNBd0RJLGtCQXhEUjlFLElBQUVoekIsRUF1RG1CaE07V0FDYixzQkpwekRmOztXSXN6RFMsWUExREU4akMsU0EwREksa0JBMURSOUUsSUFBRWh6QixFQXlEbUIvTDtXQUNiLHNCSnR6RGY7O1dJd3pEUyxZQTVERTZqQyxTQTRESSxrQkE1RFI5RSxJQUFFaHpCLEVBMkRhN0w7V0FDUCxzQkp4ekRmOztlSXl6RDJCczJDLFFBN0RoQjNTLFNBNkRXNWpDLElBN0RYNGpDO2tCQW5MTnNTO29DQWlQaUMsa0JBOUQvQnBYLElBQUVoekIsRUE4RGdDLE9BRG5COUwsSUFBS3UyQzs7ZUF4QkZDLFFBckNkNVMsU0FxQ0l6akMsTUFyQ0p5akM7OztvQkE4Rk42UywrQkE5RkUzWCxJQUFFaHpCLEVBcUNnQjBxQyxRQUFWcjJDOztvQkF5RFZzMkMsd0JBOUZFM1gsSUFBRWh6QixFQXFDZ0IwcUMsUUFBVnIyQyxRQWlDSDthQXdCUHMyQyw2QkFHRXhmLEVBQUVuckIsRUFBRSswQjtNQUhOO1FBT0ksbUJBQU0sd0JBSlI1SixFQUFFbnJCLEVBQUUrMEIsSUFHUTFnQztRQUNKLHNCSmoyRGY7TUkrMURTOztlQXJHQWsyQyx5QkFtR0ZwZixFQUFFbnJCLEVBQUUrMEI7b0NBbkdGd1Ysa0JBbUdGcGYsRUFBRW5yQixFQUFFKzBCLEtBSXNDO2FBdkd4Q3VWLGFBRUZuZixFQUFFbnJCLEVBQUUrMEI7TUo1dkRYLHVCSTB2RFN3VixpQkFFRnBmLEVBQUVuckIsRUFBRSswQjthQThGTjZWLG1CQUdFemYsRUFBRW5yQixFQUFFKzBCO01KNzFEWCx1QkkwMURLNFYsdUJBR0V4ZixFQUFFbnJCLEVBQUUrMEI7YUFZRjhWLFdBQVc3cUMsRUFBRXdDO01KejJEdEIsSUl5MkRzQkM7TUFBTTtpQkFBTkE7UUFlVzs7UUFmTCxPQUFOQTs7V0FFVDtZQURlbFAsV0FETmtQO1lBQ0dlLEVBREhmO1lBRVQsMkJBRGVsUDtXQUV2QixXQUhleU0sRUFDS3dEO1dBRXBCLHFCQUhleEQsRUFFWHBMOztvQkFGYTZOOzthQUtqQixJQURvQ0M7YUFDcEMsV0FMZTFDO2FBS0MsY0FMREE7YUFLZixJQUxpQnlDLE1BSW1CQzs7ZUFFQTBVO1dBQ3BDLFdBUGVwWDtXQU9DLGNBUERBO2VBQUV5QyxNQU1tQjJVOzs7ZUFNdEJoakIsRUFaR3FPLFNBWU5xb0MsSUFaTXJvQztXQVlXLFdBWmJ6QyxFQVlKOHFDO1dBQWlCLGtCQUFkMTJDLEVBWkM0TDtpQkFhYSxJQUFsQitxQyxJQWJPdG9DLFNBYVcsV0FiYnpDLEVBYUwrcUMsS0FBa0IscUJBYmIvcUM7O2VBY0tDLElBZEh3QyxTQWNBdW9DLElBZEF2b0M7V0FjVyxXQWRiekMsRUFjRWdyQztXQUFXLG1CQUFSL3FDOzs7ZUFOR2tGLElBUk4xQyxTQVFHMm1DLElBUkgzbUM7V0FTVyxXQVRiekMsRUFRS29wQztXQUNRLHFCQVRicHBDLEVBUVFtRjs7ZUFFRjdOLEVBVkptTCxTQVVDNG1DLElBVkQ1bUM7V0FXVyxXQVhiekMsRUFVR3FwQztXQUNVLDJCQVhicnBDLEVBVU0xSSxHQUtTO2FBSzFCMnpDLFdBQVcvMEMsRUFBRXNNO01KNzNEdEIsSUk2M0RzQkM7TUFBTTtpQkFBTkE7UUFlVzs7UUFmTCxPQUFOQTs7V0FFVDtZQURlbFAsV0FETmtQO1lBQ0dlLEVBREhmO1lBRVQsMkJBRGVsUDtXQUV2QixXQUhlMkMsRUFDS3NOO1dBRXBCLGtCQUhldE4sRUFFWHRCOztvQkFGYTZOOzthQUtqQixJQURvQ0M7YUFDcEMsV0FMZXhNO2FBS0MsV0FMREE7YUFLZixJQUxpQnVNLE1BSW1CQzs7ZUFFQTBVO1dBQ3BDLFdBUGVsaEI7V0FPQyxXQVBEQTtlQUFFdU0sTUFNbUIyVTs7O2VBTXRCaGpCLEVBWkdxTyxTQVlOcW9DLElBWk1yb0M7V0FZVyxXQVpidk0sRUFZSjQwQztXQUFpQixrQkFBZDEyQyxFQVpDOEI7aUJBYWEsVUFiWHVNOztlQWNHeEMsSUFkSHdDLFNBY0Fzb0MsSUFkQXRvQztXQWNXLFdBZGJ2TSxFQWNFNjBDO1dBQVcsbUJBQVI5cUM7OztlQU5Ha0YsSUFSTjFDLFNBUUcybUMsSUFSSDNtQztXQVNXLFdBVGJ2TSxFQVFLa3pDO1dBQ1Esa0JBVGJsekMsRUFRUWlQOztlQUVGN04sRUFWSm1MLFNBVUM0bUMsSUFWRDVtQyxTQVdXLFdBWGJ2TSxFQVVHbXpDLEtBQ1UsZ0JBWGJuekMsRUFVTW9CLEdBS1M7YUFNMUI0ekMsV0FBV2gxQyxFQUFFc007TUpsNUR0QixJSWs1RHNCQztNQUFNO2lCQUFOQTtRQWVXOztRQWZMLE9BQU5BOztXQUVUO1lBRGVsUCxXQUROa1A7WUFDR2UsRUFESGY7WUFFVCwyQkFEZWxQO1dBRXZCLFdBSGUyQyxFQUNLc047V0FFcEIsa0JBSGV0TixFQUVYdEI7O29CQUZhNk47O2FBS2pCLElBRG9DQzthQUNwQyxXQUxleE07YUFLQyxXQUxEQTthQUtmLElBTGlCdU0sTUFJbUJDOztlQUVBMFU7V0FDcEMsV0FQZWxoQjtXQU9DLFdBUERBO2VBQUV1TSxNQU1tQjJVOzs7ZUFNdEJoakIsRUFaR3FPLFNBWU5xb0MsSUFaTXJvQztXQVlXLFdBWmJ2TSxFQVlKNDBDO1dBQXFELGtCQVpqRDUwQyxFQVlpRCxXQUFsRDlCO2lCQUNjLFVBYlhxTzs7ZUFjR3hDLElBZEh3QyxTQWNBc29DLElBZEF0b0M7V0FjVyxXQWRidk0sRUFjRTYwQztXQUFXLG1CQUFSOXFDOzs7ZUFOR2tGLElBUk4xQyxTQVFHMm1DLElBUkgzbUM7V0FTVyxXQVRidk0sRUFRS2t6QztXQUNRLGtCQVRibHpDLEVBUVFpUDs7ZUFFRjdOLEVBVkptTCxTQVVDNG1DLElBVkQ1bUMsU0FXVyxXQVhidk0sRUFVR216QyxLQUNVLGdCQVhibnpDLEVBVU1vQixHQUtTO2FBTTlCNnpDO01BQ1EsSUFEa0JwVyxhQUNsQjtlQUNONUosRUFBRTNvQixLQUFNLFdBRFJuSixJQUNFbUosS0FBbUMseUJBRHJDbkosS0FDMEQ7TUFEcEQsbUJBQ044eEIsSUFGd0I0SjthQVMxQnFXLG1CQUFtQnQ0QztNQUNsQixxQkFEa0JBLFlBQ0o7TUFDZixJQUFJbUYsSUFBSixzQkFGbUJuRjtNQUVuQixTQUNJdTRDO1FBQWlCLHlDQUhGdjRDLElBR21EO01BRHRFLFNBRVF3NEMsYUFBYXA3QztRSnA3RDFCLElJbzdEMEJ1RztRQUNuQjthQURtQkEsUUFGakJ3QixJQUdjLE9BREd4QjtVQUVYLDBCQU5TM0QsSUFJRTJEO3lDQUlWLE9BSlVBO1VBRVgsSUFDVSxJQUhDQTttQkFJVDtNQU5aLFNBT0k4MEMsWUFBWXI3QyxFQUFFc1U7UUp6N0R2QixJSXk3RHVCOHpCO1FBQ2hCO2FBRGdCQSxRQVBkcmdDLElBUWMsT0FEQXFnQztVQUVSLDBCQVhTeGxDLElBU0R3bEM7VUFFUix5QkFFQyxPQUpPQTtVQUVSLElBQ1UsSUFIRkE7bUJBSU47TUFYWixTQVlJa1QsVUFBVXQ3QyxFQUFFc1U7UUo5N0RyQixJSTg3RHFCOHpCO1FBQ2Q7YUFEY0EsUUFaWnJnQyxJQWFjLE9BREZxZ0M7VUFFTiwwQkFoQlN4bEMsSUFjSHdsQztVQUVOOzs7O3VCQUNnQixRQUhWQTtVQUlMLE9BSktBLElBSUo7TUFDQzs7T0FDRixpQkFEUG1UO09BRVcsZUFyQkkzNEMsSUFtQmYyNEMsT0FDQUMsT0FEQUQ7T0FHUyxvQkFGVEM7T0FHTyxlQURQRTtNQUNPLEdBRFBBLFdBQ0FDO1dBQ0FDOztPQUVBO1NBQXlEO2tDQUF2QyxNQTFCSGg1QyxJQXNCZjg0QyxPQUNBQyxPQURBRDtVQUVBRTs7OztvQkFHa0I7TUFSVCxJQVNUQyxRQUFVLGFBTFZGO01BS1UsR0FBVkUsWUExQkE5ekMsSUEyQm1CO01BVlY7O1FBVXdCLHFCQVJqQzB6Qzs7OztRQVNBSzs4QkFUQUw7OztvREFlWTs7Ozs7O3NCQU5aSztNQU9KLFVBYklGLE9BTUFFLFNBT2M7YUFPbEJDLHFCQUdBcjZDLElBQUltakM7TUFBTyxVQUFYbmpDO09BQ3NCLFlBRGxCbWpDOztRQUFPLFNBQVhuakMsWUFFZ0IwdEMsRUFGaEIxdEMsT0FFYWdELEVBRmJoRCxvQkFFYWdELEVBQUcwcUMsR0FGWnZLO1FBR2tCLElBQVY1dkIsSUFIWnZUO1FBR3NCLGFBQVZ1VCxLQUhSNHZCLEtBR3NEO2FBZTFEbVgscUJBSUF0NkMsSUFBSUUsS0FDdUJpakM7TUFiZixVQVlSampDO09BVGUsVUFTZkEsVUFDdUJpakM7O09BWFIsTUFVZmpqQyxvQkFWVTBSLEdBV2F1eEI7VUFBTjlpQztnQkFEckJMO09BR3NCLFlBRkRLLE9BQU04aUM7O2lCQUQzQm5qQyxZQUlnQjB0QyxFQUpoQjF0QyxPQUlhZ0QsRUFKYmhELG9CQUlhZ0QsRUFBRzBxQyxHQUhLcnRDLE9BQU04aUM7UUFJTCxJQUFWNXZCLElBTFp2VDtRQUtzQixhQUFWdVQsS0FKU2xULE9BQU04aUMsS0FJc0M7YUFPakVvWCxrQkFBbUJDLGdCQUFnQnQ1QztNQWlCckMsR0FqQnFCczVDO09Ba0JKLFNBbEJJQSxtQkFpQmpCRSxrQkFDS0Q7O1dBRExDO01BaUJKLFNBQUlDLHVCQUF1QmxZLFFBQVFwMEI7UUFDakMseUNBbkNtQ25OLElBa0NWdWhDLFFBQVFwMEIsSUFHaEI7TUFIbkIsU0FRSXVzQyx5QkFBeUJDO1FBQzNCLDhCQUQyQkEscUNBRUM7TUFWOUIsU0FvQklDLHVCQUF1QnJZLFFBQVEvOEIsRUFBRTFDO1FBQ25DLHlDQXZEbUM5QixJQXNEVnVoQyxRQUFRLzhCLEVBQUUxQyxFQUdsQjtNQXZCbkIsU0E0QkkrM0MsbUJBQW1CdFksUUFBUXVZLFNBQVM3ckI7UUFDdEMseUNBL0RtQ2p1QixJQThEZHVoQyxRQUFRdVksU0FBUzdyQixLQUdYO01BL0I3QixTQXF2Qkk4ckIsWUFHQUMsVUFBVXpZLFFBQVFVO1FBQU8sSUFHekJnWSxLQUhVMVksVUFBVnlZO1FBQXlCLGFBR3pCQztvQkFIa0JoWTt1QkFHbEJnWTswQkFEK0IsZ0JBNXhCRWo2QyxJQTB4QmpDZzZDLFdBQWtCL1g7MEJBR2UsTUE3eEJBamlDLElBMHhCakNnNkMsVUFHQUMsTUFIa0JoWSxLQUdtRDtNQTN2QnpFLFNBbUNRaVksTUFLSkYsVUFtZFFMO1FKOWhGZixJSTJrRWlCcFksUUFBVnlZO1FBQ0Y7YUFEWXpZLFlBbWRGb1ksUUFsZGdCLG1CQUR4QkssVUFBVXpZO1VBRUosMEJBNUUyQnZoQyxJQTBFdkJ1aEM7VUFFSjtZQVlhLElBR1g0WSxVQWpCRTVZO1lBa0JaLEdBRFU0WSxjQWtjQVIsUUFqY2dCLHlCQWljaEJBO1lBcmNXO2FBS2Ysd0JBN0Y2QjM1QyxJQTJGekJtNkM7YUFFSjs7Z0JBQ0ssWUFwQkM1WSxRQWlCRjRZLGtCQWtjQVI7Z0JBOWJELFlBckJHcFksUUFpQkY0WSxVQWtjQVI7YUEvY003TTttQkF5c0JkaU4sWUE3c0JBQyxVQUFVelksUUFJSXVMOztZQUdaLElBNGNGdU4sVUFuZFU5WTtZQW9kWixHQURFOFksY0FBUVY7OztjQUdGLHNCQWhpQjJCMzVDLElBNmhCakNxNkM7Y0FHTSxTQXVDSjcxQzs7Ozs7Ozs7aUNBaENBLFlBVkY2MUMsa0JBQVFWOzs7cUJBWWlCO29DQVp6QlUsa0JBQVFWO3NCQVlpQjt1Q0FBWHZNOzt5QkE4Qlo1b0M7OztnQ0FyQ0EsWUFMRjYxQyxrQkFBUVY7OztvQkFPaUI7bUNBUHpCVSxrQkFBUVY7cUJBT2lCO3NDQUFYcE07Ozs7eUJBbUNaL29DO2dCQWhCdUI7K0JBMUJ6QjYxQyxrQkFBUVY7aUJBMEJpQjtrQ0FBWGpNOzt5QkFnQlpscEM7OztvQkF4QnVCO21DQWxCekI2MUMsa0JBQVFWO3FCQWtCaUI7eUNBQVg5TDs7OztvQkFrQnNCO3VCQXBDcEN3TTs7c0JBQVFWOzs7O3NCQW9DNEIsZ0JBamtCSDM1QyxJQTZoQmpDcTZDO3NCQXFDeUI7cUNBckN6QkEsa0JBQVFWO3VCQXFDaUI7d0NBQVh6TDs7O3FCQUdXO29DQXhDekJtTSxVQUFRVjtzQkF3Q2lCO3dDQUFYbkw7OztvQkF6Qlc7bUNBZnpCNkwsa0JBQVFWO3FCQWVpQjt5Q0FBWDdLOzs7b0JBY1c7b0NBN0J6QnVMLGtCQUFRVjtxQkE2QmlCO3NDQUFYeks7OztnQ0FSWixpQkFyQkZtTCxrQkFBUVY7OztnQ0FnQ04saUJBaENGVSxrQkFBUVY7OztvQkF1QmlCO29DQXZCekJVLGtCQUFRVjtxQkF1QmlCO3NDQUFYdEs7OztvQkFXVztvQ0FsQ3pCZ0wsa0JBQVFWO3FCQWtDaUI7c0NBQVhuSzs7Ozs7O2VBU1c7OEJBM0N6QjZLLGtCQUFRVjtnQkEyQ2lCO2tDQUR2Qm4xQyxHQUNZeW9DO1lBdmZaLElBQVlEO21CQXNzQmQrTSxZQTdzQkFDLFVBQVV6WSxRQU9JeUw7VUFMUixJQVFKLFVBVlF6TDttQkFKOEM7TUFwQzVELFNBK01JbVo7UUF3b0JtQkMsUUFBUXBaLFFBOU5Kb1ksUUF2YUNpQixLQUFLcGhDLEtBQUtxaEMsTUFBTXo1QyxJQUFJdEMsSUFBSUUsS0FBSzg3QyxRQXFvQkZ2RjtRQW5vQnJEOzs7Ozs7O2lCQUtJOEYsZ0JBQWlCLHdCQVBLVCxJQU9tQjtRQUw3QyxTQU1JVSxnQkFBZ0Isd0JBUlc5aEMsSUFRWTtRQU4zQyxTQU9JK2hDLGlCQUFpQix5QkFUZVYsS0FTVTtRQVA5QyxTQVFJVyxlQUFpQix1QkFWcUJwNkMsR0FVRTtRQVI1QyxTQVNJcTZDLGVBQWlCLHVCQVh5QjM4QyxHQVdGO1FBVDVDLFNBVUk0OEMsZ0JBQWlCLHdCQVo2QjE4QyxJQVlMO1FBVjdDLFNBV0kyOEMsbUJBQWlCLHVCQWJrQ2IsT0FhUDtRQVhoRCxTQWFJYztVQVlLLG1CQUFZO2tEQUNPLE9BQXJCOThDOztXQUNxQjs7cUJBRHJCQTs7Z0JBR0EsSUFEb0I4QyxFQUZwQjlDO2dCQUdBLE9BbFFMMDZDOzhCQWlReUI1M0M7eUJBRWYsa0JBcW1CUys0QyxRQUFRcFo7Y0FqbUJLLE9BUjNCemlDOztxQkEvUEwwNkM7O3VCQXNRVSxrQkFrbUJTbUIsUUFBUXBaO3FCQXptQnRCemlDLElBUzhCO1FBbkNyQyxTQXNDSWc5QyxXQUFXdkcsS0FBaUJ6MkM7VUFDOUIsVUFEOEJBO1dBRWQsT0FGY0E7O1lBQzlCLFNBRDhCQTs7Z0JBTTVCLElBRG9CaWpDLE1BTFFqakM7Z0JBTTVCLE9BalJGMDZDOzhCQWdSc0J6WDt5QkFFZixrQkFzbEJZNFksUUFBUXBaLFFBN2xCZGdVO2NBR3dCLE9BSFB6MkM7O3FCQTNROUIwNkM7O3VCQXFSTyxrQkFtbEJZbUIsUUFBUXBaLFFBN2xCZGdVO3FCQUFpQnoyQyxJQVVtQjtRQWhEbkQsU0FzRElpOUMsV0FBV3YzQyxFQUFxQjFGO1VBQXdCLFVBQXhCQTtXQUNsQjs7WUFEMEMsU0FBeEJBOzs7Z0JBT2hDLElBRG1CaWpDLE1BTmFqakM7Z0JBT2hDLE9BbFNGMDZDOzRCQWlTcUJ6WDt5QkFFZCxrQkFxa0JZNFksUUFBUXBaLFFBN2tCZC84QjtzQkFFbUIsSUFBVjB3QyxRQUZZcDJDLE9BRUYsVUFBVm8yQzs7Z0JBRXBCLElBRG9COEcsUUFIWWw5QztnQkFJaEMsT0EvUkYwNkM7NEJBOFJzQndDO3lCQUVmLGtCQXdrQllyQixRQUFRcFosUUE3a0JkLzhCO1lBU00seUJBb2tCQW0yQyxRQUFRcFosUUE3a0JkLzhCLFVBUytDO1FBL0Q5RCxTQWlFSXkzQyxZQUFZejNDLEdBQWlCLGtCQUFqQkEsRUFBaUIsV0FBWTtRQWpFN0MsU0FrRUkwM0MsZ0JBQWdCMTNDLEdBQWlCLGtCQUFqQkEsRUFBaUIsZUFBZ0I7O1FBbEVyRCxVQW1vQnFEK3dDOzs7OztZQXZhNUI7MkJBdWFJaFUsUUE5TkpvWTthQXpNQTthQS9JckJ3QyxrQkErSVV0Tzs7O1lBZ0JFOzBDQXVaYXRNLFFBOU5Kb1k7YUF4TEEsY0FEbkJ5QyxnQkF5TG1CekM7YUF4TEE7YUFDRCxjQXFaS3BZLFFBdlp2QjZhO2FBRWtCO2FBQ04sdUJBREpFO1lBRVQ7YUFDbUM7MkNBRmxDM1g7MEJBRUU0WCxVQUpNL047OzZCQU9hLGdCQUxyQjdKLFVBRlE2SjtZQURFLElBL0paMk47O2tDQUVGLE1Bb2pCMkI1YSxRQTlOSm9ZOztZQWhVQTs0QkE4aEJJcFksUUE5TkpvWTthQWhVQTthQUNwQix5QkFEU3RLO2FBeEJWOE07OztZQTJEcUI7NEJBMmZJNWEsUUE5TkpvWTthQTdSQTs7WUFFcEI7YUFDRCxrQkFGRTZDLHVCQUVFQyxVQUhNbk07OzZCQUNSa00sVUFEUWxNO1lBQVcsSUEzRHJCNkw7OztZQXNDUTs4QkFnaEJ5QzVHLEtBaGhCekI7YUFDSCxlQStnQkloVSxRQTlOSm9ZO2FBalRBO1lBQ3BCO2FBQ2lDOzswQkFBOUIrQyxVQUZNaE07O2FBTVI7NENBUEEzd0MsTUFDUTJ3QztjQU1SOzt5QkFEbUJ2d0MsTUFBTTB3QztZQU5uQixJQXRDUnNMOzs7WUF5VkosR0E2TjZCNWEsWUE5TkpvWSxRQUNDLHlCQUREQTtZQUdWOzsrQkFDRm4xQyxHQUNYLHVCQUZFMUQsU0FDUzBELEVBQ2U7YUFGYjt1QkFJRDZYLElBQUU3WDtnQkFDZCxNQURjQSxJQUFGNlg7c0JBQ1pqZixFQURZaWY7a0JBRVY7b0NBTkF2YixTQU15QixZQUQzQjFEO29CQUNFLFNBREZBO3VCQURjb0gsTUFDZHBIOztnQkFIQSxRQUtJO2FBUFM7dUJBVVNta0M7Z0JBQ3RCLHlDQXpxQmlDdmhDLElBd3FCWHVoQyxRQUcwQjthQWJuQzsrQkF1QllBLFFBQVFvWTtnQkp0ckZ4QyxJSXNyRmdDVTtnQkFDekI7cUJBRHlCQSxjQUFRVixRQUNQLHlCQURPQTtrQkFFM0IsSUFNSm4xQyxFQU5JLGdCQXZyQjJCeEUsSUFxckJScTZDO2tCQUVuQixVQU1KNzFDO29CQUZBO2tDQU51QjYxQzs7NEJBUXZCNzFDLEVBSkEsT0FKdUI2MUM7a0JBRW5CLFNBRm1CQTtrQkFTdkI7OzJCQUdBeUMsMkNBWitCbkQsUUFRL0JuMUM7OzJCQUlBczRDLG9DQVorQm5ELFFBUS9CbjFDLElBQ2lEO2FBaEN0QzsrQkFtQ2UrOEIsUUFvQlNvWSxRQXBCT24xQztvQkFBaEI2MUMsa0JBQWdCaCtCO2dCQUM1QztxQkFENEJnK0IsY0FvQlNWLFFBbkJYLHlCQW1CV0E7a0JBbEIvQix3QkFuc0IyQjM1QyxJQWlzQkxxNkM7a0JBRXRCLFNBRnNDLzlCOzs7O29DQUkxQyxTQUowQ0QsS0FJMUMsT0FKMEJnK0I7OzZCQUFnQi85Qjs7OztzQkFPMUMsSUFhMkI2OUIsVUFwQkRFO3NCQXFCNUIsR0FENkJGLGNBQVFSLFFBQ1gseUJBRFdBO3NCQWJuQyxJQTRCQXA5QixJQWJJLGdCQXZ0QjJCdmMsSUFxdEJKbTZDO3NCQUV2QixVQWFKNTlCO3dCQVBBLElBUjJCNDlCLHVCQUFRUjt5QkFRTCx5QkFSS0E7d0JBU3ZCLElBQ1JuOUIsSUFEUSxnQkE5dEJtQnhjLElBcXRCSm02QztrQ0FVdkIzOUI7eUJBR0ssMkJBYmtCMjlCO3dCQVd2QixVQS9Cc0M5OUIsSUE4QnRDRzt3QkFEUSxTQVRlMjlCO3dCQVd2Qjs7aUNBM0NKMEMsc0NBZ0NtQ2xEOztpQ0FoQ25Da0QsK0JBZ0NtQ2xEO2dDQWVuQ3A5Qjt3QkFYQSxTQXhCMENGLEtBeUIxQyxvQkFMMkI4OUI7c0JBZ0IzQixVQXBDMEM5OUIsSUFtQzFDRTtzQkE1QkEsU0FhMkI0OUI7c0JBZ0IzQjs7K0JBaERBMEMsc0NBZ0NtQ2xEOzsrQkFoQ25Da0QsK0JBZ0NtQ2xEO2tCQVpaLHNCQVJtQnQ5QjtvQkFTMUMsU0FUMENDO29CQVMxQyxTQVQwQis5QjtvQkFTMUI7OzZCQXJCQXdDLHNDQWdDbUNsRDs7NkJBaENuQ2tELCtCQWdDbUNsRDtrQkFSbkMsVUFaMEN0OUIsSUFZMUIsb0JBWlVnK0I7a0JBZ0IxQixTQWhCMENoK0I7a0JBRXRDLElBY0osVUFoQjBCZytCLHNDQUFnQmgrQjsyQkFpQlE7YUFwRHZDO3VCQW1DZWtsQixRQW9CU29ZLFFBcEJPbjFDO2dCSmxzRm5EO3lCSWtzRlNzNEMsOEJBQTBCdmIsUUFvQlNvWSxRQXBCT24xQztZQW5DL0IsR0EyTmMrOEIsWUE5TkpvWSxRQThFRyx5QkE5RUhBO1lBR1YsYUE0RVAsZ0JBMXVCMkIzNUMsSUF5M0JOdWhDO1lBL0lyQjthQUNLLGNBOElnQkEsZ0JBakpoQnliLFVBQVR2Qzs7aUJBQVN1QyxVQUFUdkMsVUFpSnlCbFo7WUF6TTNCLEdBd0RFa1osY0E3RXFCZCxRQXFCRyx5QkFyQkhBO1lBR1Y7YUFtQkwsa0JBanJCeUIzNUMsSUF3dUIvQnk2QzthQXZETSxtQ0F1RE5BLGtCQTdFcUJkLFFBc0JuQm4xQzthQTZEUywyQkFoRlgxRDthQWdGVyxXQU5GazhDLFFBT2MsYUFEdkJyYjthQWpRcUIsZUFnUXJCc2IsU0FsRnFCdEQ7YUE5S0E7WUFDcEI7YUFDb0M7NENBSHpCdUQ7MEJBR1JDLFVBRk1yTDs7NkJBS2MsZ0JBTlpvTCxXQUNGcEw7WUFpTEMsSUEzVlhxSzs7O1lBcUlxQjs0QkFpYkk1YSxRQTlOSm9ZO2FBbk5BO2FBcklyQndDLGtCQXFJVWpLOzs7WUFqSVo7O3VCQUFnQnBGO2dCQUNYLDJCQURXQSwyQkFHYzthQU9QLGVBd2lCSXZMLFFBOU5Kb1k7YUExVUE7YUFDWDs7O2VBTFA7eUNBSU8wRDs7O2VBS1A7O2lCQXJVTDdEO21CQXVVeUMsWUFQN0I2RDttQkFoU2Q7cUJBdzBCNkI5Yjs7O3NCQXRpQmYsWUFGQThiO1lBVlosSUFKRWxCOzs7WUEySXFCOzRCQTJhSTVhLFFBOU5Kb1k7YUE3TUE7YUFDcEIseUJBRFMyRDthQTNJVm5COzs7WUE0QlE7OEJBMGhCeUM1RyxLQTFoQnpCO2FBQ0gsZUF5aEJJaFUsUUE5TkpvWTthQTNUQTtZQUNwQjthQUM0Qjs7MEJBQXpCOEQsV0FGTUQ7O2FBTVI7NENBUEFELE1BQ1FDO2NBTVI7O3lCQURtQkcsT0FBTUQ7WUFObkIsSUE1QlJ2Qjs7O1lBd0lxQjs0QkE4YUk1YSxRQTlOSm9ZO2FBaE5BO2FBeElyQndDLGtCQXdJVXlCOzs7WUFhRTs0Q0FpYWFyYyxRQTlOSm9ZO2FBbE1ELGVBZ2FLcFksUUFqYXZCc2M7YUFDa0I7YUFDQyxlQUZuQkEsa0JBbU1tQmxFO2FBak1BO2FBQ1AseUJBRkptRTtZQUdUO2FBQ2lDOzRDQUZoQ2xaOzBCQUVFb1osV0FITUQ7OzZCQU1XLGlCQUxuQm5aLFlBRFFtWjtZQUZFLElBckpaNUI7Ozs7WUEySFE7OEJBMmJ5QzVHLEtBM2J6QjthQUNILGVBMGJJaFUsUUE5TkpvWTthQTVOQTtZQUNwQjthQUMwQjs7MEJBQXZCc0UsVUFGTW5QOzthQU1SOzRDQVBBdnZDLE1BQ1F1dkM7Y0FNUjs7eUJBRG1CcHZDLE1BQU13dkM7WUFObkIsSUEzSFJpTjs7OztZQWtKcUI7MkJBb2FJNWEsUUE5TkpvWTthQXRNQTthQWxKckJ3QyxrQkFzakJpRDVHLEtBcGF2Q3JIOzs7Ozs7WUFoRlMsR0FvZk0zTSxZQTlOSm9ZO2NBdFJrQztzQ0FyWXhCMzVDLElBeTNCTnVoQztlQTlDUixLQUFQMmM7O2NBQU87Ozs7Ozs7Ozs7OztjQXJjSTs4QkFtZkkzYyxRQTlOSm9ZO2VBclJBOztjQTBjQSxVQXlDNEJwRTs7OzhCQWxmL0N0MEM7Ozs7eUJBa2YrQ3MwQyxVQWxmL0N0MEM7NEJBMmN3QjtjQTFjekI7ZUFDRCxrQkFGRUEscUJBRUVrOUMsVUFITWxPOzsrQkFDUmh2QyxRQURRZ3ZDO2NBQVcsSUFuRXJCa007Ozs7Ozs7OztjQWlMRixrQ0FwZmlDbjhDLElBeTNCZDI2QyxRQUFnQ3BGOzs7Ozs7OztZQXJnQmpEOzthQUR5RDthQUEvQzsrQkFzZ0JPb0YsUUFBUXBaLFFBdGdCa0Isc0JBc2dCTWdVO2FBcGdCNUIsZUFvZ0JJaFUsUUE5TkpvWTthQXRTQTtZQUNwQjthQUNpQzsyQkFKaENoNkMsUUFJZ0M7MEJBQTlCMCtDLFVBRk1yTjs7YUFNOEI7O2NBQXRDLDhCQUFxQixvQkFOYkE7Y0FNUjs7O3lCQVJBcnhDLFFBT21CVSxNQUFNMHRDLE9BQU8yRDtZQU5sQyxJQWpEQXlLOzs7Ozs7Ozs7O1lBaUg4Qjs7YUFBZDthQUFkO2FBc2NOO2NBRHFDcUM7Z0JBQVVGO2tCQXgyQjdDOUU7O29CQWczQkssa0JBUmNtQixRQUFRcFo7O2dCQUFrQitjOztZQVMvQyxTQVRxRC9JOzs7Ozs7Ozs7O29CQVNqRGtKOztzQkFUaURsSjs7Ozs7OztpQ0FTakRrSjs7Ozs7aUJBVHNDRjt5QkFBV2hKLFNBU2pEa0o7O3lCQVRpRGxKLFNBU2pEa0o7MEJBVUc7WUF4ZDJCO2FBeWRsQyxTQW5CSWxGLEtBUUFrRjthQTdjcUIsZUFvY0lsZCxRQTlOSm9ZO2FBdE9BO1lBQ3BCO2NBekh1Qjs7ZUFHRixpQ0F5akJMZ0IsUUFBUXBaOztlQTFqQkgsMEJBQVJrQjtjQUZVO2VBMEhLOzJCQUF6QmljLFVBRk1sUDs7YUFNMEI7O2NBQWxDLDhCQUFxQixnQkFOYkE7Y0FNUjs7O3lCQVRBMXZDLE1BUW1CRCxNQUFNRCxPQUFPZ3dDO1lBTkosSUFqSDlCdU07Ozs7O29CQXNqQmlENUc7Ozs7Ozs7Z0JBemVoQztzQ0FoWmN2MUMsSUF5M0JOdWhDO2lCQXpldkI7aUJBRG1EO2lCQUFyRDs7b0JBMGVpQm9aLFFBQVFwWixnQkExZWM7aUJBRWxCLGNBd2VJQSxnQkE5TkpvWTtpQkExUUE7Z0JBQ3BCO2lCQUNtQzs2QkFMbEN6NkMsTUFLa0M7OEJBQWhDeS9DLFFBRk03Ujs7aUJBTThCOztrQkFBdEMsNkJBQXFCLG9CQU5iQTtrQkFNUjs7OzZCQVRBNXRDLE1BUW1CSCxNQUFNSSxPQUFPNnRDO2dCQU5qQjs7OztnQkFZYztzQ0E1WkFodEMsSUF5M0JOdWhDO2lCQTdkVDtpQkFBZDtpQkFERjs7b0JBOGRpQm9aLFFBQVFwWixnQkE5ZGM7aUJBRWxCLGNBNGRJQSxnQkE5TkpvWTtpQkE5UEE7Z0JBQ3BCO2lCQUN1QzsrQkFMdEN0NkMsUUFLc0M7OEJBQXBDdS9DLFVBRk0zUjs7aUJBTThCOztrQkFBdEMsNkJBQXFCLG9CQU5iQTtrQkFNUjs7OzZCQVRBNXRDLFFBUW1CSixNQUFNSyxPQUFPOHRDO2dCQU5IOytCQXpGL0IrTzs7cUJBc2pCaUQ1RzthQWpkaEM7bUNBeGFjdjFDLElBeTNCTnVoQztjQWpkdkI7Y0FEbUQ7Y0FBckQ7O2lCQWtkaUJvWixRQUFRcFosZ0JBbGRjO2NBRWxCLGNBZ2RJQSxnQkE5TkpvWTtjQWxQQTthQUNwQjtjQUNtQzs0QkFMbENuNkMsUUFLa0M7MkJBQWhDcS9DLFVBRk10Ujs7Y0FNOEI7O2VBQXRDLDZCQUFxQixvQkFOYkE7ZUFNUjs7OzBCQVRBL3RDLFFBUW1CSixNQUFNSyxPQUFPaXVDO2FBTmpCLElBckdqQnlPOzs7Ozs7YUFzTEYsa0NBemZpQ244QyxJQXkzQk51aEMsZ0JBQXdCZ1U7UUE5WEcsT0ExZXREaUU7VUFnZjBCLGFBM1F4QnVCLGFBMlF3QixZQTdRRkg7VUErUXhCLEdBL1F3QmtFLE9BK1F4QixrQkFzWG1CbkUsUUFBUXBaLFFBQXdCZ1U7VUF4WHpCLElBRWtCLFNBN1FmeUYsYUE2UWUsWUEvUWZ4aEM7VUFpUjdCLEdBalI2Qm1PLE9BaVI3QixrQkFvWG1CZ3pCLFFBQVFwWixRQUF3QmdVO1VBeFh6QixJQUlrQixTQTlRMUMwRixjQThRMEMsYUFqUlZKO1VBbVJsQyxHQW5Sa0NrRSxRQW1SbEMsa0JBa1htQnBFLFFBQVFwWixRQUF3QmdVO1VBeFh6QixJQU1rQixTQS9RMUM0RixZQStRMEMsVUFDekIsaUJBcFJ5QnI4QztVQW9SZ0IsUUFDNUQsa0JBZ1htQjY3QyxRQUFRcFosUUFBd0JnVTtVQXhYekI7V0FRd0IsU0FqUnJCNkY7V0FpUnFCLFVBQy9CLGlCQXRSNkJwOEM7VUFzUm1CO1lBQ25FLFNBdlJ3Q29DLE9BcW9CV20wQztZQTlXbkQsa0JBOFdtQm9GLFFBQVFwWjtVQXhYRCxJQTdRRnlkLE9BQWdCNTlDLElBQWhCdzVDLEtBQWdCeDVDO1VBeVJ0QixHQXpSTTQ5QyxPQXlSTixrQkE0V0NyRSxRQUFRcFo7UUE1V2tDLGFBdFJoQzJaLFlBc1JnQyxXQXpSckI5NUM7UUErUnhDLEdBL1J3QzY5Qzs7VUErUnhDLFNBc1dtRDFKOzs7OztVQXBXbEIsaUJBcGdCakNpRTt1QkFzZ0JJLGtCQWtXZW1CLFFBQVFwWixRQUF3QmdVO1FBbFdILE9BcE45QzRHLFVBc05NO01BdmZaLFNBcUxJK0M7UUFHQXZFLFFBQVFwWixRQUFRb1ksUUFBUXdGLE1BQU12RSxLQUFLcGhDLEtBQUtxaEMsTUFBTXo1QyxJQW9COUN0QyxJQXBCc0RFO1FBQ3hELEdBRFV1aUMsWUFBUW9ZLFFBQ1EseUJBRFJBO1FBQ3dDLFNBQ3REeUYsV0FBOEJ0RTtVQUVqQjttQkFKZkg7bUJBQVFwWjttQkFBUW9ZO21CQUFjaUI7bUJBQUtwaEM7bUJBQUtxaEM7bUJBQU16NUM7bUJBb0I5Q3RDO21CQXBCc0RFO21CQUV0Qjg3QzttQkFFakIsZ0JBOU5rQjk2QyxJQTBOekJ1aEMsU0FJb0I7UUFINEIsVUFtQnhEemlDO29CQXBCc0RFLDRCQWMvQjthQWRDbWdEO3NCQUE4Qm5nRCxrQkFrQjNCO2dCQUZINEMsRUFoQjhCNUM7bUJBRXBEb2dELGdCQWNzQng5QztvQkFoQjhCNUMsa0JBaUIxQjtjQUZIMFQsSUFmNkIxVDtpQkFFcERvZ0QsZ0JBYXVCMXNDO1FBS2xCLGtCQUFQNVQsSUFBcUI7TUE1TXpCLFNBb0lJdWdEO1FBaUJBMUUsUUFkUXBaLFFBY1FvWSxRQUFRd0YsTUFBTXZFLEtBQUtwaEMsS0FBS3FoQyxNQUFNejVDLElBQUl0QztRQWJwRCxHQURVeWlDLFlBY1FvWSxRQWJRLHlCQWFSQTtRQVpaLElBSUpwRSxLQUpJLGdCQTNLNkJ2MUMsSUF5S3pCdWhDO1FBRUosVUFJSmdVO1VBRkEsSUFVUThFLFVBZEE5WTtVQWVWLEdBRFU4WSxjQUFRVixRQUNRLHlCQURSQTtVQVZoQjtXQVd3RDtxQkFDeEN3RixNQUFNNWQ7Y0FDRjtvQ0FERUEsUUFGTm9ZO2VBR0k7Ozt1QkFIcEJnQjt1QkFHSTZFO3VCQUhZN0Y7dUJBRUF3Rjt1QkFGY3ZFO3VCQUFLcGhDO3VCQUFLcWhDO3VCQUFNejVDO3VCQUFJdEM7MEJBR3JDRSxNQUVhO1dBQ3RCLHVCQTdMNkJnQixJQXVMekJxNkM7VUFNSixTQUVKNkQ7Z0NBRGMscUJBUFVpQixNQUFoQjlFOztvQkFRUjZEOzs7ZUFXQTt3QkFuQkF2RDt3QkFBUU47d0JBQVFWO3dCQUFRd0Y7d0JBQU12RTt3QkFBS3BoQzt3QkFBS3FoQzt3QkFBTXo1Qzt3QkFBSXRDOzs7O2VBUXpCLEdBOUt6QjA2QztpQkF1TEE7dUJBakJRYTtrQkFpQlIsUUFqQndCOEUsaUJBUXhCakI7aUJBY0EscUJBdEJ3QnVCOzs7VUFzQnhCLE9BNUxBakc7bUJBZ01FO3FCQTFCRm1CO3FCQUFRTjtxQkFBUVY7cUJBQVF3RjtxQkFBTXZFO3FCQUFLcGhDO3FCQUFLcWhDO3FCQUFNejVDO3FCQUFJdEM7O21CQTZCaEQsdUJBN0JNdTdDO1FBUFI7aUJBT0FNO2lCQWRRcFo7aUJBY1FvWTtpQkFBY2lCO2lCQUFLcGhDO2lCQUFLcWhDO2lCQUFNejVDO2lCQUFJdEM7OztpQkFSbER5MkMsS0FFdUI7TUEvSTNCLFNBK0RJNkUsWUFpQ0FPLFFBbkJpQnBaLFFBbUJEb1ksUUFBbUN2NEM7UUE5QnJEO2lCQUdJcytDLFNBQVNuZSxRQUFRZ1k7VUFFbkIsU0FGbUJBLFFBRW5CLGNBeEZBQztVQXlGRTtZQUVjLHlCQTVHaUJ4NUMsSUF1R3RCdWhDO1lBR1Qsa0NBMUcrQnZoQyxJQXVHdEJ1aEM7VUFLa0I7a0JBQ2hCO1lBRUk4WTtRQUNqQjthQURpQkEsY0FtQkRWLFFBbEJVLHlCQWtCVkE7VUFqQkosMEJBakhxQjM1QyxJQStHaEJxNkMsV0FFTDs7OztjQUtILFNBUFFBLFVBVk1RO2NBaUJkLGNBUFFSOzs7Y0FNUixTQU5RQSxVQVRmN2dDO2NBZU8sY0FOUTZnQzs7O2NBS1IsU0FMUUEsVUFWZk87Y0FlTyxjQUxRUDs7O2NBSVIsU0FKUUEsVUFYTThFO2NBZWQsY0FKUTlFOzs7Y0FHUixTQUhRQSxVQVhmcDlCO2NBY08sY0FIUW85Qjs7O1VBRUw7V0FPVixLQW5CcUJRO1dBbUJyQixLQWxCQXJoQztXQWtCQSxLQW5CQW9oQztXQW1CQSxLQXBCcUJ1RTtXQW9CckIsS0FwQkFsaUM7VUErQkosR0FwQm1CbzlCLGNBbUJEVixRQUNRLHlCQURSQTtVQWpCSjtXQWtCNEM7OztnQkFsSHhESDs7a0JBeUhPLGtCQVJQbUIsUUFuQmlCTjs7O1dBNEJiLHdCQTNJNkJyNkMsSUErR2hCcTZDO1VBNEJiOztjQUVpQjtzQ0E5QkpBLFVBbUJEVjtlQVdLOzs7dUJBWHJCZ0I7dUJBV0k2RTt1QkFYWTdGOzs7Ozt1QkFBbUN2NEM7MEJBRWpEd2lDLE1BU1c3Qjs7O1lBSWI7cUJBZkE0WTtxQkFuQmlCTjtxQkFtQkRWOzs7OztxQkFBbUN2NEM7d0JBRWpEd2lDO1VBZ0JGLE9BaEJFQTs7YUFrQkEsT0FySUY0VjtjQXNJSSx1QkF4Q2FhO2FBd0NxQztzQkFyQnRETSxRQW5CaUJOLFVBbUJEViw0QkFBbUN2NEM7O2FBK0JqRDtzQkEvQkZ1NUMsUUFuQmlCTixVQW1CRFYsNEJBQW1DdjRDOzthQTRCakQ7c0JBNUJGdTVDLFFBbkJpQk4sVUFtQkRWLDRCQUFtQ3Y0QyxXQU5uQztNQTFGcEIsU0EwaUJJazVDLFVBQ0F3RixZQUFZdmUsUUFBUW9ZO1FBQ3RCO2FBRGNwWSxZQUFRb1ksUUFFTTtVQUNwQiw0QkFobEIyQjM1QyxJQTZrQnJCdWhDO1VBR047WUFFTSxJQUFOd2UsSUFBTSxhQWxsQnFCLy9DLElBNmtCckJ1aEM7WUFLQSxHQUxRb1ksV0FLZG9HLElBQ21CO1lBRGI7YUFFSSxjQXBsQmlCLy9DLElBNmtCckJ1aEMsU0FLTndlLE1BTE14ZTthQVFhLGNBSG5Cd2UsWUFMY3BHO2FBUUs7YUFDRCxjQVRacFksUUFLTndlO2FBSWtCOzZCQUFWekQsUUFGUjBEO2FBRWtCLGFBVHhCRixlQVVNRzthQUUyQyxZQUQzQ0MsYUFIUWxUOztVQU9aOzs7O1lBRXFCO3lCQWpCWHpMLFFBQVFvWTthQWlCRzt3QkFqQnZCbUcsZUFrQkk1akQ7WUFFMkMsY0FEM0Npa0QsV0FGUXJUO3FCQUltQztNQWhrQm5ELFNBbWtCSXlOLGlCQUNBaFosUUFBUW9ZO1FBQ1Y7O2dCQURFcFksWUFBUW9ZO2dDQUdrQixnQkF6bUJPMzVDLElBc21CakN1aEM7VUFHb0Q7VUFDbEM7a0NBSmxCQSxnQkFBUW9ZO1dBS0Esd0JBM21CeUIzNUMsSUEwbUIzQm9nRDs7VUFDRTs7Ozt3QkFnQkM7VUFqQlM7V0FHUyxzQkFIckJBLFVBSkV6RztXQU9tQjs7V0FDTCx1QkFEZDJHLFVBUEEzRztXQVNJLHdCQS9tQnFCMzVDLElBOG1CdkJ1Z0Q7V0FDRTs7OztZQUVNO3FCQWpuQmV2Z0QsSUFzbUJqQ3VoQyxpQkFRVWdmLFlBUlZoZjthQVdrQixRQUFKei9CLEVBSktpZ0M7YUFJRCxLQUhSd2U7YUFQRUM7YUFBVnZEOzs7OzthQWFnQztvQ0FOeEJzRCxVQVJGNUc7Y0FjMEI7O2NBQ1IsdUJBRFo4RyxVQWROOUc7YUFnQkssMEJBdG5Cb0IzNUMsSUFxbkJuQjBnRCxXQUMyQjthQUZQO2NBR2hCLFVBdm5CZTFnRCxJQXNtQmpDdWhDLGlCQWVjbWYsWUFmZG5mO2NBaUJrQixRQUFKbHZCLElBVkswdkIsTUFPTWxEO2NBR1AsS0FGSjZoQjtjQWRGRjtjQUFWdkQ7OztzQkFrQmE7Ozt1REFJYjtjQXRCVXVELGdDQUFWdkQsU0FERjFiO1FBeUJxQixnQkF4Qm5CMGIsU0FETXRELFNBeUJhO3NCQXhCVDZHLGlCQXdCRjFULFVBQ3VDO01BOWxCckQsU0FpbUJJME4saUJBQ0FqWixRQUFRb1k7UUFDVjtVQUVvQjtrQ0FIbEJwWSxRQUFRb1k7V0FJQSx3QkF4b0J5QjM1QyxJQXVvQjNCb2dEOztVQUNFOzs7OztZQUVrQjttQ0FIcEJBLFVBSEV6RzthQU1rQjs7YUFDTix1QkFEWjJHLFVBTkEzRztZQVFELDBCQTVvQjBCMzVDLElBMm9CekJ1Z0QsV0FDMkI7WUFGVDthQUdkLFFBN29CcUJ2Z0QsSUFvb0JqQ3VoQyxpQkFPUWdmLFlBUFJoZjt3QkFPUWdmLHFCQUVBeitDLEVBSFdtNEM7OztVQUhEOzs7Ozs7VUFhSzs7V0FEUDk5QztXQUFWOGdEO1dBQ2lCLGNBRGpCQSxTQWZFdEQ7V0FnQmU7d0JBRFB4OUMsZUFDSjJ3QztRQUdXLGtCQW5CdkJ2TCxRQUFRb1ksU0FtQmU7MkJBQVgzTSxZQUN1QztNQXRuQnZELFNBZ3RCSXdMLGFBQWFqWCxRQUFRb1k7UUpudkY1QixJSW12Rm9CVTtRQUNmO2FBRGVBLGNBQVFWLFFBQ0cseUJBREhBO1VBRXBCLDBCQXB2QmdDMzVDLElBa3ZCcEJxNkM7WUFFYSxjQUZiQTtVQUVxRCxPQUZyREEsVUFFNEQ7TUFsdEI3RSxTQXN0QklrRixlQUFlaGUsUUFBUW9ZLFFBQVFqcUM7WUFBaEIycUMsa0JBQWdCMXFDO1FBQ2pDO2FBRGlCMHFDLGNBQVFWLFFBQ0MseUJBRERBO1VBRW5CLElBQ0puMUMsRUFESSxnQkExdkI2QnhFLElBd3ZCbEJxNkM7VUFFWCxPQUNKNzFDLGFBUUssVUFYVTYxQyxVQUFnQjFxQztVQUUzQixJQUYyQkMsMEJBRy9CcEw7VUFDQSx1QkFKK0JvTDtXQU03QjsyQ0E5dkIrQjVQLElBd3ZCRjRQO1VBRTNCLElBUUYsVUFWYXlxQyxzQ0FBZ0IxcUM7bUJBV2Q7TUFqdUJyQixTQXF1Qkkwd0MsY0FBYzllLFFBQVFvWTtRQUN4QixHQURnQnBZLFlBQVFvWSxRQUNFLHlCQURGQTtRQUVsQiwwQkF6d0I2QjM1QyxJQXV3Qm5CdWhDO1FBRVY7NkJBQ1Usc0JBSEFBLFFBQVFvWTs7O1dBSWYsSUFKT3BZLHFCQUFRb1ksUUFLUSx5QkFMUkE7V0FNaEIsSUFJSm4xQyxFQUpJLGdCQTd3QjJCeEUsSUF1d0JuQnVoQztXQU1SLE9BSUovOEI7WUFDQSwwQkFYWSs4QiwwQkFVWi84QjtXQUpJO1lBRWMsdUJBUk4rOEIsZ0JBQVFvWTtZQVFGOztxQkFBZHNELFdBQVVyN0M7UUFLWCw2QkFBWTtNQWx2QnJCLFNBK3ZCSXk2QyxxQkFBcUI5YSxRQUFRb1ksUUFBUW4xQztRSmx5RjVDLElJa3lGNEI2MUM7UUFDdkI7YUFEdUJBLGNBQVFWO1dBRTdCLGtDQW55QmlDMzVDLElBaXlCSXdFLEVBQVJtMUM7VUFLekIsMEJBdHlCNkIzNUMsSUFpeUJacTZDO1VBS2pCO1lBRUosSUFQcUJBLHVCQUFRVjthQU9DLHlCQVBEQTtZQVExQixtQkF6eUI4QjM1QyxJQWl5QlpxNkMsdUJBQWdCNzFDLEVBUW1CLE9BUm5DNjFDO1lBU1AsNEJBMXlCbUJyNkMsSUFpeUJacTZDO1lBU1A7Ozs7O29CQWVJO2tEQXhCR0Esa0JBQVFWO3FCQXdCWCxVQUFWeUM7cUJBeEJhL0I7Ozs7b0JBZ0NqQjs2QkFoQ2lCQTs7O2lCQVlqQixJQVppQkEsdUJBQVFWO2tCQVlLLHlCQVpMQTtpQkFhYiw0QkE5eUJpQjM1QyxJQWl5QlpxNkM7aUJBYUw7bUJBS0k7bURBbEJDQSxrQkFBUVY7b0JBa0JULFVBQVZrRTtvQkFsQld4RDs7O21CQWVEOzswQ0FmQ0Esa0JBQVFWO29CQWVULFVBQVZnSDtvQkFmV3RHOztpQkFhTCxJQU9MLFVBcEJVQTs7OztnQkE0Qkg7Z0RBNUJHQSxrQkFBUVY7aUJBNEJYLFVBQVZpSDtpQkE1QmF2Rzs7O2VBbUNqQiwwQkFuQ2lCQTtZQVNQLElBNEJWLFVBckNpQkE7O1VBS2pCLElBa0NDLFVBdkNnQkE7bUJBdUM0QjtNQXR5QnJELFNBODJCSXdCLGtCQUNFbEIsUUFBUXBaLFFBQVFnVSxLQUFLd0w7UUFDVixJQUFUQyxPQUFTLE1BbDVCb0JoaEQsSUFpNUIvQjI2QyxRQUFRcFosVUFBUm9aO1FBQ1c7d0NBbDVCb0IzNkMsSUFpNUIvQjI2QyxRQUFxQm9HLE9BQUx4TCxLQUNkeUwsT0FJNEI7TUFwM0JwQyxTQW16Qkk1QyxpQkFBaUJ6RCxRQUFRcFosUUFBUXFaLEtBQUtwaEMsS0FBS3FoQyxNQUFNdEY7WUFBaEJ1SixZQUFLbjNCLFlBQUtvM0I7UUFDN0M7O2FBRG1DRDtlQUFLbjNCOzs7a0JBQUtvM0Isb0JBQU14SixLQUlyQixvQkFKcUJBLEtBSWdCOztjQUozQjV0QjtlQUFLbzNCOzs7NkJBQU14Sjs7Ozs7d0JBTWdCO3lCQUlyQzt5QkFDQTt5QkFIQTt5QkFJQTt5QkFOQTs7O2VBTmV3Sjt5QkFBTXhKLEtBR3JCLG9CQUhxQkEsS0FHZ0I7OzZCQUhoQkE7Ozt3QkFLZ0I7eUJBSHJDO3lCQUFxQzt5QkFLckM7eUJBRUE7eUJBSkE7Ozt5QkFMcUJBOzs7c0JBYzVCLEdBbDFCckJpRSxrQkFrMUJ3Qzt1QkFDbkIsR0FuMUJyQkEsa0JBbTFCd0M7dUJBRm5CLEdBajFCckJBLGtCQWkxQndDOzs7O2dCQUl4QyxHQXIxQkFBLHVCQW8wQnNDN3hCO2dCQW1CakMseUJBbkJZZ3pCLFFBQVFwWixRQUF3QmdVOzthQUFoQnVKO1lBcUJqQyxHQXJCMkNDO2NBcUIzQyxHQXoxQkF2Rix1QkFvMEIyQ3VGO2NBd0J0Qyx5QkF4QllwRSxRQUFRcFo7WUE4QnpCLEdBbDJCQWlZLHVCQW8wQmlDc0Y7WUFnQzVCLHlCQWhDWW5FLFFBQVFwWixRQUF3QmdVO1VBMEJqRCxHQTFCMkN3SjtZQTBCM0MsR0E5MUJBdkYsdUJBbzBCMkN1RjtZQTRCdEMseUJBNUJZcEUsUUFBUXBaLFFBQXdCZ1U7VUFpQzNCLDhCQUFZO01BcDFCdEMscUNBbENxQ3YxQyxLQXc1QlA7YUFPNUJpaEQsdUJBQXVCamhELElBQUlFO01BQ1gsOEJBRE9GLEtBQ1A7O1FBQ04sd0JBREFpaUMsSUFEaUIvaEMsT0FBSkY7Ozs7VUFNakIseUJBTnFCRTtVQU1yQix5Q0FOaUJGO21CQU1NO2FBSTdCa2hELHdCQUF3QmxoRDtNQUNSO09BRDJCdWtDO09BQU50QztPQUNyQiwwQkFEUWppQztPQUNSOztRQUNOLHdCQURBZ2xDLE1BQ2dCLGFBRlcvQyxNQUFiamlDOzs7O1NBSXhCLHlDQUp3QkEsSUFBbUJ1a0M7Ozs7O09BNTNGM0MzQztPQVRBRjtPQWJBTDtPQUdBQztPQU1BRztPQXdDQU87T0FrNkNJcVU7T0ErUUFtQjtPQStHQU87T0FvQkFJO09BcUJBQztPQXg2QkExTDtPQXVoQ0oyTTtPQSs1QkE0SDtPQVVBQztPQXpvRkExZDtPQWdMQWM7T0EyZ0NBNlI7T0F6MUJBclI7T0E2eUNBd1Q7T0EveENJM1M7T0F1SUowQztPQStmQTJNOzthcUNwd0NBbU0sU0FBUzlvQixFQUFFbnJCO1VBQVcrMEI7YXJDdzlDbEJvVTt3QnFDdjlDVzNtQyxLQUFPLFdBRFh4QyxFQUNJd0MsS0FBTyxrQkFEYjJvQixFQUFFbnJCLEVBQ2dDOztlQURyQiswQjthQUV0Qm1mLFNBQVMvb0IsRUFBRWoxQjtVQUFXNitCO2FyQ3M5Q2xCb1U7d0JxQ3I5Q1czbUMsS0FBTyxXQURYdE0sRUFDSXNNLEtBQU8sa0JBRGIyb0IsRUFBRWoxQixFQUNnQzs7ZUFEckI2K0I7YUFFdEJvZixVQUFVaHBCLEVBQUV0ekI7TXpDdkJqQixJeUN1QjZCazlCLG9CckNtdURwQnVWLGFxQ251RE1uZixFQUFFdHpCLEdBQVlrOUI7YUFJeEJxZixRQUFRdjhDLEdBQUdrOUIsS0FBTSwrQnpDM0J0QixVeUMyQmFsOUIsR0FBR2s5QixJQUE0QjthQUN2Q3NmLFFBQVFuK0MsRUFBRTYrQixLQUFNLCtCekM1QnJCLFV5QzRCYTcrQixFQUFFNitCLElBQTJCO2FBQ3JDdWYsU0FBU3o4QyxHQUFHazlCO01BQU0sZ0N6QzdCdkIsVXlDNkJjbDlCLEdBQUdrOUIsSUFBNkI7YUFDekN3ZixTQUFTcitDLEVBQUU2K0IsS0FBTSxnQ3pDOUJ0QixVeUM4QmM3K0IsRUFBRTYrQixJQUE0QjthQUN2Q3lmLE9BQU96ZixLQUFNLGV6QkZiLzlCLE95QkVPKzlCLElBQXdCO2FBQy9CMGYsUUFBUTFmLEtBQU0sZXpCRmQ5OUIsT3lCRVE4OUIsSUFBd0I7YUFFaEMyZixTQUFTdnBCO016Q2xDZCxJeUNrQ3lCNEo7ZUFDbEIvQixJQUFHeHdCO1FBQ0ssSUFBTm5KLElBQU07UUFDVixXQURJQSxJQURDbUo7UUFHSCxrQkFKTzJvQixFQUlQLFNBRkU5eEIsS0FFbUI7YXJDcThDbkI4dkMsWXFDeDhDRm5XLE1BRGtCK0I7YUFPcEI0ZixRQUFRNWYsS0FBTSx5QkFBY25nQyxHQUFLLE9BQUxBLENBQU0sRUFBMUJtZ0MsSUFBK0I7Ozs7T0FkdkNxZjtPQUlBSTtPQUNBQztPQVNBRTtPQWJBTjtPQUNBQztPQUNBQztPQVhBTjtPQUlBRTtPQVdBTztPQWJBUjtPQUVBQztPQVdBTzs7Ozs7O2FDNkJJRSxPQUFPNy9DLEVBQUV5QjtNMUMvRGxCLEkwQytEa0IyVztNQUNmO1dBRGVBOzJCQUdSMG5DLFlBQUpDO1VBQXFCLGNBQXJCQSxHQUhVLy9DLEdBR3FCLE9BQTNCOC9DO1VBQ0ssUUFKRzFuQzs7UUFFUCxnQkFFYzthQUdwQjRuQyxRQUFNbmdEO01BQ0E7aUJBREFBO09BQ0EsMEJBREFBO09BR1UsV0FIVkEsRUFDSjFFLFVBQ0ErSCxPQURBL0g7TUFFSixnQkFIUTBFLElBQ0oxRSxRQUU0QzthQUc5QzhrRCxhQUFhMWpDLE9BQU9MLElBQUlRLE9BQU9qYjtNQUNqQyxHQURpQ0E7UUFHa0IsSUFBOUMwSyxFQUg0QjFLLEtBRy9Ca2xCLEVBSCtCbGxCLEtBR2tCLFNBSHBDOGEsT0FHYm9LO1FBQVE7c0NBQXFCM21CLEVBQUVDLEdBQVMsV0FBWEQsRUFBVyxJQUhwQmtjLElBR1dqYyxHQUFnQixPQUE1Q2tNO2lCQUhxQnVRO01BRWxCLGVBQ21FO2FBWXpFd2pDLG1CQUFpQixtQkFBOEI7YUFFL0NDLFNBQVNDO01BQ1g7UUFDYSxrQkFGRkEsVUFFRTs7Ozs7OzRCQUpYRjs7UUFRVyxrQkFORkUsVUFNRSxXQURUQzs7Ozs7Ozs0QkFQRkg7O01BWVMsY0FWQUUsU0FVQSxZQUxQQyxNQUtvQjthQUd0QkMsUUFBUWg4QyxJQUFJODdDLFNBQVNHO01BQ3ZCLG1CQURVajhDLFVBQWFpOEM7TUFFSSxrQkFGYkg7TUFFSjs7O2tCQTFCbUJJO2tCQUFOQztrQkFBTEM7aURBQVdGOzttQkFFM0IsVUFGcUJDO3FCQUlqQixNQUppQkEsUUFJYSx1Q0FEeEJoL0M7cUJBQ3dCLDBCQW9CMUI2QyxVQXhCUW84QyxTQUFXRjttQkFNdkIsMEJBa0JJbDhDLFVBeEJRbzhDLElBQVdGOztvQkEwQmlCO2FBRzVDRyxhQUFhUCxTQUFTRztNQUNoQixJQUFKcC9DLEVBQUksY0FDUixRQURJQSxFQURXaS9DLFNBQVNHLFFBRXhCLGdCQURJcC9DLEVBRWE7YUFHZnkvQyxNQUFNUixTQUFTRztNQUNKLHNCQURMSCxTQUFTRztNQUNKLHFDQUE4QjtRQUd6QzNpQjthQUVBaWpCLHFCQUFtQjdnRDtNQUNyQjtRQUFTLDJCQURZQTs7O3dDQUVNO21CQUFJO2FBRTdCOGdELG9CQUFrQjlnRDtNQUNwQjtRQUFTLCtCQURXQTs7OytCQUVGO1FBTGxCLFdBS3NCO2FBRXBCK2dELG9CQUFvQi9nRDtNQUN0QjtRQUFTLGlDQURhQTs7OytCQUVKO1FBTGxCLFdBS3NCO2FBRXBCZ2hEO01BQWtDQyxhQUFhcmpCLFFBQVFzakIsS0FBS2QsU0FBU2UsUUFDbkNaO01BQ3BDLElBQUlhLFFBRjZDeGpCO01BRWpELFNBQ0l5akIsY0FBYy9zQztRQUtSOzs7VUFOTjhzQyxVQUZxREY7WUFVZCxpQkFWY0EsUUFFckRFOztRQVNGLE9BUmdCOXNDOzs7Ozs7O1lBWVYsbUJBUEZuVCxRQUNBbWdEOzs7ZUFTaUJ6SixTQWZMdmpDLFNBZUFzYSxJQWZBdGEsU0FlTHFYLElBZktyWDtXQWdCVixtQkFYRm5ULFFBQ0FtZ0QsU0FTWTF5QixJQUFMakQsSUFBVWtzQjs7aUJBRGYsSUFETWg0QyxFQWJJeVUsU0FjVixtQkFURm5ULFFBQ0FtZ0QsU0FPUXpoRDtrQkFNTixJQURNdVEsSUFsQklrRSxTQW1CVixtQkFkRm5ULFFBQ0FtZ0QsU0FZUWx4QztRQUdaLFFBaEJJalAsRUFSd0RpL0MsWUFDMUJHO1FBd0JKLEtBQTNCLFdBdEJhanNDLGlCQXNCYyxXQXRCZEE7U0F3QlAsdUJBbkJMblQ7UUFrQk0sd0JBbEJOQSxHQW1Cd0I7TUF6QjlCOztXQUZpRHk4QixhQUFRc2pCO1VBK0J2RDtZQUNVO2tCQWhDcUN0akI7YUFnQ3JDLG1CQWhDNkNzakI7O1lBaUMxQixRQURuQixzQkFBSnJoRCxhQUN1QixnQkFEdkJBO2NBQ3dDO2dCQUVwQzs7NkJBSEpBLEVBaENzRHVnRDtpQkFrQzVDbUI7aUJBQVJyd0M7Ozs7Z0JBR0Y7a0JBQ3FCO2lDQU5yQnJSO21CQU1xQjs7NkJBQU4rdUI7bUJBQ2IsWUFESTR5QixRQXRDZ0RwQjs7O3dDQXdDcEMsaUJBUmxCdmdEOzs7b0JBRVUwaEQsZ0JBQVJyd0M7Y0FRSjs7eUJBVkVyUixFQUVVNmhEOzJCQVFSQztvQkFDRixHQVRVRDswQkFXSDl5QixJQVhHOHlCLDJCQUZWN2hELEVBYU8rdUI7b0JBREcsUUFDZ0Q7eUJBSHhEK3lCO2VBQUosZ0JBVkU5aEQsRUFFVTBoRDtlQVFaO3lCQVZFMWhELEVBRVU2aEQ7MkJBWVJHO29CQUNGLEdBYlVILFlBaUJIOXlCLElBakJHOHlCLGlCQWlCSDl5QjtvQkFGSCxJQWpEcUNnUCxzQkFBUXNqQjtzQkFpREQsU0FqRFB0akI7c0JBaURPLHdCQWpEQ3NqQjtvQkFrRHhDLGlCQWxCVHJoRCxHQW1CaUI7eUJBTGZnaUQ7ZUFKSixrQkFWRWhpRCxFQUVVMGhEO2VBUVo7eUJBUllHOzJCQW1CUks7b0JBQ0YsT0FwQlVMLFVBbEMrQjlqQixlQXdEM0I7eUJBSFpta0I7ZUFYSiwwQkFSWVI7ZUFRWjt5QkFWRTFoRCxFQVVFOGhELE9BSUFFLFFBT0FFOzJCQUtJRTtvQkFBZTs2QkFDWCxJQUFMNWlELFdBQUssNEJBQUxBOzt1QkFFSDs7d0JBQVU7d0JBQ0UsMkJBRFJ1dkI7dUJBQ1E7eUJBRUEsSUFBTHhlLGFBQUssV0FKVDh4QyxJQUlJOXhDLEtBRVA7dUJBSFUsaUJBL0JadlEsRUE2Qk0rdUI7NkJBTUcsSUFBTHB2QixXQUFLOzZCQUNFLElBQUxveUIsYUFBSzs7dUJBRVQsaUJBQVU7dUJBQ1YsV0FGS3V3QixJQUNEdHpCO3VCQUNKOzt1QkFZQSxJQURTdXpCLGFBQ0o7O3VCQUdMOzt3QkFBVTt3QkFDRSw0QkFEUnR6Qjt1QkFDUTt5QkFFQSxJQUFMOXVCLGFBQUssV0FKVnFpRCxJQUlLcmlELEdBRVA7dUJBSFUsaUJBeERaSCxFQXNETWl2Qjs7dUJBT0o7O3dCQUFVO3dCQUNFLDRCQURSeXpCO3VCQUNRO3lCQUVBLElBQUxycEMsZUFBSyxTQUFMQSxJQUVQO3VCQUhVLGlCQS9EWnJaLEVBNkRNMGlEOzt1QkFPSjs7d0JBQVU7d0JBQ0UsNEJBRFJFO3VCQUNRO3lCQUVBLElBQUxDO3lCQUFLLFdBSlJGLElBSUdFO3lCQUVQO3VCQUhVLGlCQXRFWjdpRCxFQW9FTTRpRDs7dUJBT0o7O3dCQUFVO3dCQUNFLDRCQURSRzt1QkFDUTt5QkFFQSxJQUFMQyxlQUFLLFNBQUxBLElBRVA7dUJBSFUsaUJBN0VaaGpELEVBMkVNK2lEOzt1QkFPSixJQURJRTt1QkFDSjtxQ0F4REliLGFBdURBYTs7dUJBdkNNLElBREVDLGFBQU56UCxjQUNJO3VCQUNQLE9BREMwUCxNQURFMVA7eUJBR0osV0FIVXlQLElBQ1JDLE9BRUY7dUJBRzRCOzs7K0JBL0NoQ25qRDsrQkEwQ01takQ7K0JBSzBCLGVBQ0Usa0NBUDFCMVA7O3VCQTRDTixJQURHMlA7dUJBQ0g7dUJBR2dCOzRCQXhIdUJybEIsY0FBUXNqQjsyQkF1SDdDLFNBdkhxQ3RqQjsyQkF1SHJDLFdBSENxbEIsSUFHQyxpQkF2SDJDL0I7MkJBd0g3Qzs7Ozt1QkFHRixJQURPZ0M7dUJBQ1A7MkJBQ0l6MUM7dUJBR1k7NEJBL0h1Qm13QixjQUFRc2pCOzJCQThIN0MsU0E5SHFDdGpCLG1CQThIckMsS0FGRW53QjsyQkFFSyw2QkE5SHNDeXpDOzJCQStIN0M7O3lCQUVBLGtCQVBLZ0MsSUFPTCxJQUxFejFDOzsyQkFNQzAxQzs4QkFsSXFCbEM7d0JBb0l4Qjt1QkFFUSxxQkFDRyxrQkFMUmtDLElBSURDO3VCQUVKO3VCQUZVO3dCQUdHLGFBeklrQ2xDLFVBQVJ0akI7d0JBMklyQzs7MkJBM0k2Q3NqQjsyQkFBUnRqQjs0QkFBUXNqQixxQkFBUnRqQjt1QkE2SWhDOzs0Q0FKSDBGLFVBRkErZixVQUdBaGdCO3VCQUdHLFNBQW1DO3lCQW5GdEM0ZTtlQWhCUiw0QkFWRXBpRCxFQVVFOGhELE9BSUFFLFFBT0FFO2NBMEZKLGFBN0dJN3dDOzswQkE4R0QsV0FoSjhEaXdDLFFBZ0MvRHRoRDs7O2lDQWlIVSxJQUFMaXBCLFdBQVcsdUJBQVhBO2tDQUNNLElBQUx6Z0IsV0FBVyxvQkFBWEE7OztVQUVaOztRQXZKRixTQXdKSTthQUVGaTdDO01BQThCMWxCLFFBQVFzakIsS0FBS2QsU0FBU2UsUUFBUVo7TUFDOUQ7aUJBRGdDM2lCLFFBQVFzakIsS0FBS2QsU0FBU2UsUUFBUVosT0FDYTthQUV6RWdELG1CQUFxQjUzQixJQUFpQnUxQixLQUFLZCxTQUFTZSxRQUFRWjtNQUM5RCxHQUR1QjUwQixJQUFRLFFBQVJBLGlCQUFRQyxhQUFSNDNCLFVBeEtyQjVsQjtNQXlLRjtpQkFEdUI0bEIsYUFBaUJ0QyxNQUFLZCxTQUFTZSxRQUFRWixPQUV0RDthQUdOa0QsV0FBYTkzQixJQUFpQnUxQixLQUFLZCxTQUFTZSxRQUFRWjtNQUN0RCxHQURlNTBCLElBQVEsUUFBUkEsaUJBQVFDLGFBQVI0M0IsVUE3S2I1bEI7TUE4S0Y7a0JBRGU0bEIsV0FBaUJ0QyxRQUFLZCxVQUFTZSxRQUFRWixPQUNnQjthQUdwRXRJLE1BQU14MkMsRUFBRXBDLEVBQUU2TDtNQUNaO1FBQ0UsdUNBRk16SixFQUFFcEMsRUFBRTZMOzs7O1VBSUMsSUFBUHc0QyxhQUFPLHlCQUFQQSxPQUFPOztVQUNDLElBQVBDLGFBQU8sd0JBQVBBLE9BQU87a0JBQXVCO2FBR25DQyxjQUFjbmlELEVBQUVwQyxFQUFFNkw7TUFDcEI7UUFDRSwrQ0FGY3pKLEVBQUVwQyxFQUFFNkw7Ozs7VUFJUCxJQUFQdzRDLGFBQU8seUJBQVBBLE9BQU87O1VBQ0MsSUFBUEMsYUFBTyx3QkFBUEEsT0FBTztrQkFBdUI7YUFFbkNFLGFBQWFwaUQsRUFBRXBDLEVBQUU2TDtNQUNuQjtRQUlFO1NBSElnMkM7U0FDQVQsUUFIU2gvQztTQUlUK2hELGFBcE1KNWxCO1NBcU1BLG1DQURJNGxCLFVBRkF0QyxLQUNBVCxLQUhXcGhELEVBQUU2TDs7Ozs7VUFPTixJQUFQdzRDLGFBQU8seUJBQVBBLE9BQU87O1VBQ0MsSUFBUEMsYUFBTyx3QkFBUEEsT0FBTztrQkFBdUI7YUFHbkNHLFlBQVlqa0Q7TUFDZCxJQUFJcUQsSUFBSixzQkFEY3JEO01BQ2QsU0FDUWtrRCxLQUFLcGtEO1ExQ3RVaEIsSTBDc1VnQjhRO1FBQ1g7YUFGRXZOLE9BQ1N1TixJQUNNLE9BRmZ2TjtVQUdNLDBCQUpJckQsRUFFRDRRO1lBRWMsUUFGZEE7VUFHTixPQUhNQSxJQUdMO01BSlI7UUFNTSxJQUNKQSxJQURJLFFBUFE1UTs7OztVQVVWO1lBQVksSUFDVkYsRUFEVSxRQVZGRTs7O2tDQVllLE9BWHpCcUQ7WUFVTztzQkFBTHZEO1FBSEM7a0JBQUw4USxZQUtLO2FBR0x1ekMsWUFBWXZrRDtVQUFnQitnRCxhQUFOQyxjQUFMd0Q7b0JBQUt4RDtlQUVWLE1BRkFoaEQsSUFFQSxzQkFGS3drRDtlQUdxQixNQUgxQnhrRCxJQUcwQixzQkFIckJ3a0QsT0FHcUIsWUFIVnpEO2FBTTVCMEQsb0JBQW9CcmtEO01BQ3RCLElBQUlIO01BQUo7d0JBQ2dFNkM7aUJBQWpDLFNBQWlDQSxPQUQ1RDdDLFNBQ3dDLHNCQUF5QixPQUFMNkMsQ0FBTztlQUZqRDFDLEVBRW1EO2FBeUJ2RXNrRCxNQUFReDRCLElBQWV5MEI7TUFDekIsR0FEVXowQixJQUFNLFFBQU5BLGFBQU1DLGFBQU53NEIsTTdCalJBempEO002QmtSTTswQkFEU3kvQztPQUVmLGdCQW5DUjRELGNBa0NFSztPQUVNLFlBRE5uaEQsSUFGTWtoRDtNQUlEO3dCQTNCU0U7aUJBQ2xCLFNBRGtCQSxPQUNsQixLQURrQkE7aUJBQ2xCLHdCQURrQkE7O3FCQU9kOzRCQVBjQTtzQkFPRCxxQkFEV1o7c0JBRVgsZ0JBQWEsUUFSaEIzL0MsUUFPTndnRDtxQkFFUTs7O3dDQUFPLElBRGZDLFNBQ3dCLG9CQUhKZDttQkFLWDtvQkFESHg0QyxJQVZJbzVDO29CQVVWN0QsS0FWVTZEO29CQVdELG1CQURIcDVDO29CQUNHOzBCQVhIbkgsUUFZTjJnRCxlQURBRDttQkFBUyxPQUVUN25DO3FCQUlXO29DQUpYQTtzQkFLVyxhQUFXLG9CQVJoQjFSLE9BQ051NUM7c0JBUVc7NkJBVEx2NUMsSUFDTnU1QyxPQU9XLHNCQVJMdjVDLE9BQ051NUM7cUJBU1UsZUFWVmhFLEtBVVUsSUFGUmxrQyxPQUVpQixJQUhqQm9vQyxPQUVBam9DO21CQUpRLGVBTFYrakMsS0FLVSxvQkFMSnYxQztpQkFMVixPQUxjbzVDO2VBd0JkRCxVQUdnQzthQVNsQ08sU0FBU0MsS0FBSzNvQyxJQUFJNG9DO01BQ1gsa0JBRFdBLE1BRVY7ZUFFTkU7UUFDUyxJQVpIbmxELEVBWUcsU0FIVHlFO1FBR1MsR0FMRnVnRDtVQU5YLDhCQURVaGxEO1VBRUksT0FEVnFELGNBQ1UsZ0JBRkpyRCxFQUNOcUQ7cUJBRUYsTUFIUXJELElBQ05xRDtpQ0FETXJEO1VBQ1YsSUFZTW9sRDs7a0JBYklwbEQ7UUFjUixjQURJb2xELEtBSEZGO1FBSUYsZUFMRXpnRCxJQU1jO01BTlI7O1VBVUksSUFBSi9CLEVBQUksbUJBWFZxQjtVQVdVLEdBQUpyQixNQVpNMlosSUFhTSxjQUFjLFNBWGhDNVgsSUFVTS9COzs7OztVQUtQLE9BZkMrQixPQWUwQjtVQUM5QixzQkFqQklWO1VBa0JVLG1CQWhCVm1oRDttQkFnQjJCOztJQUVsQixTQUFYRyxlMUN2WkwsTzBDa1lLTjtJQXFCVztJQUVDLFNBQVpPLGdCMUN6WkwsTzBDa1lLUDtJQXVCWSxTQUVaUSxVQUFVbHBDLElBQUk0b0MsS0FBS087TUFDWixJQUFMdmlELEdBQUssU0FET2dpRDtNQUVoQixnQkFBZ0JqbEQsR0FBSywwQkFEakJpRCxTQUNZakQsRUFGSnFjLElBRWdDLEVBRnZCbXBDO01BRXJCLGFBREl2aUQsR0FFUTtJQUxFO0lBT0EsU0FBWndpRCxxQjFDaGFMLE8wQzJaS0Y7SUFLWTtJQUVDLFNBQWJHLHNCMUNsYUwsTzBDMlpLSDtJQU9hOzs7T0F4SGJuTjtPQVFBMkw7T0FaQUg7T0FMQUY7T0FIQUQ7T0EyQkFPOzs7T0FwTUFqRDtPQU5BRDtPQXNRQXdEO09BNVBBdm1CO09BOFJBc25CO09BRUFDO09BT0FHO09BRUFDO0lBQWE7Ozs7O1FyQzlZYkM7SUFBVyxTQUlYQyxNQUFNemxELEVBQUU3RTtNQUNGLElBQUprRSxFQURJVyxNQUFFN0U7TUFFSCxnQkFESGtFO2VBR0ksYUFISkE7aUJBSUYseUJBSkVBO2lCQUtJLGFBTEpBLFdBTUYsVUFORUE7ZUFFRix5QkFGRUEsRUFRQztJQWJRLFNBZVBxbUQsYUFBYTFsRCxFQUFFN0U7TUFDckIsR0FEbUI2RSxnQkFBRTdFLEVBQ0c7TUFDVSxzQkFGZjZFLEVBQUU3RSxXQUVDLFdBRkg2RSxFQUFFN0U7TUFFQywwQ0FBa0M7SUFqQjNDLFNBMEJYd3FELGFBQWEzbEQ7TUFDZixTQUFRNGxEO1FML0NYO1FLK0NrQjs7Z0JBQ0w5akQsY0FBTkM7O2NBQ1MsOEJBRFRBLEdBRlcvQjs7Z0NBS0ksSUFBTEgsU0FBSyxVQUFMQTt3QkFISmlDOztVQUlBLFNBQUk7TUFDVCxZQWpDSDBqRCxZQWlDd0I7SUFqQ2IsU0FtQ1hLLGtCQVVNN2xEO01BVmMsR0FVZEEsb0JBVFc7U0FTWEEscUJBUlk7U0FRWkE7eUJBUG9COGxELGtCQUFOQyxnQkFBTmpCOztpQm9DakJkbEYsUXBDbkJBemxEO2lCQW9DYzJxRDtpQkFBTWlCO2lCQUFNRDs7O1NBT3BCOWxEOzs7U0FMcUJnbUQ7U0FBTkM7U0FBTkM7O2lCb0NuQmZ0RyxRcENuQkF6bEQ7aUJBc0NlK3JEO2lCQUFNRDtpQkFBTUQ7OztTQUtyQmhtRDs7O1NBSGlDbW1EO1NBQU5DO1NBQU5DOztpQm9DckIzQnpHLFFwQ25CQXpsRDtpQkF3QzJCa3NEO2lCQUFNRDtpQkFBTUQ7OztNQUlyQyxzQkFESW5tRDtRQUtxQyxnQkFMckNBLFFBekJSLE1BeUJRQTtRQXpCUjtTQUlvQzs0QkFxQjVCQTtVQXJCZ0IsV0FxQmhCQTtlQXJCZ0I7Ozs7O21CQURGLGVBc0JkQSxVQXRCYzttQkEwQlpzbUQ7TUFGTyxPQUZUdG1ELElBTXNCO0lBbkRqQixTQXFEWHVtRCxZQUFVbCtDO01BQ04sdUJBRE1BO01BQ04sVUFDTSxJQUFMeEksV0FBSyxPQUFMQTtNQUNHLHlCQUhFd0ksRUFHaUI7SUF4RGhCLFNBMERYbStDLE1BQU1DLElBQUk3M0I7TUFDWjtRQUNFLG9CQUZNNjNCLElBQUk3M0IsS0FJVjtZQURHNXVCOztRQUNnQyxxQkFEaENBO1FBQ0g7UUFDQSxjV3JEQWtDO1FYcURBLE1BRkdsQyxFQUdJO0lBaEVJLFNBa0VYMG1ELFFBQU1ELElBQUk3M0I7TUFDWjtRQUNFLG9CQUZNNjNCLElBQUk3M0I7WUFHUDV1Qjs7UUFDSCxjVzdEQWlDO1FYOERtQyxxQkFGaENqQztRQUVIO3VCQUNNO0lBeEVLLFNBOEVYMm1ELHNCQUFzQkMsSUFBSyxPQUFMQSxFQUFPO0lBOUVsQixTQWdIWEMsc0JBQXNCRDtNTHBJM0IsVUtxSVksbUNBRGVBLElBRUY7SUFsSFQsU0FvSFhFLHNCQUFzQnpxQixJQUFJN3hCO01BQzVCLFNBQUlKLEtBQUsyOEM7UUFDUCxPQURPQTt1QkFEZTFxQjt5RUFLaUQ7TUFKekUsU0FENEI3eEI7UUFjeEI7Y0Fkd0JBO1NBY3hCLEtBZHdCQTtTQWN4QixLQWR3QkE7U0FjeEIsS0Fkd0JBOzs7U0FlaEIsVUFmZ0JBO1FBY25COztNQUxMLEdBVHdCQSxRQVVvQjtNQUVOO01BQS9CLHlDQUt1QztJQXJJckMsU0FtSlh3OEMsb0JBQW9CQyxRQUFRQztNQUNJLElBYkVDLFVBYUYsc0JBREpEO01BWDlCLEdBRG9DQztRQU1oQyxNQU5nQ0EsYUFNaEMsS0FER3ZrRCxxQkFDSDs7O1VBQ0U7WUFBTSxnQ0FEUnpILEVBQ2dDLGlCQUY3QnlILEVBQ0h6SDtZQUNRLFVBRVUsSUFBUDRDLGFBQU8sbUJBR0FrcEQsY0FIUGxwRDtZQUZILFNBRFI1Qzs7O1FBSEE7cUJBU2tCOHJELGFBQ2lEO0lBcEoxRCxTQXVKWEcsZ0JBQWdCSDtNQUNVLDJCQURWQSxRQUNVLGtDQUFzQjtJQXhKckMsU0F1S1hJLHdCQUF3Qkg7TUFDTixJQWRFQyxVQWNGLHNCQURNRDtNQVoxQixHQURzQkM7UUFLVixJQURMdmtELEVBSmV1a0QsYUFLVixzQkFETHZrRCxxQkFDSzs7Y0FDUnpIO1VBQ0U7WUFBTSxnQ0FEUkEsRUFDZ0MsaUJBSDdCeUgsRUFFSHpIO1lBQ1EsVUFFVSxJQUFQNEMsYUFBTyxtQkFKZG9ELFFBSU9wRDtZQUZILFNBRFI1Qzs7O1FBS0EsZ0JBTklnRztNQUZMLHFDQVdzRDtJQXhLNUMsU0EwS1htbUQsd0JBRWlCeHVDO01BRlMsYUFFVEEsMEJBQWU7SUE1S3JCLFNBOEtYeXVDLHlCQUNlenVDLE9BRFksYUFDWkEsbUJBQ1k7SUFoTGhCLFNBeUxYMHVDLHdCQUVlMXVDO01BRlcsYUFFWEEsc0RBTWQ7SUFqTVUsU0FtTVgydUMsdUJBR2UzdUM7TUwxTnBCLFNLME5vQkE7T0FBSyxVQUFMQTtNQURvQixRQUNEO0lBdE12QixTQXdNWDR1QyxnQkFBZ0JSO01BT1osZ0NBUFlBO01BT1o7UUFHRiwyQkFES0M7UUFJbUI7Ozs7WUFFSDtvQ0FOaEJBO2FBQ2E7O1lBS0c7eUJBTmhCQTtNQURHLFFBVUM7SUExTkEsU0E0TlhRLDZCQUE2QkM7TUFDL0IsMEJBRCtCQSxPQUNKO0lBN05kLFNBd09YQyxxQkFBcUJqQixJQUFLLE9BQUxBLGFBQW9CO0lBeE85QixTQW1QWGtCO01BQTJDLGlFQUFzQjtJQW5QdEQsU0F3UFBDLGlCQUFpQkM7TUFDdkI7UUFBbUI7c0JBelBqQnhDO1NBeVBpQixnQkFESXdDLEdBQ25CQztTQUVVLHdCQTNQWnpDLFNBeVBFeUMsYUFDQUM7U0FDVSxTQUFWemhEO1FBQVU7b0JBQ3lCO0lBNVAxQixTQWdRWDBoRCxTQUNFbm9ELEdBQ0osMEJBRElBLFNBQ3NDO0lBbFE3QixTQW9RWG9vRCxZQUFZcG9ELEdBQ0gsSUFBUHdLLEtBQU8sU0FER3hLLEdBRUwsT0FETHdLLE9BQzhCO0lBdFFyQixTQXdRWDY5QyxjQUFjcm9ELEdBQ0wsSUFBUHdLLEtBQU8sU0FES3hLLEdBRVAsT0FETHdLLE9BQ2lDO0lBMVF4QixJQStRWDg5QyxPQS9RVzthQStSWEMsK0JBQW1DdjVCLElBQUlrNEI7TUFDSCxxQkFERGw0QjtNQUNyQztNQUNBLG9CV3ZSRTlzQixPWHFSdUNnbEQ7TUFDSCxJQUVsQ3NCLE9BQVM7U0FBVEE7UUFFb0IsYUFGcEJBO1FBRUYsY0FBYyxpQkFyQmRGO01BcUJpQyxxQlcxUmpDcG1ELE9YMlJVO0lBclNDLElBdVNYdW1ELDhCQVJBRjtJQS9SVyxTQXlTWEcsK0JBQStCVjtNQUFLLGdDQUFMQSxHQUFLLFFBQWdDO0lBelN6RCxJQTJTWFc7SUEzU1csU0ErVVhDLDBCQUEwQjU1QixJQUFJNjVCO01BQ2hDO1FBNUJBO1VBS007V0FGQTNCO1lBd0IwQjJCLGdCQXBDOUJGLGdCQWdCSTtVQUF3QixLQUV2QjtVQUNMO1lBQ0U7NkJBeEJGRiw4QkF3QzBCejVCLElBeEJ0Qms0Qjs7Z0JBU0M0Qjs7WUFDa0I7O2FBQ2lCLGlCQWFkOTVCO1lBYnhCO1lBQ0Esb0JXelRGOXNCLE9YNlNJZ2xEO1lBVW1CLFNBSW5CLFlBTEM0QjtZQUlIO1lBRUEsb0JXNVRGNW1ELE9YdVRNNm1EO1lBQWlCLFNBTXJCLGNXN1RGN21EO1VYK1NJOzs7b0NBWE47bUJBNEJNO1FBVUo7MkJBQUU7SUFNSjs7TUFYRTBtRDtJQVdGLG9CTDlXSDtJSzhXRyxvQkw5V0g7SUs4V0c7TUw5V0g7SUs4V0c7OztPQWhMRXRCO09BSUFDO09BV0FDO09BVUFDO09BL0VBWDtJQXNPRixvQkw5V0g7SUs4V0csb0JMOVdIO0lLOFdHOzs7T0FyU0VQO09BbEJBVjtPQXVCQVc7T0FRQUU7T0FxRkFVO09BNEZBVTtzQkx2UUw7O09LNFFTQztPQTlOSnBDO09Bb0RBZ0I7O09BcUVBSztPQW9CQUs7T0F3SEFrQjtPQVVBRztPQWpHQWhCO09Bb0JBQzs7T0FZQUU7Ozs7T0E0QkFPO09BSUFDO0lBa0ZGO2FzQzdWRVcsUUFBTXptRCxTQUFNLE9BQU5BLENBQU87YUFDYjBtRCxLQUFLNXBELEVBQUVXLEVBQUVDLEdBQUksa0JBQVJaLEVBQUlZLEVBQUZELEVBQVc7YUFDbEJrcEQsT0FBT3o2QyxFQUFFbFAsR0FBUSxzQkFBVmtQLEVBQUVsUCxFQUFhOzs7O0lBSWpCOztRQUE2QjtVQUNkLElBQVB5dkI7VUFBWSxxQ0FBMEIsWUFBdENBO1FBQ1YsUUFBSTtJQUZGLFNBSUxtNkIsUUFBVUMsVUFBd0JDO01BQ3BDLFNBQUlDO1FBQ0Y7VUFBSSxvQkFGTUYsYUFHUjtjQURrQi9nRDs7VUFDVCwrREFEU0E7VUFDVCwrQkFBTHUrQztVQUFLLFVBQzBDO01BSHZEO1FBS00sSUFDSjc2QyxPQURJLFdBTjhCczlDO1lBUXhCRTs7UUFDTSxJQUFWQyxRQUFVO1FBQ2Q7bUNBRlFELFNBQ0pDO1FBQ0osTUFGUUQ7TUFEQTthQUFWeDlDLE1BSWdEO0lBZjNDLGtCQU5MaTlDLFFBQ0FDLEtBQ0FDLE9BUUFDO0lBSks7YUNpRExNLFdBQVdsbkQ7TUFDSixvQ0FBTDhzQjtNQUNKLG1CQUZhOXNCO01BQ0osU0FBTDhzQjtNQUVKLG1CQUhhOXNCO01BQ0osU0FBTDhzQjtNQUdKLG1CQUphOXNCO01BQ0osU0FBTDhzQjtNQUlKLG1CQUxhOXNCO01BTWIsUUFOYUE7TUFDSjtPQUtULEtBTEk4c0I7T0FNbUI7WUFObkJBO01BT0osbUJBUmE5c0IsUUFPVHhCO01BTkssU0FBTHN1QjtNQVFKLG1CQVRhOXNCLFFBT1R4QjtNQU5LLFNBQUxzdUI7TUFTSixtQkFWYTlzQixRQU9UeEI7TUFJSixRQVhhd0I7TUFDSjtPQVVULEtBVkk4c0I7T0FXbUI7WUFYbkJBO01BWUosbUJBYmE5c0IsUUFZVHZCO01BWEssU0FBTHF1QjtNQWFKLG1CQWRhOXNCLFFBWVR2QjtNQVhLLFNBQUxxdUI7TUFjSixtQkFmYTlzQixRQVlUdkI7TUFYSyxTQUFMcXVCO01BZUosbUJBaEJhOXNCLFFBWVR2QjtNQVhLLFNBQUxxdUI7TUFnQkosbUJBakJhOXNCLFFBWVR2QjtNQVhLLFNBQUxxdUI7TUFpQkosbUJBbEJhOXNCLFFBWVR2QjtNQU9KLFFBbkJhdUI7TUFDSixTQUFMOHNCO01BbUJKLG1CQXBCYTlzQjtNQUNKLFNBQUw4c0I7TUFvQkosbUJBckJhOXNCO01BQ0osU0FBTDhzQjtNQW9CSiwwQkFyQmE5c0IsYUFzQitCO2FBRzFDbW5EO01BQ2tCOzs7OztNQUNILFFBRFpHLEtBQVNGLEtBQUxDLFFBQzRDO2FBbUJuREUsYUFBYXpxRCxHQUVmLFlBQ1c7YUFHVDBxRCxhQUFhbm5ELEdBQUksaUJBQVU7eUJBd0JDLFFBQUU7eUJBREYsUUFBRTt5QkFEUixRQUFJO3lCQURBLFFBQUk7UUFGMUJvbkQsZ0NBQ3NCLFFBQUk7YUFXMUI5N0IsTUFDRCs3QixjQUNDdCtCLElBQ0Z1K0I7TUFDQSxHQUZFditCO09BQWlCLFFBQWpCQSxzQkFBaUJDOztXQUFqQnUrQixlL0J6REl4cEQ7TStCMkROLGtDQUhDc3BELGNBQ0NFLGVBQ0ZELFFBQzRDO2dCQWhCMUNGLGFBWUE5N0I7d0I1QzNKVDs7Ozs7TzRDd0VLdTdCO09BeUJBQzsyQjVDakdMOzs7TzRDc0hLSTtPQU1BQzs7O2FDbEdBSyxPQUFPcnNEO01BQ1QsdUJBRFNBLE1BQ1Qsc0JBRFNBLEtBQzhCO2FBRXJDc3NELE1BQU1scEQsR0FBVyxtQ0FBWEEsR0FBcUM7YUFFM0NtcEQsVUFBVXZzRCxJQUFJa0YsSUFBSUM7TTdDL0J2Qjs7O1E2QytCbUJEOzs7O1FBQUlDOzs7Z0NBQVJuRixPQUFRbUYsV0FBSkQ7T0FHWCx1QkFIT2xGLElBQUlrRixJQUFJQztNQUVmLHdDQUN5QjthQUU1QnFuRCxTQUFTcHBELEVBQUU4QixJQUFJQztNQUFnQixzQ0FBdEIvQixHQUFFOEIsSUFBSUMsSUFBa0Q7YUFFakU0aEQsS0FBSzBGO01BQ0UsSUFBTDVtRCxHQUFLLFdBREY0bUQ7TUFDRTtRQUNILElBQ0YveUMsRUFERSxzQkFERjdUO1lBR1V5RSw4QkFBSyxzQkFIZnpFLElBR2UsTUFBTHlFO01BREwsc0JBRkx6RTtNQUVLLE9BQUw2VCxDQUNtQzthQUVyQ2d6QyxTQUFPcG5ELEtBQUtxbkQsUUFDZCxxQkFEU3JuRCxLQUFLcW5ELE9BQ1c7YUFFdkJDLFFBQU10bkQsTUFBTywyQkFBUEEsUUFBa0M7YUFFeEN1bkQsU0FBU2pyRCxHQUNYLGVBRFdBLDJCQUNpRTthQUUxRWtyRCxPQUFPcHpDO01BQ1QsZ0NBRFNBLEdBQ3FCO01BQ2pCLGlDQUNidGM7TUFDRTtRQUFrQixJQUFkNkUsRUFBYyxnQkFKWHlYLEVBR1R0YztRQUVnQyxzQkFINUI0USxPQUNKNVEsVUFFZ0MsU0FEMUI2RTtRQUU0QixzQkFKOUIrTCxRQUNKNVEsbUJBR2tDLFNBRjVCNkU7UUFBYyxTQURwQjdFOztRQUtBLDRCQU5JNFEsUUFNeUI7YUFFM0IrK0MsU0FBU2pyRDtNQUNYLGdDQURXQSxHQUNtQjtNQUE2QixTQUN2RGtyRCxNQUFNeG9EO1FBQ1IsU0FEUUE7OzRCQUlNLFFBSk5BOzswQkFHTSxRQUhOQTs7aUNBRU0sT0FGTkE7UUFLRCxnREFBMEM7TUFHbkQsaUNBQ0FwSDtNQUNFO29CQURGQSxNQUZpQyxXQUFNLGdCQVQ1QjBFLEVBU0Y2QjtRQUdQO1VBRkVxSyxPQUNKNVEsRUFDcUIsS0FIUixNQUFNLGdCQVRSMEUsRUFTRjZCO1FBR1AsU0FERnZHOztRQUdBLDRCQUpJNFEsUUFJeUI7Ozs7OztPQWxEM0JxK0M7T0FHQUM7T0FFQUM7T0FLQUM7T0FFQXpGO09BTUEyRjtPQUdBRTtPQUtBRTtPQVVBQzs7YWhDNUJFRSxpQkFBc0IsaUNBQTBCO2FBQ2hEQyxPQUFPQyxJQUFJQztNQUNiLE9BRGFBLFNBQUpELGFBQ1QsU0FEYUMsT0FDYixRQUNrQjthQUdoQkMsVUFBVXZyRCxFQUFFd3JEO01BQ2QsaUJBRGNBLDJCQU9kLEVBRElDLGtCQUVKNXBEO01BQ0U7eUJBVFU3QixLQVFaNkI7UUFDRSxTQURGQTs7UUFDRSxJQUVGLGlCQUNrQixtQkFMZEQsT0FJSjtRQUNrQjtjQUFsQnRHO1VBQ0U7O2VBREZBO2FBQ0UsV0FERkEsRUFMSXNHO2FBUW9CLG1CQVRwQjZwRCxPQVFFbDFCO1lBSEY3eEIsVUFWK0IsV0FVL0JBLFFBVnVDLDRCQUExQnZFO1lBWWY7a0JBRkV1RTthQVBXO2FBRDBDO2FBQTFCO2FBQW5CO2FBYUcsdUJBaEJIMUUsS0FhTjRQO1lBR0osaUJBaEJVNVAsS0FhTjRQO1lBQUosU0FERnRVOzs7UUFNQTtpQkFBVTthQUdSb3dELE9BQUtGO01BQ00sSUFBVHQvQyxPQUFTLGFBQ2IsVUFESUEsT0FER3MvQyxNQUVQLE9BREl0L0MsTUFFRTthQUdKeS9DLHNCQUF5QixzQ0FBZ0I7YUFFekNDLE9BQUs1ckQsR0FDTSxJQUFUa00sT0FBUyxhQUNiLE9BRElBLE9BREdsTSxHQUVQLE9BRElrTSxNQUVFO2FBSUoyL0MsS0FBSzdyRDtNQUNQLFFBRE9BO01BQ1A7WUFET0E7T0FFTSx3QkFGTkE7T0FFTSxNQUZOQTtPQUdNO3lCQUhOQTs7U0FFSDhyRDs7O09BQ1MsU0FBVEM7T0FBUyxLQUhOL3JEO01BTVAsaUJBTk9BLHVCQUtIZ3NEO01BQ0osT0FESUEsUUFFSTthQUdGQyxPQUFPanNELEVBQUVGO01BQ2Y7UUFBUSxXQURLRSxHQUNMLFdBQUpMLEVBRFdHO1FBQ1Asa0JBRE9BLG1CQUNYSCxJQUNBRDtRQUMrQyxPQUQvQ0EsRUFDZ0Q7YUFFbER3c0QsTUFBSWxzRCxFQUFFbXNEO01iM0ZiLG1CYTJGYUEsb0JBR0gsY0FIQ25zRCxFQUFFbXNEO01BRUgsa0NBQ2M7YUEyQmpCQyxTQUFTcHNELEVBQUVtc0Q7TUFDYixPQURhQTtRQUdSLGdCQUhRQTtTQXhCYjtXQUNTLFlBdUJFbnNELEdBdEJGLFFBc0JFQTtXQXRCRixHQXNCSW1zRDtZQWpCVCxVQUxBaHVDLHdCQURBRCxjQUVDdmUsRUFJRzBzRDs7WUFLSztxQkFZRnJzRDthQVpFO2dCQUFMcWUseUJBVkpGOzs7O2NBREFEOzs7OzthQUVDdmUsRUFZRzJzRDtXQWRDLElBb0JMNXNELEVBQUosU0FsQktDLEVBcUJRd3NEO1dBSGIsa0JBR2FBLHVCQXJCUnhzRCxJQWtCREQ7V0FDOEMsT0FEOUNBO1FBU0YsY0FOU00sRUFBRW1zRDtNQUVYLHVDQUljO2FBWWRJLE1BQU12c0QsRUFBRW1zRDtNQUNQLGtCQURPQSxTQUVMO01BVkw7UUFBc0IsWUFRZG5zRCxHQVBnRCxJQUFmLEtBT2pDQSxjQU5BLEVBRkprZSxLQUNBQyxHQUVJLFdBREp4ZSxFQU1Nd3NEO1FBSk0sb0JBRlp4c0QsSUFDQUQsb0JBS015c0Q7O1FBRkwsT0FIRHpzRCxFQVFpQjthQWFuQjhzRCxNQUFNeHNELEVBQUVtc0Q7TUFDUCxrQkFET0EsWUFFTDtNQVhMO1FBQThCO2dDQUFSLEtBU2Ruc0Q7U0FSeUMseUJBQUQsb0JBQVIsS0FRaENBO1NBUGdELHlCQUE5QixvQkFBZSxLQU9qQ0E7U0FOQSxnQkFISmtlLEdBR21CLGNBRm5CQyxHQUNBRTtTQUVJLHlCQURKMWUsRUFNTXdzRDtRQUpNOztZQUFiLGVBRkN4c0QsRUFDQUQ7WUFDb0QsZUFBM0IsZVhyRzdCekYsVVd5R1VreUQ7O1FBRkwsT0FIRHpzRCxFQVFpQjtJQUtoQixTQUZIK3NELFVBRU96c0QsRUFBRW1zRCxPQUFnRSxPQUFwQyxNQUE5Qm5zRCxFQUFFbXNELE1BQWdFO0lBQ3RFLFNBV0hPLFFBQU0xc0QsRUFBRW1zRDtNQUxZLFlBS2Ruc0QsR0FKYyxRQUlkQTtNQUFvQixRQUx4QndWLG1CQUNBOGMsb0JBSU02NUIsS0FBMkI7SUFYaEMsU0FhSFEsS0FBSzNzRCxHQUFLLG1CQUFMQSxXQUF1QjtJQWJ6QixTQWVINHNELE9BQU81c0Q7TUFDNEMsT0FBVCxLQURuQ0EsY0FFNEMsR0FBVCxLQUZuQ0EsY0FHRixPQUZIa2UsS0FDQUMsUUFDK0I7SUFsQjlCLFNBb0JIMHVDLE9BQU83c0Q7TUFDNEM7eUNBQUQsb0JBQVIsS0FEbkNBO09BRTRDLGtDQUFELG9CQUFSLEtBRm5DQTtPQUc0QyxrQ0FBRCxvQkFBUixLQUhuQ0E7TUFJRjtlQUhIa2U7ZUFHcUM7aUJBQWxCLHNCQUZuQkMsT0FFc0Msc0JBRHRDRSxRQUMwRDtJQUl6RCxTQUZIeXVDLFdBRU85c0QsR0FBa0MsT0FBVixPQUF4QkEsRUFBa0M7SUFDdEMsSUFNTHVULGFBTks7YUFzQkx3NUMsY0FBVSxZQWhCVng1QyxVQWdCNEI7SUF0QnZCLFNBdUJMeTVDLE1BQUliLE9BQVEsYUFqQlo1NEMsVUFpQkk0NEMsTUFBK0I7SUF2QjlCLFNBd0JMYyxXQUFTZCxPQUFRLGdCQWxCakI1NEMsVUFrQlM0NEMsTUFBb0M7SUF4QnhDLFNBeUJMZSxRQUFNZixPQUFRLGFBbkJkNTRDLFVBbUJNNDRDLE1BQWlDO0lBekJsQyxTQTBCTGdCLFlBQVVoQixPQUFRLGlCQXBCbEI1NEMsVUFvQlU0NEMsTUFBcUM7SUExQjFDLFNBMkJMaUIsUUFBTWpCLE9BQVEsYUFyQmQ1NEMsVUFxQk00NEMsTUFBaUM7SUEzQmxDLFNBNEJMa0IsUUFBTUMsT0FBUSxlQXRCZC81QyxVQXNCTSs1QyxNQUFpQztJQTVCbEMsU0E2QkxDLGNBQVUsWUF2QlZoNkMsVUF1QjRCO0lBN0J2QixTQThCTGk2QyxnQkFBWSxjQXhCWmo2QyxVQXdCZ0M7SUE5QjNCLFNBK0JMazZDLGdCQUFZLGNBekJabDZDLFVBeUJnQztJQS9CM0IsU0FnQ0xtNkMsb0JBQWdCLGtCQTFCaEJuNkMsVUEwQndDO0lBaENuQyxTQWtDTG82QyxZQUFVbkMsTUFBTyxpQkE1QmpCajRDLFVBNEJVaTRDLEtBQW1DO0lBbEN4QyxTQW1DTG9DLE9BQUtwQyxNQUFPLGlCQTdCWmo0QyxhQTZCS2k0QyxNQUF5QztJQW5DekMsU0FvQ0xxQyxpQkFBeUIsMkNBQWU7SUFwQ25DLFNBd0NMQyxpQkFBZSxjQWxDZnY2QyxVQWtDaUM7SUF4QzVCLFNBeUNMdzZDLFVBQVUvdEQsR0FBSSxjQW5DZHVULFVBbUNVdlQsRUFBMEI7SUF6Qy9COzs7T0FwSUgwckQ7T0FNQUM7T0FFQUM7T0FPQUM7T0FlQUs7T0E4QkFFO09Ba0JBRztPQXNCQUU7T0FOQUQ7T0FvQkFFO09BRUFDO09BRUFDO09BS0FDO09BTUFDO0tBR0c7O09BbUNMYztPQURBRDtPQUVBRTtPQWRBZDtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBRTtPQUNBQztPQUNBQztPQUNBQzs7T0FRQUk7T0FDQUM7SUF6Q0s7YWlDekpMQyxrQkFBa0JsbkM7TUFDcEIsU0FEb0JBLHFCQUNwQixjQURvQkEseUJBRUM7YUFFbkJtbkMsdUJBQXVCbm5DLEdBQ3pCLFNBRHlCQSxTQUN6QixRQUFrQzs7TUFNNUIsNENBREZvbkM7Ozs7TUFFRjtRQUFJOzs7OztVQUZGQTtJQUdKO21DQUhJQTtLQUdKLGNBSkVDO0lBSUYsU0FJRUUsaUJBQWUsMEJBQWtCO0lBSm5DLFNBS0VDLHFCQUFtQixPQUhuQkYsYUFHOEI7SUFMaEMsSUFPRUcseUI5QzVETDtJOENxREcsU0FlTUMsY0FBY3J1RCxFQUFFTDtNOUNwRXpCLEk4Q29FdUJ1WjtNQUNwQjtXQURzQnZaLEtBQUZ1WixJQUNMLE9BREtBO1FBRWYsdUJBRmVBLGFBRXNCLE9BRnRCQTtRQUdmLFFBSGVBO2lCQUdRO0lBbEI1QixTQXdTTW8xQyxTQXBSSzNpQyxJQUFzQjRpQztNQUNqQyxHQURXNWlDLElBQVMsUUFBVEEsY0FBU0MsYUFBVDRpQyxPQWxCVFA7TUFtQk0sSUFBSnB1RCxFQUFJLGlCQUR5QjB1RDtNQUN6QixHQURHQztPQUVlOzBCQWZ4Qko7UUFld0Isa0JBZnhCQSxxQjFCakNBeGlELGlCMEJpQ0F3aUQ7UUFlRS9DLEtBQXNCOztXQUF0QkE7TUFDOEMsMkJBRjlDeHJELEtBQ0F3ckQsS0FEQXhyRCxFQUVrRTtJQXZCdEUsU0F5QkU0dUQsUUFBTTluQztNQUNSLGFBRFFBO01BQ1IsYUFEUUEsU0FDVyxPQURYQSwrQkFJTDtJQTdCSCxTQStCRStuQyxRQUFNL25DO01BQ1IsSUFBSXpqQixJQURJeWpCO01BR0csUUFISEEsZ0JBQ0p6akIsUUFFTyxJQUhIeWpCO1FBS0gsU0FFc0Msc0JBQXBCLElBUGZBLFNBT21DO01BSHpDLGVBSk1BLEVBUUw7SUF2Q0gsU0F5Q0Vnb0M7TUFBa0I7O1NBRVpqTztTQUFLaHJCO1NBQU03b0I7U0FXWDNQLFVBWEF3akQsSUFBS2hyQixLQUFNN29CO2NBV1gzUDtpQkFYVzJQOzs7O2FBR0wraEQ7YUFBSzM0QjthQUFNNDRCO2FBQ1hydkQsS0FEQW92RCxNQUFLMzRCLE9BQU00NEI7WUFJQyxVQUhacnZEOytCQURXcXZEOztpQkFRakIzeEQ7TUFaRyxRQWNOO0lBeERMLFNBMERFNHhELE9BQUtwL0M7TUFBSSxTQUFKQSxRQUFJLEtBQUpBLFFBQW9CLFdBakJ6QmkvQyxnQkFpQktqL0M7TUFBb0IsVUFBcEJBLHVCQUFzRDtJQTFEN0QsU0E0REVxL0MsU0FBT3BvQyxHQUFJLE9BQUpBLElBQVU7SUE1RG5CLFNBOERFcW9DLG1CQUFtQkMsU0FBU0MsUUFBUUMsTUFBTUM7TUFDNUM7YUFENENBO09BRTNCLDBCQURiQztPQUNhLEtBRnFCRjtPQUVyQjs7WUFnQmpCenREOztRQUNFO1VBQWMsNEJBbkJzQnl0RCxNQWtCdEN6dEQ7VUFmd0I7O2NBT1A7ZUFMUGcvQztlQUFLaHJCO2VBQU03b0I7ZUFDWDBpRCxPQU5vQkwsZ0JBS3BCeE8sSUFBS2hyQjtlQUtFLGdCQVZJdTVCLFNBS1h2TztlQU1RLHVCQVRkNE8sV0FRTUU7Y0FDUSxHQUVMQztlQUFRLFdBUFhGOztlQU1PLGlCQVoyQkgsTUFVbENJLGtCQUpBRDtjQVNKLGlCQWJGRCxXQVFNRSxrQkFKQUQ7Y0FJTyxTQUxJMWlEOztxQkFhckJuTDs7OztNQUdBLEdBckI4Qnd0RDtRQXNCNUIsU0FyQkVHLGNBcUJGOzs7VUFDRTtZQUFNLElBRUNLLFFBRkQsaUJBckJOSixXQW9CRm4wRDtZQUNRLEdBRUN1MEQsUUFBUTtZQUZULFNBRFJ2MEQ7Ozs7O2dCQXRCNEIrekQ7TUFGakIsV0E0QlA7SUF4Rk4sU0EwRkVTLFNBQU9WLFNBQVN0b0M7TUFDbEI7YUFEa0JBO09BQ2xCLE1BQUl3b0M7T0FBSixNQUNJUztPQURKLEtBRUlQO01BRko7UUFJYyx5QkFGVkEsU0FHZ0IsOEJBTkYxb0M7UUFNRSxPQURkeW9DO1FBR2UscUNBUlpILFNBQVN0b0MsR0FNWnVvQyxRQUxGQyxNQUlFQztNQTlCa0IsV0FrQ3JCO0lBbkdILFNBcUdFUyxRQUFLeHdELEVBQUVzbkI7TUFDVCxTQUFRbXBDO1E5QzNKWDtROEMySnVCOztnQkFHWHBQLGVBQUtockIsZ0JBQU03b0I7WUFDZCxXQUxDeE4sRUFJRXFoRCxJQUFLaHJCO3dCQUFNN29COztVQURkLFNBRTBCO01BQ2pCLElBQVhrakQsU0FBVyxrQkFOTnBwQztNQU1NLE9BQVhvcEMsU0FDaUIsdUJBUFpwcEM7TUFPb0M7UUFHM0MsTUFWT0EsS0FVUCxLQURJbFAscUJBQ0o7OztVQUNFO3NCQUFVLGlCQUZSQSxFQUNKdGM7WUFDRSxTQURGQTs7O1lBR0EsU0FQRTQwRCxTQU9GLFVBQXFCLHVCQWJkcHBDO1FBY0s7WUFBVHFJOztRQUFTLEdBUlYrZ0MsZUFRQy9nQztRQUNILHVCQWZPckk7UUFlUCxNQURHcUksSUFFTTtJQXJIWCxTQXVITWdoQywwQkFBMEIzd0QsRUFBRXNuQixFQUFFeHJCOzs7O1VBT3BCO1dBRE51bEQ7V0FBS2hyQjtXQUFNN29CO1dBQ0wsaUJBUGdCeE4sRUFNdEJxaEQsSUFBS2hyQjtVQUNDO2dCQUlMTzs7OzthQUVRLGlCQWJldFAsS0FBRXhyQjtZQWFDLFlBRjFCODZCO3FDQUxVcHBCOztVQUdiLE9BVDBCOFo7VUFPbEIsV0FESzlaOztRQUpqQjs7a0JBQ1csaUJBSG1COFosS0FBRXhyQjtJQXZIcEMsU0EySUU4MEQsbUJBQW1CNXdELEVBQUVzbkI7TUFDdkIsTUFEdUJBLEtBRVIsMkJBRlFBO01BRVIsT0FBWG9wQyxTQUNpQix1QkFIRXBwQztNQUdzQjtpQkFGekNsUDs7Y0FJRnRjO1VBQ0U7c0NBTmlCa0UsRUFBRXNuQixFQUtyQnhyQixJQUN3QyxpQkFObkJ3ckIsS0FLckJ4ckI7WUFDRSxTQURGQTs7O1FBR0EsYUFORTQwRCxTQU1GLFVBQXFCLHVCQVJBcHBDO1FBU1Q7WUFBVHFJOztRQUFTLEdBUFYrZ0MsU0F2Q2dCLE1BOENmL2dDO1FBQ0gsdUJBVnFCckk7UUFVckIsTUFER3FJLElBRU07SUF0SlgsU0F3SkVraEMsT0FBSzd3RCxFQUFFc25CLEVBQUVqWDtNQUNYLFNBQVFvZ0QsVUFBVTN1RCxFQUFFb0Q7WUFBRjRyRCxNQUFFMXJEO1FBQ2xCO2FBRGdCMHJEO1lBS0c7YUFEWnpQLElBSlN5UDthQUlKejZCLEtBSkl5NkI7YUFJRXRqRCxLQUpGc2pEO2FBS0csa0JBTmQ5d0QsRUFLRXFoRCxJQUFLaHJCLEtBSk1qeEI7YUFBRjByRCxJQUlFdGpEO2FBSkFwSTs7VUFHZCxPQUhjQSxPQUtrQjtNQUN2QixJQUFYc3JELFNBQVcsa0JBUE5wcEM7TUFPTSxPQUFYb3BDLFNBQ2lCLHVCQVJacHBDO01BUW9DO1lBRXZDbFAsRUFWR2tQLEtBV0hwaUIsUUFYS21MLFdBVUwrSDs7Y0FFSnRjO1VBQ0U7cUJBRkVvSjtZQUVNLG9CQUFVLGlCQUhoQmtULEVBRUp0YztZQUNFLFNBREZBOzs7UUFHQSxPQVJFNDBELFNBUW1CLHVCQWZkcHBDO1FBZXNDLFNBSnpDcGlCO1FBTVE7WUFBVHlxQjs7UUFBUyxHQVZWK2dDLGVBVUMvZ0M7UUFDSCx1QkFsQk9ySTtRQWtCUCxNQURHcUksSUFFTTtJQTNLWCxTQW9MTW9oQzs7OztVQUVVOzs7O21CQUFUcnVDOztRQURJO0lBckxYLFNBd0xFc3VDLE1BQU0xcEM7TUFDUjtZQURRQTtPQUNSO09BQ0U7O21CQUFxQm1DLEVBQUUzbkIsR0FBZSxhQUFqQjJuQixFQUFpQixnQkFBZjNuQixHQUFrQztPQUMvQyxxQkFGUm12RDtPQUVRLEtBSEozcEM7TUFJUjtpQkFDT3hsQjtVQUNLOzZCQURMQTtXQUVVLHNCQUpib3ZELE1BR0k5dUQ7VUFDSixpQkFKQTh1RCxNQUdJOXVEO1VBQ0osUUFBMEI7O01BSDlCLFVBSlFrbEIscUJBQ0oycEMsSUFFQUMsTUFTd0I7SUFwTTVCLFNBd01FQyxTQUFPamxDO01BR1QsSUFBSWtsQyxTQUhLbGxDO01BR1QsU0FFUTNRLElBQUl6ZixFQUFFdTFEO1lBQUZodkQsTUFBRWl2RDtRQUFVO2FBQVZBO2dCQUtKalEsSUFMSWlRLFVBS0NqN0IsS0FMRGk3QixVQUtPOWpELEtBTFA4akQ7WUFNZSxhQURuQmpRLElBQUtockIscUI5Q3ZRbEIsTzhDa1FXOWEsSUFBSWxaLElBS1NtTDtVQUhmLEdBRk1uTCxRQUZSK3VELG9CQUtPO1VBQ1M7bUNBTmhCQSxTQUVRL3VEO1dBSVEsSUFKUkE7O1dBQUVpdkQ7bUJBTTBCO01BUnhDOzRCOUNoUUgsTzhDa1FXLzFDLG9CQVFHO0lBck5YLFNBdU5FaTJDLFlBQVkvbkM7TUFBZ0Isa0JBQWhCQTtNQUFnQixvQjlDNVFqQztNOEM0UWlDLHNCOUM1UWpDLE9zQm1DUzdiLHNCd0J5T2tDO0lBdk54QyxTQXlORTZqRCxjQUFjaG9DO01BQWdCLGtCQUFoQkE7TUFBZ0Isb0I5QzlRbkM7TThDOFFtQyxzQjlDOVFuQyxPc0JtQ1M3YixzQndCMk9vQztJQXpOMUM7ZUE2U004akQsVUFBVXBxQyxFQUFFKzVCO1FBQ2QsU0FEWS81QjtRQUNaLHVCQURZQSxLQUFFKzVCLFdBQ29DO2VBRWhEenZCLElBQUl0SyxFQUFFKzVCLElBQUlockI7UUFDSjtxQkFERi9PLEVBQUUrNUI7U0FFMEIsVUFGMUJBLElBQUlockIsS0FFc0IsaUJBRjVCL08sS0FDRnhyQjtRQUVKLGlCQUhNd3JCLEtBQ0Z4ckIsWUFDQTYxRDtRQUNKLE9BSE1ycUM7UUFDRSxTQURGQTtRQUdOLFlBRTJDLFNBUnpDb3FDLFVBR0lwcUMsT0FLdUQ7ZUFlM0RzTCxPQUFPdEwsRUFBRSs1QjtRQUNIO3FCQURDLzVCLEVBQUUrNUI7U0FFaUIscUJBRm5CLzVCLEtBYmF4ckI7Ozs7O2dCQUdUaTdCLE9BQUd2cEI7WUFDVCxtQkFETXVwQixFQVVGc3FCO2NBUkYsT0FRQS81QjtjQVJBO2tDQUZPOVo7d0JBS0MsaUJBS1I4WixLQWJheHJCLFlBR04wUjs7O1VBRFosU0Fha0M7ZUFRcEM4QixLQUFLZ1ksRUFBRSs1QjtRQUNLLG1CQURQLzVCLEVBQUUrNUIsS0FDSCx1QkFEQy81QjtRQUNEO2NBRUtzcUMsWUFBUzE2QixZQUFTMjZCO1VBQ3RCLG1CQUpFeFEsSUFHRXVRLElBQ2dCLE9BRFAxNkI7VUFFaEIsR0FGeUIyNkI7Z0JBSWRDLEdBSmNELFNBSUwxNkIsR0FKSzA2QixTQUlJRSxNQUpKRjtZQUtsQixtQkFSRnhRLElBT015USxJQUNnQixPQURQMzZCO1lBRWhCLEdBRnlCNDZCO2tCQUlkQyxHQUpjRCxTQUlMRSxHQUpLRixTQUlJRyxNQUpKSDtjQUtsQixtQkFaTjFRLElBV1UyUSxJQUNnQixPQURQQzt3QkFBU0M7OztzQkFkMUJuN0IsV0FBR1YsY0FBTTdvQjtrQkFDYixtQkFFRTZ6QyxJQUhFdHFCLEdBQ2UsT0FEWlY7NEJBQU03b0I7O2dCQURoQjtZQWNlO1VBSko7UUFKSixlQVVrRDtlQVEzRGtuQixTQUFTcE4sRUFBRSs1QjtRQUNDLG1CQURILzVCLEVBQUUrNUIsS0FDUCx1QkFESy81QjtRQUNMO2NBRUtzcUMsWUFBUzE2QixZQUFTMjZCO1VBQ3RCLG1CQUpNeFEsSUFHRnVRLElBQ2dCLFVBRFAxNkI7VUFFaEIsR0FGeUIyNkI7Z0JBSWRDLEdBSmNELFNBSUwxNkIsR0FKSzA2QixTQUlJRSxNQUpKRjtZQUtsQixtQkFSRXhRLElBT0V5USxJQUNnQixVQURQMzZCO1lBRWhCLEdBRnlCNDZCO2tCQUlkQyxHQUpjRCxTQUlMRSxHQUpLRixTQUlJRyxNQUpKSDtjQUtsQixtQkFaRjFRLElBV00yUSxJQUNnQixVQURQQzt3QkFBU0M7OztzQkFkMUJuN0IsV0FBR1YsY0FBTTdvQjtrQkFDYixtQkFFTTZ6QyxJQUhGdHFCLEdBQ2UsVUFEWlY7NEJBQU03b0I7O2dCQURoQjtZQWNlO1VBSko7UUFKSixRQVUyRDtlQUVwRTJrRCxTQUFTN3FDLEVBQUUrNUI7UUFDYixTQUFRK1E7VTlDdGFmO1U4Q3NhZ0M7O2tCQUdkcjdCLGFBQVEzZSxhQUFHNUs7Y0FDZixtQkFESXVwQixFQUpFc3FCLEtBTUMsVUFGS2pwQyxFQUVMLGVBRlE1Szs7O1lBRGxCLFNBSXdCO1FBQ0wsbUJBUlo4WixFQUFFKzVCO1FBUUUsdUNBUkovNUIscUJBUTRCO2VBVXJDK3FDLFFBQVEvcUMsRUFBRSs1QixJQUFJaHJCO1FBQ1I7cUJBREUvTyxFQUFFKzVCO1NBRUoseUJBRkUvNUIsS0FDTnhyQjtlQUNBOGM7OztnQkFQU21lLFdBQUd2cEI7WUFDVCxxQkFETXVwQixFQUtEc3FCLGdCQUxJN3pDO1lBRVAsV0FHRzZ6QztZQUhILFdBR09ockI7Ozs7O1lBSWQsaUJBSlEvTyxLQUNOeHJCLGVBRFF1bEQsSUFBSWhyQixLQUVaemQ7WUFFRixPQUpRME87WUFJUixTQUpRQTtZQUlSLFFBRTJDLGdCQTNGM0NvcUMsVUFxRlFwcUM7WUFJUjs7O1VBckJ1QixZQXdCdEI7ZUFFRHFMLElBQUlyTCxFQUFFKzVCO1FBTWM7d0JBTmhCLzVCLEVBQUUrNUI7U0FNTSx5QkFOUi81Qjs7UUFDa0I7O1lBSXBCLElBRE95UCxXQUFHdnBCLGNBQ1YscUJBRE91cEIsRUFKSHNxQjtZQUtKLFFBRkE7WUFFQSxVQURVN3pDOztVQURWLFNBR2tDO2VBRXBDaW9CLFFBQVF2SixJQUFJcHdCO1FBQ2Q7O21CQUFTLHFDQURDb3dCLElBQ0s2SyxFQUFFNzJCLEVBQWtCO2lCQURyQnBFLEVBQ3VCO2VBRW5DdzJELFlBQVlwbUMsSUFBSXB3QjtRQUNsQjs7bUJBQVMseUNBREtvd0IsSUFDQzZLLEVBQUU3MkIsRUFBc0I7aUJBRHJCcEUsRUFDdUI7ZUFFdkM0NUIsT0FBTzU1QixHQUNDLElBQU5vd0IsSUFBTSxlQUNWLFlBRElBLElBREtwd0IsR0FFVCxPQURJb3dCLEdBRUQ7O2NBcEhEK2lDO2NBL1FKRztjQU1BQztjQTJCQUk7Y0FzUEk3OUI7Y0FvQkFnQjtjQVVBdGpCO2NBb0JBb2xCO2NBY0F5OUI7Y0FrQkFFO2NBU0ExL0I7Y0F0U0o2OUI7Y0FzQ0FJO2NBYUFDO2NBNUZBbkI7Y0E0SEFzQjtjQWdCQUc7Y0FlQUs7Y0FFQUM7Y0EwTEloOEI7Y0FHQTY4QjtjQUdBNThCO0lBelpOO005Q3JESCxJOENpZWFyc0I7ZUFDQTZPLEtBQU04ekMsS0FBWXJyRCxHQUFJLHVCQUFKQSxFQUFZOzs2QkFEOUIwSSxNQUNBNk87T0FqS1I4ZjtPQUNBeUU7T0FDQTgxQjtPQUNBM2dDO09BQ0FnQjtPQUNBdGpCO09BQ0FvbEI7T0FDQXk5QjtPQUNBRTtPQUNBMS9CO09BQ0FydkI7T0FDQXN0RDtPQUNBeG5EO09BQ0FzQztPQUNBc2xEO09BQ0FqOEM7T0FDQXk4QztPQUNBQztPQUNBaDhCO09BQ0E2OEI7O2VBZ0pJN21ELE9BQU8rbUQsSUFBSyw0QkFBTEEsR0FBNEI7ZUFDbkM5OEIsT0FBTzU1QjtRQUNDLElBQU5vd0IsSUFBTSxXQUNWLFdBbkpGb21DLFlBa0pNcG1DLElBREtwd0IsR0FFVCxPQURJb3dCLEdBRUQ7O2NBSkR6Z0I7Y0FuS0p1c0I7Y0FDQXlFO2NBQ0E4MUI7Y0FDQTNnQztjQUNBZ0I7Y0FDQXRqQjtjQUNBb2xCO2NBQ0F5OUI7Y0FDQUU7Y0FDQTEvQjtjQUNBcnZCO2NBQ0FzdEQ7Y0FDQXhuRDtjQUNBc0M7Y0FDQXNsRDtjQUNBajhDO2NBQ0F5OEM7Y0FDQUM7Y0FDQWg4QjtjQUNBNjhCO2NBaUpJNThCO0lBaGJOLFNBNmJFdW5CLE9BQUt0OEMsR0FBSSwwQkFBSkEsRUFBZ0M7SUE3YnZDLFNBOGJFOHhELFdBQVc5M0MsR0FBR0MsR0FBR2phLEdBQUksaUJBQVZnYSxHQUFHQyxLQUFHamEsRUFBK0I7SUE5YmxELFNBK2JFK3hELFlBQVkxRyxLQUFLcnJELEdBQUksd0JBQVRxckQsS0FBS3JyRCxFQUFtQztJQS9idEQsU0FpY0Urd0QsVUFBVXBxQyxFQUFFKzVCO01BQ2QsWUFEWS81QjtlQUVQLGlCQUZPQSxLQUFFKzVCLFFBQUYvNUI7ZUFHUCwyQ0FBb0Q7SUFwY3pELFNBc2NFcXJDLE1BQUlyckMsRUFBRSs1QixJQUFJaHJCO01BQ0o7bUJBREYvTyxFQUFFKzVCO09BRTBCLFVBRjFCQSxJQUFJaHJCLEtBRXNCLGlCQUY1Qi9PLEtBQ0Z4ckI7TUFFSixpQkFITXdyQixLQUNGeHJCLFlBQ0E2MUQ7TUFDSixPQUhNcnFDO01BQ0UsU0FERkE7TUFHTixZQUUyQyxTQVZ6Q29xQyxVQUtJcHFDLE9BS3VEO0lBM2M3RCxTQTBkRXNMLE9BQU90TCxFQUFFKzVCO01BQ0gsZ0JBREMvNUIsRUFBRSs1QixLQUVpQixxQkFGbkIvNUIsS0FiYXhyQjs7O2NBR1RpN0IsT0FBR3ZwQjtVQUNULHNCQURNdXBCLEVBVUZzcUI7WUFSRixPQVFBLzVCO1lBUkE7Z0NBRk85WjtzQkFLQyxpQkFLUjhaLEtBYmF4ckIsWUFHTjBSOzs7UUFEWixTQWFrQztJQTVkdEMsU0FvZUVvbEQsT0FBS3RyQyxFQUFFKzVCO01BQ0ssbUJBRFAvNUIsRUFBRSs1QixLQUNILHVCQURDLzVCO01BQ0Q7WUFFS3NxQyxZQUFTMTZCLFlBQVMyNkI7UUFDdEIsc0JBSkV4USxJQUdFdVEsSUFDb0IsT0FEWDE2QjtRQUVoQixHQUZ5QjI2QjtjQUlkQyxHQUpjRCxTQUlMMTZCLEdBSkswNkIsU0FJSUUsTUFKSkY7VUFLbEIsc0JBUkZ4USxJQU9NeVEsSUFDb0IsT0FEWDM2QjtVQUVoQixHQUZ5QjQ2QjtnQkFJZEMsR0FKY0QsU0FJTEUsR0FKS0YsU0FJSUcsTUFKSkg7WUFLbEIsc0JBWk4xUSxJQVdVMlEsSUFDb0IsT0FEWEM7c0JBQVNDOzs7b0JBZDFCbjdCLFdBQUdWLGNBQU03b0I7Z0JBQ2Isc0JBRUU2ekMsSUFIRXRxQixHQUNtQixPQURoQlY7MEJBQU03b0I7O2NBRGhCO1VBY2U7UUFKSjtNQUpKLGVBVXNEO0lBaGZqRSxTQXdmRXFsRCxXQUFTdnJDLEVBQUUrNUI7TUFDQyxtQkFESC81QixFQUFFKzVCLEtBQ1AsdUJBREsvNUI7TUFDTDtZQUVLc3FDLFlBQVMxNkIsWUFBUzI2QjtRQUN0QixzQkFKTXhRLElBR0Z1USxJQUNvQixVQURYMTZCO1FBRWhCLEdBRnlCMjZCO2NBSWRDLEdBSmNELFNBSUwxNkIsR0FKSzA2QixTQUlJRSxNQUpKRjtVQUtsQixzQkFSRXhRLElBT0V5USxJQUNvQixVQURYMzZCO1VBRWhCLEdBRnlCNDZCO2dCQUlkQyxHQUpjRCxTQUlMRSxHQUpLRixTQUlJRyxNQUpKSDtZQUtsQixzQkFaRjFRLElBV00yUSxJQUNvQixVQURYQztzQkFBU0M7OztvQkFkMUJuN0IsV0FBR1YsY0FBTTdvQjtnQkFDYixzQkFFTTZ6QyxJQUhGdHFCLEdBQ21CLFVBRGhCVjswQkFBTTdvQjs7Y0FEaEI7VUFjZTtRQUpKO01BSkosUUFVK0Q7SUFwZ0IxRSxTQXNnQkVzbEQsV0FBU3hyQyxFQUFFKzVCO01BQ2IsU0FBUStRO1E5QzVqQlg7UThDNGpCNEI7O2dCQUdkcjdCLGFBQUdWLGdCQUFNN29CO1lBQ2Isc0JBREl1cEIsRUFKRXNxQixLQU1JLFVBRkhockIsS0FFRyxlQUZHN29COzs7VUFEaEIsU0FJd0I7TUFDTCxtQkFSWjhaLEVBQUUrNUI7TUFRRSx1Q0FSSi81QixxQkFRNEI7SUE5Z0J2QyxTQXdoQkUrcUMsUUFBUS9xQyxFQUFFKzVCLElBQUlockI7TUFDUjttQkFERS9PLEVBQUUrNUI7T0FFSix5QkFGRS81QixLQUNOeHJCO2FBQ0E4Yzs7O2NBUFNtZSxXQUFHdnBCO1VBQ1Qsc0JBRE11cEIsRUFLRHNxQixnQkFMSTd6QztVQUVQLFdBR0c2ekM7VUFISCxXQUdPaHJCOzs7OztVQUlkLGlCQUpRL08sS0FDTnhyQixlQURRdWxELElBQUlockIsS0FFWnpkO1VBRUYsT0FKUTBPO1VBSVIsU0FKUUE7VUFJUixRQUUyQyxnQkE3RjNDb3FDLFVBdUZRcHFDO1VBSVI7OztRQXJCdUIsWUF3QnRCO0lBL2hCSCxTQWlpQkV5ckMsTUFBSXpyQyxFQUFFKzVCO01BTWM7c0JBTmhCLzVCLEVBQUUrNUI7T0FNTSx5QkFOUi81Qjs7TUFDa0I7O1VBSXBCLElBRE95UCxXQUFHdnBCLGNBQ1Ysd0JBRE91cEIsRUFKSHNxQjtVQUtKLFFBRkE7VUFFQSxVQURVN3pDOztRQURWLFNBR2tDO0lBdmlCdEMsU0F5aUJFd2xELFVBQVE5bUMsSUFBSXB3QjtNQUNkOztpQkFBUyx1Q0FEQ293QixJQUNLNkssRUFBRTcyQixFQUFrQjtlQURyQnBFLEVBQ3VCO0lBMWlCckMsU0E0aUJFdzJELFlBQVlwbUMsSUFBSXB3QjtNQUNsQjs7aUJBQVMseUNBREtvd0IsSUFDQzZLLEVBQUU3MkIsRUFBc0I7ZUFEckJwRSxFQUN1QjtJQTdpQnpDLFNBK2lCRW0zRCxTQUFPbjNELEdBQ0MsSUFBTm93QixJQUFNLGVBQ1YsWUFESUEsSUFES3B3QixHQUVULE9BRElvd0IsR0FFRDtJQWxqQkgsU0FvakJFZ25DLFFBQVU1bUMsSUFBc0JoRjtNQUNsQyxHQURZZ0YsSUFBUyxRQUFUQSxjQUFTQyxhQUFUNGlDLE9BbGpCVlA7TUFtakJNLElBQUpwdUQsRUFBSSxpQkFEMEI4bUI7TUFDMUIsR0FESTZuQztPQUdLOzBCQWhqQmZKO1FBZ2pCZSxrQkFoakJmQSxxQjFCakNBeGlELGlCMEJpQ0F3aUQ7UUEraUJFL0MsS0FDYTs7T0FDVixJQUZIQSxVQUY4QjFrQztNQUMxQjtPQUtSLFVBTmtDQSxrQkFDOUI5bUI7T0FPSyxPQVJ5QjhtQixLQVF6QixlQVBMOW1CLEtBQ0F3ckQ7T0FNSyxLQUZMbjdCO09BRUssS0FSeUJ2SjtPQVF6QjtNQUlUO3VCOUNybkJILE84Q3NmS29xQyxVQXlIRTdnQztNQU1KLE9BTklBLEdBT0Y7SUFqa0JGOzs7T0F3U01vK0I7T0EvUUpHO09BTUFDO09BMkJBSTtPQTRZQWtEO09BOEJBQztPQW9CQUM7T0FjQUM7T0EyQkFDO09BdkVBbmdDO09BOERBeS9CO09BbmJBN0I7T0FzQ0FJO09BYUFDO09BNUZBbkI7T0F4REFiO09BQ0FDO09BK2lCQW9FO09BNVhBbEM7T0FnQkFHO09BZUFLO09BRUFDO09BZ1ZBdUI7T0FHQVY7T0FHQVc7OztPQWxIQWhXO09BRUF5VjtPQURBRDs7SUE5YkY7YUNnRElVLFlBL0VLL3dEO01BQ1QsY0FEU0EsTUFDVCxVQURTQTtNQUVQO01BQ0YsZ0NBSFNBLEVBR0Q7YUFLTmd4RCxTQUFPenlELEdBQUksT0FBSkEsb0JBQTRDO2FBRW5EMHlELDBCQUF3QnJxRCxFQUFFNEMsRUFBRUM7TUFDOUIsY0FENEJELE1BQzVCLFVBRDRCQSxJQUNOLFNBREk1QyxZQUV4Qjs4QkFGNEI2QyxTQUVaO2FBSWhCeW5ELE1BQUl0cUQsRUFBRTRDLEVBQUVqTDtNQUNWLDBCQURNcUksRUFBRTRDO01BQ1IsR0FEVWpMLEdBSUUsSUFBTGtaLElBSkdsWixLQUlFLHlCQUpOcUksRUFBRTRDLEVBSURpTztNQURHLDJCQUhKN1EsRUFBRTRDLEVBSWM7YUFHcEIybkQsTUFBSXZxRCxFQUFFNEM7TUFDUiwwQkFETTVDLEVBQUU0QztNQUVSLHlCQUZNNUMsRUFBRTRDLEVBRUQ7YUFHTDRuRCxTQUFTeHFELEVBQUU0QztNQUNiLDBCQURXNUMsRUFBRTRDO01BRWIsOEJBRlc1QyxFQUFFNEMsRUFFRDthQUdWNm5ELFFBQU16cUQsRUFBRTRDO01BQ1YsMEJBRFE1QyxFQUFFNEM7TUFFViwyQkFGUTVDLEVBQUU0QyxFQUVEO2FBS1A4bkQsT0FBS3BxRCxHQUFHOEMsR0FBRzdDLEdBQUc4QyxHQUFHaks7TUFFRTs7O1FBRkZBOzs7O1FBQVRnSzs7O1VBQ2lCLFNBRHBCOUMsTUFBWWxILFNBQVRnSzs7OztRQUFNQzs7O1VBRUssU0FGUjlDLE1BQU1uSCxTQUFIaUs7UUFJWCxlQUpjakssTUFJZCxVQUFlLG1CQUpia0gsR0FBRzhDLEdBQUc3QyxHQUFHOEMsR0FBR2pLO1FBSW1CO01BRGpDLGlDQUNpQzthQUVwQ3V4RCxPQUFLQyxHQUFHaHdELElBQUlDLElBQUlsRDtNQUNhLFFBRHJCaUQsWUFBSUMsV0FDaUIsU0FEeEIrdkQsTUFBTy92RCxXQUFKRDtRQUdMLFVBSEtBLE1BQUlDO1FBR1QsYUFIS0Q7Y0FHTDlILEVBSEs4SDtVQUtOO2tCQUxHZ3dELEdBR0Y5M0QsRUFIYTZFO1lBS2QsU0FGQzdFOzs7O01BREEsd0NBS0Y7O01BMkJlLElBQWQrM0QsWUFBYztlQVlkQyxVQUFVaG5ELEVBQUV3YSxHQUFJLGdCQUFKQSxlQUFGeGEsZ0JBQWlEO01BWjdDLElBY2RpNEM7TUFkYyxTQWlCZHQ1QyxPQUFPK21EO1FBQ1Q7bUJBRFNBO1NBRVQsd0JBREl1QjtRQUdNOytCQUZOQyxLQW5CRkg7Z0JBc0JTLGVBSFBHO2dCQUxGalA7O2tCQVlEO01BMUJlLFNBNEJkL3NCLE1BQU1sckI7UUFDUixTQURRQSx3QkFDUjs7O1VBQ0U7NkJBRk1BLEtBQ1JoUixZQTdCRSszRDtZQStCQSxpQkFITS9tRCxLQUNSaFI7WUFFRSxTQUZGQTs7O1FBSUEsT0FuQkVpcEQ7UUFtQkY7Z0JBQ2U7TUFsQ0MsU0FxQ2QzN0MsS0FBS3BKLEVBQUU4TSxFQUFFdUQ7UUFDWCxTQURTdkQsS0FDVDtRQU1pQjswQkFOS2hMLEVBQUVvTjt1QkFBSjdNLE1BQUk2QzttQkFDdEI7cUJBQVEsWUFEWXBELE1BQUZPLElBQ0ksT0FEQTZDO3FCQUVoQixnQkFGY3BELEVBQUZPO3FCQUVaO3VCQUNNOzt3QkFBb0Isa0JBSjNCckMsRUFJRUUsRUFIZWdGO3dCQUdVLElBSGQ3Qzs7d0JBQUk2Qzs7cUJBRWhCLElBRUksSUFKUTdDOzs7aUJBRFRnTyxLQU9rQztNQTVDN0IsU0ErQ2QvTSxLQUFLdEQsRUFBRThNO1FBQ1QsU0FEU0EsS0FDVDtRQU1XOzBCQU5XaEw7bUIvQ3RKM0IsSStDc0p5Qk87bUJBQ2xCO3FCQUFRLFlBRFlQLE1BQUZPLElBQ0k7cUJBQ2hCLGdCQUZjUCxFQUFGTztxQkFFWjt1QkFDTSxJQUFMbkM7dUJBQUssV0FKUEYsRUFJRUU7dUJBQUssUUFITW1DOztxQkFFWixJQUVJLElBSlFBOztzQkFNYztNQXREbEIsU0FtRVY0eEQsYUFBYW40RCxFQUFFZ0csRUFBRW9EO1lBQUo3QyxNQUFJK0M7UUFDdkI7VUFBUSxZQURhdEQsTUFBRk8sSUFDRyxPQURDK0M7VUFFVTt3QkFGWnRELEVBQUZPO1dBQUk2TTtXQUFKd087O1dBQUl0WTttQkFFbUM7TUFyRTFDLFNBd0VkODBCLE1BQU1wdEI7UUFDUixnQkFEUUEsS0FDUjtRQUFpQjtxQy9DL0t0QixPK0N5S1dtbkQ7O3NCQU1xQztNQXpFM0IsU0FvSWRDLFFBQVFwbkQsRUFBRXFuRCxPQUFPLzdDLEVBQUVrUCxFQUFFOHNDO1FBQ1Y7bUNBREh0bkQsS0FBYXNuRDtTQUVWLHdCQUZIdG5ELEtBQWFzbkQ7U0FHZCxZQUZMQztTQUdTaDBDO1FBQ1g7YUFGRW15QyxNQUNTbnlDO1lBR1A7YUFERWswQztjQUNGLFlBSkYvQjtZQUlFLEdBREUrQixTQUhKL0IsR0FNb0I7WUFGbEI7YUFHYyx3QkFKWitCO2FBS1kseUJBTFpBO1lBTUosT0FYQUYsV0FTSUcsY0FQSmhDO1lBVUEsT0FYQThCLFNBU0lHLFlBUkpqQztZQVdBLFdBZFEyQixPQVVKSyxZQVBKaEMsR0FIZXA2QztZQWVmLGlCQUpJcThDLFVBUkpqQyxjQUhpQmxyQztZQWdCakIsaUJBaEJNeGEsS0FBYXNuRCxvQkFVZkk7WUFPSixpQkFqQk0xbkQsS0FBYXNuRCxvQkFXZks7WUFKRixJQVVGLEtBZEFqQyxNQUhNMWxELFNBaUJOLFVBakJNQSxPQU1GeW5EO1lBWXFDO3FCQWxCbkN6bkQ7a0JBb0JKZ1M7Y0FBNEI7Z0JBeEVsQztzQkFvRFVoUztpQkFwREcsd0JBb0RIQTtpQkFwREcsS0FvREhBO2lCQW5ESSx5QkFtREpBO2lCQWxEQSxXQUZONmtEO2lCQUhVLFlBQUpyeEQ7aUJBT0Msb0JBSlBxeEQ7Z0JBSU8sR0FBUGlELFFBREFEO2tCQWFNLGlCQWhCTmhELGdCQU1XdHZELE1BQUUrTjtrQkFDYjt1QkFKQXVrRCxZQUdhdmtEO3NCQUVSLFdBUkx1aEQsT0FNV3R2RDt3QkFFYyxRQUZkQTtzQkFHRCxXQVRWc3ZELE9BTWF2aEQ7d0JBSVQsT0FWSnVoRCxPQU1hdmhELEVBTmJ1aEQsT0FNV3R2RDt3QkFLUSwwQkFWbkJxeUQsUUFLYXRrRDt3QkFLVCxpQkFWSnNrRCxRQUtXcnlEO3dCQUtRLElBQWYsSUFMUytOLFVBS1QsSUFMTy9OLG9CQUFFK047O3NCQU9GLFFBUEVBOzs2QkFIYnVrRDtzQkFjbUIsU0FtQ2I3bkQ7c0JBbENOLGlCQWtDTUEsdUJBcElSK21EO3NCQWlHcUIsU0FtQ2IvbUQ7c0JBakNOLGlCQWlDTUE7O3NCQS9CVSxJQUFaZ29ELFVBQVksWUFsQmhCSDtzQkFtQkEsT0F0QkFoRCxTQXFCSW1ELFlBbEJKSDtzQkFrQmdCLFNBK0JWN25EO3NCQTdCTixpQkE2Qk1BLHVCQS9CRmdvRDtzQkFBWSxJQUdNLFdBdkJ0QkosVUFFQUMsVUFxQnNCLEtBNEJoQjduRDtzQkE1Qk4saUJBNEJNQTtvQkExQlIsU0EwQlFBLE9BdkRBeE0sTUE2QlIsVUF2QkVxMEQsWUFpRE03bkQ7b0JBMUJxQyxlQTBCckNBOztnQkF4QlYsZ0JBd0JVQTtnQkFwRFYsU0F3RU1nUzs7O1lBYkEsV0FQSWhTO1lBc0JOO2NBMUNKO21CQW9CVUE7ZUF4REksbUJBQUpzRTt1QkFxQ053YjtnQkFFUyxnQkFGVEEsUUF2REosS0EwRVU5ZixLQTFFVjtnQkFNWTsyQkFOVXNELEVBMERQNGtEO29CL0MxTnBCLEkrQ2dLeUIzeUQ7b0JBQ2xCO3NCQUFRLFlBeURLMnlELE9BMURLM3lELElBQ0k7c0JBQ2hCLGtCQXdETzJ5RCxHQTFESzN5RDtzQkFFWjt3QkFDUTs2Q0F1RU55SyxLQTFFWXNEO3lCQTJEbEI7bUNBM0RnQnRVO3FDQTJEWnE0RCxPQUFPOXdDLEdBQUc4eEMsVUFBTyxjQURWSCxHQTFES2w1RCxFQTJETHVuQixHQUFHOHhDLEtBQXlCO21DQUFuQ2hCO3lCQUFKLGdCQTNEZ0I5eEQ7eUJBNERSLG1CQUZNNHlELEdBMURFNXlEO3dCQTZEVyxRQUp6QjB5RCxLQUVFWixTQUNBN3NDLEVBQ3VCLFVBSnpCeXRDLEtBR0V6dEM7d0JBekRRLElBSEk1Sjs7c0JBRVosSUFFSyxJQUpPcmI7OztnQkEwRVZ5SyxPQWpCSmlvRDtnQkFpQklqb0QsT0FqQkppb0Q7Z0JBaUJJam9ELE9BakJKaW9EO2dCQWlCSWpvRCxPQWpCSmlvRDtnQkFpQklqb0QscUJBakJKaW9EOztjQVlHLE9sQ2pJRHp6RDtja0NpSUM7O1lBNEJFO1VBQUcsV0F0QlYreUQsU0FHU2gwQyxNQW1CcUIsUUFuQnJCQTtVQXNCVCxXQTFCUTh6QyxPQUNSRSxTQUdTaDBDLElBSk1qSTtVQTJCZixpQkF6QkFrOEMsT0FFU2owQyxnQkFKUWlIO1VBMkJqQixTQUdFO01BbEtVLFNBcUtkc0ssSUFBSTlrQixFQUFFc0w7UUFDQSxJQUFKa1AsRUFBSSxnQkFEQWxQO1FBRWlCLGVBRm5CdEwsRUFyT053bUQsU0FxT1FsN0MsR0FDSmtQLEVBQ3FCLFVBRm5CeGEsRUFDRndhLEdBQ29DO01Bdkt4QixTQTBLZDh0QyxRQUFRdG9ELEVBQUVzTCxFQUFFaTlDO1FBQ047MkJBRElqOUM7U0FFQSxnQkFGRnRMLEVBQ053YTtTQUVTLHdCQUhIeGEsS0FFTnNuRDtTQUVTLHdCQUpIdG5ELEtBRU5zbkQ7U0FHSyxZQUZMekM7U0FHUzcxRDtRQUNYO2FBRkUwMkQsTUFDUzEyRCxFQUNLLGtCQVBKdTVELFdBQ1YvdEMsRUFDQThzQztVQU1VLEdBUFY5c0MsTUFPVSxpQkFKVmd0QyxPQUVTeDREO1lBR0gsbUJBTk42MUQsT0FHUzcxRDtZQUdIO2tCQUNDb0U7Y0FBTyxtQkFBUEEsRUFWQ2tZO2dCQVdVLGtCQVJsQnU1QyxPQUdTNzFEO2dCQUtTLFlBQ0EsSUFBTHFOLGVBQUssT0FBTEE7Z0JBREssSUFFRixJQVBQck47O1lBR0gsSUFNQyxJQVRFQTs7VUFVRixRQVZFQTttQkFZUDtNQTVMVSxTQStMZGdvQixNQUFNaFgsRUFBRXNMO1FBQ1Y7aUJBRFF0TDtpQkFBRXNMOzBCQUNPa1AsRUFBRThzQyxPQUFTLFFBRHBCdG5ELEVBL1BSd21ELFNBK1BVbDdDLEdBQ09rUCxFQUFFOHNDLE9BQVMsT0FEbEJoOEMsQ0FDbUQsRUFBQztNQWhNOUMsU0FtTWQ5SSxLQUFLeEMsRUFBRXNMO1FBQUksZUFBTnRMLEVBQUVzTCxXQUFxQmtQLEVBQUc4c0MsT0FBVSxlQUFlLEVBQUM7TUFuTTNDLFNBcU1kMS9CLFNBQVM1bkIsRUFBRXNMO1FBQ0w7MkJBREtBO1NBRUQsZ0JBRkR0TCxFQUNQd2E7U0FFUyx3QkFIRnhhLEtBRVBzbkQ7U0FFUyx3QkFKRnRuRCxLQUVQc25EO1NBR0ssWUFGTHpDO1NBR1M3MUQ7UUFDWDthQUZFMDJELE1BQ1MxMkQsRUFDSztVQUNKLEdBUFZ3ckIsTUFPVSxpQkFKVmd0QyxPQUVTeDREO1lBR0gsbUJBTk42MUQsT0FHUzcxRDtZQUdIO2tCQUNDb0U7Y0FBTyxtQkFBUEEsRUFWRWtZO2dCQVdTLElBQ1ZqUCxJQURVLE1BUmxCd29ELE9BR1M3MUQ7Z0JBS1MsR0FDVnFOLElBQWUsT0FBZkE7Z0JBRFUsSUFFRixJQVBQck47O1lBR0gsSUFNQyxJQVRFQTs7VUFVRixRQVZFQTttQkFZUDtNQXZOVSxTQTBOZHc1RCxZQUFZeG9ELEVBQUVzTCxFQUFFbTlDLFFBQVFGO1FBQ2xCOzJCQURRajlDO1NBRUosZ0JBRkV0TCxFQUNWd2E7U0FFUyx3QkFIQ3hhLEtBRVZzbkQ7U0FFUyx3QkFKQ3RuRCxLQUVWc25EO1NBR0ssWUFGTHpDO1NBR1M3MUQ7UUFDWDthQUZFMDJELE1BQ1MxMkQsRUFDSyxPQVBRdTVEO1VBUVosR0FQVi90QyxNQU9VLGlCQUpWZ3RDLE9BRVN4NEQ7WUFHSCxtQkFOTjYxRCxPQUdTNzFEO1lBR0g7a0JBQ0NvRTtjQUFPLG1CQUFQQSxFQVZLa1ksR0FVaUIsa0JBVmZtOUMsUUFHZDVELE9BR1M3MUQ7WUFHSCxJQUVDLElBTEVBOztVQU1GLFFBTkVBO21CQVFQO01BeE9VLFNBMk9kODJCLE9BQU85bEIsRUFBRXNMO1FBQUk7MkJBQU50TCxFQUFFc0wsV0FBeUI4eUIsRUFBRXB2QyxHQUFLLGFBQVBvdkMsRUFBRXB2QyxJQUFpQixPQUFJO01BM08zQyxTQThPZDYyQixJQUFJN2xCLEVBQUVzTDtRQUFJLDhCQUFOdEwsRUFBRXNMLFdBQXlCOHlCLEVBQUdwdkMsR0FBTSxRQUFJLE9BQU87TUE5T3JDLFNBaVBkcTJELFNBQVNybEQsRUFBRXNMO1FBQ0w7MkJBREtBO1NBRUQsZ0JBRkR0TCxFQUNQd2E7U0FFUyx3QkFIRnhhLEtBRVBzbkQ7U0FFUyx3QkFKRnRuRCxLQUVQc25EO1NBR0ssWUFGTHpDO1NBR1M3MUQ7U0FBRW9KO1FBQ2I7YUFGRXN0RCxNQUNTMTJELEVBQ0ssT0FESG9KO1VBRUQsR0FQVm9pQixNQU9VLGlCQUpWZ3RDLE9BRVN4NEQ7WUFHSCxtQkFOTjYxRCxPQUdTNzFEO1lBR0g7a0JBQ0NvRTtjQUFPLG1CQUFQQSxFQVZFa1k7Z0JBV1Msa0JBUmxCdTVDLE9BR1M3MUQ7Z0JBS1M7a0JBQ0E7OzZCQUFMcU4sSUFORmpFO21CQU1PLElBTlRwSjs7bUJBQUVvSjs7Z0JBS08sSUFFRixJQVBQcEo7O1lBR0gsSUFNQyxJQVRFQTs7VUFVRixRQVZFQTttQkFZSjtNQW5RTyxTQXNRZGsxRCxNQUFNbGtEO1FBQ1IsUUFEUUEsZ0JBRUcsV0FoVlhzbUQsU0E4VVF0bUQ7UUFHUixzQkFESTBvRDtRQURKO1NBRUE7U0FDYTswQy9DaFhsQiw2QitDOFdTQTtTQUVTLEtBSFQzeEQ7U0FJMkMsS0FKM0NBO1NBSTJDLHNCQUgzQzJ4RDtTQUc2QixzQkFIN0JBO1NBR21CLHNCQUhuQkE7UUFHRSxVQUpGM3hELElBSUUsTUFMRWlKLEdBSUoyb0Qsc0JBQ3dEO01BM1E1QztjQWlCZGhxRDtjQVdBdXNCO2NBbUtBbFU7Y0ExQkE4TjtjQXNFQWdCO2NBeENBdGpCO2NBRUFvbEI7Y0E0Q0F5OUI7Y0FIQXgvQjtjQS9MQXJ2QjtjQVZBOEY7Y0FtQ0E4d0I7Y0E4TEE4MkI7Ozs7T0F2UUFtQztPQXZFRkM7T0FRQUU7T0FPQUM7T0FLQUM7T0FLQUM7T0FhQUU7T0FOQUQ7OzthQ3ZDQWdDLEtBQUcvMEQsR0FBSSxPQUFKQSxDQUFLOzs7S0E4ckJKZzRDO0tBNXFCRmdkO2FBaUxGQyxXQUFXenBDLE1BQU0wcEM7TUFDbkIsWUFEYTFwQyxZQUFNMHBDLGFBQ25CLFdBRG1CQSxNQUFOMXBDLFVBRWlCO1FBNEI1QjJwQzthQUdBQyxpQkFBaUI1cEMsTUFBTTNyQjtNQUFJLGtCQUFWMnJCLFVBQU0zckIsSUFBSSxzQkFBSkEsR0FBNkM7YUFDcEV3MUQsa0JBQWtCN3BDLE9BQVEsa0JBQVJBLFlBQStCO2FBS2pEOHBDLGVBQWU5cEMsTUFBTXdzQixLQUFLdWQ7TUFDNUIsV0FEaUIvcEMsV0FBTXdzQjtNQUV2QixpQkFGaUJ4c0IsTUFBVytwQztNQUU1QjtjQUM2QjthQUczQkMsY0FBY2hxQyxNQUFNM3JCO01BQ25CLDhCQURtQkE7TUFDbkIsWUFBYSxlQURBMnJCLE1BQ0Esc0JBRE0zckIsVUFDa0M7YUFHdEQ0MUQsZUFBZWpxQyxZQUE4QnNVO1VBQVB1RCxlQUFSekcsZ0JBQVIwRztNQUN4QixjQURpQjlYLE1BQU84WDtNQUV4QixrQkFGaUI5WDtNQUVqQjs7ZUFGaUJBLFdBQThCc1UsYUFBZmxEO09BTWQsa0JBTkRwUixTQUlidXJCO01BRWMsWUFBZDJlO01BQWMsV0FORGxxQztNQWJZLFdBYVpBO2FBSmZncUMsY0FJZWhxQyxNQUF1QjZYO2FBY3RDc3lCLFdBQVducUMsTUFBTXNVLE9BQVEsc0JBQWR0VSxXQUFNc1UsTUFBOEM7YUFHL0Q4MUIsZ0JBQWdCcHFDO1VBQXNCNlgsZUFBUHZELGVBQVJ3RDtNQUN6QixjQURrQjlYLE1BQU84WDtNQUN6QixXQURrQjlYLFdBQWVzVTtNQS9CSixXQStCWHRVLFVBQWVzVTthQXJCL0IwMUIsY0FxQmdCaHFDLE1BQXNCNlg7YUFvQ3RDd3lCLGdCQUFnQnJxQyxNQUFNc3FDO01oRGhVM0I7OztVZ0Q0VmlCLG9CQTVCSXRxQztVQTRCSjs7O2FBRUl1cUM7YUFDTkM7dUJBQVFyMkQsRUFFWnMyRDtnQmhEaldYLEdnRGlXV0E7c0JBQUt4MEQsRUFBTHcwRDtrQkFBbUIscUJBRlB0MkQsRUFFWkssTUFGWUwsRUFFWnMyRCxTQUFnRCxRQUZwQ3QyRCxFQUVQOEI7Z0JBREMsVUFETTlCO1lBR1Isa0JBbENNNnJCLHdCQThCQXVxQztZQUlOO1VBTEE7Z0JBVlYsUUFuQmdCdnFDLFVBbUJoQjtnQkFNQSxRQXpCZ0JBLFVBeUJoQjs7VUFpQ1ksb0JBMURJQTtVQTBESjttQ0FFSHluQjttQkFuR1QwaUIsV0F1Q2dCbnFDLE1BNERQeW5CO1VBREMseUJBM0RNem5COztVQWdFaEIsU0FoRWdCQTtVQWdFaEI7WUE5RUkscUJBY1lBO1lBZFo7cUNBRUd3c0IsZ0JBQU1qdEM7Y0FZR3lnQix3QkFaSHpnQjtjQVlHeWdCLHNCQVpUd3NCOztZQURDO1VBZ0hQOztVQUFZLG9CQW5HR3hzQjtVQW1HSDtZQUdWLHdCQUFhLGtCQXRHQUEsVUFxR1IwcUM7WUFDUSx3QkF0R0ExcUMsTUFzR1QycUM7VUFGSTs7O2dCQWpHWCxJQURRdDJELFdBQ1Isc0JBSGdCMnJCLE1BQU1zcUMsT0FFZGoyRDs7VUFtRUk7V0FGS3UyRDtXQUFOQztXQUNDQyxJQURLRjtXQUNiOXlCLE9BRGE4eUI7V0FFTCxnQkFyRUk1cUM7VUFxRUo7bUNBRU91dUIsbUJBQVZ3Yzs7cUJBa0JNLHVCQXpGQy9xQyxNQW1FTDZxQztxQkFxQkksc0JBeEZDN3FDLE1BbUVDNHFDLE9BSUVyYztxQkFlSCxzQkF0RkF2dUIsTUFtRUM0cUMsT0FJRXJjOztlQUdmLE9BMUVZdnVCLFlBQU1zcUMsU0EwRWxCLHNCQU5BeHlCO3dCQU9LLGVBM0VPOVgsTUFtRUM0cUMsT0FJRXJjO3dCQUtWLGdCQTVFT3Z1QixNQW1FTDZxQzs7ZUFZUCxPQS9FWTdxQzt3QkErRWlCLGdCQS9FakJBLE1BbUVMNnFDO3dCQW5FSzdxQyxZQUFNc3FDLFNBZ0ZsQixzQkFaQXh5QjswQkFhTyxlQWpGSzlYLE1BbUVDNHFDLE9BSUVyYzs0QkF2RUh2dUIsV0F1RUd1dUIsZUFIUHVjLFdBcEVJOXFDOzRCQW9GUCxlQXBGT0EsTUFtRUM0cUMsT0FJRXJjOzRCQWNWLGdCQXJGT3Z1QixNQW1FTDZxQztzQkFvQkksdUJBdkZDN3FDLE1BbUVMNnFDO1VBR0Q7O1VBL0JFO1dBRkVHO1dBQUg3MkQ7V0FDUDgyRCxnQkF0Q1lqckM7V0F1Q0osaUJBdkNJQTtVQXVDSjtxQ0FFSWtyQzs7Y0FLViwwQkFMVUE7Y0FLSzs7c0JBQ0g3N0MsZ0JBQVIrN0M7d0JBVE5ILG1CQVNNRyxtQkFBUS83QzsyQkFBUis3Qzs7MEJBRkpEO29CQUhBRTs7O3FCQUpGSjtZQWFGLElBQUk3NUIsT0FUQWk2QixNQUpGSjtZQWFGLFlBQUk3NUI7cUJBRUMsZ0JBckRTcFIsZ0JBbURWb1IsU0FkS2o5QjtxQkFpQko7dUJBdERTNnJCLGdCQTBDVnFyQyxNQUxRTCxrQkFyQ0VockM7VUF3Q047OztXQW5DSzF2QjtXQUFMZzdEO1dBQ05DLGtCQU5ZdnJDO3dCQU1adXJDO1lBL0JBLGtCQXlCWXZyQztZQXpCWjttQ0FFYXNVLGlCQUFWbVg7Y0FFTCxHQXFCY3pyQixXQXZCQ3NVLGdCQUFWbVg7ZUFJd0MsV0FtQi9CenJCLE1BdkJDc1U7O2FBRFQsa0JBd0JRdFU7VUFTcUI7bUJBVHJCQSxXQUtOc3JDO1dBSTJCLGlCQUp0Qmg3RCxLQUxDMHZCLFdBQU1zcUMsT0FLUGg2RDtVQVdmLGVBTEltN0QsV0FEQUQsU0FWWXhyQztnQkFzQmhCLElBRFUwckMsY0FDVixZQURVQSxLQXJCTTFyQzs7VUE4RmYsd0JBQWEsb0JBOUZFQSxVQTZGSDJyQztVQUVaLGlCQS9GZTNyQyxNQThGWDRyQztVQUNKLFlBRllELFdBN0ZHM3JDO2FBOEdaNnJDLGFBQWE3ckM7TUFDbkI7UUFBTSxtQkFEYUE7UUFDYjtVQUlEOztXQUZJd3NCO1dBQWFqdEM7V0FBUG1xRDtXQUNUb0MsY0FKYTlyQztXQUtkLFVBRkl3c0I7V0FFSixjQUxjeHNCLFlBSWI4ckM7VUFDK0Q7WUFDakUsT0FOZTlyQztZQU9ELElBQVZzcUMsWUFKQzlkLFVBekxQbWQ7WUE4TEUsZ0JBUmUzcEMsTUFPWHNxQyxPQUpPWjtZQUtYLFlBTGtCbnFELFNBSEh5Z0I7O1VBRVQ7aUJBU0w7YUFJSCtyQyxnQkFBZ0IvckMsTUFBTTBEO01BQU0sV0FBWjFELE1BQU0wRCxLQUFNLG9CQUFaMUQsTUFBb0Q7YUFJcEVnc0Msa0JBQWtCaHNDLE1BQU13c0IsS0FBS240QztNaERqY2xDLE9nRDZiSzAzRCxnQkFJa0IvckMsU0FBTXdzQixRQUFLbjRDLEdBQUxtNEMsTUFDa0Q7YUFXMUV5ZixzQkFBc0JDO01BQ3hCLE1BRHdCQTtNQUN4QixJQUNJQyxjQXRhQTNDO01BcWFKLGtCQUNJMkMsWUFGb0JELE1BR3dCO2FBVzlDRSxTQUFTcHNDLE1BQU0xdkI7TUFDWCxrQkFESzB2QjtNQUNMOzs7U0FFZW1zQztTQUFaRTtjQUFZRjtXQUFaRSxhQUhFcnNDLFVBT1AsNkJBUE9BO1FBU1AsU0FOaUJtc0M7UUFNakI7OztZQU9FO3NCQWhCVzc3RDthQWdCWDs7aUJBYmU2N0QsZ0JBSFZuc0MscUJBa0JILFFBbEJHQTs7WUFXTDs7Ozs7Y0FYVzF2QixJQUdJNjdELGdCQUhWbnNDLHFCQWFILFFBYkdBLGFBQU0xdkI7WUFzQlg7OztNQXBCSSxRQW9CRjthQUtOZzhELFVBQVV0c0MsTUFBTXJxQixFQUFFK3pEO01BQ3BCLFdBRFkxcEMsTUFBUTBwQztNQUNwQixHQURrQi96RCxFQUVSLFNBRkVxcUI7TUFFaUIsSUFDekJ1c0MsUUFIUXZzQyxVQUFRMHBDO01BRVMsWUFDekI2QyxLQUhRdnNDLFNBSXVCO2FBTWpDd3NDLGdCQUFnQnhzQyxNQUFNdXJCLE9BQU9raEI7TUFDL0IsWUFEa0J6c0M7TUFDbEIsR0FEa0JBO1FBR2hCLFdBSGdCQSxjQUladXNDLFFBREEvZixRQUhrQmpCLE9BQU9raEI7ZUFWN0JILFVBVWdCdHNDLFFBSVp1c0M7TUFFTixTQU5rQnZzQztNQU1sQjtRQUNLLFNBUGFBO2VBL0RoQmdzQyxrQkErRGdCaHNDLE1BMURsQjtpQkFpRTJDO2FBT3pDMHNDLGFBQWExc0M7TUFDZixhQURlQTtNQUNmO1FBQ0EsR0FGZUE7VUFLWCxXQUxXQSxTQXVNVHdzQixXQWpNRixTQU5XeHNCLFNBTVUsU0FOVkE7UUFNOEIsWUFOOUJBOzs7O01BSFcsV0FZdkI7YUFJRDJzQyxhQUFhM3NDLE1BQU0wcUM7TUFDckIsR0FEZTFxQyxXQUdiLEtBSG1CMHFDLFNBQU4xcUMsVUFJYixXQUphQSxVQUFNMHFDO01BSWEsU0FKbkIxcUM7TUFJbUI7UUFHaEMsSUFBSTBwQyxTQVBlZ0IsVUFPbkIsa0JBUGExcUMsU0EwTFR3c0IsS0FuTEFrZDtpQkFDb0Q7YUFJeERrRCxjQUFjNXNDO01BQ2hCLEdBRGdCQSxVQUVkLFdBRmNBLFNBOEtWd3NCO01BNUttRSxTQUZ6RHhzQjtNQUV5RDtRQUVqRSxrQkFKUUE7UUFJUixVQUdKLElBREswcUMsa0JBQ0wsa0JBUFkxcUMsVUFNUDBxQztRQUZEOzs7aUJBRzZCO2FBRW5DbUMsWUFBWTdzQyxNQUFNM3JCLEdBQUksb0JBQVYyckIsb0JBQU0zckIsR0FBcUM7YUFDdkR5NEQsYUFBYTlzQyxhQUFXLHFCQUFYQSxRQUFpQzthQUU5QytzQyxrQkFBa0Ivc0MsTUFBTXJxQixHQUFJLFlBQUpBLEVBQUksUUFBd0I7YUFDcERxM0QsaUJBQWlCaHRDLE1BQU1ycUIsR0FBSSxZQUFKQSxFQUFJLFFBQXVCO2FBQ2xEczNELGtCQUFrQmp0QyxhQUFXLE9BQVhBLFNBQThCO2FBQ2hEa3RDLGlCQUFpQmx0QyxhQUFXLE9BQVhBLFNBQTZCO2FBQzlDbXRDLFlBQVludEMsTUFBTXJxQjtNQUNwQixrQkFEY3FxQixNQUFNcnFCLEdBQ3BCLHdCQURjcXFCLE1BQU1ycUIsRUFDK0I7YUFJakR5M0QsK0JBQWdDcHRDO01BQVcsVUFBWEEsd0NBS25DO2FBR0dxdEMsK0JBQWdDcnRDO1VBSVpzdEMsYUFEREMsYUFEQUMsYUFEREM7TUFEY3p0QyxZQUNkeXRDO01BRGN6dEMsWUFFYnd0QztNQUZheHRDLFlBR2J1dEM7TUFIYXZ0QyxZQUlac3RDOzthQVNwQkksU0FBUzF0QztNQWpYWDs7Y0FpWFdBO01BRVgsc0JBRldBO01BR1gsTUFIV0E7TUFJWCxNQUpXQTtNQUtYLE1BTFdBO01BTVgsTUFOV0E7TUFNWDs7aUJBTldBO01BdEVlLHVCQXNFZkEsVUFVVTthQU9uQjJ0QyxlQUFlM3RDLE1BQU1ycUI7TUFKdkIsU0FJaUJxcUI7TUFKakIsdUJBQXFCLG9CQUlKQSxRQUp5QjtNQU9uQjtlQUhOQSxXQUdmLGFBSGVBO1FBS2pCLFlBL1dFMnBDO1FBZ1hGLGFBTmlCM3BDO1FBTWpCLEdBTnVCcnFCLEVBT2Isa0JBUE9xcUI7UUFPZ0IsZ0JBUGhCQSxPQVFIO2FBU1o0dEMsaUJBQWlCNXRDLE1BQU13c0IsS0FBS240QztNQUM5QixTQURtQjJyQjtNQUNuQixZQUNLLGtCQUZjQSxNQUFNd3NCLEtBQUtuNEMsT0FFSzthQUdqQ3c1RCxZQUFZN3RDLE1BQU04dEMsTUFBTXo1RDtNaER4bkI3QixPZ0RtbkJLdTVELGlCQUtZNXRDLE1BQU04dEMsTUFBTXo1RCxFQUNrQjthQUcxQzA1RCxnQkFBZ0IvdEMsTUFBTTNyQjtNQUN4QixtQkFEa0IyckIsTUFDbEIsc0JBRHdCM3JCLEtBQ2E7YUFFbkMyNUQsZUFBZWh1QyxNQUFNM3JCO01BQ1ksbUJBRGxCMnJCLE1BQ2tCLHFCQURaM3JCLEdBQ1ksU0FEWkEsR0FDK0I7YUFHcEQ0NUQsYUFBYWp1QyxNQUFNcndCO01BQTBCLHVCQUFoQ3F3QixNQUFnQyw0QkFBMUJyd0IsR0FBMkM7YUFHOUR1K0QsZUFBZWx1QyxNQUFNbnNCO01BQTBCLHVCQUFoQ21zQixNQUFnQyxVQUExQm5zQixHQUE2QzthQUdsRXM2RCxjQUFjbnVDLE1BQU1ycUI7TUFBMEIsdUJBQWhDcXFCLE1BQWdDLGVBQTFCcnFCLEdBQTRDO2FBR2hFeTRELGNBQWNwdUMsTUFBTWpwQixHQUNGLG1CQURKaXBCLFFBQ0ksU0FERWpwQixHQUNlO2FBSW5DczNELGFBQWFydUMsYUFBVyx1QkFBWEEsVUFBMEM7YUFDdkRzdUMsYUFBYXR1QyxNQUFNdXJCO01BQVMsdUJBQWZ2ckIsTUFBTXVyQixTQUE2QzthQUVoRWdqQixjQUFjdnVDLE1BQU11ckI7TUFBUyx1QkFBZnZyQixNQUFNdXJCLFNBQThDO2FBQ2xFaWpCLGVBQWV4dUMsTUFBTXVyQjtNQUFTLHVCQUFmdnJCLE1BQU11ckIsU0FBK0M7YUFDcEVrakIsWUFBWXp1QyxNQUFNdXJCLFFBQVMsdUJBQWZ2ckIsTUFBTXVyQixTQUE0QzthQVc5RG1qQixpQkFBaUIxdUM7TUFDbkIsZUFEbUJBLFNBQ25CLGtCQURtQkEsWUFDNkI7YUFDOUMydUMsZUFBZTN1QztNQUNqQixlQURpQkEsU0FDakIsa0JBRGlCQSxZQUNnQzthQUkvQzR1QyxpQkFBaUI1dUM7TUFDbkIsU0FEbUJBO01BQ25CLFlBQ0UsZ0JBRmlCQSxTQTZDYndzQixlQTNDc0U7YUFJMUVxaUIsb0JBQW9CN3VDO01BQ3RCLFNBRHNCQTtNQUN0QixZQUNFLGdCQUZvQkEsU0F1Q2hCd3NCLGVBcENxRDthQUt6RHNpQixzQkFBc0I5dUMsTUFBTzZxQyxLQUFNRDtNQUNyQzthQUQrQkM7T0FDL0IsTUFEK0JBO09BQy9CLE9BRCtCQTtPQUMvQixLQUR3QjdxQztNQUN4QjtRQUVFO2dCQUhzQkE7U0FJbEIwcEMsU0FKeUJtQixLQUFNRDtTQUsvQnJyRDtpQ0FKRnU0QixVQUFReEQ7O2dDQUFPdUQ7OztTQUtiMDBCLFFBSEEvZixLQUNBa2QsTUFDQW5xRDtlQXJNSitzRCxVQWdNc0J0c0MsUUFNbEJ1c0M7aUJBQ3FCO2FBTXpCd0MsZUFBZS91QyxNQUFNc1UsTUFBTWxEO01BQzdCO2VBRGlCcFIsZ0JBQU1zVSx3QkFBTWxELGVBRW1CO2FBUTlDNDlCLGVBQWVodkMsYUFBVyxzQkFBWEEsVUFBbUM7YUFDbERpdkMsYUFBYWp2QyxhQUFXLHNCQUFYQSxVQUFtQzthQUloRGt2QyxhQUFhbHZDO01BQ2YsWUFEZUE7TUFDZixTQURlQTtNQUNmO1FBRUUsSUFDSXVzQyxRQURBL2Ysc0JBQUosdUJBSGF4c0IsTUFJVHVzQztpQkFDc0I7YUFJMUI0QyxjQUFjbnZDO01BQ2hCLGFBRGdCQTtNQUNoQjtRQUNBLFNBRmdCQTtRQUVoQjtVQUVHLElBQUl1c0MsUUFWRC9mO1VBV0gsZ0JBTGF4c0IsTUFJVHVzQztVQUNKLFlBTGF2c0M7VUFJYjs7Ozs7aUJBR0E7YUFJRG92QyxnQkFBZ0JwdkMsTUFBTXNVLE1BQU1sRDtNQUM5QixTQURrQnBSO01BQ2xCO1FBQ0UsV0FGZ0JBLGNBR1p1c0MsUUFEQS9mLFFBRmtCbFksTUFBTWxELFFBQU5rRDtlQWhQdEJnNEIsVUFnUGdCdHNDLFFBR1p1c0M7aUJBQ3FCO2FBR3pCOEMsYUFBYXJ2QyxhQUFXLHVCQUFYQSxVQUFvQzthQUVqRHN2QyxXQUFXdHZDO01BQ2IsU0FEYUE7TUFDYixTQUNFLElBQUl1c0MsUUE1QkEvZixVQTRCSix1QkFGV3hzQixNQUVQdXNDO2lCQUNzQjthQVUxQmdELGlCQUFpQnZ2QyxNQUFNN3JCO01BQUksYUFBSkEsTUFBSSxXQUFWNnJCLFlBQU03ckIscUJBQXlDO2FBR2hFcTdELGlCQUFpQnh2QyxhQUFXLE9BQVhBLFNBQTZCO2FBRTlDeXZDLGtCQUFrQnp2QztNQUFXLE9BQVhBLDJCQUFtRDthQUdyRTB2QyxxQkFBcUIxdkMsTUFBTTNyQixHQUFJLFlBQUpBLEVBQUksUUFBc0I7YUFDckRzN0QscUJBQXFCM3ZDLGFBQVcsT0FBWEEsU0FBNEI7YUFJakQ0dkMsU0FBU3o3RCxHQUNYLE9BRFdBLDJCQUNvQzthQWU3QzA3RCxrQkFBa0I3dkMsTUFBTS9hO01BQzFCLGFBRDBCQTtNQUMxQjtRQUNFLFFBRmtCK2EsV0FBTS9hLFFBVjFCLFVBRDhCQztRQUM5QjtVQUNVLElBQUovUSxFQUFJLFNBRm9CK1E7VUFFcEIsV0FBSi9RO1VBQUksV0FTVTZyQjtVQVRWLGdCQVNVQTtRQWZwQjtpQkFpQm1EO2FBR2pEOHZDLGtCQUFrQjl2QyxhQUFXLE9BQVhBLFFBQThCO2FBRWhEK3ZDLGNBQWMvdkMsTUFBTTdyQjtNQUN0QixjQURzQkE7TUFDdEI7UUFDVSxJQUFKOFEsSUFBSSxTQUZZOVE7UUFFWixXQUFKOFE7UUFBSTtTQUVKK3FEO1VBSlVod0M7O1lBV1gsTUFBUSxNQVhHQTtRQVlzQix5QkFadEJBLE1BSVZnd0M7aUJBVWtDO2FBTXRDQztVQUFtQkMsZ0JBQVFDOzZCQUFSRCxVQUFRQzthQU8zQkMsZUFBZUM7TUFDWCw0QkFEV0EsVUFDWCx5QkFFWTthQUVoQkMsY0FBY3R3QyxhQUFXLE9BQVhBLFFBQTBCO2FBRXhDdXdDLHFCQUFxQnZ3QztVQUFPa3dDLGdCQUFRQztNQUN0QyxjQUR1Qm53QyxNQUFPa3dDO01BRTlCLGtCQUZ1Qmx3QyxNQUFlbXdDO01BRXRDO2FBR0VLLGdCQUFnQnh3QyxNQUFPbXdDLFdBQVlEO01BQ3JDLGdCQUR5QkMsV0FBWUQsUUFFL0Isd0JBREZHO01BQ0Usa0JBSUosNEJBTmdCcndDLE1BQ2Rxd0M7TUFBSixJQUVRM3dEO01BQ2tCLHlEQURsQkEsS0FHNkI7YUFFbkMrd0QscUJBQXFCendDLE1BQU9td0MsV0FBWUQ7TUFDMUMsZ0JBRDhCQyxXQUFZRCxRQUVwQyx3QkFERkc7TUFDRSxzQkFJSixxQkFOcUJyd0MsTUFDbkJxd0MsV0FLaUM7YUFFbkNLLGdCQUFnQjF3QyxhQUM4QixVQUQ5QkEsa0JBQzBEO2FBRTFFMndDLG1CQUFtQjN3QyxNQUFNd0s7TUFDWixJQUFYNmxDLFNBQVcsZ0JBRE1yd0M7TUFFTSw0QkFGTkEsTUFFTSxXQUZBd0ssT0FDdkI2bEMsVUFDd0M7YUFHMUNPLCtCQUErQjV3QztVQUtoQi9iLFdBREF0VSxXQURDd3JCLFdBREY5RixXQURDeGhCO01BRGdCbXNCLFlBQ2hCbnNCO01BRGdCbXNCLFlBRWpCM0s7TUFGaUIySyxZQUdmN0U7TUFIZTZFLFlBSWhCcndCO01BSmdCcXdCLFlBS2hCL2I7O2FBUWY0c0QsK0JBQStCN3dDO01BQVcsVUFBWEEsa0RBTWxDO2FBSUc4d0MsK0JBQWtDOXdDLE1BQU1uc0IsRUFBRXdoQjtNQUM1QyxZQUQwQ3hoQixFQUMxQyxZQUQ0Q3doQixFQUM1QyxRQUFpRDthQUUvQzA3QywrQkFBa0Mvd0M7TUFDcEMsVUFEb0NBLG9CQUNLO2FBSXZDZ3hDLGdCQUFnQmh4QztNQUFXLGtCQUFYQSxxQkFBd0M7SUFHM0MsSUFBYml4QyxXQUFhO2FBV2JDLGVBVm1CbHhDLE1BQU03ckI7TWhEbDRCOUIsSWdEazRCOEI4UTtNQUMzQjtxQkFEMkJBO1FBQzNCO1VBQ0EsUUFGMkJBO1lBSXpCLFdBSm1CK2EsVUFEbkJpeEM7WUFLQSxRQUp5QmhzRDs7VUFFWCxrQkFGSythLFVBRG5CaXhDLGFBQ3lCaHNEO29CQU14QjtJQVBZLFNBZWJrc0QsNkJBQTZCbnhDLE1BQU0xb0I7TUFDZDs7K0JoRGo1QjFCLE9nQjZES0ssaUJnQ20xQm1DTDtNQUNkLDRCQUNVLHFCQUZJQSxHQUVJO01BQ2pCLDJCaERuNUIzQixPZ0Q4M0JLMDVELGdCQWtCNkJoeEM7TUFJUiwyQmhEcDVCMUIsT2dENDRCS2t4QyxlQUk2Qmx4QztNQUtSLDJCaERyNUIxQixPZ0Q0NEJLa3hDLGVBSTZCbHhDO01BS1IsUUFBb0I7SUFwQjVCLFNBNEJib3hDO01BQTJCO1lBQ2hCLzhELFdBQVcsc0JBQVhBO01BQ04sYUFBRTtJQTlCTSxTQStCYmc5RDtNQUE0QjtZQUNqQmg5RCxXQUFZLHNCQUFaQTtNQUNOLGFBQUU7SUFqQ00sU0FtQ2JpOUQsZ0NoRHA2Qkw7SWdEaTRCa0IsU0FvQ2JDLGlDaERyNkJMO0lnRGk0QmtCLFNBd0NiQyxrQkFBa0IzOUQsRUFBRXdoQixFQUFFOEYsRUFBRXhyQixFQUFFc1U7TUFFYixvQ0FsNEJYdWxEO01BcTRCSixJQUZJa0ksUUFEQUQ7TUFBVyxJQUlYRSxXQUFhO01BQ2pCLHNCQURJQTtNQUVKLFVBTElELFNBR0FDO01BSlcsSUFjRyxpQkFERCxpQkFEQztNQURFO2NBUGhCQTtjQU9nQjs7Ozs7Ozs7Ozs7OztjbkNsMUJWeDhEOztjbUNxMEJVdEI7Y0FBRXdoQjtjQUFFOEY7Y0FBRXhyQjtjQUFFc1U7OztjQVoxQm10RDtjQUdBQztjQUlBQztjQUNBQztjQU1FRSxTQXNDSDtJQWhGYyxTQW9GYkcsMkJBQTJCQztNQUM3QjtlQUQ2QkEsNERBTVI7SUExRk4sU0ErRmJDLGVBQWV0NkQsT0FBTzZFO01BQ3hCLG9CaERqK0JIO01nRGkrQkcsb0JoRGorQkg7TWdEaStCYTtPQUFOMDFEO1FBQU0sa0JBRE92NkQsT0FBTzZFLHFCaERoK0IzQjtNZ0RrK0J5Qix5QmhEbCtCekIsT2dEODNCSzIwRCxnQkFtR0VlO01BRWlCLHlCaERuK0J4QixPZ0Q0NEJLYixlQXFGRWE7TUFHaUIseUJoRHArQnhCLE9nRDQ0QktiLGVBcUZFYTtNQUdpQixPQUhqQkEsR0FJRDtJQXBHWSxTQXdHYkMseUJBQXlCMTZEO01BQzNCLHFCQUFnRCxxQkFEckJBLEdBQzZCO01BQXpDOztpQmhEMStCbEIsT2dCNkRLSyxpQmdDNDZCeUJMO29CQUM4QjtJQXpHMUMsU0E2R2IyNkQsb0JBQW9CdDhEO01BQ3RCLG9CaEQvK0JIO01nRCsrQmtCOztpQmhELytCbEIsT3dDb0tLdzdCLGNRMDBCb0J4N0I7b0JBQ3dCO0lBOUcvQixJQW9IYnU4RDtJQXBIYSxTQXFIYkMsc0JBQW9CLGdCQURwQkQsZUFDZ0Q7SUFHdkM7O0tBSU8sdUNoQ2grQmhCejdEO0tnQ2krQmdCLHVDaENoK0JoQkM7S2dDaStCZ0Isa0NBTmhCMDdEO0lBTWdCLFNBT2hCSSx1QkFBdUIxNUQsSUFBSWk1RDtNQUM3QixlQUQ2QkEsT0FFckIsSUFBSjE5RCxFQUFJLFNBRmlCeUUsS0FHekIsTUFIeUJBLEtBR3pCLE9BREl6RSxDQUVIO0lBWGlCLFNBZWhCbytEO01BQXlCLDhCQXJCekJMLE9BTUFHLGNBZW9FO0lBZnBELFNBeUNoQkcsbUNBQ0YsWUFBaUM7SUExQ2YsU0E0Q2hCQyw2QkFBNkJDLEtBQy9CLG1CQUFrQztJQTdDaEIsU0ErQ2hCQywyQkFBMkJELEtBQzdCLFdBRDZCQSxPQUNRO0lBaERuQixTQWtEaEJFLDZCQUE2QkY7TUFDbkIsSUFBUkcsTUFBUSwyQkFEbUJIO01BRS9CLDZCQUYrQkE7TUFFL0IsT0FESUcsS0FFQztJQXJEYSxTQXVEaEJDLHlCQUF5QkosSUFBSUs7TUFDL0IsWUFEK0JBLEtBQUpMLFFBQzNCLFFBQW9FO0lBeERsRCxTQTBEaEJNLCtCQUFvQ047TUFZOUIsU0FBSi8rRCxFQVBvQlEsRUFBRTFFLEVBQUV3RSxHQUNrQixnQ0FOUnkrRCxPQU1RLE1BRHRCditELEVBQUUxRSxFQUFFd0U7TUFRcEIsU0FBSmtoQixRQVhGLGdDQUZvQ3U5QztNQWM5QixTQUFKejNDLFFBVkYsZ0NBSm9DeTNDO01BZTlCLFNBQUpqakUsRUFSb0J3RSxHQUN0QixnQ0FSb0N5K0QsT0FPZHorRDtNQVNoQixTQUFKOFAsRUFQb0I5UCxHQUN0QixnQ0FWb0N5K0QsT0FTZHorRDtNQU9oQix5QkFKSk4sRUFDQXdoQixFQUNBOEYsRUFDQXhyQixFQUNBc1UsRUFDdUI7SUFTYixTQUFaa3ZELGdCaERubENMLE9nRGlwQks5RSxhQTRXQWdFO0lBdUZZLFNBQVplLGdCaERwbENMLE9nRGtwQks5RSxhQTJXQStEO0lBd0ZhLFNBQWJnQixpQmhEcmxDTCxPZ0RvcEJLOUUsY0F5V0E4RDtJQXlGYyxTQUFkaUIsa0JoRHRsQ0wsT2dEcXBCSzlFLGVBd1dBNkQ7SUEwRlcsU0FBWGtCLGVoRHZsQ0wsT2dEc3BCSzlFLFlBdVdBNEQ7SUEyRlksU0FBWm1CLGdCaER4bENMLE9nRDhnQks5RyxhQStlQTJGO0lBNEZXLFNBQVhvQixlaER6bENMLE9nRGdqQks1RyxZQTZjQXdGO0lBNkZZLFNBQVpxQixnQmhEMWxDTCxPZ0RpakJLNUcsYUE0Y0F1RjtJQThGWSxTQUFac0IsZ0JoRDNsQ0wsT2dEMmhCS2hILGFBa2VBMEY7SUErRmEsU0FBYnVCLGlCaEQ1bENMLE9nRHVpQktoSCxjQXNkQXlGO0lBZ0dXLFNBQVh3QixvQmhEN2xDTCxPZ0R3bkJLaEcsWUFxWUF3RTtJQWlHZSxTQUFmeUIscUJoRDlsQ0wsT2dENG5CSy9GLGdCQWlZQXNFO0lBa0djLFNBQWQwQixvQmhEL2xDTCxPZ0QrbkJLL0YsZUE4WEFxRTtJQW1HWSxTQUFaMkIsa0JoRGhtQ0wsT2dEbW9CSy9GLGFBMFhBb0U7SUFvR2MsU0FBZDRCLG9CaERqbUNMLE9nRHNvQksvRixlQXVYQW1FO0lBcUdhLFNBQWI2QixtQmhEbG1DTCxPZ0Q0b0JLOUYsY0FpWEFpRTtJQXNHYSxTQUFiOEIsaUJoRG5tQ0wsT2dEeW9CS2hHLGNBb1hBa0U7SUF1R2MsU0FBZCtCO01oRHBtQ0wsT2dEbXNCS3JGLGVBMFRBc0Q7SUF3R1ksU0FBWmdDLGdCaERybUNMLE9nRDhzQktwRixhQStTQW9EO0lBeUdjLFNBQWRpQyxrQmhEdG1DTCxPZ0Q2c0JLdEYsZUFnVEFxRDtJQTBHZ0IsU0FBaEJrQyxvQmhEdm1DTCxPZ0R3cUJLM0YsaUJBcVZBeUQ7SUEyR2MsU0FBZG1DLGtCaER4bUNMLE9nRG1xQks3RixlQTBWQTBEO0lBNEdnQixTQUFoQm9DO01oRHptQ0wsT2dEaXFCSy9GLGlCQTRWQTJEO0lBNkdtQixTQUFuQnFDO01oRDFtQ0wsT2dEOHFCSzdGLG9CQStVQXdEO0lBK0dZLFNBQVpzQyxnQmhENW1DTCxPZ0RrdEJLekYsYUEyU0FtRDtJQWdIYSxTQUFidUMsaUJoRDdtQ0wsT2dEMnRCS3pGLGNBa1NBa0Q7SUFpSGUsU0FBZndDO01oRDltQ0wsT2dEc3VCS3pGLGdCQXVSQWlEO0lBbUhVLFNBQVZ5QyxjaERobkNMLE9nRCt1Qkt4RixXQThRQStDO0lBb0hZLFNBQVowQyxnQmhEam5DTCxPZ0Q2dUJLMUYsYUFnUkFnRDtJQXNIYSxTQUFiMkMsaUJoRG5uQ0wsT2dEZ3lCS2pGLGNBNk5Bc0M7SUF1SGEsU0FBYjRDLGlCaERwbkNMLE9nRDYvQks1QztJQXlIaUIsU0FBakI2QztNaER0bkNMLE9nRHl4QktyRixrQkFvT0F3QztJQTBIaUIsU0FBakI4QyxxQmhEdm5DTCxPZ0Q2L0JLOUM7SUE0SGUsU0FBZitDO01oRHpuQ0wsT2dEdTBCSzVFLGdCQXNMQTZCO0lBNkhvQixTQUFwQmdEO01oRDFuQ0wsT2dEKzBCSzVFLHFCQThLQTRCO0lBOEhlLFNBQWZpRCxtQmhEM25DTCxPZ0R1MUJLNUUsZ0JBc0tBMkI7SUErSGtCLFNBQWxCa0Q7TWhENW5DTCxPZ0QwMUJLNUUsbUJBbUtBMEI7SUFpSWdCLFNBQWhCbUQsb0JoRDluQ0wsT2dENHZCS2pHLGlCQWlRQThDO0lBa0lnQixTQUFoQm9ELG9CaEQvbkNMLE9nRDYvQktwRDtJQW1JaUIsU0FBakJxRDtNaERob0NMLE9nRGl3QktqRyxrQkE0UEE0QztJQXFJb0IsU0FBcEJzRDtNaERsb0NMLE9nRG93QktqRyxxQkF5UEEyQztJQXNJb0IsU0FBcEJ1RCx3QmhEbm9DTCxPZ0Q2L0JLdkQ7SUF5SUYsU0FERXdEO01oRHJvQ0wsT2dEZzVCSzFFLDZCQTZHQWtCO0lBNElGLFNBREV5RDtNaER4b0NMLE9nRCsxQktsRiwrQkE4SkF5QjtJQThJRixTQURFMEQ7TWhEMW9DTCxPZ0Q0MkJLbEYsK0JBaUpBd0I7SUFpSkYsU0FERTJEO01oRDdvQ0wsT2dEczNCS2xGLCtCQXVJQXVCO0lBbUpGLFNBREU0RDtNaEQvb0NMLE9nRHkzQktsRiwrQkFvSUFzQjtJQXNKRixTQURFNkQ7TWhEbHBDTCxPZ0Rva0JLN0ksK0JBeWJBZ0Y7SUF3SkYsU0FERThEO01oRHBwQ0wsT2dENGpCSy9JLCtCQWljQWlGO0lBMEpGLFNBREUrRDtNaER0cENMLE9nRG1qQktySixrQkEwY0FzRjtJQTRKRixTQURFZ0UscUJoRHhwQ0wsT2dENi9CS2hFO0lBOEpGLFNBREVpRSxvQmhEMXBDTCxPZ0RvakJLdEosaUJBeWNBcUY7SUFnS0YsU0FERWtFLG9CaEQ1cENMLE9nRDYvQktsRTtJQWtLRixTQURFbUUsZWhEOXBDTCxPZ0R1akJLckosWUFzY0FrRjtJQWtLRixTQU1Nb0UsY0FBZ0J0MkMsSUFBdUJ1MkMsS0FBSzNFO1VBQTVCNEU7O2lCQUFTLFFBQVRBLGdCQUFTdjJDLGFBQVR3MkMsT0F2ZHBCM0g7UUF1ZHNEOzs7Z0JBR2pENEg7WUFDTCxXQUoyQ0gsS0FBSzNFO1lBS2hELFdBTG9CNkUsT0FBNEI3RTtZQUtoRCxhQUxvQjZFLDRCQUdmQzs7VUFERSxrQkFGb0NILEtBQUszRTtRQUMxQztJQVBSLFNBdUJFZ0YsYUFBZTUyQyxJQUF1QnUyQyxLQUFLM0UsSUFBSWlGO01BQ2pELEdBRGlCNzJDLElBQVMsUUFBVEEsY0FBU0MsYUFBVHcyQyxPQXhlZjNIO01BeWVJLHVCQUQyQytIO01BQzNDO1lBRVNDLGlCQUFIajZEO1FBQ1YsV0FKc0MwNUQsS0FBSzNFLElBR2pDLzBEO1lBWDJCMEUsSUFXeEJ1MUQ7UUFWZjtVQUFNLHFCQURpQ3YxRDtVQUNqQztnQkFFU0UsZUFBSDdOO1lBQ1YsV0FJZTZpRSxPQUE0QjdFO1lBSDNDLFdBR3NDMkUsS0FBSzNFLElBTGpDaCtEO2dCQUgyQjJOLElBR3hCRTs7VUFERjtNQVFBLFFBR3lCO0lBNUJ0QyxTQStCRXMxRCxjQUFjbkYsSUFBSTE5RDtNQUNwQiw4QkFEb0JBLEdBQ3BCO2VBR0lnSTtRQUNGLGdCQUxjMDFELElBS00sTUFMRjE5RCxFQUVoQmlJLFFBQ0FDLFdBREFEO1FBR0Y7a0JBRkVDO1FBRUYsUUFDMkI7O1dBSHpCQSxhQUZBN0U7VUFRSSwwQkFUWXJELEVBR2hCa0k7VUFNSTtZQUVGLFNBQ0EsaUJBWlV3MUQ7OzRCQWNWLFNBQVUsZUFkQUEsWUFpQkw7O1FBRVgsU0FqQkl6MUQsWUFEQTVFO1FBa0JKLFlBQXFCLGNBQVE7SUFsRDdCLFNBb0RFeS9ELGdCQUFrQmgzQyxJQUF1QnUyQyxLQUFLM0U7TWhEbnRDbkQsR2dEbXRDdUI1eEM7T0FBTyxRQUFQQSxZQUFPQzs7V0FBUDNZLDBCQUFtQixRQUFFO01BQWQsVUFFakIsSUFBTDFULFdBQUssa0JBRmlDMmlFLEtBQUszRSxJQUUzQ2grRDtNQURHLGtCQURZMFQsS0FBNEJzcUQ7SUFwRGhELFNBd0RFcUYsZ0JBQWlCdnVELEdBQUlDLE1BQU1pcEQ7TWhEdnRDaEMsbUJnRHd0Q1csSUFBTGgrRCxXQUFLLGtCQURXOFUsR0FBVWtwRCxJQUMxQmgrRDtNQUNRLElBQUw4STtNQUFLLGtCQUZZaU0sTUFBTWlwRCxJQUV2QmwxRDtJQTFETixTQTRERXc2RCxnQkFBaUIvNkQsS0FBTUMsTUFBTXcxRDtNaEQzdENsQyxtQmdENHRDb0IsSUFBTDk3RCxXQUFLLGtCQURFcUcsS0FBWXkxRCxJQUNuQjk3RDtNQUNNLElBQUxqQztNQUFLLGtCQUZPdUksTUFBTXcxRCxJQUVsQi85RDtJQTlEYixTQWtFRXNqRSxZQUFZOS9ELE9BQU8rL0Q7TUFDWCxxQkFDQSx3QkFETnorRDtNQUVKLFdBSGN0QixPQUVWdTZELElBRmlCd0Y7TUFJckIsZUFGSXhGO01BRE0sSUFJTnI2RCxJQUpBb0I7TUFJTSxZQUFOcEIsSUFFQyxNQU5Eb0IsTUFJQXBCLGFBQ1ksU0FMWm9CLElBTTJCO0lBekUvQixTQXNGRTArRCxzQkFBc0J6RixJQUFJLytEO01BQWEsVUFBYkE7T0FBYSxPQUFiQTtnQkFDRyxvQkFEUCsrRDtnQkFFTyxvQkFGUEE7Z0JBSU8sc0JBSlBBO2dCQUtPLHdCQUxQQTtnQkFNTyx3QkFOUEE7Z0JBUU8scUJBUlBBO2lCQVNPLHFCQVRQQTs7T0FBaUIsT0FBYi8rRDs7Y0FHVG8rQixPQUhTcCtCLGNBR2hCc2hDLE1BSGdCdGhDO2lCQWxqQjFCKzdELGVBa2pCc0JnRCxJQUdaejlCLE1BQU9sRDtnQkFJWTs7Y0FHbEJyNkIsRUFWZS9EO1VBVUcsY0FWUCsrRDtVQVVPLHFCQVZQQSxJQVVYaDdELEdBQTREO0lBaEd6RSxTQXNHTTBnRSxhQUFXMUYsSUFBSTl2RDtNaERyd0N4QjtNZ0Rxd0M4QixVQUFOQTtPQTBCUzs7T0ExQkgsT0FBTkE7O2NBU0lwTyxFQVRKb08sT0FTQ2dCLEVBVERoQjtVQVVuQixhQVZlOHZELElBU0s5dUQ7VUFDcEIsNkJBVmU4dUQsSUFTUWwrRDs7bUJBVEpvTzs7WUFhbkIsSUFEb0NDO1lBQ3BDLGFBYmU2dkQ7WUFjYztxQkFkZEEsa0JBY2MsWUFkekIwRixhQVlnQ3YxRDtjQUdBQztVQUNwQyxhQWhCZTR2RDtVQWlCSztvQ0FBbUIsWUFqQm5DMEYsYUFlZ0N0MUQ7V0FFaEI7O2lDQWpCTDR2RCxJQWlCVnhtQixPQUFRbXNCOzttQkFqQk16MUQ7Ozs7a0JBQytDMkMsSUFEL0MzQyxPQUN1Q3VxQyxhQUFsQjFEOzs7NkJBa0JqQnowQyxFQW5CSjROLE9BbUJDNG1DOzs7bUJBbkJENW1DOzs7O2tCQUs2QzJNLElBTDdDM00sT0FLcUNxb0QsZUFBbEI5Zjs7Ozs2QkFnQmpCenpDLEVBckJGa0wsT0FxQkRzb0M7OzttQkFyQkN0b0M7Ozs7a0JBQytDMkMsSUFEL0MzQyxPQUN1Q3VxQyxhQUFsQjFEOzs7NkJBa0JqQnowQyxFQW5CSjROLE9BbUJDNG1DOzs7bUJBbkJENW1DOzs7Ozs7a0JBSzZDMk0sSUFMN0MzTSxPQUtxQ3FvRCxlQUFsQjlmOzs7OzJCQWdCakJ6ekMsRUFyQkZrTCxPQXFCRHNvQzs7O2NBRUptTSxJQXZCS3owQyxPQXVCUndvQyxJQXZCUXhvQztVQXVCUyxhQXZCYjh2RCxJQXVCSnRuQjtVQUFpQixrQkFBZGlNLElBdkJDcWI7O2NBd0JMNEYsSUF4QlMxMUQsT0F3QlMsYUF4QmI4dkQsSUF3Qkw0RixLQUFrQixzQkF4QmI1Rjs7Y0F5QktyeUQsSUF6QkR1QyxPQXlCRjIxRCxJQXpCRTMxRDtVQXlCUyxhQXpCYjh2RCxJQXlCRTZGO1VBQVcsbUJBQVJsNEQ7O2VBdEJwQixhQUhlcXlELElBQ3lCanBCLFlBbnBCeEM4a0IsaUJBa3BCZW1FLElBQzJDdmxCLEtBQVE1bkM7O1NBTWxFLGFBUGVtdEQsSUFLdUJ2bkI7Z0JBdnBCdENvakIsaUJBa3BCZW1FLElBS3lDekgsT0FHaEIsU0FId0IxN0M7ZUFlcEMsYUFwQmJtakQsSUFtQktscEIsS0FDUSx1QkFwQmJrcEIsSUFtQlExOUQ7Z0JBR0ssYUF0QmIwOUQsSUFxQkd4bkIsS0FDVSxxQkF0QmJ3bkIsSUFxQk1oN0QsR0FLUztJQWhJaEMsU0FzSU04Z0UsYUFBVzlGLElBQUk5dkQ7TWhEcnlDeEI7TWdEcXlDOEIsVUFBTkE7T0E2QlM7O09BN0JILE9BQU5BOztjQVlJcE8sRUFaSm9PLE9BWUNnQixFQVpEaEI7VUFhbkIsYUFiZTh2RCxJQVlLOXVEO1VBQ3BCLDZCQWJlOHVELElBWVFsK0Q7O21CQVpKb087O1lBZ0JuQixJQURvQ0M7WUFDcEMsYUFoQmU2dkQ7WUFpQmM7cUJBakJkQSxrQkFpQmMsWUFqQnpCOEYsYUFlZ0MzMUQ7Y0FHQUM7VUFDcEMsYUFuQmU0dkQ7VUFvQks7b0NBQW1CLFlBcEJuQzhGLGFBa0JnQzExRDtXQUVoQjs7aUNBcEJMNHZELElBb0JWeG1CLE9BQVFtc0I7O21CQXBCTXoxRDs7OztrQkFDK0MyQyxJQUQvQzNDLE9BQ3VDdXFDLGFBQWxCMUQ7Ozs2QkFxQmpCejBDLEVBdEJKNE4sT0FzQkM0bUM7OzttQkF0QkQ1bUM7Ozs7a0JBSzZDMk0sSUFMN0MzTSxPQUtxQ3FvRCxlQUFsQjlmOzs7OzZCQW1CakJ6ekMsRUF4QkZrTCxPQXdCRHNvQzs7O21CQXhCQ3RvQzs7OztrQkFDK0MyQyxJQUQvQzNDLE9BQ3VDdXFDLGFBQWxCMUQ7Ozs2QkFxQmpCejBDLEVBdEJKNE4sT0FzQkM0bUM7OzttQkF0QkQ1bUM7Ozs7OztrQkFLNkMyTSxJQUw3QzNNLE9BS3FDcW9ELGVBQWxCOWY7Ozs7MkJBbUJqQnp6QyxFQXhCRmtMLE9Bd0JEc29DOzs7bUJBeEJDdG9DOzs7O2tCQVNzQzAwQyxJQVR0QzEwQyxPQVM4QjYxRCxlQUFsQnJ0QjtjQUMvQixhQVZlc25CLElBU2dCdG5CO3FCQTNyQi9CbWpCLGlCQWtyQmVtRSxJQVNrQytGLE9BRVQsV0FGaUJuaEI7Y0FpQjNDRCxJQTFCS3owQztVQTBCUyxhQTFCYjh2RDtVQTBCbUQsdUJBMUJuREEsSUEwQm1ELFdBQXBEcmI7O2NBQ0ppaEIsSUEzQlMxMUQsT0EyQlMsYUEzQmI4dkQsSUEyQkw0RixLQUFrQixzQkEzQmI1Rjs7Y0E0QktyeUQsSUE1QkR1QyxPQTRCRjIxRCxJQTVCRTMxRDtVQTRCUyxhQTVCYjh2RCxJQTRCRTZGO1VBQVcsbUJBQVJsNEQ7O2VBekJwQixhQUhlcXlELElBQ3lCanBCLFlBbnJCeEM4a0IsaUJBa3JCZW1FLElBQzJDdmxCLEtBQVE1bkM7O1NBTWxFLGFBUGVtdEQsSUFLdUJ2bkI7Z0JBdnJCdENvakIsaUJBa3JCZW1FLElBS3lDekgsT0FHaEIsU0FId0IxN0M7ZUFrQnBDLGFBdkJibWpELElBc0JLbHBCLEtBQ1EsdUJBdkJia3BCLElBc0JRMTlEO2dCQUdLLGFBekJiMDlELElBd0JHeG5CLEtBQ1UscUJBekJid25CLElBd0JNaDdELEdBS1M7SUFuS2hDLFNBMktFZ2hFLFdBQVNudEMsRUFBRW1uQztVQUFhdjlCO2E1Q2lLcEJvVTt3QjRDL0pDM21DLEtBQU8sYUFGRDh2RCxJQUVOOXZELEtBQU8sa0JBRkgyb0IsRUFBRW1uQyxJQUUwQjs7ZUFGYnY5QjtJQTNLMUIsU0FnTEV3akMsWUFBVXB0QyxFQUFFbW5DO01oRC8wQ2pCLElnRCswQzhCdjlCLG9CNUMyYXJCdVYsYTRDM2FNbmYsRUFBRW1uQyxJQUFhdjlCO0lBaEwzQixTQW1MRXlqQyxXQUFTbEc7VUFBY3Y5QjthNUN3YW5CdVYsNEJKMXZEVCxlZ0RrMUM0QnZWO0lBbkx6QixTQXNMRTBqQyxVQUFRbkc7TUFBTSxvQmhEcjFDbkI7TWdEcTFDbUIsc0JoRHIxQ25CLE9nRDAwQ0tnRyxnQkFXUWhHLFVBQXlCO0lBdExuQyxTQXVMRW9HLFNBQU8zakMsS0FBTSw0QkF6VmI2OUIsZUF5Vk83OUIsSUFBK0I7SUF2THhDLFNBd0xFNGpDLFVBQVE1akMsS0FBTSw0QkF6VmQ4OUIsZUF5VlE5OUIsSUFBK0I7SUF4THpDLFNBMExFNmpDLFNBQVN6dEM7VUFBVzRKO2E1Q2tKaEJvVTt3QjRDaEpDM21DO2lCQUFPOzBCQUZIMm9CLFdBRVVtbkMsS0FBTyxvQkFBUEEsSUFBZDl2RCxJQUF1QyxFQUFDOztlQUZ6QnV5QjtJQTFMdEIsU0ErTEU4akMsUUFBUTlqQyxLQUFNLHlCQUFjN2tDLEdBQUssT0FBTEEsQ0FBTSxFQUExQjZrQyxJQUErQjtJQS9MekMsU0EwUUUrakMsUUF6RVMzdEM7TUFDSCxJQURjNEosYUFDZCxvQkFDRSx3QkFETjcrQjtNQUNNLFNBQ044OEIsSUFBRXh3QjtRQUNKLGFBRkU4dkQsSUFDRTl2RDtRQUVGLGtCQUxPMm9CLEVBS1AsdUJBSkFqMUIsRUFDQW84RCxLQUc4QjtNQUh4QixtQkFDTnQvQixNQUhrQitCO0lBak10QixTQTBNRWdrQyxVQUFRaGtDLEtBQU0sZUFsMUNkKzBCLEtBazFDUS8wQixJQUFxQjtJQTFNL0IsU0E0TUVpa0MsVUFBVTd0QztNQUNKLElBRGU0SixhQUNmLG9CQUNFLHdCQURONytCO01BQ00sU0FDTjg4QixJQUFFeHdCO1FBQ0osYUFGRTh2RCxJQUNFOXZEO1FBRUYsa0JBTFEyb0IsRUFLUix1QkFKQWoxQixFQUNBbzhELEtBRzhCO01BSHhCLG1CQUNOdC9CLE1BSG1CK0I7SUE1TXZCLFNBcU5Fa2tDLFNBQVNsa0MsS0FBTSxpQkE3MUNmKzBCLEtBNjFDUy8wQixJQUFzQjtJQXJOakMsU0F5TkVta0M7TUFDRixlQTVYRXRHLGlCQTRYRixzQkEzWEVDLGdCQTRYNkI7SUFFeEIsUUFKTHFHO0lBSUssU0FTTEMsK0JBQXNDNTRDLE1BQ2pDbnNCLEVBQVN3aEIsRUFBVzhGLEVBQVV4ckI7TUFDckMsK0JBRndDcXdCLE1BQ2pDbnNCLEVBQVN3aEI7TUFDaEIsWUFEMkI4RjtNQUMzQixZQURxQ3hyQjtNQUNyQyxRQUV3QjtJQWJqQixTQWdCTGtwRSwrQkFBc0M3NEM7TUFDeEMsVUFEd0NBLHdDQUVHO0lBSzNDLFNBREU4NEM7TWhEbDVDTCxPZ0RxNENLRiwrQkF4WUF2RztJQTJaRixTQURFMEc7TWhEdjVDTCxPZ0Q0NENLRiwrQkEvWUF4RztJQTJaRixTQVVFMkcsVUFBUXJqRTtNQUNBLElBRFc2K0IsYUFDWCx3QkFEQTcrQjtNQUNBLFNBQ05pMUIsRUFBRTNvQixLQUFNLGFBRFI4dkQsSUFDRTl2RCxLQUFNLHNCQURSOHZELE1BQ29EO01BRDlDLG1CQUNObm5DLElBRmlCNEo7SUFWckIsU0ErQkV5a0MsK0JBQStCajVDO1VBSVpzdEMsYUFEREMsYUFEQUMsYUFEREM7ZUFLZnlMLFVBQVVybEUsRUFBRWdKO1FoRDc3Q25CLDRCZ0Q2N0NnRCxJQUFMeEksV0FBSyxrQkFBL0JSLEVBQTBCUTtRQUFnQixPQUF4Q3dJO01BQ1UsMkJoRDk3QzdCLE9nRDY3Q09xOEQsVUFMZXpMO01BT1EsMkJoRC83QzlCLE9nRDY3Q095TCxVQUpnQjFMO01BTU87TUFDQSwyQmhEaDhDOUIsT2dENjdDTzBMLFVBSGdCM0w7TUFLTztNQUVDLDJCaERqOEMvQixPZ0Q2N0NPMkwsVUFGaUI1TDtNQU1PO0lBekM1QixTQTJDRTZMLCtCQUErQjNrQztNQUN0QixJQUFQNGtDLEtBQU8sK0JBRHNCNWtDO01BQ3RCLFNBQ1A2a0MsY0FBY2hsRSxHQUFJLGtCQURsQitrRSxzQkFDYy9rRSxHQUFzQztNQUQ3QyxTQUVQaWxFLGVBQWVqbEUsR0FBSSxrQkFGbkIra0Usc0JBRWUva0UsR0FBdUM7TUFGL0MsU0FHUGtsRSxlQUFlbGxFLEdBQUksa0JBSG5CK2tFLHNCQUdlL2tFLEdBQXVDO01BSC9DLFNBSVBtbEUsZ0JBQWdCbmxFLEdBQUksa0JBSnBCK2tFLHNCQUlnQi9rRSxHQUF3QztNQUpqRCxVQUNQZ2xFLGNBQ0FDLGVBQ0FDLGVBQ0FDLGdCQUM0RDtJQUdoRSxTQURFQztNaEQzOENMLE9nRHU3Q0tSLCtCQTFiQTVHO0lBaWRGLFNBREVxSDtNaEQ3OENMLE9nRG04Q0tQLCtCQXRjQTlHO0lBaWRGOzs7T0F4ekJFNUQ7T0FpY0E4RTtPQXprQkE3RztPQTBrQkE4RztPQXZjQW5GO09Ba2NBOEU7T0FqY0E3RTtPQWtjQThFO09BaGNBN0U7T0FpY0E4RTtPQWhjQTdFO09BaWNBOEU7T0ExZEF2RjtPQWtlQStGO09BL2RBOUY7T0FnZUErRjtPQXZlQWxHO09BcWVBZ0c7T0ExZEE1RjtPQTZkQStGO09BMWRBOUY7T0EyZEErRjtPQXJkQTdGO09Bc2RBOEY7T0F6ZEEvRjtPQTBkQWdHO09BdFpBbkY7T0F5WkFzRjtPQXhaQXJGO09BdVpBb0Y7T0FsYUF0RjtPQWlhQXFGO09BOWFBdEY7T0FkQUY7T0ErYkEyRjtPQXpiQTFGO09BNGJBNkY7T0F2Y0EvRjtPQXFjQTZGO09BdmNBOUY7T0F3Y0ErRjtPQXpVQTFFO09BbVZBaUY7T0FuVEExRTtPQW9UQTJFO09BM1ZBcEY7T0E2VkFxRjtPQXhWQXBGO09BeVZBcUY7T0E1VEEvRTtPQVlBSTtPQWtUQTRFO09BMVNBM0U7T0EyU0E0RTtPQWhTQTFFO09Ba1NBNEU7T0FyU0E3RTtPQW9TQTRFO09BL1hBL0Y7T0FrWUFpRztPQS9YQWhHO09BZ1lBaUc7T0E5WEFoRztPQStYQWlHO09BOWFBeEc7T0EwWkF5RjtPQWpaQXhGO09Ba1pBeUY7T0E5WEF0RjtPQWlZQXdGO09BbllBekY7T0FvWUEwRjtPQTNZQTNGO09Bd1lBeUY7T0ExV0FuRjtPQThYQWlHO09BN1hBaEc7T0E4WEFpRzs7T0F4bUJBako7T0Fna0JBZ0g7T0FwakJBL0c7T0FxakJBZ0g7T0FyaUJBekc7T0F1bUJBcUo7T0EzbUJBeko7T0FtbUJBcUo7T0FsbUJBcEo7T0FzbUJBc0o7T0FybUJBcko7T0FtbUJBb0o7T0FsbUJBbko7T0FzbUJBcUo7T0E1UUFwRjtPQXFQQTBFO09BL1FBL0U7T0F1UkFrRjtPQXBSQWpGO09Bc1JBa0Y7T0FoVEFyRjtPQXlTQWtGO09BNVJBakY7T0E4UkFrRjtPQXRrQkExSTtPQThrQkE2STtPQXRsQkE5STtPQXdsQkErSTtPQTNLQW5FO09Bb0JBSztPQUNBQztPQWhCQUw7T0FXQUc7T0FNQUc7T0FlQUU7T0E5Q0FYO09BWEFGO09BbUZBYztPQUdBQztPQUdBRTtPQUdBQztPQUtBRTtPQUdBRTtPQTRHSXVEO09BaUJKTTtPQVFBRztPQXFCQUM7T0FJQUM7T0FJQUM7T0EwSEFhO09BQ0FDO09BQ0FDO09Ba0JBSTtPQVdBRTtPQXRCQUo7T0FaQUw7T0FSQUY7T0FlQU07T0FWQUw7T0EwRkFPO09BOURBRTtPQXVEQU87T0FPQVQ7T0F2QkFPO09BS0FDO09BbEJBSDtPQU9BQztPQTUxQkFoTTtPQXlpQkE0RztPQXhpQkEzRztPQXlpQkE0RztPQTZWQXVGO09Bb0JBUTtPQVJBTjtPQVVBTztJQUNGO1FDdnlDSUM7YUFLQUMsVUFBVUM7TUFDWjtRQUNVLElBQUo5aUUsRUFBSSxXQUZFOGlFO1FBRUYsUUFBSjlpRTtRQUFJO2dCQUZFOGlFO1FBRUYsVUFBSjlpRSxFQUlhLFFBTlA4aUU7ZUFFTjlpRTs7OztVQU9KLFFBZEE0aUUsVUFjQSwyQkFkQUE7bUJBa0JDO2FBR0RHLFVBQVVELElBQ1osT0FEWUEsWUFHUCxVQUhPQSxHQUdLO2FBUWZFLGtCQUFrQkY7TUFDWixJQUFKOWlFLEVBQUksVUFEWThpRSxJQUNaLEdBRFlBLE1BRUYsa0JBQ2xCLE9BRkk5aUUsQ0FFSDthQUdDaWpFLGFBQWFILElBQ1IsVUFEUUEsSUFDUixPQURRQSxLQUVOO2FBS1BJLG1CQUFtQkosSUFBSyxhQUFMQSxTQUF5QjthQUU1Q0ssY0FBY0w7TUFDaEIsU0FEZ0JBO01BQ2hCOzs7eUJBQ3NCO1FBQ00sSUFBZjc0QztRQUFlLE9BQWZBLE1BRThCO2FBR3pDbTVDLFdBQVdOLElBQ2IsT0FEYUEseUJBR1E7YUFLbkJPLFlBQVlQLElBQUssYUFBTEEsTUFBb0M7YUFFaERRLHdCQUF3QlIsSUFBSyxrQkFBb0M7YUF5U25FUyxhQXZTUVQ7TUFDUixpQkFEUUEsTUFFRSxhQUROVTtNQUVKLFFBRklBO01BRUosUUFIUVY7TUFHUixPQURJbjJDLEdBR0Q7YUFLRDgyQyxVQUFVbG1DLE1BQU11bEMsSUFDbEIsd0JBRGtCQSxJQUNsQixPQURZdmxDLEtBRVA7YUFHSG1tQyxZQUFZbm1DLE1BQU11bEMsSUFBSyxpQkFBWHZsQyxjQUFNdWxDLEdBQTZCO2FBRS9DYSxXQUFXcG1DLE1BQU11bEMsR0FBRzlpRTtNQUN0QixTQURtQjhpRSxNQUFHOWlFLEdBQ3RCLG1CQURhdTlCLE1BQU11bEMsR0FFQztRQUdsQmM7YUFFQUMsU0FBT0MsTUFBTXg1RDtNQVFHOztjQW5HaEJzNEQ7Ozs7O2NBMkZhdDREO2NBUUcsU0FWaEJzNUQ7Y0FFT0UsTUFVVjthQUdHQyxjQUFZem1FO01BQ2Qsc0NBRGNBO01BQ2QsU0FFSWdOO1FBQ0YsR0FGRTNKLE9BREEvSCxLQUdnQjtRQUNWLElBQUpvSCxFQUFJLGdCQUxJMUMsRUFDVjFFO1FBSU07ZUFBSm9ILENBRUg7TUFOSCxrQkFFSXNLLEtBS21COztJQUdMLFNBQWhCMDVELHNCakQxUlAsT2lEa1FPSDtJQXdCZ0IsSUFxRGRsakU7SUFyRGMsU0E4Q2hCc2pFLGtCQUFrQjVpRTtNQUFLLHNCQUFMQSxJQUFLLGlCQUFxQztJQTlDNUMsU0FrRGhCNmlFLGtCQUFrQjdpRSxJQUFNLGlCQUFpQjtJQWxEekIsU0FvRGhCOGlFLFFBQVFDLGNBQWNOLE1BQU16aUU7TUFFOUI7ZUFJSWlKO1FBQ0YsR0FKRTFSLE9BQ0EyaEIsUUFHOEIsSUFBSnZhLEVBQUksZUFMOUIrQixJQUNBbkosTUFJOEIsY0FBSm9IO1FBQzVCLEdBSEVxa0UsT0FHVztRQUNKLGVBVG1CaGpFLEdBRTFCVSxNQURBcEI7UUFRTyxhQUxQNFo7a0JBQ0E4cEQsV0FLaUIsV0FWWEQsY0FBb0IvaUU7a0JBRzFCekksU0FTRSxlQVZGbUosT0FZQztNQVpMLGdCQUZ3QitoRSxNQU1wQng1RCxLQVNhO0lBc0JqQixJQUlFZzZELE1BSkYsUUF2Q0VKLDRCbEMvU0Z6a0U7SWtDc1ZBLFNBTUU4a0UsYUFBYUMsUUFHYnY2QztNQUZGLHdCQUVFQTtRQUNTLElBQUw1b0IsR0FBSyxXQUpJbWpFLFFBR2J2NkM7ZUE5Q0FrNkMsUUFOQUYscUJBb0RBaDZDLE1BQ0k1b0I7TUFGRyxPQUpQaWpFLEtBTytDO0lBR3JDLFNBR1ZHLGdCakRwWVAsT2lEeVhPRixhbEMxVkZyakU7SWtDbVdnQixTQUdkd2pFLG9CakRyWVAsT2lEeVhPSCxhbEMzVkZwakU7SWtDb1dnQixTQUtkd2pFLGVBQWF0akUsSWpEdllwQixPaUQ4VU84aUUsUUFGQUQscUJBMkRhN2lFLE9BQzBCO0lBTnpCLFNBU2R1akUsU0FBUzlCO01BQ1gsU0FEV0E7TUFDWDtPQUlpQzs7UUFKakMsa0JBRUUsSUFEYXpoRSxXQUNiLDZCQURhQTtRQUVhLElBQVB3akU7UUFBTyw2QkFBUEEsTUFDYztJQWRuQixJQWlDWkM7SUFqQ1ksU0FnQ2RDLGFBRUdYLGNBQWMvaUU7TUFDbEI7UUFBSSxjQURjQSxHQURmeWpFOzs7O1VBS0MsSUFERWhDLEdBQ0YsUUFKQXNCLGlCQUFjL2lFO1VBSWQsZ0JBSmNBLEdBR1p5aEUsSUFKSGdDO1VBS0MsT0FERWhDO1FBM0JQLFdBOEJLO0lBSWlCLFNBQXBCa0M7TWpEOWFQLE9pRGthT0QsYUF0RkFiO0lBa0dvQjthQWN0QmUsVUFBVTNuRSxHQUFJLHNCQUFKQSxFQUEwQjtJQWRkLFNBZ0J0QjRuRSxpQkFBaUJsbEU7TUFDVCwwQ0FEU0EsR0FDdUM7SUFqQmxDLFNBb0J0Qm1sRSxpQkFBaUJDO01BRWpCLDBDQUZpQkEsU0FLTjtJQXpCVyxTQW9DdEJDO01BQ0YsZ0RBQXdEO0lBckNoQyxTQXdDdEJDO01BQ0YsZ0RBQXFEO0lBekM3QixTQWdEdEJDLG1CQUFtQnZsRSxFQUFFd2xFO01qRDlkMUIsT2lENGJLUCxVQStCRix5QkFHcUJqbEUsRUFBRXdsRSxJQUNnQjtJQWpEZixTQWtGdEJDLGdCQUFnQjNDLEdBQUc5aUU7TUFDWixJQUFMd2xFLEdBQUssa0JBRFMxQztNQUNULE9BQUwwQyxPQURpQnhsRSxFQUVOLHdCQUZHOGlFLElBR2xCLG1CQUhxQjlpRSxFQUNqQndsRSxHQUVtQjtJQXJGQyxTQTRFbEJFLFdBV1U1QyxHQVBkanJEO01BSEYsVUFHRUE7UUFRTyxJQUFMMnRELEdBQUssa0JBRE8xQztRQUNQLGNBQUwwQztpQkFFTSx3QkFITTFDO3dCQUNaMEM7b0JBR00sd0JBSk0xQyxJQUlOLGdCQUpNQTttQkFLVCxzQkFKSDBDO2dCQVJGM3REO09BM0JGO1NBQVEsZ0JBa0NRaXJELElBakNULFNBaUNTQTtTQWpDVDtXQUF1QixTQUQxQjlpRTtXQUMwQjs7Ozt3QkFHMUIsd0JBOEJZOGlFO1dBN0JQOztNQXNCRix1QkFPU0EsR0FQZGpyRCxJQUF5QjtJQWhGSCxTQWlHdEI4dEQsV0FBVzdDLElBQXdCLHVCQUFuQixhQUFMQSxNQUE0QjtJQWpHakIsU0FxR3RCOEMsV0FBVzlDO01BQ1AsSUFHSnhsRSxFQUhJLGFBRE93bEU7TUFDUCw0QkFHSnhsRTs7aUJBQWUsbUNBQWZBOztnQkFBd0Q7SUF6R2xDLFNBc0h0QnVvRTtNQUE2Qjs7O2lCQUN0QjtpQkFDQTtpQkFDQTtpQkFDQTtpQkFDQTs7aUJBQ007O01BQ1IsNkJBQVk7SUE3SEssU0FtSXRCQyxrQkFBa0J6aUIsS0FBS3lmO01BQ3pCLE9BRG9CemY7bUJBQ2hCMTJCLElBTWdCLFdBQU8sYUFQRm0yQzttQkFDckJuMkMsSUFJZ0IsV0FBTyxhQUxGbTJDO21CQUNyQm4yQyxJQUdnQixXQUFPLGFBSkZtMkM7bUJBQ3JCbjJDLElBS2dCLFdBQU8sYUFORm0yQztvQkFDckJuMkMsSUFFK0IsYUFIVm0yQztNQUcyQixJQUtoRDVqRSxFQUxnRCxzQkFGaER5dEI7TUFRUSxTQURSenRCLFlBQ1EsZ0JBUlJ5dEI7T0FRcUMsYUFSckNBLE1BT0F6dEI7TUFDNEIsT0FSNUJ5dEIsR0FRNkQ7SUE1SXpDLFNBb0p0Qm81QyxZQUFZakQsSUFBd0MsNEJBQW5CLGFBQXJCQSxJQUF3QztJQXBKOUIsU0F1TGxCa0Qsd0JBQXdCem9DLE1BQU11bEM7TWpEcm1CdkMsSWlEcW1CaUNweUI7TUFDOUI7aUJBRDhCQSxRQUNaLE9BRFlBO1FBRXRCLElBR04xd0MsRUFITSxVQUY0QjhpRTtRQUdqQyxHQUhpQ0EsTUFHWixPQUhNcHlCO1FBSTlCLFNBQ0Uxd0M7O1lBSVksd0JBVGdCMHdDLFFBQU1veUIsSUFBTnB5Qjs7a0JBSzVCMXdDO1dBQ1ksdUJBTmdCMHdDLFFBQU1veUIsR0FLbEM5aUUsR0FMNEIwd0M7UUFXdkIsT0FYdUJBLFFBV2xCO0lBbE1ZLFNBb1F0QnUxQiwwQkEvRHdCMW9DLE1BQU11bEM7TUFDaEMsU0FEMEJ2bEMsTUFDUjtNQUNWLElBQUp2OUIsRUFBSSxrQkFGd0I4aUU7TUFFeEIsT0FBSjlpRSxhQU1RLDBDQU5SQTtNQUFJLElBR0Ywd0MsUUFBUSxXQUxZblQsTUFBTXVsQyxHQUU1QjlpRTtNQUdVLCtCQUFSMHdDLFFBTDBCb3lCLEdBUW9DO0lBN001QyxTQWtPdEJvRCxnQkFBZ0JDLE1BQU1DLE9BQU8zUixRQUFNcU87TUFHckMsU0FIK0JyTyxRQUdiO01BQ1YsSUFBSjU4QyxJQUFJLGtCQUo2QmlyRDtNQUtsQyxjQUxxQnNELE9BSXBCdnVEO1FBRVUsdUJBTmlCNDhDLFFBQU1xTyxHQUlqQ2pyRCxLQW5CZ0IwbEI7UUFDbEI7bUJBRGtCQSxNQUNBLE9BREFBO1VBRVYsSUFHTnY5QixFQUhNLFVBYTJCOGlFO1VBWmhDLEdBWWdDQSxNQVpYLE9BSE52bEM7VUFLVCxjQVVhNm9DLE9BVnBCcG1FO1lBQ1ksdUJBTkl1OUIsTUFlaUJ1bEMsR0FWakM5aUUsR0FMZ0J1OUI7b0JBS2hCdjlCO1lBSVksd0JBVEl1OUIsTUFlaUJ1bEMsSUFmakJ2bEM7VUFXWCxPQVhXQTtNQXdCUiwwQ0FMUjFsQixJQUpjc3VELE9BU3lEO0lBM09uRCxTQThPdEJHLHVCQUFrQiwrQkFFUjtJQUdRLFNBQWxCQztNakRqcUJMLE9pRGdwQktMLDJCQVlBSTtJQUtrQixTQUVsQkUsc0JBQWlCLCtCQUVQO0lBR08sU0FBakJDO01qRHhxQkwsT2lEZ3BCS1AsMEJBbUJBTTtJQUtpQixTQUVqQkU7TUFBZ0I7Ozs7O3lCQUVOO0lBR2EsU0FBdkJDO01qRC9xQkwsT2lEZ3BCS1QsZ0NBMEJBUTtJQUt1QixTQUt2QkUsVUFBVXJwQyxNQUFNdWxDO01BQ1Ysd0JBRFVBLElBQ1YsU0FBSjlpRTtNQUFJOztnQkFFQyxrQkFIR3U5QixNQUFNdWxDLEdBQ2Q5aUU7O2lCQUdLLGtCQUpHdTlCLE1BQU11bEMsR0FDZDlpRTtNQUlHLE9BTEt1OUIsS0FLQTtJQVZhLFNBYXZCc3BDLCtCQUFtQ3RwQyxNQUFNdWxDO01BQy9CLElBQVJweUIsUUFBUSxVQUR5Qm5ULE1BQU11bEM7TUFDL0IsaUNBQVJweUIsUUFEdUNveUIsR0FFVDtJQWZULFNBMEN2QmdFLG9CQUFvQnpqQixLQUFLN0wsUUFBTXNyQjtNQUNqQyxPQURzQnpmO2VBRUosdUJBRlM3TCxRQUFNc3JCO2VBR2Ysc0NBSFN0ckIsUUFBTXNyQjs7U0FKckIsc0JBSWV0ckIsUUFBTXNyQixJQW5CM0Isb0JBbUIyQkE7U0FuQjNCLFVBQ0o5aUU7V0FDWSxJQUFSdTlCLE1BQVEsV0FITW1ULFFBb0Jhb3lCLEdBbEIvQjlpRTtXQUNZLFNBQVJ1OUIsTUFDYyxPQURkQTtXQUFRLElBRVIxbEIsSUFBSSxVQWV1QmlyRDtXQWQ1QixHQWM0QkEsTUFkUCxPQUhwQnZsQztXQUFRO1dBSVosU0FGSTFsQjs7Y0FJb0IsaUNBTnBCMGxCLE1BaUIyQnVsQyxHQWYzQmpyRCxLQWUyQmlyRDt3QkFmM0JqckQ7Ozs7OzBCQUtxQixrQ0FQckIwbEIsTUFpQjJCdWxDLEdBZjNCanJELEtBZTJCaXJEOztvQkFaSyxnQ0FMaEN2bEMsTUFpQjJCdWxDLEdBZjNCanJELEtBZTJCaXJEO29CQVR4Qix3QkFSSHZsQyxNQWlCMkJ1bEM7U0FSMUIsaUNBWmFweUIsUUFvQmFveUI7ZUFLZixzQkFMU3RyQixRQUFNc3JCO2VBTWYsaUNBTlN0ckIsUUFBTXNyQjtnQkFPZiw0QkFQU3RyQixRQUFNc3JCLElBT2M7SUFqRHRCLFNBdUR2QmlFLHFCQUFxQnhwQyxNQUFNdWxDO01BQzdCLFNBRHVCdmxDLE1BQ0wsT0FES0E7TUFFZixJQUdOdjlCLEVBSE0sVUFGcUI4aUU7TUFHMUIsT0FIMEJBO2VBQU52bEM7bUJBS3JCdjlCO2lCQUxxQnU5QjtpQkFNRyxtQ0FOSEEsTUFBTXVsQyxHQUszQjlpRSxHQUwyQjhpRSxHQU9qQjtJQTlEYSxTQWtFdkJrRSxtQkFBbUJ6cEMsTUFBTXVsQztNQUMzQixTQURxQnZsQyxNQUNILE9BREdBO01BRWIsSUFBSnY5QixFQUFJLFVBRm1COGlFO01BR3hCLEdBSHdCQSxNQUdILE9BSEh2bEM7Z0JBRWpCdjlCLGVBS0csT0FQY3U5QjtNQU1nQixpREFOaEJBLE1BQU11bEMsR0FFdkI5aUUsR0FGdUI4aUUsR0FPZjtJQXpFYSxTQW9IdkJtRSxXQUFXenZCLFFBQU0wdkIsVUFBVXBFO01BbkNqQjt1QkFtQ0N0ckIsUUFBZ0JzckI7T0FuQ2pCLGdDQUFSdmxDLE1BbUN5QnVsQztlQUN6QnB5QixRQUNjLFVBRGRBLFFBRGV3MkI7TUFuQ1AsSUFzQ1JsbkUsRUFBSSxVQUhxQjhpRTtNQUkxQixHQUowQkEsTUFJTCxVQUhwQnB5QixRQURldzJCO01BS25CLFVBRklsbkU7UUFJVTs0QkFOVjB3QyxRQUR5Qm95QixHQUd6QjlpRTtTQUtjLGtCQURaeTBELFFBUGF5UztTQVNnQjtVQUY3QnpTOztXQUNBMFMsY0FDNkIscUJBRDdCQSxZQVJ1QnJFOzs7UUFVM0IsNkJBREl1RCxRQVR1QnZELElBUXZCcUU7TUFJSiw2QkFYRXoyQixRQUR5Qm95QixJQUFWb0UsVUFZcUI7SUFoSWYsU0FtSXZCRSw4QkFBOEI3cEMsTUFBTXVsQyxHQUFHL3dELE1BQU12VztNQUMvQyxTQUFJZ1ksVUFBVXhUO1FBQ1osWUFEWUEsZUFHVixhQUhVQSxxQkFJSjtNQUpWO2lDQUQrQ3hFO09BQy9DLFdBRGdDK2hDO09BQ2hDLEtBS0k1OEI7T0FMSjs7WUFPQS9IO1FBQ0U7VUFBUSxnQkFUNEJrcUUsSUFVbEIsZUFBVSxnQkFWaUJ0bkUsSUFRL0M1QztVQUVLLGFBRENvSCxZQUNxQyxXQVZGK1I7VUFVVSxTQUgvQzIrQixXQUlpQixXQVhvQjMrQjtVQVk5Qix3QkFMUDIrQixXQVBrQ295QixHQVNoQzlpRTtVQUFJLFNBRFZwSDs7O01BTUEsT0FQSTgzQyxVQU9FO0lBakptQixTQW9KdkIyMkIsZUFBZTlwQyxNQUFNMnBDLFVBQVVwRTtNQUNqQyxlQURpQnZsQyxVQUNqQixhQUFnQixhQURpQnVsQztNQUNPLFFBQU07TUFBOUM7T0FDWSxrQkFGS3ZsQyxNQUFnQnVsQztPQUVyQixXQUFScHlCO09BQVEsYUFDSSxhQUhpQm95QjtNQUdPLFFBQU07TUFGOUMsSUFHTSxZQUoyQkE7TUFJM0IsU0FDSjlpRTs7OztZQTZCWTtnQ0FoQ1Ywd0MsUUFGNkJveUIsR0FLL0I5aUU7YUE2QlksV0FBUnczQzthQUFRLGFBQ0ksYUFuQ2VzckI7WUFtQ1MsUUFBTTtZQUFnQjtxQkFEMUR0ckIsUUFsQzJCc3JCLEdBN1cvQndDOzs7O2tCQWtYQXRsRTtVQUNZOzhCQUpWMHdDLFFBRjZCb3lCLEdBSy9COWlFO1dBQ1ksV0FBUnFtRTtXQUFRLGFBQ0ksYUFQZXZEO1VBT1MsUUFBTTtVQURsQztXQUVSd0U7WUFBUSw4QkFGUmpCLFFBTjJCdkQsR0E3Vy9Cd0M7VUFzWGdCLFNBRFpnQyxhQUNZLGFBVGV4RTtZQVVYLG9CQVZXQSxJQVVYOzs7OztnQkFBZHlFLGlCQUZGRCxRQUlPLHFCQUpQQSxRQVIyQnhFO1lBYWIsU0FIWnlFLGFBR1ksYUFiYXpFO2NBY1QsSUFDZGpyRCxJQURjLFVBZFNpckQ7Y0FjVCxVQUNkanJEO2dCQUNZLHVCQU5kMHZELFFBVnlCekUsR0FldkJqckQ7Z0JBRWdCLFNBRFoydkQsYUFDWSxhQWpCTzFFO2tCQWtCZixzQkFsQmVBOztvQkFxQkg7dUNBTGhCMEUsUUFoQlNOO3FCQWdCVE87Ozt1QkFLSU4sY0FDaUIscUJBRGpCQSxZQXJCZXJFOzs7O29DQWdCbkIyRTtrQkFFSSxJQUZKQzs7O2dCQUFRLElBRlpDLFFBRUlEOzttQkFGSkMsUUFKRko7Y0FlYyxTQVhaSSxhQVdZLGFBekJXN0U7Z0JBMEJuQixJQUNKaHJELElBREksVUExQm1CZ3JEOzBCQTJCdkJockQsbUJBSUssT0FqQkw2dkQ7Z0JBWUk7aUJBRVEsbUJBZFpBLFFBZHVCN0UsR0EyQnZCaHJEO2lCQUNZLFdBQVI4dkQ7aUJBQVEsYUFDSSxhQTdCTzlFO2dCQTZCaUIsUUFBTTtnQkFBZ0Isc0NBRDFEOEUsUUE1Qm1COUU7Y0F5Qm1CLE9BWDFDNkU7WUFEd0MsT0FIMUNKO1VBRHdDLE9BRDFDRDtrQkFISnRuRTs7UUFpQ1k7NEJBcENWMHdDLFFBRjZCb3lCLEdBSy9COWlFO1NBaUNZLFdBQVJ5MEQ7U0FBUSxhQUNJLGFBdkNlcU87UUF1Q1MsUUFBTTtRQUFnQjtpQkFEMURyTyxRQXRDMkJxTyxHQTdXL0J3QztNQXNaSyx1QkFBZ0I7SUE3TEUsU0FnTXZCdUMscUJBQXFCdHFDLE1BQU0ycEMsVUFBVXBFO01BQ3ZDLGVBRHVCdmxDLFVBQ3ZCLGFBQWdCLGFBRHVCdWxDO01BQ0MsUUFBTTtNQUE5QztPQUNZLGdDQUZXdmxDLE1BQWdCdWxDO09BRTNCLFdBQVJweUI7T0FBUSxhQUNJLGFBSHVCb3lCO01BR0MsUUFBTTtNQUY5QyxJQUdRLFlBSitCQSxJQUkvQixTQUFKOWlFO01BQUk7O1VBR007OEJBTFYwd0MsUUFGbUNveUIsR0FJbkM5aUU7V0FNYyxrQkFIWnczQyxRQVB1QjB2QjtXQWFMLHFDQUhsQkMsWUFWaUNyRTtXQWFmLFdBSGxCcUUsY0FHQVc7V0FBa0IsUUFObEJ0d0IsVUFTQXV3QjtVQUhrQiwwQkFLbEJ0VCxRQWxCaUNxTzs7a0NBcUJyQywwQkFuQkVweUIsUUFGbUNveUI7TUFzQmhDLG1CQUFZO0lBdE5NLFNBeU52QmtGLGdCQUFnQnpxQyxNQUFNMnBDLFVBQVVwRTtNQUNsQyxlQURrQnZsQyxVQUNsQixhQUFnQixhQURrQnVsQztNQUNNLFFBQU07TUFBOUM7T0FDWSxrQkFGTXZsQyxNQUFnQnVsQztPQUV0QixXQUFScHlCO09BQVEsYUFDSSxhQUhrQm95QjtNQUdNLFFBQU07TUFGOUMsSUFJRTlpRSxFQURJLFVBSjRCOGlFO01BSTVCLFNBQ0o5aUU7O1VBaUNZOzhCQXBDVjB3QyxRQUY4Qm95QixHQUtoQzlpRTtXQWlDWSxXQUFSdzNDO1dBQVEsYUFDSSxhQXZDZ0JzckI7VUF1Q1EsUUFBTTtVQUFZLDRCQUR0RHRyQixRQXRDa0IwdkIsVUFBVXBFOztnQkFLaEM5aUU7U0FDWTs2QkFKVjB3QyxRQUY4Qm95QixHQUtoQzlpRTtVQUNZLFdBQVJ5MEQ7VUFBUSxhQUNJLGFBUGdCcU87U0FPUSxRQUFNO1NBRGxDLElBR1ZqckQsSUFESSxVQVIwQmlyRDttQkFTOUJqckQ7VUEwQkEsNEJBN0JFNDhDLFFBTmtCeVMsVUFBVXBFO1NBTXBCO1VBSUUsbUJBSlZyTyxRQU40QnFPLEdBUzlCanJEO1VBQ1ksV0FBUnd1RDtVQUFRLGFBQ0ksYUFYY3ZEO1NBV1UsUUFBTTtTQUxwQztVQU1FLDZCQUZSdUQsUUFWMEJ2RDtVQVlsQixXQUFSd0U7VUFBUSxhQUNJLGFBYmN4RTtTQWFVLFFBQU07U0FQcEMsSUFRUSxjQWRZQSxJQWNaLFNBQ2RockQ7U0FEYzs7WUFFRix1QkFKWnd2RCxRQVowQnhFLEdBZTFCaHJEO1lBRWdCLFNBRFp5dkQsYUFDWSxhQWpCVXpFO2NBa0JsQixvQkFsQmtCQTs7Z0JBcUJOO21DQUxoQnlFLFFBaEJZTDtpQkFnQlpPOzs7bUJBS0lOLGNBQ2lCLHFCQURqQkEsWUFyQmtCckU7Ozs7Z0NBZ0J0QjJFO2NBRUksSUFGSkQ7OztZQUFRLElBQVJFOzs7O2lEQUpKSjtTQU5NLElBUU5LLGlCQVdLLGFBVEREO1NBVVEsU0FaWkMsYUFZWSxhQTFCYzdFO1dBMkJ0QixJQUNKL3FELElBREksVUEzQnNCK3FEO3FCQTRCMUIvcUQsbUJBSUssT0FsQkw0dkQ7V0FhSTtZQUVRLG1CQWZaQSxRQWQwQjdFLEdBNEIxQi9xRDtZQUNZLFdBQVI2dkQ7WUFBUSxhQUNJLGFBOUJVOUU7V0E4QmMsUUFBTTtXQUFnQixzQ0FEMUQ4RSxRQTdCc0I5RTtTQTBCZ0IsT0FaMUM2RTtNQStCRCxtQkFBWTtJQXRRTSxTQStRdkJNLFlBQVlDLElBQ0QzcUMsTUFEV3VsQztNakQ5N0IzQixJaUQrN0JnQnB5QjtNQUNYO2lCQURXQSxRQUNPLE9BRFBBO1FBRUgsSUFBSjF3QyxFQUFJLFVBSGM4aUU7UUFJbkIsR0FKbUJBLE1BSUUsT0FIYnB5QjtRQUlULEdBTFV3M0I7VUFNSyxJQUFScndELElBTkdxd0Q7VUFNSyxHQUhibG9FLE1BR0s2WCxJQUFrQixpQkFMaEI2NEIsUUFEV295QjtVQU1MLElBQ0UsbUJBTlJweUIsUUFEV295QixHQUdsQjlpRSxHQUZPMHdDOztRQUVILElBTUosS0FOQTF3QztRQU1BOzs7O29CQUM4QixPQVR2QjB3QztRQUVILElBUVEsbUJBVkxBLFFBRFdveUIsR0FHbEI5aUUsR0FGTzB3QztpQkFXSDtJQTNSZSxTQStSdkJ5M0IsVUFBVTVxQyxNQUFNdWxDO01BSVcsa0JBSmpCdmxDLE1BQU11bEMsR0FJVyxrQkFKWEEsSUFJMEM7SUFuU25DLFNBZ1V2QnNGLDBCQUNFbHpEO01BQUosYUFBSUEsMENBVWlCO0lBM1VJLFNBMFZ2Qm16RCxnQkFBZ0JqRCxRQUFRN25DLE1BQU11bEM7TUFDaEMsU0FEMEJ2bEMsTUFDUix3QkFEQTZuQztNQUVWLElBQUpwbEUsRUFBSSxVQUZ3QjhpRTtNQUc3QixPQUg2QkEsTUE3akI5QixtQ0E2akJnQnNDLFVBRWRwbEUsQ0FFSDtJQUc0QixTQUEzQnNvRTtNakRoaENMLE9pRHlnQ0tEO0lBUTZCLFNBQTdCRTtNakRqaENMLE9pRHlnQ0tGO0lBUTZCLFNBRTdCRyxvQkFBb0JqckMsTUFBTXVsQztNQUN0QixnQ0FEZ0J2bEMsTUFBTXVsQztNQUN0QixTQW5Ea0IyRjs7Ozs7O2NBaUV0Qjs7O2tCQUNVLGdCQWhCZ0IzRixJQWdCaEIsS0FBSjlpRTtrQkFBSTs7OztrQ0FBSkEsRUFHRyxpQkFISEEsRUFHcUI7ZUFDbEI7ZUFDQTtlQXhDSiwrQkFId0I4VDtlQUV4QixvQ0FGcUJEOztzQkFDeEJnRTt5QkFNSixZQU5JQTs7d0JBS0EsbUNBTndCaEUsR0FBR0M7cUJBbHdCM0I2dkQsV0F3eEJrQnBtQyxjQUFNdWxDOzs7Ozs7OztrQkFsREoyRjtXQXVEdEI7OztlQUNVLElBRU56b0UsRUFGTSxVQU5nQjhpRTtlQU1oQixXQUVOOWlFLGFBQ0ssaUJBRExBLElBQ3VCO1lBRWxCO1lBQ0E7WUE1REg7c0JBRmdCeW9FLDJCQUFHRzs7Y0FBR0M7Ozs7bUJBQzFCN29FLDJCQVFKLFlBUklBOztxQkFNQSxtQ0FQb0J5b0UsR0FBR0csS0FBR0M7a0JBdHVCMUJsRixXQXd4QmtCcG1DLGNBQU11bEM7O2lCQWxESjJGOzs7UUFaRCxVQVlDQTs7Ozs7Ozs7Ozs7O2VBdHVCcEI5RSxXQXd4QmtCcG1DLE1BQU11bEM7TUF3QjFCLHdCQTFFc0IyRixHQTBFSjtJQTFCVyxTQThCN0JLLGVBRWlCdnJDLE1BRkl1bEM7TUFFdkIsU0FZSWlHLFVBQVV4ckM7UUFDTixJQUVKdjlCLEVBRkkseUJBRE11OUIsTUFkU3VsQztRQWVmLGNBRUo5aUUsRUFEUSxZQUZFdTlCLE1BZFN1bEMsSUFpQmQsc0JBQUw5aUUsRUFBOEI7TUFkMUIsSUFFSkEsRUFGSSxrQkFIZThpRTtNQUdmLFVBRUo5aUU7UUFEa0I7NkJBRkh1OUIsTUFGSXVsQztTQVFmLDZCQURNcHlCLFFBUFNveUI7UUFRZixjQUdKanJEO2lCQURVLDhCQUFxQixZQUhyQjY0QixRQVBTb3lCO2lCQVlULHFCQUxBcHlCLFFBUFNveUIsR0FXbkJqckQ7TUFOSyw2QkFBTDdYLEVBY1k7SUFqRGUsU0FxRDdCZ3BFLGlCQUVpQnpyQyxNQUZNdWxDO01BRXpCLFNBS0ltRyxvQkFBVTFyQztRakQ3a0NqQixJaUQ2a0NpQm1UO1FBQ1o7VUFBTSxJQUdKMXdDLEVBSEksMkJBRE0wd0MsUUFQV295QjtVQVFqQixVQUdKOWlFLEVBRlEsbUJBRkUwd0MsUUFQV295QjtvQkFXckI5aUU7WUFEdUI7aUNBSGIwd0MsUUFQV295QjthQWNqQixpQ0FEV3RyQixRQWJNc3JCO1lBY2pCO2NBRWdCLHFCQUhMdHJCLFFBYk1zckI7Y0FnQkQ7O3VCQVFwQm9HOzs7Y0FUcUI7bUNBRk4xeEIsUUFiTXNyQjtlQW9CakIsbUNBRFN1RCxRQW5CUXZEO2NBb0JqQjtnQkFDZ0IscUJBRlB1RCxRQW5CUXZEO2dCQXFCRDs7eUJBR3BCb0c7O2NBVHFCLElBT04sbUJBSEY3QyxRQW5CUXZELE9BT1hweUI7O1lBR2EsSUFPUiw0QkFKQThHLFFBYk1zckIsSUFPWHB5Qjs7VUFDTixJQUdXLG1CQUpMQSxRQVBXb3lCLEdBV3JCOWlFLEdBSlUwd0M7bUJBSXFDO01BVG5ELFNBc0JJdzRCLG9CQUFZM3JDO1FqRDlsQ25CLElpRDhsQ21CbVQ7UUFDZDtVQUFNLHFDQURRQSxRQXhCU295QjtVQXlCakI7WUFDZSx3QkFGUHB5QixRQXhCU295QixJQXdCVHB5QjtVQUdQOzttQkFwQkx1NEIsc0JBaUJZdjRCO3dDQWpCWnU0QixlQWlCWXY0QixVQUdRO01BekJ4QixTQUtJcTRCLFVBQVV4ckMsT2pEN2tDakIsdUJpRDZrQ08wckMsY0FBVTFyQztNQUpOLElBRUp2OUIsRUFGSSxrQkFIaUI4aUU7TUFHakIsY0FFSjlpRTtlQURrQixzQkFGSHU5QixNQUZNdWxDO2VBS2hCLHNCQUFMOWlFLEVBd0JZO0lBbEZlLFNBb0c3Qm1wRSx1QkFBdUI3c0UsU0FBUzhzRSxXQUFXN3JDLE1BQU11bEM7TUFDbkQsU0FBUXVHLFdBQVd6d0UsRUFBRXN2RTtRakR0bkN4QixJaURzbkNzQi9vRTtRQUNqQjtVQUFRLGdCQUZ5QzJqRSxJQUV6QyxTQURTM2pFO1VBQ1Q7WUFDUSxhQUhpQzJqRTtZQUdqQzthQUNiLHdCQUpvQnhtRSxTQUVuQjBELEdBRUQsVUFGQ0EsTUFEZWtvRTs7Ozs7VUFLakI7WUFBUSxXcEN2aENGOXBFLFFvQ2loQ3lDMGtFLEdBRTdDOWlFLEdBSU0sUUFMT2I7c0JBTU87TUFOMUIsR0FEa0NpcUU7UUFXaEMsSUFES3BwRSxFQVYyQm9wRTtRQVdoQyxXQVgyQzdyQyxNQVV0Q3Y5QjtRQUNMLGFBWGlEOGlFO1FBWTFDO1VBQ0ksSUFBTDBDLEdBQUssVUFic0MxQztVQWF0QyxPQUhOOWlFLE1BR0N3bEUsR0FFQyx3QkFmMEMxQyxJQWdCMUMsbUJBTkY5aUUsRUFHQ3dsRTtRQUpFO3dCQVRtQ2pvQyxTQWdCYjtJQXBIRCxTQXdIN0IrckMsZ0JBQWdCeEcsR0FJaEJybEU7TWpEN29DTCxHaUQ2b0NLQTtXQUhhSCxFQUdiRzs7NEJBQUssTUFBTEEsTUFIYUgsRUFHYkc7TUFGUSxJQUFKN0UsRUFBSSxXQUZRa3FFO01BR04sMENBRE5scUUsRUFEUzBFO0lBekhnQixTQWdJN0Jpc0UsWUFBWXpHLEdBQUdybUU7TUFDakIsT0FEaUJBO2VBRUMsT0FGSnFtRSxhQUdJLGtCQUhKQSxZQUlLLE9BSkxBLE1BSTRCO0lBcElYLFNBd0k3QjBHLGlCQUFpQmxzQztNQUFVLEdBQVZBLFNBRUgsSUFBVEMsTUFGWUQsV0FFSCxPQUFUQyxNQURHLE9wQ3RqQ0FuL0IsT29DdWpDVztJQTFJVSxTQTZJN0JxckUsMEJBQTBCQztNQUM1QixTQUQ0QkEsT0FDSztNQUNyQjtvQ0FGZ0JBO09BR2hCLG9CQURObHVFO09BRVUsY0FGVkEsTUFDTSxzQkFETkE7TUFFVSxVQURWMHNFLElBQ0Exc0IsUUFDUTtJQWxKaUIsU0E0SnpCbXVCLDhCQUdKOTFDLEVBQUU0SjtNakRockNQLElpRGdyQ08rQztNQUFPO2lCQUFQQTtRQXFDa0Msa0JBckNwQzNNOztRQUFTLE9BQVAyTTtpQkFLa0MsVUFMbENBO2lCQU1rQyxVQU5sQ0E7aUJBT2tDLFVBUGxDQTtpQkFRa0MsVUFSbENBO2lCQVNrQyxVQVRsQ0E7aUJBVWtDLFVBVmxDQTtpQkFXa0MsVUFYbENBO2lCQVlrQyxVQVpsQ0E7aUJBYWtDLFVBYmxDQTtpQkFja0MsV0FkbENBO2tCQWlCa0MsV0FqQmxDQTtrQkFrQmtDLFdBbEJsQ0E7a0JBbUJrQyxXQW5CbENBO2tCQWdDa0MsV0FoQ2xDQTs7V0FrQzJCLElBREwxbkMsS0FqQ3RCMG5DLFNBaUNlOWtDLE1BakNmOGtDLFNBa0MyQixlQUFXLEtBRHZCOWtDO1dBQ1k7O29CQU03Qmt1RSxzQ0F4Q0EvMUMsT0FpQ3dCLzZCOztvQkFPeEI4d0UsK0JBeENBLzFDLE9BaUN3Qi82QjtrQkFsQlksV0FmbEMwbkM7a0JBZ0JrQyxXQWhCbENBO2tCQTBCa0MsV0ExQmxDQTs7OzthQTRCc0I7Y0FEb0J6bkMsT0EzQjFDeW5DOztjQTJCZ0M0TTtjQUNWLGtCQURVQSxPQUFVcjBDO2NBM0IxQ3luQzs7V0E4QnNCO1lBRG9CeG5DLE9BN0IxQ3duQzs7WUE2QmdDb047WUFDVixrQkFEVUEsT0FBVTUwQztZQTdCMUN3bkM7OztXQUVGLElBRE84SCxTQURMOUg7V0FFRixnQkFBSXFwQzthQUNGLFNBQUlDLE1BQU1DO2VBQWUsa0JBSDNCbDJDLEtBRUlnMkMsT0FDUUUsY0FBOEM7YUFBeEQsMkJBQUlELE1BRkN4aEMsU0FHNkI7a0JBa0JBLFdBdEJsQzlIO2tCQXVCa0MsV0F2QmxDQTtrQkF3QmtDLFdBeEJsQ0E7O2VBbUNrQnZuQyxPQW5DbEJ1bkMsU0FtQ2E1akMsSUFuQ2I0akM7V0F5RVcsVUF0Q0U1akM7WUFzQ0YsT0F0Q0VBO3lCQW5DYjRqQyxNQW1Da0J2bkM7eUJBbkNsQnVuQyxNQW1Da0J2bkM7O2VBd0NwQixnQkFBSTR3RTtpQkFDRixTQUFJQyxNQUFNQzttQkFBZSxrQkE1RTNCbDJDLEtBMkVJZzJDLE9BQ1FFLGNBQThDO2lCQUF4RCwyQkFBSUQsTUF6Q2M3d0UsT0EwQ1c7MEJBN0U3QnVuQyxNQW1Da0J2bkM7O1lBc0NQLE9BdENFMkQ7eUJBbkNiNGpDLE1BbUNrQnZuQzt5QkFuQ2xCdW5DLE1BbUNrQnZuQzt5QkFuQ2xCdW5DLE1BbUNrQnZuQzt5QkFuQ2xCdW5DLE1BbUNrQnZuQzt5QkFuQ2xCdW5DLE1BbUNrQnZuQzt5QkFuQ2xCdW5DLE1BbUNrQnZuQzt5QkFuQ2xCdW5DLE1BbUNrQnZuQzt5QkFuQ2xCdW5DLE1BbUNrQnZuQzt5QkFuQ2xCdW5DLE1BbUNrQnZuQzs7ZUFzRGUsSUFBVjJDLFFBdERWZ0I7ZUFzRG9COzt3QkFqRG5DZ3RFO29DQXhDQS8xQyxFQXlGeUJqNEIsUUF0REwzQzs7d0JBS3BCMndFLCtCQXhDQS8xQyxFQXlGeUJqNEIsUUF0REwzQzswQkFuQ2xCdW5DLE1BbUNrQnZuQzswQkFuQ2xCdW5DLE1BbUNrQnZuQztrQkFmZ0IsV0FwQmxDdW5DLCtCQXFDdUM7SUFwTVosU0F1TTdCb3BDLG9DQUdBLzFDLEVBQUVuNEIsTUFBTStoQztNakQzdENiLElpRDJ0Q083aEM7TUFBYTtpQkFBYkE7U0FxQjZCOztrQkFuRTNCK3RFLGdDQThDSjkxQyxFQUFRNEo7dUNBOUNKa3NDLHlCQThDSjkxQyxFQUFRNEo7O1FBQU8sT0FBYjdoQztpQkFTNkIsWUFUN0JBO2lCQVU2QixZQVY3QkE7aUJBVzZCLFlBWDdCQTtpQkFZNkIsWUFaN0JBO2lCQWE2QixZQWI3QkE7aUJBYzZCLFlBZDdCQTtpQkFlNkIsWUFmN0JBO2lCQWdCNkIsWUFoQjdCQTtpQkFvQjZCLFlBcEI3QkE7O1dBdUJPO1lBRGtCOUMsS0F0QnpCOEM7WUFzQm9CMUIsSUF0QnBCMEI7WUFzQmVuQyxJQXRCZm1DO1lBdUJPLFNBQU0sS0FERW5DLEtBQUtTO1lBRU0sc0JBRHhCWCxHQUR1QlQ7WUF0QnpCOEM7O2tCQWlCNkIsYUFqQjdCQTtrQkFrQjZCLGFBbEI3QkE7a0JBbUI2QixhQW5CN0JBOztXQUVGLElBRFUwc0MsU0FEUjFzQztXQUVGLGdCQUFJaXVFO2FBQ0YsU0FBSUMsTUFBTUM7ZUFBZSxrQkFIM0JsMkMsS0FFSWcyQyxPQUNRRSxjQUE4QzthQUF4RCxpQ0FBSUQsTUFGSXhoQyxTQURGN0ssSUFJc0M7O1dBRTlDLElBRGtCK0ssV0FMaEI1c0M7V0FNRixnQkFBSWl1RTthQUNGLFNBQUlDLE1BQU1DO2VBQWUsa0JBUDNCbDJDLEtBTUlnMkMsT0FDUUUsY0FBOEM7YUFBeEQsaUNBQUlELE1BRll0aEMsV0FMVi9LLElBUXNDLEVBZ0JRO0lBbE96QixTQTRKekJ1c0Msb0JBR0puMkMsRUFBRTRKO01qRGhyQ1AsdUJpRDZxQ1Nrc0Msd0JBR0o5MUMsRUFBRTRKO0lBL0oyQixTQXVNN0Iyc0MsMEJBR0F2MkMsRUFBRW40QixNQUFNK2hDO01qRDN0Q2IsdUJpRHd0Q0ttc0MsOEJBR0EvMUMsRUFBRW40QixNQUFNK2hDO0lBMU1xQixTQXFhN0I0c0MsZUFNQXZILEdBQUdybEMsSUFBSTZzQyxRQUFRaHdFLElBQUlFLEtBQUtzVCxLQUFLNmtEO01BQVMsVUFBdkJyNEQ7a0JBQUlFO1VBd0JuQixHQXhCbUJBLEtBd0JuQjtVQXRCUSxXQUZnQnNULEtwQ3gxQ2hCMVAsZ0JvQ3cxQ1Iwa0U7VUFHUSxJQUFKcmxFLEVBQUksV0FIcUJrMUQsTUFBN0JtUTtVQUlTLFVBRExybEUsRUFDSyxXQUpUcWxFLEdBQUdybEMsSUFBSTZzQztRQU1QLElBRDBCcCtELEVBTFAxUjtRQU1YLFdBTmdCc1QsS3BDeDFDaEIxUCxRb0M2MUNrQjhOLEVBTDFCNDJEO1FBTUEsSUFDSW5zRCxJQUFJLFdBUHFCZzhDLE1BQTdCbVE7UUFRUyxVQURMbnNELElBQ0ssV0FSVG1zRCxHQUFHcmxDLElBQUk2c0M7O1FBQStCLFNBQXZCaHdFOzs7c0JBQUlFO2NBb0JuQixHQXBCbUJBLEtBb0JuQjtjQVZRLFdBVmdCc1QsVXBDeDFDaEIxUCxRb0N3MUNSMGtFO2NBV1EsSUFBSjNpQixJQUFJLFdBWHFCd1MsTUFBN0JtUTtjQVlTLFVBREwzaUIsSUFDSyxXQVpUMmlCLEdBQUdybEMsSUFBSTZzQztnQkFheUN4NEIsSUFiN0J0M0M7WUFjWCxXQWRnQnNULFVBYXdCZ2tDLElBYmhEZ3hCO1lBZVEsSUFBSnhpQixJQUFJLFdBZnFCcVMsTUFBN0JtUTtZQWdCUyxVQURMeGlCLElBQ0ssV0FoQlR3aUIsR0FBR3JsQyxJQUFJNnNDO1VBa0JQO1FBSUEsK0NBRTBDO0lBbmNiLFNBcVF6QkMsV0FHSnpILEdBQUdybEMsSUFBSTZzQztNakR6eENaLElpRHl4Q1E5cEM7TUFBZTtpQkFBZkE7UUF3Skg7O1FBeEprQixPQUFmQTs7V0FFSCxJQURLMW5DLEtBREYwbkM7V0FFSyxZQUZSc2lDO1dBRUEsSUFDSTlpRSxFQUFJLFdBSFI4aUU7V0FJUyxVQURMOWlFLEVBQ0ssV0FKVDhpRSxHQUNLaHFFLEtBREV3eEU7O1dBTVAsSUFEVXZ4RSxPQUxQeW5DO1dBTUssaUJBTlJzaUM7V0FNQSxJQUNJanJELElBQUksV0FQUmlyRDtXQVFTLFVBRExqckQsSUFDSyxXQVJUaXJELEdBS1UvcEUsT0FMSHV4RTs7b0JBQUo5cEM7Ozs7ZUFXWTtnQkFEMEJ2bkM7Z0JBQVpnRDtnQkFDZCxnQ0FEY0E7Z0JBQ2Q7OzswQkFDTnNoQyxZQUFRdWxDO21CQUFLLHNCQURsQm9GLEtBQ0szcUMsTUFBUXVsQyxHQUFvQztnQkFEdEMsYUFBTnRuRSxJQURnQ3ZDO2VBQzFCO3dCQVhmNnBFLEdBYUkySCxTQWJHSCxlQVlIRSxPQXB4QkpqSDs7Ozs7a0JBdXhCMERycUU7O2tCQUFYZ29DO2tCQUMzQ3dwQzs0QkFBS250QyxZQUFRdWxDLElBQUssd0JBQWJ2bEMsTUFBUXVsQyxHQUFvQztpQkFDbkM7MEJBakJsQkE7MEJBaUJrQixXQUY2QjVoQyxNQUFXaG9DOzBCQWZuRG94RTs7OzBCQWdCSEk7MEJBeHhCSm5IOztnQkEyeEIwRHBxRTs7Z0JBQVh3dkM7Z0JBQzNDZ2lDOzBCQUFLcHRDLFlBQVF1bEMsSUFBSyx3QkFBYnZsQyxNQUFRdWxDLEdBQW9DO2VBQ25DO3dCQXJCbEJBO3dCQXFCa0IsV0FGNkJuNkIsTUFBV3h2Qzt3QkFuQm5EbXhFOzs7d0JBb0JISzt3QkE1eEJKcEg7OztZQSt4QmF2cUUsT0F2QlZ3bkM7WUF3QkMxeUIsY0FBS3l2QixZQUFRdWxDLElBQUsscUJBQWJ2bEMsTUFBUXVsQyxHQUE4QjtrQkFxSS9DdUgsZUE3SkF2SCxHQXVCYTlwRSxPQXZCTnN4RSxlQXdCSHg4RCxLQWh5Qkp5MUQ7OztZQW15QmtCbnFFLE9BM0Jmb25DO1lBMkJVbG1DLElBM0JWa21DO1lBNEJDb3FDLGdCQUFLcnRDLFlBQVF1bEMsSUFBSyx3QkFBYnZsQyxNQUFRdWxDLEdBQThCO2tCQWlJL0N1SCxlQTdKQXZILEdBMkJrQjFwRSxPQTNCWGt4RSxRQTJCTWh3RSxNQUNUc3dFLE9BcHlCSnJIOztXQXV5QlE7WUFEZWxxRSxPQTlCcEJtbkM7WUE4QmNobUMsS0E5QmRnbUM7WUE4QlNqbUMsTUE5QlRpbUM7WUE4QkU5bEMsTUE5QkY4bEM7WUErQkssZ0NBQTJCLGNBRDlCOWxDO1lBQ0c7c0JBQ0M2aUMsWUFBUXVsQztlQUFLLDJCQXp2Qlp6ZixLQXl2QkQ5bEIsTUFBUXVsQyxHQUFtQztXQUNQO29CQWpDN0NBO29CQThCdUJ6cEU7b0JBOUJoQml4RTtvQkE4QksvdkU7b0JBQUtDO29CQUVicXdFOzZCQXp2QlcvSDtzQkFBOEMsMEJBQTNCLGtCQUF4QnpmLEtBQUt5Zjs7V0E0dkJQO1lBRGlCeHBFLE9BbEN0QmtuQztZQWtDZ0I3bEMsT0FsQ2hCNmxDO1lBa0NXL2xDLE1BbENYK2xDO1lBa0NJM2xDLFFBbENKMmxDO1lBbUNLLGtDQUEyQixjQUQ1QjNsQztZQUNDO3NCQUNDMGlDLFlBQVF1bEM7ZUFBSywyQkF4dUJWZ0ksT0F3dUJIdnRDLE1BQVF1bEMsR0FBbUM7V0FDUDtvQkFyQzdDQTtvQkFrQ3lCeHBFO29CQWxDbEJneEU7b0JBa0NPN3ZFO29CQUFLRTtvQkFFZm93RTs2QkF4dUJhakk7c0JBQWdELDBCQUEzQixrQkFBMUJnSSxPQUFLaEk7O1dBMnVCVDtZQURxQnRwRSxPQXRDMUJnbkM7WUFzQ29CMWxDLE9BdENwQjBsQztZQXNDZTVsQyxNQXRDZjRsQztZQXNDUXhsQyxRQXRDUndsQztZQXVDSyxrQ0FBMkIsY0FEeEJ4bEM7WUFDSDtzQkFDQ3VpQyxZQUFRdWxDO2VBQUssMkJBN3VCTmtJLE9BNnVCUHp0QyxNQUFRdWxDLEdBQW1DO1dBQ1A7b0JBekM3Q0E7b0JBc0M2QnRwRTtvQkF0Q3RCOHdFO29CQXNDVzF2RTtvQkFBS0U7b0JBRW5CbXdFOzZCQTd1QmlCbkk7c0JBQW9ELDBCQUEzQixrQkFBOUJrSSxPQUFLbEk7O1dBZ3ZCYjtZQURpQnBwRSxPQTFDdEI4bUM7WUEwQ2dCdmxDLE9BMUNoQnVsQztZQTBDV3psQyxNQTFDWHlsQztZQTBDSXJsQyxRQTFDSnFsQztZQTJDSyxrQ0FBMkIsY0FENUJybEM7WUFDQztzQkFDQ29pQyxZQUFRdWxDO2VBQUssMkJBL3VCVm9JLE9BK3VCSDN0QyxNQUFRdWxDLEdBQW1DO1dBQ1A7b0JBN0M3Q0E7b0JBMEN5QnBwRTtvQkExQ2xCNHdFO29CQTBDT3Z2RTtvQkFBS0U7b0JBRWZrd0U7NkJBL3VCYXJJO3NCQUFnRCw0QkFBM0Isa0JBQTFCb0ksT0FBS3BJOztrQkFtc0JkdGlDOzs7a0JBOEMwQzVtQyxRQTlDMUM0bUMsU0E4Q29DK0ksT0E5Q3BDL0ksU0E4QytCbmxDLE1BOUMvQm1sQztxQkE2Skg2cEM7dUJBN0pBdkg7dUJBOEM2Q2xwRTt1QkE5Q3RDMHdFO3VCQThDMkJqdkU7dUJBQUtrdUM7dUJBL2J2Q3krQjt1QkF0VUFqQzs7O2tCQTB3QjRDbHNFLFFBbkR6QzJtQyxTQW1EbUNtSixPQW5EbkNuSixTQW1EOEJqbEMsTUFuRDlCaWxDO3FCQTZKSDZwQzt1QkE3SkF2SCxHQW1ENENqcEUsUUFuRHJDeXdFLFFBbUQwQi91RSxNQUFLb3VDLE9BemdCdEMwOUIsZUFqUUF0Qjs7a0JBd3dCa0Jwc0UsUUFqRGY2bUMsU0FpRFNwbEMsT0FqRFRvbEMsU0FpREl0bEMsTUFqREpzbEM7cUJBNkpINnBDO3VCQTdKQXZILEdBaURrQm5wRSxRQWpEWDJ3RSxRQWlEQXB2RSxNQUFLRSxPQXZpQlo2ckUsV0FqT0FsQjs7O1lBNHdCV2pzRSxRQXJEUjBtQztZQXFERzdrQyxNQXJESDZrQztZQXNEQzRxQztpQ0FBU3RJO2VBdk9QO29DQXVPT0E7Z0JBdk9QO3lCQUtKOWlFOzsrQkFDQSxVQUNFLHlCQUZGQTtlQUdKLHFCQVBJdW1CLEVBc09XdThDLEdBQWlCO2tCQXVHOUJ1SCxlQTdKQXZILEdBcURXaHBFLFFBckRKd3dFLFFBcUREM3VFLFFBQ0Z5dkUsT0E1ekJKeEY7O1dBNjBCQSxJQURNOXBFLFFBdEVIMGtDO1dBdUVBLGdCQXZFSHNpQyxTQUFHdGlDLE1Bc0VHMWtDO1dBRUQ7O2VBRWdCQyxRQTFFbEJ5a0MsU0EwRWFULE1BMUViUztXQTJFSCxzQmpEcDJDTCxPaUQwZlNrbEMsV0EreEJKNUMsVUEwRWdCL2lDO2VBMUViUyxNQTBFa0J6a0M7OztlQUdGQyxRQTdFaEJ3a0MsU0E2RVcva0MsSUE3RVgra0M7V0E4RUgsV0E5RUFzaUMsR0E2RWNybkU7ZUE3RVgra0MsTUE2RWdCeGtDOzs7ZUFJU0UsUUFqRnpCc2tDLFNBaUZrQjlrQyxNQWpGbEI4a0MsU0FpRlNsRCxRQWpGVGtEO1dBa0ZLLGlCQUFpQixpQkFEYmxELFNBakZad2xDO1dBbUZRLElBQUp4bEUsRUFBSSxhQW5GUndsRTtXQW1GUTthQUVGLGdDQUZGeGxFLEVBRmlCNUIsT0FHakJvdEM7Ozs7YUFFa0IsZUFGbEJBLE1BRWtCLFVBQVBuZ0M7V0FFSixVQUpQbWdDLE1BSU8sV0F4RlhnNkIsR0FpRjRCNW1FLFFBakZyQm91RTs7ZUF5RnVCbHVFLFFBekYzQm9rQyxTQXlGb0I1a0MsUUF6RnBCNGtDLFNBeUZXOUMsVUF6Rlg4QztXQTBGSyxpQkFBaUIsaUJBRFg5QyxXQXpGZG9sQztXQTJGUSxJQUFKajFELElBQUksYUEzRlJpMUQ7V0EyRlE7YUFHYzswQ0FIbEJqMUQ7Y0FHa0I7Y0FDQyw0QkFKbkJBO2NBSW1CO2NBY25CLGtCQWRZazhCLE1BY0ssVUFBVyxLQXBCVG51QztjQW1CbkIsaUJBZFk2dEMsTUFjSSxVQW5CRzd0QztjQUdkd3RDO2NBQUxIOzs7bUNBb0JKO2FBRnNCOzs2QkFBUGtZO2NBbEJOL1g7Y0FBTEg7V0FxQkU7c0JBckJGQSxNQURBcDdCO21CQXNCRSxXQWpITmkxRCxHQWlIb0IsV0FyQlgxNUIsTUFIcUJodEMsU0F6RnZCa3VFO2tCQXlEUDtrQkFFQTs7V0E0RTRCO1lBRElqdUUsUUF0STdCbWtDO1lBc0lhN29DLGVBdEliNm9DO1lBdUl5Qiw4QkFEWjdvQztXQUNoQixzQmpEaDZDTCxPaUQwZlMrdEUsV0EreEJKNUM7V0F1STRCLElBdkl6QnRpQyxNQXNJNkJua0M7OztvQkF0STdCbWtDOztpQkF5STBDaGtDLFFBekkxQ2drQyx5QkF5SStCaUs7YUFDbEMsV0ExSUFxNEI7YUEwSW1CLFdBMUluQkE7YUEySWMsc0JBRm9CcjRCLE1BQVdqdUMsU0F6STFDZ2tDOztlQTRJMEM5akMsUUE1STFDOGpDLHlCQTRJK0J1SztXQUNsQyxXQTdJQSszQjtXQTZJbUIsV0E3SW5CQTtXQThJYyxzQkFGb0IvM0IsT0FBV3J1QyxTQTVJMUM4akM7OztXQStESCxJQURPOEgsU0E5REo5SDtXQStESCxHQS9ETzhwQzthQWlFSztjQURJUCxhQWhFVE87Y0FnRUNULE9BaEVEUztjQWlFSyxhQURKVCxPQWhFUi9HO2FBa0VhLFVBRExybEUsRUFDSyxXQWxFYnFsRSxHQThET3g2QixTQUVTeWhDO1dBSVo7O29CQXBFRHZwQzs7YUFvSFk7Y0FEaUQzakM7Y0FBWnd1RTtjQUExQmx1QyxXQW5IdkJxRDtjQW9IWSxrQ0FEcUM2cUM7Y0FDckM7O2NBQ0g7YUFDWix1QkFIMEJsdUMsY0FDdEJtdUMsT0FDQTU2QixRQXJISm95QjthQW9IZSxJQUdQLGlCQXZIUkEsSUF1SFEsZUFIQ25pQyxNQUR1RDlqQzthQU12RCxVQUZMMHVFLElBRUssV0F6SFR6SSxHQXdISTBJLFdBeEhHbEI7V0EySEs7WUFEd0IzdEUsUUExSGpDNmpDO1lBMEh1QmxrQyxTQTFIdkJra0M7WUEySFM7V0FDWix1QkFGMEJsa0MsV0FDdEJpaEMsTUEzSEp1bEM7V0EySFksSUFFUjN5QyxJQUFJLGFBN0hSMnlDO1dBOEhTLFVBREwzeUMsSUFDSyxXQTlIVDJ5QyxHQTBIb0NubUUsUUExSDdCMnRFOztXQWdJSztZQURlbjNCLFFBL0h4QjNTO1lBK0hlL2pDLFFBL0hmK2pDO1lBZ0lTLGtCQWhJWnNpQyxHQStIa0JybUU7V0FFTCxVQURUdTZCLE1BQ1MsV0FqSWI4ckMsR0ErSDJCM3ZCLFFBL0hwQm0zQjs7V0FtSVAsWUFuSUc5cEMsU0FtSUssc0JBbklSc2lDO1dBb0lTLFVBRExockQsSUFDSyxXQXBJVGdyRCxHQWtJZTF2QixRQWxJUmszQjs7V0FpSnFCO1lBRFJtQixRQWhKakJqckM7WUFnSlk1akMsSUFoSlo0akM7WUFpSnlCLHVDQURiNWpDLElBQUs2dUU7WUFDUTtZQUNoQixtQkFsSlozSSxHQWlKcUJ4M0IsT0FqSmRnL0I7V0FrSkssWUFDWSxJQUFib0Isb0JBQWEsT0FBYkE7V0FDRjtrQkF2RlQsbURBMkZHO0lBaGEwQixTQTBjN0JDLE9BQU83SSxHQUFHOEk7VUFBaUJwd0UsYUFBTGlpQztlQUNoQm91QyxNQUNGL3VFLEVBQUVnbUQ7WUFBRm5ELE1BQUVtc0I7UUFBUTthQUFSQTtZQUNpQjthQUFaN3VFLEVBREw2dUU7YUFDRXJ1RSxFQURGcXVFO2FBQ2lCLGVBRG5CbnNCLElBQ0lsaUQ7YUFESmtpRDthQUFFbXNCLE9BQ0s3dUU7O1VBQ0YsT0FGTDBpRCxJQUVNO2VBRVI5ckIsRUFBRXkyQyxRQUFReHRFO1FBQ1osWUFQT2dtRTtRQU9QO1VBQ2UsdUJBUlJBLEdBQWVybEMsSUFNbEI2c0M7Y0FHQXlCOzs7Ozs7Ozs7Ozs7Ozs7OzthQUNpQnBqRSxJQURqQm9qRTs7Y0FFQTtnQkFBWSxJQURLcGpFLElBQ0Usa0JBQWtCLGNBWGRuTjs7b0NBU3ZCdXdFOzswQkFJYSxJQUFSanBCLGFBQVEsYUFQTGhtRCxFQU9IZ21EO1FBQ00sSUFBUGlwQjtRQUFPLGtCQWRMSCxHQUFIOUksR0FjQ2lKLElBQWdCO2FBNVRwQi9CLG9CQW9URm4yQyxFQU5vQjRKO0lBMWNPLFNBK2Q3QnV1QyxPQUFPbEosR0FBR3JsQyxLQUFNLGNBQVRxbEMsR0F2V1B3RyxnQkF1V1U3ckMsSUFBb0M7SUEvZGpCLFNBaWU3Qnd1QyxRQUFRM3VFLEVBQUVzdUUsR0FBR251QyxLQUFjLDRCQUFuQm5nQyxHQUFFc3VFLEdBQUdudUMsSUFBNkM7SUFqZTdCLFNBa2U3Qnl1QyxPQUFPNXVFLEVBQUVtZ0M7TUFBYyw0QkFBaEJuZ0MsR0ExV1Bnc0UsZ0JBMFdTN3JDLElBQTBEO0lBbGV0QyxTQW9lN0IwdUMsTUFBTTF1QyxLQUFNLGNBOW5DVjZtQyxNQWt4QkZnRixnQkE0V003ckMsSUFBK0M7SUFwZXhCLFNBeWU3QjJ1QyxjQUdFdEosR0FBR3VKLE9BQU92dkU7TUFDSixpQnBDMTVDQXNCLFFvQ3k1Q04wa0U7TUFFUSxJQUFOdG5FLElBQU0sYUFGUnNuRTtNQUVRO1FBRUosaUNBRkZ0bkUsSUFGQzZ3RSxRQUdENXVDOzs7O1FBRWtCLGVBRmxCQSxJQUVrQixVQUFQOTBCO01BQ2Ysa0JBTlk3TCxFQUdSMmdDLElBR0U7SUFsZnVCLFNBcWY3QjZ1QyxjQUdFaHZFLEVBQUUrdUUsT0FBT3Z2RTtNQUFtQixtQ0FBNUJRLEdBQUUrdUUsT0FBT3Z2RSxFQUFvRDtJQXhmbEMsU0EyZjdCeXZFLG1CQUFtQmp2RSxFQUFFbWdDO01BQ3ZCLGNBQXdEaGdDLEdBQUssT0FBTEEsQ0FBTTtNQUFoRCxnQ0FBUSxjQURESCxZQUFFbWdDLFNBQ3dDO0lBNWZoQyxTQStmN0IrdUMsVUFBVWx2RTtNQUNaLGNBQXFDRyxHQUFLLE9BQUxBLENBQU07TUFBcEMsb0NBQVEsSUFESEgsc0JBQ2dDO0lBaGdCYixTQW9nQjdCbXZFLFFBQVFwckUsR0FBR3VxRSxHQUFHbnVDLEtBQWMsZ0NBQXBCcDhCLElBQUd1cUUsR0FBR251QyxJQUFvRDtJQXBnQnJDLFNBcWdCN0JpdkMsT0FBT3JyRSxHQUFHbzhCO01BQWEsZ0NBQWhCcDhCLElBN1lQaW9FLGdCQTZZVTdyQyxJQUFnRTtJQXJnQjdDOzs7O1FBMXBCM0I2bUM7UUFhQUc7UUFDQUM7UUFNQUU7UUFQQUg7UUFDQUM7UUF0SEFYO1FBV0FDO1FBNkdBVztRQTFMQTFCO1FBT0FDO1FBRUFDO1FBaUtBbUI7O09BeW5DRjBIO09BR0FFO09BRUFDO09BMUJBUjtPQXVCQU07T0FRQUc7T0FZQUU7T0FNQUM7T0FJQUM7T0FNQUU7T0FEQUQ7SUFwZ0I2QjthQzUvQjdCRSxTQUFTNXNFLEtBQUsvQyxHQUNoQixpQ0FEVytDLEtBQUsvQyxFQUNzQjthQUVwQzR2RSxtQkFBbUI3c0UsS0FDakIwc0I7TUFDVSxJQUFWeGtCLEtBQVUsYUFEVndrQjtNQUVKLGlDQUhxQjFzQixLQUVqQmtJLEtBQzBCOzJCQU41QjBrRSxTQUdBQzs7b0JDQUtsa0UsR0FDVSxJQUFibWtFLElBQWEsVUFDakIsc0JBRElBLElBQ0k7UUFZTkMsd0JBVUFDLHNCQU9BQztpQ0Flb0IxdkU7TUFDdEIsMENBRHNCQSxXQUN0Qjs7WUFDQTFFO1FBQ0U7VUFBZ0MseUJBSFowRSxFQUV0QjFFO1VBQ2tDLGlCQUY5Qm9KO1VBRThCLFNBRGxDcEo7OztNQUlBLFVBTElvSjtNQUFKLElBT0lpckUsaUJBUEFqckU7TUFTSixPQUZJaXJFLEdBRUs7YUFLMkJDLFdBQVN6dkUsRUFBS0MsR0FBSSwyQkFBVEQsRUFBS0MsRUFBZTt5Q0FBN0J3dkU7YUFJQUMsV0FBUzF2RSxFQUFLQyxHQUFJLDJCQUFURCxFQUFLQyxFQUFlO0lBZ0N4Qzt1Q0FoQ1d5dkU7S0FHREM7O0tBZ0JqQ0Msb0JBckRBTDtLQStEQU07S0FHdUI7YUFJbkJFLFNBQVNwd0UsR0FDZixXQURlQSxFQUVmLFVBRmVBLDZCQUVPO0lBTkcsU0FRdkJxd0UsVUFBVUM7TUFDWjs7V0FEWUE7T0FHRSx3QkFEVi9zRSxxQkFWRjRzRTtNQVlGLGlCQURJSSxnQkFEQWh0RTtNQURKLFdBSXNCLFNBSGxCQTtNQUdKLGlCQUZJZ3RFO01BRkosSUFJQSxLQUhJaHRFLFlBR0o7O1lBQ0EvSDtRQUF3QjtVQUF5QjtpQkFBakRBO1dBQWlELHNCQU5yQzgwRSxXQU1aOTBFO1VBQXdCLGlCQUhwQiswRTtVQUc2QyxTQUFqRC8wRTs7O01BQ0EsVUF4RkVtMEUsb0JBb0ZFWSx1Q0FXMEI7SUF0QkwsU0F3QnZCQyxTQUFPQyxNQUFNQztNQUNmLGFBRFNELG9CQUNULEtBQUlFLFdBRFdEO01BQ2Y7UUFFaUIsSUFBWEUsU0FBVyxlQUhGRixTQXhCYlA7UUE0QkEsT0FKT00sV0FHSEcsV0FGRkQ7UUFHRixXQURJQztRQUFXOzs7TUFsQmpCLFdBcUJFO0lBOUJ1QjthQTRDdkJHLFdBQVdDO01BQ2IsSUFBSWxkLE1BRFNrZDtNQUViLFNBRmFBLE1BQ1RsZDtNQUNKLE9BRElBLEtBRUM7SUEvQ29CLFNBaUR2Qm1kLGlCQUFpQkQsTUFBTXJ1RTtNQUN6QjtRQUNFLDhCQUZ1QkEsS0FBTnF1RTs7OztVQUlMLElBQVJFLE1BQVEsV0FKS0Y7VUFLUSwrQkFMRnJ1RSxLQUluQnV1RSxNQUphRjtVQU1TLDhCQUZ0QkUsUUFKYUY7VUFNUyxPQUZ0QkU7UUFSTixXQVdPO0lBeERrQixTQTBEdkJDLGtCQUFrQkgsTUFBTUk7TUFDaEIsNEJuRHBMYixPbUQwS0tILGlCQVNrQkQsYUFBTUksTUFDYztJQTNEZixTQTZEdkJDLFdBQVdMLE1BQU1FLE1BQU1JO01BQ3pCO01BQ0csMkJBRmdCSixNQUFORjtnQkE1QmIsU0E0QmFBLE1BQU1FO2dCQTNCbkIsaUJBMkJhRixTQUFNRTs7Z0JBQU1JOztnQkFBWk4saUJBQU1FLE1BQU1JLFNBQVpOLFlBS2lEO0lBbEVyQyxTQW9FdkJPLFdBQVdQLE1BQU1FO01BQ25CO1FBQUksZUFEZUEsTUFBTkY7Ozs7U0FFSyx3QkFGTEEsU0FBTUU7bUJBRW9CO0lBdEVkLFNBd0V2Qk0sVUFBUUMsS0FDVixhQURVQSxNQUNxQixVQURyQkEsSUFDc0M7SUF6RXZCLFNBMkV2QkMsT0FBT1YsTUFBTVcsS0FBS0MsV0FBV0M7TUFDcEI7d0JBRElGO09BRUUsdUJBRkdDO09BR0Ysd0JBSGFDO09BSVY7O3lCbkR4TXhCLE9tRDBLS1osaUJBMEJPRCxhQUVMZTtPQUdrQjs7eUJuRHpNekIsT21EMEtLZCxpQkEwQk9ELGFBR0xnQjtNQUVrQjs7O1VBTGJoQixvQ0FJTGlCLGVBSEFIO09BREtkO01BQ0UsSUFJVyxrQkFMYkE7TUFLYSxjQU9ibUIsSUFBSTFuRSxLQUFLMm5FO1FBQ1QsV0FEQUQsSUFYTEwsUUFZNEIsbUJBRHZCSyxJQUFJMW5FLEtBQUsybkUsWUFDZ0Q7TUFGaEU7O01BTUY7aUJBQ09HLElBQUlyQjtVQUNLLGlDQURUcUIsSUFBSXJCLE1BSFBtQjtVQUlZLFNBSFpDO1VBR1k7WUFHRCw2QkFKSnBCLE1BbEJGRjs7Ozs7VUFxQkQsaUNBSEdFO1VBR0gsUUFFVztRQXBCZmM7UUFFQUU7TUFvQko7aUJBQ09LLElBQUlyQjtVQUNLLGlDQURUcUIsSUFBSXJCLE1BWFBtQjtVQWFhLGlDQUZObkIsUUFWUG9CO1VBWWEsUUFBOEI7UUExQjNDUDtRQUVBRTtNQXFCSixXQVZJSTtNQVVKLFdBVElDO01BTEYsSUFjRixZQXpCU3RCO01BaUNOOzs7aUJBQ091QixJQUFrQkM7VUFBdkIsSUFBT0wsSUFBRkksT0FDQyxXQURDSixJQTlCUkYsZ0JBOEJ3Qk8sTUFBbEJELElBQWtCQyxHQUNnQzs7O01BRnpELFFBSUk7SUFoSGtCLFNBa0h2QkMsTUFBTXpCO01BRU47Z0JBRk1BO09BRU47Ozs7OztNQUV1QixjQUpqQkE7TUFNTDs7O2lCQUNPOXdFLEVBQUVOO1VBQWdCLDZCQUFoQkEsRUFQSm94RTtVQU9vQiwwQkFBaEJweEUsT0FBRk0sRUFBNEM7UUFOVnd5RTtRQUF3QmY7TUFLakUsV0FMRVU7TUFLRixXQUxXQztNQUNaLFNBRk10QjtNQVlMOzs7aUJBQ091QixJQUFrQkM7VUFBdkIsSUFBT0wsSUFBRkksT0FDQyxXQURDSixJQVo0Q1AsWUFZNUJZLE1BQWxCRCxJQUFrQkMsR0FDNEI7O1FBYmhDRztNQVdyQixRQUlvQjtJQWxJRSxTQW9JdkJDLFNBQVM1QjtNQUNYLElBQUlsZCxNQURPa2QsU0FDWCxXQUFJbGQsY0FBSixPQUFJQSxLQUVDO0lBdklvQixTQXlJdkIrZSxhQUFhN0IsTUFBTXJ1RTtNQUNyQjtRQUFJLDZCQURpQkEsS0FBTnF1RTs7OztVQUdELElBQVJsZCxNQUFRLFNBSENrZDtVQUlWLHdCQUpnQnJ1RTtXQUljLDhCQUpkQSxLQUdmbXhELE1BSFNrZDtVQUtiLE9BRklsZDtRQVBOLFdBU087SUE5SWtCLFNBZ0p2QmdmLFNBQVNyQixLQUNSLGtCQURRQSxjQUM0QjtJQWpKZCxTQW1KdkJzQixzQkFBc0IvQixNQUFNZ0MsTUFBTUM7TUFDeEI7d0JBRGtCRDtPQUNsQixPQUFSRTtPQUFRLE1BRHdCRDtPQUcxQixtQkFETkUsU0FBZ0NDO09BQzFCLEtBRE5EO09BQ007O1lBQ1ZweEU7UUFDRTtVQUFXOzs2QkFMV2l2RSxNQUtZLGlCQUpoQ2tDLFFBR0pueEU7VUFDRSxpQkFGRWdELElBQ0poRDtVQUNhLFNBRGJBOzs7TUFIWSxJQU1aLEtBTG9DcXhFLGNBS3BDOzs7UUFDRTtVQUFrQjtnQkFEcEI1M0UsSUFMSTIzRTtXQU1nQixrQkFSSW5DLE1BUWUsaUJBUkhpQyxLQU9wQ3ozRTtVQUNFLGlCQUxFdUo7VUFLZ0IsU0FEcEJ2Sjs7O01BR0EsT0FQSXVKLEdBT0Q7SUE3SnNCLFNBK0p2QnN1RSxhQUFhckMsTUFBTXJ1RTtNQUNyQjtRQUFJLDZCQURpQkEsS0FBTnF1RTs7OzhCQUNpQzttQkFBWTtJQWhLbkMsU0FrS3ZCc0MsY0FBY3RDLE1BQU1JO01BQ1osNEJuRDVSYixPbUR3UktpQyxhQUdjckMsYUFBTUksTUFDYztJQW5LWCxTQXFLdkJtQyxnQkFBZ0J2QyxNQUFNdHhFLEdBQ3hCLGNBRHdCQSxFQUFOc3hFLFVBQ2xCLFFBQTJDO0lBdEtsQixTQW1MdkJ3QyxhQUFhQztNQUNmLFNBRGVBLGVBQ21CO01BRXZCO3NDQUhJQTtPQUlILGdCQURSQztNQUVKO2lCQUNPbDRFLEVBQUUrMkU7VUFDTCxJQUFJSixLQUREMzJFO1VBRXVCLCtCQUZyQisyRSxJQUNESixJQUhKbkI7VUFLMEIsOEJBRnRCbUIsTUFISm5CO1VBSzBCLFFBQXdDO1FBVHZEeUM7TUFLZixPQURJekMsS0FPQztJQTlMb0IsU0FnTXZCMkMsV0FBVzNDO01BQ2IscUJBMUpFRixvQkF5SldFO01BRVMsZUFGVEE7TUFHVztlQUhYQTtxQkFHVyxpQkFIWEEsdUNBR2tEO0lBbk10QyxTQXFNdkI0QyxTQUFTQyxJQUFJWixLQUFLckIsV0FBV0Msa0JBQStCOTVDO1VBQUxwSyxhQUFWbW1EO01BQy9DLE9BRFdELElBQUlaLEtBQUtyQixXQUFXQztNQUMvQixJQUNJOWhFLEtBRjBEZ29CLElBR2hELFdBSGlDKzdDLFFBQXBDRCxJQUE4Q2xtRCxLQUdmLFdBSEttbUQsUUFBcENEO01BSVgsTUFKV0E7TUFDWDtPQUdBO09BTUssY0FWMEJoQztPQVE1Qjs7O29CQUNPa0MsSUFBMkIsa0JBVDFCRixJQVMwQixpQkFUMUJBLElBU0RFLElBQStEOztPQUZsQyxjQVB4QmQ7TUFNWjs7bUJBSkNsakU7O2lCQUtNLHFCbkRyVWIsT21Ed1JLc2pFLGFBc0NTUTs7SUFyTWMsU0FpTnZCRyxXQUFXQyxVQUFVQztNQUNYLHVCQURDRCxXQUVFLG9CQUZRQyxXQUNuQmxEO01BRUosV0FGSUE7TUFHSCxxQkFGR21ELFlBRm1CRCxXQUVuQkMsV0FFcUQ7SUFyTmhDLFNBME52QkMsaUJBQWlCSCxVQUFVQyxXQUFXRztNQUM1Qix1QkFET0osV0FFSixvQkFGY0MsV0FDekJsRDtNQUVKLFdBRklBO01BRUosZ0JBSDZCa0Q7TUFHN0IsZ0JBRElDO01BQ0osUUFFK0I7SUEvTk4sU0FpT3ZCRyxZQUFZQztNQUNkLFNBQUlDLGFBQWlCLG9DQURQRCxJQUM2QztNQUEzRCxVQUFJQyxvQkFDdUM7SUFuT2xCLFNBdU92QkMsY0FBY3pEO01BRU4sSUFBTnRtRSxJQUFNLG1CQUZNc21FO01BSWhCLFNBSmdCQTtNQUtSLHNCQUhKdG1FLElBR2dCO0lBNU9LLFNBOE92QmdxRSxrQkFBa0JDLE1BQU0zRDtNQUMxQixHQURvQjJELE1BQ2EsT0FEYkE7TUFHUixJQUFOanFFLElBQU0sbUJBSGNzbUU7TUFLeEIsU0FMd0JBO01BTWhCLHNCQUhKdG1FLElBSUg7SUFyUHNCLFNBdVBuQmtxRSxPQUFPbHFFO01uRGhYaEI7OztjbURtWFE1SSxhQUFIcEM7VUFBUSxXQUFSQSxFQUhXZ0w7c0JBR1I1STs7UUFESztJQXpQZSxTQTRQdkIreUUsaUJBQWlCbnFFLElBQUlzbUU7TUFDdkIsVUFEdUJBLFNBQ3ZCLFdBQUk4RDtNQUFKLFlBRUUsT0FIaUJwcUUsSUFDZm9xRSxXQUVjO0lBL1BPLFNBaVF2QkMscUJBQXFCSixNQUFNanFFLElBQUlzbUU7TUFDakMsR0FEdUIyRCxNQUNVLE9BREpqcUU7TUFDYSxJQUNwQ29xRSxNQUYyQjlEO01BQ1MsU0FDcEM4RCxNQUNnQixPQUhPcHFFLElBRXZCb3FFO01BQ2dDLE9BSFRwcUUsR0FLMUI7SUF0UXNCLFNBd1F2QnNxRSwrQkFBbUNMLE1BQU0zRDtNQUMzQyxHQURxQzJELE1BQ0osT0FESUE7TUFFekIsSUFBTmpxRSxJQUFNLGNBRitCc21FO01BR3pDLGlCQURJdG1FLElBRnFDc21FO01BR3pDLE9BREl0bUUsR0FHSDtJQTdRc0IsU0F3U3ZCdXFFLFdBRUs5N0Q7TUFGTSxHQUVOQSxNQUFVLE9BQVZBLFNBREksNkJBQ2lCO0lBMVNILFNBK1N2Qis3RCxXQUFXbDFFLEVBQUVtMUUsS0FBSzdtRDtNQUNwQix1QkFBSXZwQixLQUFKO1lBRGEvRTtZQUdieEU7UUFDRTttQkFGRXFFO1VBRWUsMkJBSkpzMUUsS0FHZjM1RTtVQUNFLFNBREZBO2FBSGF3RSxNQUdieEU7O01BRkEsU0FDSXFFO01BbEJrQixHQWdCRnl1QixRQWRILHdCQWVidnBCO01BaEJPLDZCQXNCUjtJQXRUc0IsU0EyVXZCcXdFLGNBQWNDLEtBbkJJRjtNQW9CZCxJQXBCbUJHLFNBb0JuQixXQURVRDtNQUNWLEdBcEJtQkM7UUFzQnZCLFFBdEJrQkgsd0JBQUYzNUUsTUFBTzh5Qjs7UUFDekI7a0JBRGtCOXlCO1lBRVIseUJBRlUyNUUsS0FBRjM1RSxVQUdFKzVFLFNBSEtqbkQ7WUFJdkI7Y0F2QlUsR0FzQlFpbkQ7bUNBRGhCeDBCO2tCQUdNLElBTGV5MEIsU0FLZixXQUZVRDtrQkFFVixHQUxlQztvQkFRakIsUUFSVWg2RSxnQkFBTzh5QjtrQkFNVjtnQkFuQkYsR0FnQk9pbkQ7a0JBZEgsU0FjR0E7O2tCQWRILElBWEMzMUUsS0F3QmRtaEQ7a0JBeEJrQixHQXlCRncwQjtvQkF2QkgsY0FGQzMxRSxTQWFoQnMxRSxXQVNnQjE1RSxVQUFFMjVFLEtBdEJGdjFFO2tCQUNQO2dCQVNBO2NBTkE7VUFtQkcsT0FEVzB1QjtNQXdCdkIsa0JBeEJrQjZtRCw2QkFtQkpFLEtBSzhCO0lBaFZyQixTQW1ZdkJJLFVBQVV6RTtNQUNKLGlCQURJQTtNQUdzQjs7O1NBRjlCaHhFOzs7Z0JBRThCLGlCQUh0Qmd4RSwwQ0FDUmh4RTtZQUNBOFEsSUFFVSxXQUpGa2dFO3dCQUVSbGdFLElBREE5UTtNQUtKLGlCQU5ZZ3hFLFNBRVJsZ0U7TUFJSixPQUpJQSxHQUtIO0lBMVl3QixTQThkdkI0a0UsWUFBWTFFLE1BQU1UO01BQ3BCLFFBRG9CQSxtQkFDcEI7O1dBeERvQi8wRSxPQXdEaEIrSDtVQUVGO2dCQTFEa0IvSDtXQTBETix1QkFITSswRTtXQXREcEI7O2NBQWM7dUJBRE0vMEU7Y0FDUSx3QkFzRFIrMEUsdUJBdERnQjtXQUM5QjtvQkFtREpvRjs7O2NBbER3Qjs7ZUF1RFFDLE1BN0lsQixTQUFKdjFFLEduRDdjZixnQm1ENmM0QnFLLEtBQVEsT0FBckJySyxDQUFzQixHQUF0QkE7OztjQXVGVTs7ZUFzRFl1MUUsTUE1SWxCLFNBQU41MUUsR25EOWNiLGdCbUQ4YzRCMEssS0FBTyxPQUFQQSxRQUFmMUssRUFBNEMsR0FBNUNBOzs7Y0F1Rlk7O2VBQWtCO2VBcURONDFFO2dCQTFJbEMsU0FEVWx0RSxFQUFFMUksR25EL2NmLGdCbURnZFkwSyxLQUNQLE9BRE9BLFFBRENoQyxPQUFFMUksRUFFbUQ7a0JBRnJEMEksRUFBRW9JOzs7Y0F1RlU7O2VBb0RZOGtFO2dCQXhJbEIsU0FBTDUxRTttQm5EbGRkLGdCbURrZDRCMEssS0FBTyxrQkFBUEEsV0FBZDFLLEdBQWMwSyxJQUFxQjtrQkFBbkNxRzs7O2NBcUZXOztlQW1EWTZrRTtnQkF2SWxCLFNBQU41MUUsR25EbmRiLGdCbURtZDRCMEssSUFBSXJLLEdBQUssUUFBeEJMLEtBQW1CSyxFQUFLLFFBQXdCO2tCQUFoRHcxRTs7O2NBcUZZOztlQUFrQjtlQWtETkQ7Z0JBdEloQixTQUFObDJFLEVBQUVXLEduRHBkakIsZ0JtRG9kOEJxSyxLQUFRLGtCQUF2QmhMLEVBQUVXLEVBQXdCO2tCQUExQlgsRUFBRTZaOzs7Y0FxRlE7O2VBQWtCO2VBaUROcThEO2dCQXJJaEIsU0FBUmwyRSxFQUFFTTttQm5EcmRmLGdCbURxZDhCMEssS0FBTyxrQkFBeEJoTCxFQUFpQmdMLFFBQWYxSyxHQUFnRDtrQkFBbER1aUQsSUFBRXV6Qjs7O2NBc0ZBOztlQUFtQjtlQUFrQjtlQStDZkY7Z0JBbklsQyxTQURVbDJFLEVBQUVnSixFQUFFMUk7bUJuRHRkakIsZ0JtRHVkWTBLO3FCQUNQLGtCQUZRaEwsRUFDRGdMLFFBREdoQyxPQUFFMUksR0FFcUQ7a0JBRnpEd2lELElBQUVsL0IsSUFBRXl5RDs7O2NBdUZROztlQUFrQjtlQTZDTkg7Z0JBakloQixTQUFQbDJFLEVBQUVNO21CbkR6ZGhCLGdCbUR5ZDhCMEs7cUJBQVMsa0JBQXpCaEwsRUFBeUIsV0FBVGdMLFdBQWQxSyxHQUFjMEssS0FBeUI7a0JBQXpDZzRDLElBQUVzekI7OztjQXNGRDs7ZUFBa0I7ZUFBa0I7ZUEyQ2RKO2dCQWhJUixTQUFSbDJFLEVBQUVXLEVBQUVDO21CbkQxZHpCLGdCbUQwZHNDb0ssS0FBUSxrQkFBekJoTCxFQUFFVyxFQUFFQyxFQUEwQjtrQkFBOUJ1aUQsSUFBRUUsSUFBRXppRDs7O2NBd0ZWOztlQUFrQjtlQUFrQjtlQXdDZHMxRTtnQkEvSFIsU0FBVmwyRSxFQUFFVyxFQUFFTDttQm5EM2R2QixnQm1EMmRzQzBLLEtBQU8sa0JBQTFCaEwsRUFBRVcsRUFBaUJxSyxRQUFmMUssR0FBa0Q7a0JBQXREb2pELElBQUVGLElBQUUreUI7OztjQTBGUjs7ZUFBa0I7ZUFBa0I7ZUFBbUI7ZUFxQ2pDTDtnQkExSGxDLFNBRGdCbDJFLEVBQUVXLEVBQUVxSSxFQUFFMUk7bUJuRC9kekIsZ0JtRGdlWTBLO3FCQUNQLGtCQUZjaEwsRUFBRVcsRUFDVHFLLFFBRFdoQyxPQUFFMUksR0FFK0M7a0JBRnJEc2pELElBQUU0eUIsSUFBRWxqRCxJQUFFbWpEOzs7Y0F5RlY7O2VBQWtCO2VBQWtCO2VBa0NkUDtnQkE5SFQsU0FBUmwyRSxFQUFFVyxFQUFFTDttQm5ENWR4QixnQm1ENGRxQzBLO3FCQUFXLGtCQUE1QmhMLEVBQUVXLEVBQTBCLFdBQVhxSyxXQUFiMUssR0FBYTBLLEtBQTJCO2tCQUE1QzY0QyxJQUFFNnlCLElBQUVDOzs7Y0ErRlQ7O2VBQWtCO2VBQWtCO2VBK0JkVDtnQkE3SFYsU0FBUmwyRSxFQUFFTSxFQUFFSzttQm5EN2R2QixnQm1ENmRvQ3FLLEtBQU8sa0JBQXhCaEwsRUFBaUJnTCxRQUFmMUssR0FBRUssRUFBZ0Q7a0JBQXBEbWpELElBQUU4eUIsSUFBRUM7OztjQWlHUjs7ZUFBa0I7ZUFBbUI7ZUFBa0I7ZUE0QmpDWDtnQkF2SGxDLFNBRGdCbDJFLEVBQUVnSixFQUFFMUksRUFBRUs7bUJuRGxlekIsZ0JtRG1lWXFLO3FCQUNQLGtCQUZjaEwsRUFDUGdMLFFBRFNoQyxPQUFFMUksR0FBRUssRUFFK0M7a0JBRnJEbTJFLElBQUVDLElBQUVDLEtBQUVDOzs7Y0ErRlY7O2VBQWtCO2VBQWtCO2VBeUJkZjtnQkE1SFQsU0FBUmwyRSxFQUFFTSxFQUFFSzttQm5EOWR4QixnQm1EOGRxQ3FLO3FCQUFTLGtCQUExQmhMLEVBQTBCLFdBQVRnTCxXQUFmMUssR0FBZTBLLEtBQWJySyxFQUF3QztrQkFBNUN1MkUsSUFBRUMsS0FBRUM7OztjQXNHVDs7ZUFBa0I7ZUFzQklsQjtnQkFySFgsU0FBTjUxRSxFQUFFSzttQm5EcmV0QixnQm1EcWVtQ3FLO3FCQUFPLGtCQUFQQSxXQUFmMUssR0FBZTBLLElBQWJySyxFQUErQztrQkFBakQwMkUsS0FBRUM7OztjQWlHUDs7ZUFBa0I7ZUFvQklwQjtnQkFuSGxDLFNBRGU1MUUsRUFBRW1wQjttQm5EdGVwQixnQm1EdWVZemU7cUJBQU8sa0JBQVBBLFdBRE0xSyxHQUNOMEssWUFEUXllLEdBQ2lEO2tCQURuRDh0RCxLQUFFOXREOzs7Y0FrR0w7O2VBQWtCO2VBQWtCO2VBa0JkeXNEO2dCQWpIbEMsU0FEZTUxRSxFQUFFMEksRUFBRXlnQjttQm5EeGV0QixnQm1EeWVZemU7cUJBQU8sa0JBQVBBLFdBRE0xSyxHQUNOMEssWUFEUWhDLE9BQUV5Z0IsR0FFZ0Q7a0JBRnBEK3RELEtBQUVDLElBQUU1Z0Q7OztjQW1HUDs7ZUFBa0I7ZUFlSXEvQztnQkE5R2xDLFNBRGdCNTFFLEVBQUVtcEI7bUJuRDNlckIsZ0JtRDRlWXplO3FCQUFpQyxvQkFBakNBLFdBRFN5ZSxHQUNUemU7cUJBQWlDLGtCQUFqQ0EsV0FETzFLLEdBQ1AwSyxTQUFpRDtrQkFEMUMwc0UsS0FBRWhnRDs7O2NBa0dOLGdCQUFrQjtjQUF5QixVQVV6QzQ1QztjQVZGO2VBYXNCNEU7Z0JBNUdsQyxTQURhenNELEVBQUU5b0I7bUJuRDdlbEIsZ0JtRDhlWXFLO3FCQUFPLHlDQUREckssRUFBRjhvQixLQUFFOW9CLEVBQ3lDO2tCQUQzQ2czRSxJQUFFQzs7O2NBa0dILGdCQUFrQjtjQUF3QixVQVF4Q3RHO2NBUkY7ZUFXc0I0RTtnQkExR2xDLFNBRFd6c0QsRUFBRW5wQjttQm5EL2VoQixnQm1EZ2ZZMEs7cUJBQ1AsU0FET0EsUUFESTFLO3FCQUVYLDhDQUZTbXBCLFVBR21CO2tCQUhuQm91RCxJQUFFQzs7O2NBa0dELGdCQUFrQixZQUFrQjtjQUM3QixVQUtMeEc7Y0FORjtlQVNzQjRFO2dCQXRHbEMsU0FEV3pzRCxFQUFFemdCLEVBQUUxSTttQm5EbmZsQixnQm1Eb2ZZMEs7cUJBQ1AsU0FET0EsUUFESWhDLE9BQUUxSTtxQkFFYiw4Q0FGU21wQixVQUtxQjtrQkFMckJzdUQsSUFBRUMsSUFBRUM7OztjQWlHSCxnQkFBa0I7Y0FBeUIsVUFHekMzRztjQUhGO2VBTXNCNEU7Z0JBaEdsQyxTQURZenNELEVBQUVucEI7bUJuRHpmakIsZ0JtRDBmWTBLO3FCQUNHLG9CQURIQSxXQURLMUssR0FDTDBLO3FCQUNHLDhDQUZBeWUsVUFFNkM7a0JBRjdDeXVELElBQUVDOztlQWlHb0JqQyxNQUxoQ0Q7VUFNQSxXQUpZM0UsTUFHUkUsTUFBNEIwRTtVQUNoQzs7UUExRFksU0E0RFY7SUFwZXFCLFNBMmV2QmtDO01BQ0YsVUEvZUU1SCxlQXlDQVcsZ0JBQ0FDLGtCQXNjdUQ7SUE3ZWhDOzs7O09BNEN2QkM7T0E2RkE4QjtPQVVBRTtPQVlBTTtPQUdBQztPQWpIQXJDO09BU0FFO09BVUFJO09BUEFGO09BaWFBcUU7T0FuWkFoRTtPQXVDQWU7T0FtREFjO09BbExBdEQ7T0FnTUF1RDtPQWFBRztPQUtBQztPQVlBSTtPQVNBSTtPQU9BRTs7T0FNQUc7T0FPQUM7T0FjQUc7T0FLQUU7T0FPQUM7T0FtRUFJO09BOVpBMUY7T0E4akJBb0k7SUEzZXVCOzs7YUN0RXZCQyxlQUFleEQsSUFBSXlEO01BQ3JCO2NBRHFCQTtPQUVWLHNCQURQNXNFO09BQ08sS0FEUEE7T0FDTzs7WUFDWDVQO1FBQ0U7VUFBMEIsSUFoQ0kwOEUsTUFnQ0osaUJBSlBGLFFBR3JCeDhFO1VBOUJBLFVBRGdDMDhFO1dBQ2hDLE9BRGdDQTs7Y0FJM0I7O3lCQTJCTDE4RTsyQkEzQmE2c0QsR0FBSWhvRDtvQkFDbUIsSUFBekI4M0UsS0FMVUYsU0ErQnJCejhFO29CQTFCb0MsR0FEdkI2c0QsT0FDRjh2QixLQUVGLG9DQXFCUTVEO29CQW5CUixrQkFKRTRELEtBRE05M0UsRUFLSDt5QkFMRGdvRDtlQUFSLFFBMkJMN3NEO2VBOUJJdVUsS0FHU3M0Qzs7O2NBUVIsSUFBUXZtRDtjQU9SO2dCQVBRQTs7aUJBQVIsU0FBUUEsRUFtQmJ0RztvQnBEdERIO3NCb0RxQzZCLElBQWJpZCxJQWRRdy9ELFNBK0JyQno4RTtzQkFqQjBCLEdBRmJzRyxNQUVBMlcsSUFFRixvQ0FZTTg3RDtzQkFkUyxTQUlmLGFBSkU5N0Q7c0JBSUY7K0JBSkVBOzRDaENWWHhNLGlCZ0NVV3dNO21CQUZBM1csRUFtQmJ0RztjQW5CSyxJQVhEdVUsS0FXU2pPOzt5QkFYVGlPLEtBb0JVLFlBT0d3a0U7O1dBM0JqQixTQURnQzJEO1lBdUIzQixVQXZCMkJBLFNBQzVCbm9FLEtBc0JVLGVBS0d3a0UsSUFOTjZEOztZQUVJLE1BeEJpQkYsU0FDNUJub0UsS0F1Qk1uUTtVQUVWLFNBS0FwRSxLQTlCSXVVO1VBK0J3QixTQUQ1QnZVOzs7TUFHQSxPQWxDcUJ5OEUsSUFrQ2pCO2FBRUZJLFNBQVM5RCxJQUFJMkQ7TUFDZixVQURlQTtRQUdaLElBRE1FLE1BRk1GLFNBR1osc0JBSFEzRCxJQUVGNkQ7TUFFRiwrQ0FBaUQ7YUFpQnRERSxpQkFBaUJOLFFBQU0xc0UsRUFBRXRMO01wRGhGOUIsU29EaUZXLGFBRG1CQSxNQUFSZzRFLHNCQUFRaDRFO1FBRTNCLFNBRm1CZzRFLDJCQUVuQjs7O1VBQ0U7WUFBK0IsUUFITmg0RSxNQUUzQnhFLEdBQ3VCLHVCQUhKdzhFLFFBRW5CeDhFO1lBaEJBLFVBRDhCMDhFO2FBQzlCLFNBRDhCQTs7d0JBT25CLGFBUHlCcG5FO2lCQVF4QixPQU9heEYsTUFFekI5UCxHQVJHc1U7aUJBQ0U7MEJBREZBLEtBVGlDZ0IsUUFTakNoQjttQkFDRSxTQURGQTs7Ozs7OztjQU5BLE1BY0h0VSxLQWpCb0NzVjs7YUFDcEMsU0FEOEJvbkU7ZUFhM0IsSUFETUUsTUFacUJGLFNBYUosaUJBRGpCRSxNQUdnQjlzRSxNQUV6QjlQLEdBakJvQ3NWO1lBa0JILFNBRGpDdFY7Ozs7bUNBRUk7YUFFRmc5RSxXQUFXTixNQUFNNXNFLEVBQUV0TDtNQUNyQixVQURhazRFO1FBR1YsSUFETUUsTUFGSUYsU0FHVix3QkFETUUsTUFGVTlzRSxFQUFFdEw7TUFJZCwrQ0FBbUQ7MkJBL0J4RHE0RSxTQTJCQUc7O0lDMURpQjs7ZUFBakJDO0tBQWlCO2FBS2pCRztNQUFrQixZQUxsQkgsZUFLa0Isc0JBQXFDO0lBTHRDLFNBT2pCSSxNQUFNajJFO01BQ1Isd0JBTkU4MUUsY0FDQUM7UUFNZ0IsSUFBWkcsVUFBWSxzQkFOaEJIO1FBT0EsS0FSQUQsWUFPSUksWUFOSkg7UUFPQSxZQURJRztNQUlOLGVBWEVKLFVBQ0FDLFVBSU0vMUU7TUFNUjtjQUNXO0lBZFEsU0FnQmpCbTJFO01BQ00sSUFBSjc0RSxFQUFJLFdBZk53NEUsWUFDQUM7TUFjTSxZQWpCTkY7TUFpQk0sT0FBSnY0RSxDQUFxRTtJQWpCdEQsU0FxQmpCODRFLFdBQVdDO01BQ0csSUFBWkMsVUFBWTtNQUNoQjtpQkFBZWg1RSxHQUFLLG9DQURoQmc1RSxVQUNXaDVFLFFBQW9DO1FBRnRDKzRFO01BRWIsU0FDSUUsaUJBQWlCcnVFO1FBQ25CO1VBQUksc0NBSEZvdUUsVUFFaUJwdUU7OztnQ0FFSixVQUZJQTtVQURELFdBR0s7TUFIekIsU0FJSXN1RSxpQkFBaUJ4MkU7UUFDWCxJQUFKMUMsRUFBSSxTQURXMEM7UUFDWDtVQUNKLHNDQVBGczJFLFVBTUVoNUU7OztnQ0FFK0IseUNBRi9CQTtVQUhKLFdBSzhEO01BUGhFLFNBaUZJbTVFLGtCQUFtQjErQztRQUNyQjtVQUFNLGlCQURlQTtVQUNmOzt3Q0FFRixLQUhpQkEsTUFHcUI7VUFDUyxrQ0FBZixpQkFBaUI7TUFyRnZELFNBNEVJMitDLGNBQWUzK0M7UUFDWCxpQkFEV0E7UUFDWDs7OztZQUVGLEtBSGFBLE1BR3lCLHFDQUh6QkE7UUFJVix5QkFKVUEsS0FJYztNQWhGakMsU0E0REk0K0MsT0FjMEJyNUU7UUFiNUI7VUFBTSxpQkFhc0JBO1VBYnRCOzs7OzsyQkFNRixLQU93QkEsR0FQYywrQkFPZEE7OztnQkFUeEIsS0FTd0JBO2dCQVRjO2dCQUsxQztrQkFBTSxtQkFJc0JBO2tCQUp0Qjs7O2tEQUVGLEtBRXdCQSxHQUZjOzs7dUJBRXRDLEtBQXdCQSxHQUFjLCtCQUFkQTtrQkFDdUIsa0NBQWY7NkJBWmhDLEtBV3dCQSxHQVhjO1VBS0ssZ0NBQWYsaUJBQWlCO01BcEVuRCxTQStDSXM1RSxPQUFRNytDO1FBQ1Y7VUFBTSxpQkFESUE7VUFDSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCQUlGLEtBTE1BLE1BS2dDO1VBQzlCLDJCQUFrQixnQkFBZ0I7TUFyRGhELFNBc0RJOCtDLFdBSU12NUU7UUFIRixpQkFHRUE7UUFIRjs7O1lBRUYsS0FDSUEsR0FBYyxnQkFBaUIsVUFBVywwQkFBMUNBO1FBQ2lCO1FBQWlCO3NCQURsQ0EsRUFDcUQ7TUEzRC9ELFNBeUNJdStCLE1BQU85RDtRQUNUO1VBQU0saUJBREdBO1VBQ0g7Ozs7Ozs7Ozs7Ozs7eUJBR0YsS0FKS0EsTUFJaUM7VUFDOUIsMkJBQWtCLGdCQUFnQjtNQTlDaEQsU0FTUSsrQyxxQkF5RkUvK0M7UUF4RlI7VUFBTSxpQkF3RkVBO1VBeEZGOzs7Ozs7Ozs7Ozs7O29CQXlCRixLQStESUE7b0JBOURjO29CQW1EdEI7c0JBQU0sbUJBV0VBO3NCQVhGOzt3Q0FDUyxLQVVQQSxtQkFWTzs7MEJBRVgsS0FRSUE7MEJBUko7NEJBRU0sSUFERmxnQixJQUNFLE9BTUZrZ0I7OztrREFMa0I7OzswQkFFSixNQUpkbGdCOzt3QkFLSSxLQUVKa2dCO3dCQUYwQzs7c0JBQzNDOztvQkF4RUgsS0F5RUlBO29CQXpFSjtzQkEwRUUsbUJBREVBO3NCQUNGLGFBT0M7c0JBUEQ7O3dCQUVGLEtBSElBO3dCQUdKOzBCQUNVLGdCQUpOQTs7O2dEQUtnQjswQkFHakI7NEJBaEZDLzNCOzt3QkErRUksS0FQSiszQixVQXhFQS8zQjs7OzRDQUVrQjs7b0JBRVYsbUJBb0VSKzNCOztzQkFuRVcsS0FtRVhBLE1BbkVXLGFBTFgvM0I7b0JBTUc7O29CQU1HLEtBNEROKzNCO29CQTVETTs7NkJBMkZaaS9DLHdCQS9CTWovQztrREErQk5pL0MsaUJBL0JNai9DOzJCQTdETSxLQTZETkEsTUE3RE0sa0JBNkROQTs7Ozs7OzJCQXRGSixLQXNGSUE7Ozs7Ozs7Ozs7O29CQTVFSixLQTRFSUEsTUEzRWMsZ0JBQWlCLDBCQTJFL0JBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBM0RJLEtBMkRKQSxNQTNENkI7O2VBekJqQyxLQW9GSUEsTUFuRmMsZ0JBQWlCLHlCQW1GL0JBOztlQS9FSixLQStFSUEsTUE5RWMsZ0JBQWlCLDBCQThFL0JBO1VBMURELFNBQUk7TUF4Q2IsU0FpSUlpL0Msc0JBQWVqL0M7UUFDWCxpQkFEV0E7O1VBR2IsS0FIYUE7VUFHeUIsUUFIekJBO1VBR3lCO2lEQTNIcEMrK0MsdUJBd0hXLytDO3dDQXhIWCsrQyxnQkF3SFcvK0M7UUFJTCwrQkFBc0I7TUFySXBDLFNBU1FtL0MsV0F5RkVuL0MsTXJEckpiLHVCcUQ0RFcrK0MsZUF5RkUvK0M7TUFsR1YsU0EyR0lnL0MsT0FBUWgvQztRQUNKLGlCQURJQTtRQUNKOzs7Ozs7c0JBQ1EsS0FGSkEsTUFFSTtzQkFDQSxLQUhKQSxNQUdJO3NCQUNBLEtBSkpBLE1BSUk7Ozs7YUFFVixLQU5NQTthQU9NLG1CQVBOQTthQU9NOzs7aUJBRVIsS0FURUE7aUJBVVUsbUJBVlZBO2lCQVVVOzs7cUJBRVIsS0FaRkE7cUJBWUU7Ozs7Ozs7Ozs7aUJBSUc7YUFFSjtVQUVDLEtBcEJGQTtVQW9CRTtRQUNMLGVBQW9CO01BaEk3QixTQXNJSWsvQyxRQVdtQmwvQztRckRwTTFCO1FxRDBMSztVQUFNLGlCQVVlQTtVQVZmOzs7OztnQkFDUSxLQVNPQTtnQkFKZixtQkFJZUE7Z0JBSmY7d0NBQ1EsS0FHT0EsTUFIK0IsUUFHL0JBO2tCQUZULEtBRVNBOztnQkFEZDs7O2dCQVBPLEtBUU9BO2dCQUNyQjtrQkFBTSxtQkFEZUE7a0JBQ2Y7O29DQUNRLEtBRk9BLE1BRVA7b0NBQ0EsS0FIT0E7b0JBSVQsS0FKU0E7O2tCQUtkO1lBWkssS0FPU0E7O1VBTmQsZ0JBQW9CO01BM0k3QixnQkF3SkkzMkI7UUFBUyxxQkFBaUI0MUIsT0FBVSxrQkFBcEM1MUIsTUFBb0QsRUFBQztJQS9LdEMscUJBcUJqQmcxRTtJQXJCaUI7SUNzRUY7TXREbEdwQixJc0RvSVN2cUIseUJ0RHBJVDtlc0RzSVN0akQsT0FBUzZnQixJQUFxQzRpQztRQUNoRCxHQURXNWlDO1NBQVMsUUFBVEEsY0FBU0M7O2FBQVQ0aUMsT0FBUztZQVBBeHVEO1FBQ3BCO1VBQ0ssTUFLMkN1dUQsZ0JBUDVCdnVEO1lBR2YsUUFIZUE7YUFPVHd1RDtXQUVlOzhCQUp4Qko7WUFJd0Isa0JBSnhCQSxxQmxDekdKeGlELGlCa0N5R0l3aUQ7WUFJRS9DLEtBQXNCOztlQUF0QkE7VUFDOEMsMkJBVjlCcnJELEtBU2hCcXJELEtBVGdCcnJELEdBVWtEO2VBRXBFcTNCLE1BQU0xUTtRQUNSO2dCQURRQSxnQkFDUixLQUNJempCLFlBREo7O2NBRUEvSDtVQUNFOzZCQUpNd3JCLEtBR1J4ckI7WUFDRSxTQURGQTs7O2dCQUVJO2VBRUYyZ0MsTUFBTW5WO1FBQ1IsSUFBSXpqQixJQURJeWpCO1FBQ1IsT0FBSXpqQixRQURJeWpCO2lCQUdOLE1BSE1BO2tDQU1JLGVBTkpBLFVBT0w7ZUFFRGlyQyxLQUFLbGlEO1FBQUksU0FBSkEsUUFBSSxLQUFKQSxRQUFvQixZQUFwQkE7UUFBb0IsVUFBcEJBLHVCQUF1QztlQUU1Q3FoRCxVQUFVcHFDLEVBQUUreUQsTUFDZCxPQURjQSxRQUFGL3lELHdCQUN1QjtlQUVqQ2d6RCxNQUFNaHpEO1FBQ1IsU0FBUW1wQztVdERqS2Y7VXNEaUsyQjs7a0NBR0x6MEQsZ0JBQUhrSDtjQUFrQixtQkFBbEJBO29CQUdNakgsa0JBQUg4ZTtnQkFDSyxlQURMQSxJQUNLLFVBREY5ZTtjQUZaLE9BTEVxckI7MEJBSU90ckI7O1lBRFQsU0FLNkI7UUFQbkMsTUFEUXNyQixLQUNSLEtBU0lsUCxxQkFUSjs7Y0FVQXRjO1VBQ0U7WUFBUyxtQkFBVSxpQkFGakJzYyxFQUNKdGM7WUFDRSxpQkFGRXNjLEVBQ0p0YztZQUNXLFNBRFhBOzs7Z0JBRUk7ZUFzQkY0Z0MsT0FBT3BWO1FBQ1QsVUFEU0EsS0FDVCxNQUFJd29DLGlCQUFKLE1BQ0lTO1FBRUosTUFKU2pwQztRQUNUO1NBR0EsS0FESTBvQztTQUNKLFdBRklPLG9CQUZLanBDO1FBS3FEO1VBQ2hELElBQVJ5b0MsTUFBUSxlQUhWQztVQUdVLE9BQVJEO1VBQVE7OztjQUVZO29CQUVIL3pELGNBQU5xNkIsY0FBTmdrRDtnQkFDSCxjQURlcitFO2dCQUVKO2dDQVpWc3JCLEVBVUUreUQ7aUJBRzhCLFFBSDlCQSxLQUFNaGtELEtBR3dCLGlCQVBuQzA1QixNQU1NSTtnQkFDSixpQkFQRkosTUFNTUk7Z0JBQ0o7Y0FKTyxRQUl1QztXQVB4QyxLQUpWSTtXQUlVOztnQkFRWnowRDtZQUNFOzRCQUFjLGlCQWRkZzBELE1BYUZoMEQ7Y0FDRSxTQURGQTs7O1VBUlk7OztRQXhDTSxXQW1EakI7ZUFFRDgxQixJQUFJdEssRUFBRSs1QixJQUFJdDJDO1FBQ0Q7OEJBREx1YyxLQUFFKzVCO1NBRUEsWUFGRi81QixFQUNGK3lEO1NBRVksMEJBSFJoNUIsSUFBSXQyQztTQUl1QixVQUgvQnN2RSxLQUVBRyxVQUMrQixpQkFKN0JsekQsS0FFRnhyQjtRQUdKLGlCQUxNd3JCLEtBRUZ4ckIsWUFFQTYxRDtRQUNKLE9BTE1ycUM7UUFDSyxTQURMQTtRQUtOLFlBRTJDLE9BUHJDQSxPQU82QztlQUVqRHNMLE9BQU90TCxFQUFFKzVCO1FBQ0EsSUFBUGc1QixLQUFPLGdCQURGL3lELEtBQUUrNUI7UUFDQSxTQUNIbzVCO1V0RGpPZjtVc0RpTytCOztrQkFFZkMsY0FBT2x0RSxnQkFBSHRLO2lCQUhUbTNFLFNBR0tLO2dCQUNTLDBCQURMeDNFLEVBSkZtK0M7Z0JBS087eUJBQ0QsT0FOUi81QixhQU1RLE9BRkQ5Wjt5QkFHYyxVQUhyQmt0RSxHQUFJeDNFLEVBR2lCLGNBSGRzSzswQkFPTixPQVhEOFoseUJBSU85WjtrQkFVRmdpRCxrQkFBRnowQztjQUF1QixVQVYxQjIvRCxHQVVHMy9ELElBQXVCLGNBQXJCeTBDO1lBWEQsU0FXeUM7UUFDOUM7cUJBZkNsb0MsRUFDTCt5RDtTQWVVLG1CQUFjLGlCQWhCbkIveUQsS0FlTHhyQjtRQUNKLGlCQWhCU3dyQixLQWVMeHJCO1FBQ0osUUFBc0M7ZUEwQnBDd1QsS0FBS2dZLEVBQUUrNUI7UUFDRTs4QkFESi81QixLQUFFKzVCO1NBR2tCLGVBSHBCLzVCLEVBcEJZK3lEO1NBdUJELHlCQUhYL3lEOzs7O2dCQWpCQW96RCxZQUFPMStFLGNBQUhrSDtlQUhRbTNFLFNBR1pLO2NBQ1MsMEJBREx4M0UsRUFpQkZtK0M7Y0FoQk87O2lCQUVJLDRCQUhUbitDO2lCQUdTLFlBS0EsSUFBTGtWLGFBQUssT0FBTEE7aUJBTEssVUFITnBjOzs7O1lBZVYsMkJBRFM0Yzs7VUFmVCxnQkFxQnlDO2VBc0IzQzhiLFNBQVNwTixFQUFFKzVCO1FBQ0Y7OEJBREEvNUIsS0FBRSs1QjtTQUdrQixlQUhwQi81QixFQXBCWSt5RDtTQXVCRCx5QkFIWC95RDs7OztnQkFqQkpvekQsWUFBTzErRSxjQUFIa0g7ZUFIWW0zRSxTQUdoQks7Y0FDUywwQkFETHgzRSxFQWlCRW0rQztjQWhCRzs7aUJBRUksSUFLVmpwQyxFQUxVLGdCQUhUbFY7aUJBR1MsR0FLVmtWLEVBQWUsT0FBZkE7aUJBTFUsVUFITnBjOzs7O1lBZVYsMkJBRFM0Yzs7VUFmVCxTQXFCNkM7ZUFFL0N1NUMsU0FBUzdxQyxFQUFFKzVCO1FBQ0YsSUFBUGc1QixLQUFPLGdCQURBL3lELEtBQUUrNUI7UUFDRixTQUNIK1E7VXREelNmO1VzRHlTZ0M7O2tCQUVsQnNvQixjQUFPMStFLGdCQUFIa0g7aUJBSFBtM0UsU0FHR0s7Z0JBQ1MsMEJBREx4M0UsRUFKRW0rQztnQkFLRzs7bUJBQ1csNEJBRmhCbitDO21CQUVnQjtxQkFHUCxJQUFMa1YsYUFBUSxVQUFSQSxFQUFRLGVBTFRwYzttQkFFYSxZQUZiQTs7OztjQVlWLCtCQURTMG1COztZQVpGLFNBYVk7UUFDQSxtQkFqQlo0RSxFQUNQK3lEO1FBZ0JXLHVDQWpCSi95RCxxQkFpQjZCO2VBR3RDK3FDLFFBQVEvcUMsRUFBRSs1QixJQUFJdDJDO1FBQ0wsSUFBUHN2RSxLQUFPLGdCQUREL3lELEtBQUUrNUI7UUFDRCxTQUNIczVCO1V0RDdUZjtVc0Q2VGdDOztrQkFFaEJELGNBQU9sdEUsZ0JBQUh0SztpQkFIVG0zRSxTQUdLSztnQkFDUywwQkFETHgzRSxFQUpEbStDO2dCQUtNLHNCQURGN3pDO2dCQUVDLHVCQUZKdEssRUFKRG0rQyxJQUFJdDJDO2NBU00sK0JBQVQyWDs7WUFOQSxnQkFNNEI7UUFFakMsZ0JBWEU0RSxFQUNOK3lELE1BV0ksbUJBWkUveUQsS0FXTnhyQjtRQUNJO1VBRU4sd0JBRkVzRzs7OztZQUljLElBQVpvNEUsVUFBWSxnQkFoQk5uNUIsSUFBSXQyQztZQWlCZCxpQkFqQlF1YyxLQVdOeHJCLGVBVkF1K0UsS0FlRUcsVUFKRnA0RTtZQUtGLE9BakJRa2xCO1lBZ0JRLFNBaEJSQTtZQWlCUixZQUUyQyxPQW5CbkNBO1VBbEJlLFdBcUM0QjtlQUVuRHFMLElBQUlyTCxFQUFFKzVCO1FBQ0c7OEJBREwvNUIsS0FBRSs1QjtTQVdjLGVBWGhCLzVCLEVBQ0YreUQ7U0FVVSx5QkFYUi95RDs7UUFFa0I7O2dCQUdqQm96RCxZQUFPMStFLGNBQUhrSDtlQUFKdzNFLE9BSkhMO2NBS1ksMEJBRExuM0UsRUFMSG0rQztjQU1RLG9CQURGcmxEO2NBRUM7WUFHVSwyQkFBVDRjOztVQU5aLFNBT21DO2VBRXJDdkUsT0FBS3JVLEVBQUVzbkI7UUFDVCxRQURTQSxLQUNULEtBUUkxQyx1QkFSSjs7Y0FTQTlvQjs7VUFDRTtZQUFVLDZCQUZSOG9CLElBQ0o5b0I7WUFUb0I7O2dCQUlGO2lCQURIRTtpQkFBSGtIO2lCQUNNLHNCQUROQTtpQkFDbUIsd0JBRG5CQTs7O3NCQUdTa1YsYUFBUjJlLFdBQWEsV0FQbkIvMkIsRUFPTSsyQixFQUFRM2U7Z0JBRkgsVUFESHBjOzt1QkFNZkY7Ozs7UUFyQndCLFFBdUJwQjtlQUVGc04sS0FBS3BKLEVBQUVzbkIsRUFBRWpYO1FBQ1gsUUFEU2lYLEtBQ1QsVUFEV2pYLE1BQ1gsS0FVSXVVLHVCQVZKOztjQVlBOW9COztVQUNFOztrQkFGRW9UO2FBRWdCLHFCQUhoQjBWLElBRUo5b0I7YUFaa0JnRzthQUFFb0Q7WUFDbEI7aUJBRGdCcEQ7Z0JBS1c7aUJBRGQ5RixLQUpHOEY7aUJBSU5vQixFQUpNcEI7aUJBS1csc0JBRGpCb0I7aUJBQzhCLHdCQUQ5QkE7OztzQkFHV2tWLGFBQVIyZSxXQVBLM3hCLE9BT1EsV0FSckJwRixFQVFRKzJCLEVBQVEzZSxFQVBIbFQ7OztnQkFLUyxJQUxYcEQsRUFJSDlGLEtBSktrSjs7Y0FXaEJnSyxZQVhnQmhLO3VCQVlwQnBKOzs7O1FBR0EsT0FKSW9ULFNBSUM7ZUFFSDBoRCxtQkFBbUI1d0QsRUFBRXNuQjtRQUN2QixTQUFRbXBDO1V0RDlYZjtVc0Q4WDJCOztjQUlSO2VBREl6MEQ7ZUFBSGtIO2VBQUp3M0U7ZUFDRyxzQkFEQ3gzRTtlQUNZLHdCQURaQTs7Z0JBS0csSUFES2tWLGFBQVIyZSxXQUNHLG1CQVRLLzJCLEVBUVIrMkIsRUFBUTNlO2dCQUNMO2tCQUlGLElBREd3aUU7a0JBQ0gsZ0JBVEQxM0UsRUFJQTZ6QixFQUlJNmpEO2tCQUVTLFVBVmpCRixHQUFJeDNFLEVBVWEsVUFWVmxIO2dCQUtBLFlBTEFBOztjQUNKLFlBRElBOztZQURWLFNBV21DO1FBYnpDLE1BRHVCc3JCLEtBQ3ZCLEtBZUlsUCxxQkFmSjs7Y0FnQkF0YztVQUNFO1lBQVMsbUJBQVUsaUJBRmpCc2MsRUFDSnRjO1lBQ0UsaUJBRkVzYyxFQUNKdGM7WUFDVyxTQURYQTs7O2dCQUVJO2VBRUY0UCxPQUFPNGIsR0FBSSxPQUFKQSxJQUFVO2VBRWJ5cEM7Ozs7WUFFZ0I7Ozs7cUJBQVRydUM7O1VBREY7ZUFHVHN1QyxNQUFNMXBDO1FBQ1I7Y0FEUUE7U0FDUjtTQUNFOztxQkFBcUJtQyxFQUFFM25CLEdBQWUsYUFBakIybkIsRUFBaUIsZ0JBQWYzbkIsR0FBa0M7U0FDL0MscUJBRlJtdkQ7U0FFUSxLQUhKM3BDO1FBSVI7bUJBQ094bEI7WUFDTTsrQkFETkE7YUFFVyxzQkFKZG92RCxNQUdLOXVEO1lBQ0osaUJBSkQ4dUQsTUFHSzl1RDtZQUNKLFFBQTBCOztRQUgvQixVQUpRa2xCLHFCQUNKMnBDLElBRUFDLE1BU3dCO2VBRXRCMnBCOzs7O2dCQUVPNytFLGdCQUFIa0g7WUFBYyxtQkFBZEE7Y0FDTixnREFEU2xIO1lBRVMsK0JBQVQwbUI7O1VBSEY7ZUFLVG80RCxZQUFZeHpEO1FBQ2Q7O2NBRGNBO1NBQ2Q7U0FFRTs7cUJBQ09tQyxFQUFFM25CLEdBQWUsYUFBakIybkIsRUFBaUIsc0JBQWYzbkIsR0FBd0M7U0FFdkMscUJBSlJtdkQ7U0FJUSxLQU5FM3BDO1FBT2Q7bUJBQ094bEI7WUFDTSxJQUFKTSxFQUFJLHNCQUROTjtZQUNNLFVBUlQ2MkMsVUFRS3YyQztZQUFJLFNBRUssaUJBTGQ4dUQsTUFHSzl1RDtZQUVKLGlCQUxEOHVELE1BR0s5dUQ7WUFFSixRQUEwQjs7UUFKL0IsVUFOSXUyQyxRQURVcnhCLGdCQUVWMnBDLElBSUFDLE1BVXdCO2VBRTFCbjhDLE9BQU9tWDtRQUdULElBQUlrbEMsU0FIS2xsQztRQUdULFNBRVEzUSxJQUFJemYsRUFBRXUxRDtjQUFGaHZELE1BQUVpdkQ7VUFBVTtlQUFWQTtjQU1JO2VBREY5akQsS0FMRjhqRDtlQUtEcHVELEVBTENvdUQ7ZUFNSSxzQkFETHB1RDtlQUNrQix3QkFEbEJBOztvQkFHWW16QixnQkFBVmdyQjtnQkFDb0I7MkJBRHBCQSxJQUFVaHJCO3VDdEQzY2hDLE9zRG1jZTlhLElBQUlsWixJQUtJbUw7Y0FDRSxJQU5KOGpELE9BS0U5akQ7O1lBSFYsR0FGTW5MLFFBRlIrdUQsb0JBS087WUFDUztxQ0FOaEJBLFNBRVEvdUQ7YUFJUSxJQUpSQTs7YUFBRWl2RDtxQkFVTDtRQVpUOzhCdERqY1AsT3NEbWNlLzFDLG9CQVlHO2VBRVRpMkMsWUFBWS9uQztRQUFnQixnQkFBaEJBO1FBQWdCLG9CdERqZHJDO1FzRGlkcUMsc0J0RGpkckMsT3NCbUNTN2Isc0JnQzhhc0M7ZUFFdEM2akQsY0FBY2hvQztRQUFnQixnQkFBaEJBO1FBQWdCLG9CdERuZHZDO1FzRG1kdUMsc0J0RG5kdkMsT3NCbUNTN2Isc0JnQ2did0M7ZUFFeEM2bkIsUUFBUXZKLElBQUlwd0I7UUFDZDs7bUJBQVMscUNBRENvd0IsSUFDSzZLLEVBQUU3MkIsRUFBa0I7aUJBRHJCcEUsRUFDdUI7ZUFFbkN3MkQsWUFBWXBtQyxJQUFJcHdCO1FBQ2xCOzttQkFBUyx5Q0FES293QixJQUNDNkssRUFBRTcyQixFQUFzQjtpQkFEckJwRSxFQUN1QjtlQUV2QzQ1QixPQUFPNTVCLEdBQ0MsSUFBTm93QixJQUFNLGFBQ1YsWUFESUEsSUFES3B3QixHQUVULE9BRElvd0IsR0FFRDs7Y0F4VkR6Z0I7Y0FLQXVzQjtjQU9BeUU7Y0FTQTgxQjtjQTJEQTNnQztjQVNBZ0I7Y0EwQ0F0akI7Y0F5QkFvbEI7Y0FLQXk5QjtjQW9CQUU7Y0FxQkExL0I7Y0FhQXRlO2NBZ0NBdThDO2NBbEJBeG5EO2NBdUNBc0M7Y0FNQXNsRDtjQXNDQWo4QztjQW1CQXk4QztjQUVBQztjQUVBaDhCO2NBR0E2OEI7Y0FHQTU4QjtjQTNUQTRrRDtjQTRRQVE7SUExVVcsU0ErWWJDLGdCQUF3QiwyQkFBZTtJQS9ZMUIsU0ErYlRDLFVBOUNLbHVFLEdBQW1DLHlCQUFuQ0EsSUFBdUQ7SUFqWm5ELFNBa1pibXVFLGVBQWNudUUsR0FBbUMseUJBQW5DQSxJQUE0RDtJQWxaN0QsU0FtWmJvdUUsVUFBU3B1RSxFQUFjaXFCLEdBQWUseUJBQTdCanFCLElBQWNpcUIsRUFBOEM7SUFuWnhELFNBb1pib2tELFlBQVdydUUsR0FBc0IseUJBQXRCQSxJQUEwQztJQXBaeEMsU0FxWmJzdUUsWUFBV3R1RSxHQUFzQix5QkFBdEJBLElBQTBDO0lBclp4QyxTQXVaYnV1RSxXQUFVbmhFLEdBQWVGLElBQzNCLHlCQURZRSxLQUFlRixPQUNBO0lBeFpaLFNBMFpic2hFLFdBQVV4dUUsR0FBbUMseUJBQW5DQSxFQUFzRDtJQTFabkQsU0EyWmJ5dUUsY0FBZXp1RSxHQUFtQywwQkFBbkNBLEVBQTJEO0lBM1o3RCxTQTRaYjB1RSxTQUFVMXVFLEVBQWNzTCxHQUFlLDBCQUE3QnRMLEVBQWNzTCxFQUE2QztJQTVaeEQsU0E2WmJxakUsV0FBWTN1RSxHQUFzQiwwQkFBdEJBLEVBQXlDO0lBN1p4QyxTQThaYjR1RSxXQUFZNXVFLEdBQXNCLDBCQUF0QkEsRUFBeUM7SUE5WnhDLFNBK1piNnVFLFVBQVd6aEUsR0FBY0YsSUFBc0IsMEJBQXBDRSxHQUFjRixHQUE0QztJQS9aeEQsU0FpYWI0aEUsT0FBS3Y2QixJQUFJaHJCO01BQ0QsSUFBTndsRCxJQUFNLFlBQ1YsU0FESUEsSUFET3hsRCxNQUdYLFVBRkl3bEQsSUFER3g2QixLQUdQLE9BRkl3NkIsR0FHRDtJQXJhWSxTQXVhYkMsTUFBTUQsSUFBSXg2QjtNQUNOLG9CQURFdzZCO01BQ0YsVUFFUSxJQUFQOWtELFdBQU8sT0FBUEEsTUFIS3NxQixJQUdjLFdBSGxCdzZCO01BRUUsUUFFTTtJQTNhRDtlQWliVHB3RSxPQUFPc3JCLEVBQUUzZTtRQUNILElBQUpsVixFQUFJLFlBQ1IsU0FESUEsRUFET2tWLEdBR1gsVUFGSWxWLEVBREs2ekIsR0FHVCxPQUZJN3pCLENBR0g7VUFDQ2dWO2VBQ0E3TyxNQUFNbkcsRUFBRTZ6QjtRQUdKLG9CQUhFN3pCO1FBR0YsVUFHRixJQURHMDdCLGFBQ0EsdUJBTkc3SCxFQUtINkg7UUFERyxRQUUwRDtlQUdsRW05QyxhQUFhNzRFLEVBQUU2ekIsRUFBRTNlO1FBQ25CLFdBRGVsVixHQUVmLFVBRmVBLEVBQUU2ekIsR0FFakIsZ0JBRmU3ekIsRUFBSWtWLEVBR1A7OztnQkFsQlYzTTtnQkFLQXlNO2dCQUNBN087Z0JBN0JKaXlFO2dCQXFDSU47Z0JBQ0FlO2dCQTNDSlg7SUFyWmE7TXREbEdwQixJc0Q2aUJhL3hFO2VBQ0E2TyxLQUFNOHpDLEtBQVlyckQsR0FBSSx1QkFBSkEsRUFBWTs7K0JBRDlCMEksTUFDQTZPO09BdmhCVjhmO09BQ0F5RTtPQUNBODFCO09BQ0EzZ0M7T0FDQWdCO09BQ0F0akI7T0FDQW9sQjtPQUNBeTlCO09BQ0FFO09BQ0ExL0I7T0FDQXJ2QjtPQUVBc3REO09BRUF4bkQ7T0FFQXNDO09BQ0FzbEQ7T0FDQWo4QztPQUVBeThDO09BRUFDO09BRUFoOEI7T0FDQTY4QjtPQUVBZ29CO09BQ0FROztlQTZmTXJ2RSxPQUFPK21ELElBQUssNEJBQUxBLEdBQTRCO2VBQ25DOThCLE9BQU81NUI7UUFDQyxJQUFOb3dCLElBQU0sV0FDVixXQW5nQkpvbUMsWUFrZ0JRcG1DLElBREtwd0IsR0FFVCxPQURJb3dCLEdBRUQ7O2NBSkR6Z0I7Y0F6aEJOdXNCO2NBQ0F5RTtjQUNBODFCO2NBQ0EzZ0M7Y0FDQWdCO2NBQ0F0akI7Y0FDQW9sQjtjQUNBeTlCO2NBQ0FFO2NBQ0ExL0I7Y0FDQXJ2QjtjQUVBc3REO2NBRUF4bkQ7Y0FFQXNDO2NBQ0FzbEQ7Y0FDQWo4QztjQUVBeThDO2NBRUFDO2NBRUFoOEI7Y0FDQTY4QjtjQWlnQk01OEI7Y0EvZk40a0Q7Y0FDQVE7SUErQ2lCLFNBeWRYa0IsY0FBVSxZQUFNO0lBemRMLFNBMGRYQyxNQUFJbjZFLEVBQUVpMUIsRUFBRTNlLEdBQUksU0FBUnRXLEtBQWEsaUJBQVhpMUIsRUFBRTNlLFNBQVMsUUFBaUI7SUExZHZCLFNBNGRYOGpFLFNBQVNubEQsRUFBRS90QjtNQUNQLG9CQURPQTtNQUNQLFVBQ1EsSUFBUHJJLFdBQU8sR0FBUEEsTUFGSW8yQixFQUVhO01BQ2pCLFFBQUs7SUEvZEMsU0FpZVhvbEQsU0FBT3I2RSxFQUFFaTFCO1VBQ0UzMEIsRUFESk4sS0FDTXNNO01BQ2I7V0FEV2hNO2NBR1RrbEIsRUFIU2xsQixLQUdKMEssRUFISTFLO1VBR0csWUFKTDIwQixFQUlQelAsSUFBaUMsa0JBSHRCbFosSUFHTnRCLEdBQTRCO2NBSHhCaU0sU0FBRTFLLFNBR1hpWixFQUhXbFosS0FBRmhNLE1BQUVnTTs7UUFFTCxTQUlBO0lBeGVHLFNBMGVYZ3VFLE9BQUt0NkUsRUFBRWkxQjtNQUNUO1lBRE9qMUI7T0FDRCw4QnREN2tCYixPc0Q4akJTbzZFLFNBY09ubEQ7TUFDSCxVQUNNLElBQUwvdEIsV0FBSyxrQkFBTEE7TUFDRyxRQUFJO0lBN2VELFNBK2VYcXpFLFNBQU92NkUsR0FBSSxnQkFBSkEsS0FBa0I7SUEvZWQsU0FnZlh3NkUsUUFBTXg2RSxHQUFJLGlCQUFPO0lBaGZOLFNBeWZieTZFLGdCQUE2QiwyQkFBZTtJQXpmL0IsU0EyZmJDLFNBQVUxdkUsR0FBeUMseUJBQXpDQSxJQUE2RDtJQTNmMUQsU0E0ZmIydkUsY0FBZTN2RSxHQUNULHlCQURTQSxJQUNnQjtJQTdmbEIsU0E4ZmI0dkUsU0FBVTV2RSxFQUFtQmlxQixHQUMvQix5QkFEWWpxQixJQUFtQmlxQixFQUNBO0lBL2ZoQixTQWdnQmI0bEQsV0FBWTd2RSxHQUEyQix5QkFBM0JBLElBQStDO0lBaGdCOUMsU0FpZ0JiOHZFLFdBQVk5dkUsR0FBMkIseUJBQTNCQSxJQUErQztJQWpnQjlDLFNBbWdCYit2RSxTQUFVL3ZFLEdBQXlDLHlCQUF6Q0EsSUFBNkQ7SUFuZ0IxRCxTQW9nQmJnd0UsY0FBZWh3RSxHQUNULHlCQURTQSxJQUNnQjtJQXJnQmxCLFNBc2dCYml3RSxTQUFVandFLEVBQW1CaXFCLEdBQy9CLHlCQURZanFCLElBQW1CaXFCLEVBQ0E7SUF2Z0JoQixTQXdnQmJpbUQsV0FBWWx3RSxHQUEyQix5QkFBM0JBLElBQStDO0lBeGdCOUMsU0F5Z0JibXdFLFdBQVlud0UsR0FBMkIseUJBQTNCQSxJQUErQztJQXpnQjlDLFNBNGdCYm93RSxVQUFXaGpFLEdBQWlCRixJQUM5Qix5QkFEYUUsS0FBaUJGLE9BQ0g7SUE3Z0JaLFNBOGdCYm1qRSxVQUFXampFLEdBQWlCRixJQUM5Qix5QkFEYUUsS0FBaUJGLE9BQ0g7SUEvZ0JaLFNBZ2hCYm9qRSxXQUFZbGpFLEdBQW1CRixJQUNqQyx5QkFEY0UsS0FBbUJGLE9BQ047SUFqaEJaLFNBbWhCYnFqRSxXQUFVdndFLEdBQXdDLHlCQUF4Q0EsRUFBMkQ7SUFuaEJ4RCxTQW9oQmJ3d0UsZ0JBQWV4d0UsR0FDVCwwQkFEU0EsRUFDZTtJQXJoQmpCLFNBc2hCYnl3RSxXQUFVendFLEVBQW1Cc0wsR0FDL0IsMEJBRFl0TCxFQUFtQnNMLEVBQ0Q7SUF2aEJmLFNBd2hCYm9sRSxhQUFZMXdFLEdBQTJCLDBCQUEzQkEsRUFBOEM7SUF4aEI3QyxTQXloQmIyd0UsYUFBWTN3RSxHQUEyQiwwQkFBM0JBLEVBQThDO0lBemhCN0MsU0EwaEJiNHdFLFlBQVd4akUsR0FBZ0JGLElBQXdCLDBCQUF4Q0UsR0FBZ0JGLEdBQThDO0lBMWhCNUQsU0E0aEJiMmpFLE9BQUtDLEtBQUtDLEtBQUt4bkQ7TUFDUCxJQUFOd2xELElBQU07TUFDVixXQURJQSxJQURheGxEO01BR2pCLFNBRkl3bEQsSUFERytCO01BSVAsU0FISS9CLElBRFFnQztNQUlaLE9BSEloQyxHQUtEO0lBbGlCWSxTQW9pQmJpQyxRQUFNakMsSUFBSStCLEtBQUtDO01BQ1gsbUJBREVoQztNQUNGO1FBRVEsSUFBUDlrRDtRQUFPLEdBQVBBLE1BSEs2bUQ7VUFJSSxxQkFKUi9CO1VBSVE7WUFFRSxJQUFQajlDLGVBQU8sT0FBUEEsUUFOTWkvQyxLQU1jLFdBTnZCaEM7VUFLTTtRQUlGO01BUEYsUUFPTTtJQTdpQkQ7ZUFxakJUcHdFLGFBQWUyTTtRQUNULElBREswNUMsWUFBSEYsWUFDRjtRQUNSLFdBREkxdUQsRUFEYWtWO1FBR2pCLFNBRklsVixFQURNMHVEO1FBR0ssU0FGWDF1RCxFQURTNHVEO1FBR0UsT0FGWDV1RDtlQUlGZ1YsS0FBSzh6QztRQUNXO1NBREY4RjtTQUFIRjtTQUNLLHNCQURYNUYsS0FBUzhGO1FBQ2hCLHdCQURPOUYsS0FBTTRGO2VBRVh2b0QsTUFBTW5HO1FBQ0YsSUFEUTR1RCxZQUFIRixZQUNMLGVBREUxdUQsR0FDVSxpQkFEVkE7O2NBR1M2NkUsZ0JBQVZDO1VBQ21CLEdBQW5CLGlCQUpJcHNCLEdBR0pvc0IsU0FDbUIsaUJBSlpsc0IsR0FHR2lzQixNQUVSO1VBQXdCO1FBSFQ7ZUFLdEJqeUUsUUFBUTVJO1FBQ0osbUJBRElBLEdBQ1EsaUJBRFJBOztjQUdPNHVELGNBQVZGLDRCQUFVRTtRQURPLFFBQ2U7ZUFDckNpcUIsYUFBYTc0RSxRQUFVa1Y7WUFBSjA1QyxZQUFIRjtRQUNsQixhQURlMXVEO1FBRWYsU0FGZUEsRUFBRzB1RDtRQUVILFNBRkExdUQsRUFBTTR1RDtRQUVOLGtCQUZBNXVELEVBQVVrVjtlQUl2QmxNLFVBQVVoSjtRQUFJLG9CQUFKQSxHQUFJLFlBbEVsQis1RSxXQWtFYy81RSxPQUFnQzs7a0JBdEIxQ3VJLE9BS0F5TSxLQUVBN08sTUF6Q0pnMEUsV0FnREl2eEUsUUFJQWl3RSxhQUlBN3ZFO0lBM2tCUztNdERsR3BCLElzRDJyQmU3QztlQUNBNk8sS0FBTTh6QyxLQUFZcnJELEdBQUksd0JBQUpBLEVBQWE7VUFOL0JvUCxzQkFLQTFHLE1BQ0E2TztlQUxBbU8sT0FBTTJsQyxLQUFZcnJELEdBQUksd0JBQUpBLEVBQWE7OytCQUQvQm9QLFFBQ0FzVztPQWhxQloyUjtPQUNBeUU7T0FDQTgxQjtPQUNBM2dDO09BQ0FnQjtPQUNBdGpCO09BQ0FvbEI7T0FDQXk5QjtPQUNBRTtPQUNBMS9CO09BQ0FydkI7T0FFQXN0RDtPQUVBeG5EO09BRUFzQztPQUNBc2xEO09BQ0FqOEM7T0FFQXk4QztPQUVBQztPQUVBaDhCO09BQ0E2OEI7T0FFQWdvQjtPQUNBUTs7ZUEyb0JNcnZFLE9BQU8rbUQsSUFBSyw0QkFBTEEsR0FBNEI7ZUFDbkM5OEIsT0FBTzU1QjtRQUNDLElBQU5vd0IsSUFBTSxXQUNWLFdBanBCSm9tQyxZQWdwQlFwbUMsSUFES3B3QixHQUVULE9BRElvd0IsR0FFRDs7Y0FKRHpnQjtjQXZxQk51c0I7Y0FDQXlFO2NBQ0E4MUI7Y0FDQTNnQztjQUNBZ0I7Y0FDQXRqQjtjQUNBb2xCO2NBQ0F5OUI7Y0FDQUU7Y0FDQTEvQjtjQUNBcnZCO2NBRUFzdEQ7Y0FFQXhuRDtjQUVBc0M7Y0FDQXNsRDtjQUNBajhDO2NBRUF5OEM7Y0FFQUM7Y0FFQWg4QjtjQUNBNjhCO2NBK29CTTU4QjtjQTdvQk40a0Q7Y0FDQVE7SUErQ2lCLFNBdW1CWG1ELGNBQVUsWUFBTTtJQXZtQkwsU0F3bUJYQyxNQUFJcDhFLEVBQUU4dkQsR0FBR0UsR0FBRzE1QztNQUFJLFNBQVp0VyxLQUFpQixpQkFBZjh2RCxHQUFHRSxHQUFHMTVDLFNBQVMsUUFBcUI7SUF4bUIvQixTQTBtQlgrbEUsVUFBVXZzQixHQUFHRSxHQUFHOW9EO01BQ1osbUJBRFlBLEdBQ0EsaUJBREFBOztZQUVGcVIsY0FBVEMsc0JBRktzM0MsTUFFSXYzQyxPQUZEeTNDLEdBRWlDO01BQ3pDLFFBQUs7SUE3bUJDLFNBK21CWHNzQixTQUFPdDhFLEVBQUU4dkQsR0FBR0U7VUFDRDF2RCxFQURKTixLQUNNc007TUFDYjtXQURXaE07Y0FHVGtsQixFQUhTbGxCLEtBR0owSyxFQUhJMUs7VUFHRyxhQUpMd3ZELEdBQUdFLEdBSVZ4cUMsSUFBc0Msa0JBSDNCbFosSUFHTnRCLEdBQWlDO2NBSDdCaU0sU0FBRTFLLFNBR1hpWixFQUhXbFosS0FBRmhNLE1BQUVnTTs7UUFFTCxTQUlBO0lBdG5CRyxTQXduQlhpd0UsT0FBS3Y4RSxFQUFFOHZELEdBQUdFO01BQ1o7WUFET2h3RDtPQUNELDhCdEQzdEJiLE9zRDRzQlNxOEUsVUFjT3ZzQixHQUFHRTtNQUNOLFVBQ00sSUFBTDlvRCxXQUFLLGtCQUFMQTtNQUNHLFFBQUk7SUEzbkJELFNBNm5CWHMxRSxTQUFPeDhFLEdBQUksZ0JBQUpBLEtBQWtCO0lBN25CZCxTQThuQlh5OEUsUUFBTXo4RSxHQUFJLGlCQUFPO0lBOW5CTixTQXVvQmIwOEUsU0FBT2wrRSxHQUFnQix5QkFBaEJBLEVBQStCO0lBdm9CekIsU0F3b0JibStFLFNBQVExbkQsR0FBcUIseUJBQXJCQSxFQUFvQztJQXhvQi9CLFNBMG9CYjJuRCxVQUFTNXhFLEVBQWN4TSxHQUE2Qix5QkFBM0N3TSxFQUFjeE0sRUFBaUQ7SUExb0IzRCxTQTJvQmJxK0UsZUFBYzd4RSxFQUFjeE0sR0FDdEIseUJBRFF3TSxFQUFjeE0sRUFDRztJQTVvQmxCLFNBNm9CYnMrRSxVQUFTOXhFLEVBQWN4TSxFQUFReTJCLEdBQ2pDLHlCQURXanFCLEVBQWN4TSxFQUFReTJCLEVBQ0Y7SUE5b0JoQixTQStvQmI4bkQsWUFBVy94RSxFQUFjeE0sR0FBZ0IseUJBQTlCd00sRUFBY3hNLEVBQW9DO0lBL29CaEQsU0FncEJidytFLFlBQVdoeUUsRUFBY3hNLEdBQWdCLHlCQUE5QndNLEVBQWN4TSxFQUFvQztJQWhwQmhELFNBa3BCYnkrRSxXQUFVN2tFLEdBQWU5TixHQUFTNE4sR0FBZTNOLEdBQVNqSztNQUM1RCx5QkFEWThYLEdBQWU5TixHQUFTNE4sR0FBZTNOLEdBQVNqSyxFQUMvQjtJQW5wQmQsU0FxcEJiNDhFLFdBQVVseUUsR0FBbUMseUJBQW5DQSxFQUFzRDtJQXJwQm5ELFNBc3BCYm15RSxnQkFBZW55RSxHQUFtQywwQkFBbkNBLEVBQTJEO0lBdHBCN0QsU0F1cEJib3lFLFdBQVVweUUsRUFBY3NMLEdBQWUsMEJBQTdCdEwsRUFBY3NMLEVBQTZDO0lBdnBCeEQsU0F3cEJiK21FLGFBQVlyeUUsR0FBc0IsMEJBQXRCQSxFQUF5QztJQXhwQnhDLFNBeXBCYnN5RSxhQUFZdHlFLEdBQXNCLDBCQUF0QkEsRUFBeUM7SUF6cEJ4QyxTQTBwQmJ1eUUsWUFBV25sRSxHQUFjRixJQUFzQiwwQkFBcENFLEdBQWNGLEdBQTRDO0lBMXBCeEQsU0E0cEJic2xFLE9BQUs3SixLQUFLcC9DO01BQ1osTUFET28vQyxnQkFFRyxhQUROcnpFO01BRUosV0FESXk1RSxJQUZReGxEO01BQ1osSUFFQSxLQUZJajBCLFVBRUo7O1lBQ0F0RztRQUFzQjtvQkFGbEIrL0UsSUFFSi8vRSxFQUFvQyxpQkFKN0IyNUUsS0FJUDM1RTtVQUFzQixTQUF0QkE7OztNQUNBLE9BSEkrL0UsR0FHRDtJQWpxQlksU0FtcUJiMEQsUUFBTTFELElBQUlwRztNQUNKLElBQUpyekUsRUFBSSxTQURBeTVFO01BQ0E7V0FBSno1RSxNQURRcXpFLGdCQUdxQjtRQUMvQixTQUhFcnpFLFVBR0Y7OztVQUNFO1lBQU0sb0JBTEZ5NUUsSUFJTi8vRTtZQUNRLFdBQ0k7WUFESixJQUVDaTdCO1lBQVksR0FBWkEsTUFBWSxpQkFQWDArQyxLQUlWMzVFLFVBSWM7WUFITixTQURSQTs7O2lCQU1BLFdBVk0rL0U7OzswREFXSyxvQkFBSTtJQTlxQkY7ZUFvckJUcHdFLE9BQU9zckIsRUFBRTNlO1FBQ0gsSUFBSmxWLEVBQUksU0FEQzZ6QjtRQUVULFdBREk3ekIsRUFET2tWO1FBQ0gsSUFDUixLQUZTMmUscUJBRVQ7O2NBQ0FqN0I7VUFDRTtzQkFIRW9ILEVBRUpwSCxFQUNjLGlCQUpMaTdCLEVBR1RqN0I7WUFDRSxTQURGQTs7O1FBR0EsT0FMSW9ILENBS0g7ZUFDQ2dWLEtBQUs4ekMsS0FBS2oxQjtRQUNaLGlCQURZQSxxQkFDWjs7Y0FDQWo3QjtVQUNFO3FCQUZFd3JCLEtBRWUsc0JBSFB5UCxFQUVaajdCO1lBQ08sd0JBSEFrd0Q7WUFHTCxTQURGbHdEOzs7UUFHQSxPQUpJd3JCLElBSUY7ZUFDQWplLE1BS3NCbkcsRUFBRjZ6QjtRQUp0QixRQUlzQkEsYUFIWCxlQUdhN3pCO1FBSGIsR0FEUFcsUUFDQWEsTUFDZ0I7UUFGcEIsSUFJRSxJQUpFYixZQUlzQi9IO1FBQ3RCO2tCQURzQkE7WUFHZCxvQkFIWW9ILEVBQUVwSDtZQUdkO2NBR0YsZ0JBQVcsc0JBTkNpN0IsRUFBSWo3QjtjQU1iLHdCQURBMGpGLEtBRUUsUUFQVzFqRjtjQVFYO1lBSkM7VUFIRSxTQVNPO2VBRXZCZ1EsUUFBUTVJO1FBQ0EsSUFBTlcsSUFBTSxTQURBWDtRQUNBLFNBQU5XLElBQ1k7UUFETixVQUdGLFVBSkVYO1FBSUY7VUFHRixnQkFTUSxpQkFmVlcsSUFLSzQ3RSxJQVVLLElBZlY1N0UsWUFNaUIvSDtVQUNiO29CQURhQTtjQUdMLHNCQVZOb0gsRUFPV3BIO2NBR0w7Z0JBR0YsSUFERzBqRjtnQkFDSCxpQkFOS2o4RSxFQUFFekgsWUFLSjBqRjtnQkFDSCxRQU5PMWpGOztjQUlEO1lBSEUsVUFESHlIO1FBRlAsUUFZUTtlQUNsQnc0RSxhQUFhNzRFLEVBQUU2ekIsRUFBRTNlO1FBQ25CLGFBRGVsVjtRQUNmLFNBRGlCNnpCLHFCQUNqQjs7Y0FDQWo3QjtVQUNFO3NCQUhhb0gsRUFFZnBILEVBQ2MsaUJBSEdpN0IsRUFFakJqN0I7WUFDRSxTQURGQTs7O1FBR0Esa0JBTGVvSCxFQUFJa1YsRUFLUDtlQUNWbE0sVUFBVWhKO1FBR0gsaUJBSEdBLFdBQ0lwSDtRQUNkO21CQURjQTtVQUNkOzs7WUFBVSxxQkFGQW9ILEVBQ0lwSDtZQUNKLGFBREl1RztZQUNKO1VBRFosWUFFc0I7O2tCQXpEcEJvSixPQU9BeU0sS0FNQTdPLE1BNUNKMjFFLFdBNkRJbHpFLFFBa0JBaXdFLGFBTUE3dkU7SUExdUJTO010RGxHcEIsSXNEczFCYTdDO2VBQ0E2TyxLQUFNOHpDLEtBQVlyckQsR0FBSSx1QkFBSkEsRUFBWTs7K0JBRDlCMEksTUFDQTZPO09BaDBCVjhmO09BQ0F5RTtPQUNBODFCO09BQ0EzZ0M7T0FDQWdCO09BQ0F0akI7T0FDQW9sQjtPQUNBeTlCO09BQ0FFO09BQ0ExL0I7T0FDQXJ2QjtPQUVBc3REO09BRUF4bkQ7T0FFQXNDO09BQ0FzbEQ7T0FDQWo4QztPQUVBeThDO09BRUFDO09BRUFoOEI7T0FDQTY4QjtPQUVBZ29CO09BQ0FROztlQXN5Qk1ydkUsT0FBTyttRCxJQUFLLDRCQUFMQSxHQUE0QjtlQUNuQzk4QixPQUFPNTVCO1FBQ0MsSUFBTm93QixJQUFNLFdBQ1YsV0E1eUJKb21DLFlBMnlCUXBtQyxJQURLcHdCLEdBRVQsT0FESW93QixHQUVEOztjQUpEemdCO2NBbDBCTnVzQjtjQUNBeUU7Y0FDQTgxQjtjQUNBM2dDO2NBQ0FnQjtjQUNBdGpCO2NBQ0FvbEI7Y0FDQXk5QjtjQUNBRTtjQUNBMS9CO2NBQ0FydkI7Y0FFQXN0RDtjQUVBeG5EO2NBRUFzQztjQUNBc2xEO2NBQ0FqOEM7Y0FFQXk4QztjQUVBQztjQUVBaDhCO2NBQ0E2OEI7Y0EweUJNNThCO2NBeHlCTjRrRDtjQUNBUTtJQStDaUIsU0Frd0JYNEUsY0FBVSxZQUFNO0lBbHdCTCxTQW13QlhDLE1BQUk3OUUsRUFBRWkxQixFQUFFM2UsR0FBSSxTQUFSdFcsS0FBYSxpQkFBWGkxQixFQUFFM2UsU0FBUyxRQUFpQjtJQW53QnZCLFNBcXdCWHduRSxZQUFVN29ELEVBQUUvdEI7TUFDZDtRQUNLLFlBRlNBLE9BQUYrdEIsYUFFeUI7UUFDbkMsU0FIVUEscUJBR1Y7OztVQUNFO1lBQU0sb0JBSkkvdEIsRUFHWmxOO1lBQ1E7Y0FDUSxJQUFQNkU7Y0FBWSxHQUFaQSxNQUFZLGlCQUxYbzJCLEVBR1ZqN0I7Ozs7MEJBR1M7O1FBSFQ7OzswREFNVyxvQkFBSztJQTl3QkwsU0FneEJYK2pGLFNBQU8vOUUsRUFBRWkxQjtVQUNFMzBCLEVBREpOLEtBQ01zTTtNQUNiO1dBRFdoTTtjQUdUa2xCLEVBSFNsbEIsS0FHSjBLLEVBSEkxSztVQUdHLGVBSkwyMEIsRUFJUHpQLElBQWtDLGtCQUh2QmxaLElBR050QixHQUE2QjtjQUh6QmlNLFNBQUUxSyxTQUdYaVosRUFIV2xaLEtBQUZoTSxNQUFFZ007O1FBRUwsU0FJQTtJQXZ4QkcsU0F5eEJYMHhFLE9BQUtoK0UsRUFBRWkxQjtNQUNUO1lBRE9qMUI7T0FDRCw4QnRENTNCYixPc0R1MkJTODlFLFlBb0JPN29EO01BQ0gsVUFDTSxJQUFML3RCLFdBQUssa0JBQUxBO01BQ0csUUFBSTtJQTV4QkQsU0E4eEJYKzJFLFVBQU9qK0UsR0FBSSxnQkFBSkEsS0FBa0I7SUE5eEJkLFNBK3hCWGsrRSxRQUFNbCtFLEdBQUksaUJBQU87SUEveEJOOzs7O1FBK1liaTVFO1FBZ0RJQztRQTdDSkM7UUFDQUM7UUFDQUM7UUFDQUM7UUFFQUM7UUFHQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFFQUM7UUFNQUU7OztXQWtERUUsT0FDQUMsTUFPQUUsU0FTQUMsT0FLQUMsU0FDQUM7O1FBU0ZDO1FBRUFDO1FBQ0FDO1FBRUFDO1FBRUFDO1FBQ0FDO1FBRUFDO1FBQ0FDO1FBRUFDO1FBRUFDO1FBQ0FDO1FBR0FDO1FBRUFDO1FBRUFDO1FBR0FDO1FBQ0FDO1FBRUFDO1FBRUFDO1FBQ0FDO1FBQ0FDO1FBRUFDO1FBUUFHOzs7V0FtRUVHLE9BQ0FDLE1BT0FFLFNBU0FDLE9BS0FDLFNBQ0FDOztRQVNGQztRQUdBRTtRQUNBQztRQUVBQztRQUVBQztRQUNBQztRQUVBQztRQUdBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUVBQztRQU9BQzs7O1dBK0ZFRyxPQUNBQyxNQWFBRSxTQVNBQyxPQUtBQyxVQUNBQzs7O1V0RGo0QlQ7O0lzRGtHb0I7YWhEOURmQyxpQkFBaUJDLFdBQVdsbEYsaUJBQWlCaUk7TUFVNUMscUJBVjRDQSxjQVcxQyxPQVh5QmpJO01BWXpCLDhCQVowQ2lJLGNBQzlCM0M7TUFDZjtnQkFEZUE7VUFFUCxjQUhTNC9FLFdBQTRCajlFLEtBQzlCM0MsSUFFZ0IsUUFGaEJBO1VBR1YsTUFIVUEsVUFJSitRLElBSkkvUTtVQUtmO29CQURXK1E7Y0FFSCxjQVBTNnVFLFdBQTRCajlFLEtBS2xDb087ZUFFb0IsYUFQY3BPLEtBS2xDb08sYUFBRWpDLElBQUZpQztjQUdOLFFBSE1BOztZQUNHLGFBTitCcE8sT0FLaENtTTtRQUhDLGFBRitCbk0sVUFZVDthQU1wQ2s5RSxnQkFBZ0JELFdBQVdsbEYsaUJBQWlCaUk7TUFjM0MscUJBZDJDQSxjQWV6QyxPQWZ3QmpJO01BZ0J4Qiw4QkFoQnlDaUksY0FDekIzQztNQUNuQjtnQkFEbUJBO1VBRVgsY0FIUTQvRSxXQUE0Qmo5RSxLQUN6QjNDLElBRVksUUFGWkE7Y0FJWitRLElBSlkvUTtVQUtuQjtvQkFETytRO2NBRUMsY0FQUTZ1RSxXQUE0Qmo5RSxLQUtyQ29PO29CQUlZK2tFLElBSlova0U7Z0JBS1A7MEJBRG1CK2tFO29CQUVYLGNBWFE4SixXQUE0Qmo5RSxLQVN6Qm16RTtzQkFFWSxRQUZaQTtvQkFHZCxhQVp1Q256RSxPQVN6Qm16RTtrQkFDTCxhQVY4Qm56RTtjQVF2QyxRQUhFb087O1lBQ08sT0FOYXJXO1FBRWIsYUFGOEJpSSxVQWdCSjthQTBCdENpOUUsV0FBVzEvRSxFQUFFMUUsR0FBSSw4QkFBTjBFLEVBQUUxRSxNQUFlO2FBQzVCc2tGLFlBQVk5L0U7TUFBSTtrQ0FBSkE7T0FBSSxxQkFBdUIsZ0JBQTNCQTtpQkFBdUM7YUFDbkQrL0UsWUFBWS8vRTtNQUNkLHFCQURjQTtNQUNkOztvQ0FEY0E7c0JBRTZCLHFCQUFoQixNQUZiQTtRQUVxQzs7cUNBRnJDQTt1QkFHNkIscUJBQWhCLE1BSGJBOzs7OztNQUdzQyxXQUFDO2FBQ25EZ2dGLGFBQWFyOUUsS0FBS3M5RSxNQUNwQixtQkFEb0JBLEtBQUx0OUUsS0FDbUI7YUFFaEN1OUUsZ0JBQWlCbmpFLE9BQU84dEM7TUFDMUI7bUNBRG1COXRDO09BQ25CLDRCQUQwQjh0QztNQUMxQixHQUFJaHVDLFNBQWlDc2pFO1FBRTNCLElBQUp0Z0YsRUFBSSxNQUhnQmdyRCxTQUNXczFCLFFBQWpDdGpFO1FBR0MseUJBRENoZCxFQUhha2Q7b0JBS1YsTUFMaUI4dEMsV0FDV3MxQixRQUFqQ3RqRTs7TUFRRixRQUFJOztNQUdGOzs7OztJQUNNLFNBNkpSdWpFLE1BblF1QmxnRjtNQUMzQiw0QkFEMkJBLEdBRW5CLFdBREo0QjtNQUVKLFNBRElOO01BREosSUFFQSxLQUZJTSxVQUVKOztZQUNBdEc7UUFDRTtVQUFHLDBCQUxzQjBFLEVBSTNCMUU7V0FFTyxXQUpIZ0csRUFGWTNHOztXQU9ULFNBTEgyRyxFQUtzQixnQkFQQ3RCLEVBSTNCMUU7VUFHK0IsU0FIL0JBOzs7TUFLQSxTQVBJZ0c7TUFPSixnQkFQSUE7SUFvR1EsU0E4SlI2K0UsY0E3SmNyeEQsSUFBSzNzQixNQUFPQyxPQUFRQyxPQUFPbWpEO01BQzNDLEdBRG9DbmpEO09BSVE7VUFKUkE7UUFJVyxnQkFKWEEsT0FBUkQsZ0JBTXFCLFVBQVEsTUFGbEI1Qzs7OztTQUpYNEM7T0FHZ0IsUUFIaEJBLGVBR2dCLFlBQU8sTUFBWmlnRDs7O01BQXJDO1NBSG1CbGdEO09BRXVCLFFBRnZCQSxjQUV1QixZQUFPLE1BQVptZ0Q7OztNQUNyQyxTQURBO01BREYsNEJBQWtCLE1BMkpoQjQ5QixTQTVKY3B4RCxJQUEyQjAyQixhQU1zQjtJQUNwRCxTQUFYNDZCO01OOUhQLE9Nb0NLWCxpQkE0REVDLFdBSEFsbEY7SUFrQ1UsU0FBVjZsRjtNTi9IUCxPTXNES1YsZ0JBMENFRCxXQUhBbGxGO0lBa0NVOzs7T0FuQ1ZEO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FnbEY7T0FDQUU7T0FDQUM7T0FJQUM7T0FHQUU7O09BMEtBRTtPQUNBQztPQXRKQUM7T0FDQUM7SUFBVSxTQVFWQyxhQUFXdGdGLEVBQUUxRTtNQUFZLHNCQUFkMEUsRUFBRTFFLEdBQVksWUFBSm9IO01BQUk7Ozt1QkFBSkE7aUJBQTJDO0lBUnRELFNBU1Y2OUUsY0FBWXpnRjtNQUNkO2tDQURjQTtPQUNkLHFCQUF3QixnQkFEVkE7Ozs7OEJBRWEsZ0JBRmJBOzs7OytCQUdhLGdCQUhiQTs7Ozs7aUJBRzBCO0lBWjVCLFNBYVYwZ0YsY0FBWTFnRjtNQUNkLHVCQURjQTtNQUNkOztvQ0FEY0E7c0JBRTZCLHFCQUFoQixNQUZiQTtRQUVxQzs7c0NBRnJDQTt3QkFHNkIscUJBQWhCLE1BSGJBO1VBR3NDOzt3Q0FIdENBOzBCQUk2QixxQkFBaEIsTUFKYkE7WUFJc0M7O3lDQUp0Q0E7MkJBSzZCLHFCQUFoQixNQUxiQTs7Ozs7Ozs7O01BS3VDLFdBQUM7SUFsQjFDLFNBbUJWMmdGLGVBQWFoK0UsS0FBS3M5RTtNQUNyQiwrQkFEcUJBLFNBQ3JCLHNCQURnQnQ5RTtNQUNoQjtPQUNTOzs7V0FGT0E7K0RBQUtzOUU7O1FBSU8sdUJBSlBBO2FBSUksa0JBQXhCLGtCQUZJLy9FOzs7TUFQSixXQVN1RDtJQXZCM0MsU0F5QlYwZ0Ysa0JBQWlCN2pFLE9BQU84dEM7TUFDMUI7bUNBRG1COXRDO09BQ25CLDRCQUQwQjh0QztNQUMxQixHQUFJaHVDLFNBQWlDc2pFO1FBRTNCO2lCQUhnQnQxQixTQUNXczFCLFFBQWpDdGpFO1NBRzRCLHVCQUpiRTtRQUlVLHlCQUF4QixrQkFEQ2xkO29CQUVHLE1BTGlCZ3JELFdBQ1dzMUIsUUFBakN0akU7O01BUUYsUUFBSTtJQWxDTTtNQXNDUixtQ0FERmdrRTs7Ozs7YUFFQUMsUUFBTTVnRjtNQUNSLDRCQURRQSxHQUVBLFdBREo0QjtNQUVKLFNBRElOO01BQ0osU0FpQkl1L0UsT0FBTy9nRjtRQUFJO2NBQUpBO2NBQUk4UDtVQUFtQjtxQkFsQjlCdE87WUFrQjhCLFNBQW5Cc087ZUFBSjlQLE1BQUk4UDs7UUFuQmYsUUFtQjhEO01BakI5RCxTQUNRa3hFLGVBQUt4bEY7UU4xS2xCLElNMEtrQnVHO1FBQ1g7YUFEV0EsUUFIVEQsRUFJWSxnQkFIWk47VUFJSSxJQUdKb0IsRUFISSxnQkFOQTFDLEVBSUs2QjtVQUVMLFVBR0phO1lBRlE7OztxQkFHUnErRSx1QkFOU2wvRTswQ0FNVGsvRSxnQkFOU2wvRTtvQkFLVGE7WUFEUTs7O3FCQUVScStFLHVCQU5TbC9FOzBDQU1Uay9FLGdCQU5TbC9FO1VBS0QsU0FQUlAsRUFPQW9CO1VBSEksSUFHSSxJQUxDYjttQkFLK0I7TUFONUMsU0FPSWsvRSxnQkFBUWpoRixFQUFFeEU7WUFBRnNWLE1BQUUvTztRQUNaO2FBRFlBLFFBVFZELEdBV0EsU0FWQU4sTUFVQSxjQUZRc1A7VUFLRiwwQkFmRjVRLEVBVU02QjtVQUtKO1lBQ0ksWUFORitPO1lBTWtCLFNBZDFCdFA7WUFjMEIsU0FOaEJPO1lBTWdCO21EQVp0QmkvRTs7O1lBYU0sUUFQQWovRSxZQU9BLElBUEYrTyxvQkFBRS9PO1VBUUEsT0FSRitPO1VBUUU7aURBZE5rd0UsaUJBTU1qL0U7d0NBTk5pL0UsVUFNTWovRSxNQVNUO01BaEJMLFNBQ1FxaUQsS0FBSzVvRCxHTjFLbEIsdUJNMEthd2xGLFNBQUt4bEY7TUFrQmI7c0JBcEJJZ0csRUFxQmE7YUFnQ2YwL0UsbUJBQW1CeGhGO01BQ1EsS0FBMUIsV0FEa0JBLFdBQ1EsV0FEUkE7T0FHYixrQkFIYUEsTUFJWixnQkFKWUE7TUFFVixtREFGVUEsR0FNbEI7YUFJRHloRixnQkFBY255RCxJQUFLM3NCLE1BQU9DLE9BQVFDLE9BQU9takQ7TUFDM0MsR0FEb0NuakQ7T0FTQTtVQVRBQTtRQVNHO29CQVRIQSxPQUFSRDs7V0FXYSxZQUFRLG1CQUhWNUM7Ozs7O1NBUlg0QztPQU9nQixRQVBoQkEsZUFPZ0IsWUFBTyxtQkFBWmlnRDs7OztTQVBsQmxnRDtPQU11QixRQU52QkEsY0FNdUIsWUFBTyxtQkFBWm1nRDs7O01BRDNCOzBCQUFtQixNQXRFN0JzK0IsUUFpRXlDcDdCO09BcEJuQyxXQUFSLHNCQURZeGxEOztNQUVaO2lCQUNPMEM7VU5yTlo7VU1zTlMsU0FER0E7Ozs7Ozs7Ozs7Ozs7MkJBR0MsU0FMSnBCLE1BS0ksU0FMSkEsRUFFR29CLElBS0MsU0FQSnBCLEVBRUdvQixFQUtvQjtRQVJmMUM7TUEwQkEsdUJBeEJaLFNBRElzQjtNQXVCRix5REFIY3d0QixZQWFmO2FBT0NveUQsZUFBZWxoRjtNQUxqQixvQ0FLaUJBO01BTGpCO1FBSWtDLDBCQUNqQkE7UUFMRDs7OztRQUlrQix1Q0FBUyxnQkFDMUJBOzs7O1FBRU8sZUFGUEEsSUFFWixzQkFGWUE7UUFFWCxnQkFGV0E7TUFHWixrQkFIWUEsRUFHTDthQUNWbWhGLFVBQVFuaEY7TUFDVTs0QkFEVkE7T0FDVTs7T0FDVixvQkExSFJzZ0YsYUFIQXpsRixtQkE0SFV1bUY7TUFDRixXQURMQyxNQUNEQyxJQUNPO2FBQ1RDLFdBQVN2aEY7TUFDVSx5QkFEVkEsR0FDVTs4QkE3SG5Cc2dGLGFBSEF6bEYsbUJBZ0lXdW1GLEtBQ29DOzs7O09BbEkvQ3htRjtPQUNBQztPQUNBQztPQUNBQztPQUNBdWxGO09BQ0FDO09BSUFDO09BTUFDO09BTUFDO09BWUFDO09BRUFDO09BaUVBSztPQTRCQU07T0FKQUo7SUFzQlcsU0FBWEs7TU5yUlAsT01vQ0svQixpQkFtR0VhLGFBbUlBcmxGO0lBWVUsU0FBVndtRjtNTnRSUCxPTXNESzlCLGdCQWlGRVcsYUFtSUFybEY7SUFZVTs7O09BYlZEO09BQ0FDO09BQ0FDO09BQ0FDO09BcklBbWxGO09BQ0FDO09BSUFDO09BTUFDO09BTUFDOztPQTJIQVI7T0FDQUM7T0FDQXFCO09BQ0FDO0tBQVU7Ozs7S0E3TWRDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBR0FDO0tBQ0FDO2FBeU1FQyxTQUFPbkMsUUFBUTExQjtNQUNqQixJQUFJL29ELEVBQUosc0JBRFN5K0U7TUFFRyxTQURSeitFLE9BQ1EsYUFGSHkrRSxRQUNMeitFO09BR1csV0FKTnkrRSxRQUlNLElBek5md0IsVUFxTmlCbDNCO01BR1osV0FISTAxQixRQUFRMTFCLFNBSWdCO2FBRS9CODNCLFlBQVloZ0YsS0FBS3M5RTtNQUNoQixzQkFEV3Q5RSxLQUFLczlFO2VBRWQ7aUJBRlN0OUU7O2lCQUVULHNCQUZTQSxRQUVULHNCQUZjczlFO2VBR2QscUNBQWtDO2FBRXJDMkMsY0FBY2pnRjtNQUNoQiw4QkFEZ0JBLGNBTUd5YTtNQUNqQjtRQUFZLFFBREtBLFNBQ0wsYUFQRXphLEtBTUd5YTtVQUVULDBCQVJNemEsS0FNR3lhO1lBRVcsUUFGWEEsWUFMRjVoQjtZQUNmO2NBQVksUUFER0EsT0FDSCxhQUZFbUgsS0FDQ25IO2dCQUVQLDBCQUhNbUgsS0FDQ25IO2tCQUVhLFFBRmJBO2dCQUdWLDZCQUpTbUgsUUFNR3lhO2NBSmtCO1VBTzlCLFFBSFlBOztRQUNrQixTQUlGO2FBRWpDeWxFLFVBQVVsZ0Y7TUFDSixJQUFKYixFQUFJLGNBRElhO01BQ0osYUFBSmIsVUFDa0IsTUFGVmEsS0FFVSxzQkFGVkEsUUFDUmIsUUFDNEQ7YUFFOURnaEYsZUFBZW5nRjtNQUNULElBQUpiLEVBQUksY0FEU2E7TUFDVCxhQUFKYjtlQUNVO2VBQ1QsTUFIWWEsT0FHWixzQkFIWUEsUUFDYmIsTUFFMkM7YUFFN0NpaEYsaUJBQWlCcGdGO01BQ1gsSUFBSmIsRUFBSSxjQURXYTtNQUNYLGFBQUpiLEVBRGVhLEtBRUssTUFGTEEsT0FFSyxzQkFGTEEsUUFDZmIsTUFDOEQ7UUFLaEVraEYsMkJOelVMO2FNMlVLQyxlQUFlQyxTQUFTdG1FLE9BQU9HO01BQ2pDO3lCQUhFaW1FO09BR0Y7cUJBSEVBLHVCYzlTQS8yRSxpQmQ4U0ErMkU7T0FHUTtNQUNNLGdCQUZDRSxTQUVELHlCQUZVdG1FLE9BQ3RCdW1FLElBRDZCcG1FLFFBRTRCO1FBRzNEcW1FLHlCQTlQRmY7YUFnUUVnQixrQkFBa0JuakYsR0FBSSwyQkFBSkEsRUFBSSxRQUEwQjthQUNoRG9qRix5QkFBdUIsT0FIdkJGLHdCQUc2QzthQUU3Q0csVUFBWXYzRCxJQUFtQ3BQLE9BQU9HO01BQ3hELEdBRGNpUDtPQUFXLFFBQVhBLGdCQUFXQzs7V0FBWGkzRCxTQUxaRTtNQU1GLFNBQVFJLFNBQVNua0Y7UU50VnBCLElNc1ZvQnU3QztRQUNmO1VBQVcsSUFBUGo0QyxLQUFPLGVBRkN1Z0YsU0FBbUN0bUUsT0FBT0c7VUFFM0M7WUFFNEQsdUJBQTNELGNBRlJwYTtnQkFJQytGOzs7Y0FDSCxXQU5ha3lDLFVBTVcsTUFEckJseUM7Y0FDa0MsY0FOeEJreUM7O2tCQUtWbHlDLEdBQ3dEO01BTi9ELGtCQU9hO2FBRVhnN0UsZUFBaUIxM0QsY0FDbUNwUCxPQUFPRztNQUM3RCxHQUZtQmlQLElBQU8sUUFBUEEsWUFBT0MsYUFBUHhwQjtNQUVuQixRQUZpRCxrQkFBUm1oRixNQUFRRCxlQUFSQztNQUV6QztPQUQ4QixrQkFBWFYsU0FBV1c7O1dBQVhYLFNBaEJqQkU7TUFpQkYsU0FBUUksU0FBU25rRjtRTmpXcEIsSU1pV29CdTdDO1FBQ2Y7VUFBVyxJQUFQajRDLEtBQU8sZUFGTXVnRixTQUFtQ3RtRSxPQUFPRztVQUVoRDtZQUdSLFlBSENwYSxLQUdELHdCQU5jRixRQUFzQm1oRixNQUduQ2poRjs7Z0JBSUMrRjs7O2NBQ0gsV0FOYWt5QyxVQU1XLE1BRHJCbHlDO2NBQ2tDLGNBTnhCa3lDOztrQkFLVmx5QyxHQUN3RDtNQU4vRCxrQkFPYTs7OztPQTlSYm01RTtPQUNBQztPQUNBQztPQXFORVc7T0FuTkZUO09BQ0FDO09BQ0FDO09BdU5FUTtPQXRORlA7T0F3T0VTO09BU0FFO09BTEFEO09BdE9GTjtPQUNBQztPQWZBYjtPQTRRRTJCO09BVUFHO09BWkFKO09BREFEO09BaFFGaEI7T0FDQUM7T0FDQUM7O2FDNURFdUIsTUFBSXpqRixFQUFFQyxHQUFXLFlBQWJELE9BQUVDLEtBQUZELE9BQUVDLEtBQTRDO2FBRWxEeWpGLE1BQUkxakYsRUFBRUMsR0FBVyxZQUFiRCxPQUFFQyxLQUFGRCxPQUFFQyxLQUE0QzthQUVsRDBqRixJQUFJM2pGLEdBQWMsY0FBZEEsWUFBa0M7YUFFdEM0akYsS0FBSzVqRixHQUF5QixZQUF6QkEsWUFBK0I7YUFFcEM2akYsSUFBSTdqRixFQUFFQztNQUF1QixZQUF6QkQsT0FBRUMsT0FBRkQsT0FBRUMsS0FBRkQsT0FBRUMsT0FBRkQsT0FBRUMsS0FDeUM7YUFFL0M2akYsSUFBSTlqRixFQUFFQztNQUNLLEdBQWtCLFNBRHZCQSxTQUNLLFNBRExBO1FBRUUsTUFGRkEsWUFHRSxFQUhGQSxPQUVGVCxJQUZFUztRQUlvQixhQUp0QkQsT0FFQVIsSUFGQVEsUUFHQXlYLEdBSEF6WCxPQUVBUixJQUZBUSxRQUdBeVg7TUFJSSxRQVBGeFgsWUFRRSxJQVJGQSxPQU9GMnhCLE1BUEUzeEI7TUFTb0IsYUFGdEIyeEIsTUFQQTV4QixlQVFBaWtCLEtBREEyTixNQVBBNXhCLGVBUUFpa0IsSUFFNkI7YUFFakM4L0QsSUFBSS9qRixHQUFJLFdBMUJSOUUsTUEwQkk4RSxFQUFhO2FBRWpCZ2tGLE1BQU1oa0YsR0FBZ0IsT0FBaEJBLHlCQUFnQzthQUV0Q2lrRixLQUFLamtGO01BRVcsZUFGWEEsTUFFa0MsV0FGbENBO01BRWtDLEdBQXJDUixRQUNZLE9BRFdyRTtNQUV0QixHQUZzQkEsUUFFTixPQUZqQnFFO01BR0MsR0FIc0JyRSxLQUF2QnFFLEdBSU0sSUFBSjBwQixFQUpxQi90QixJQUF2QnFFLEVBSWdCLE9BSmhCQSxJQUl3QyxlQUF0QzBwQjtNQUpZLElBTVpnN0QsSUFORjFrRixJQUF1QnJFO01BTVAsT0FOT0EsSUFNaUIsZUFBdEMrb0YsVUFBc0M7YUFFMUN0MUQsSUFBSTV1QixHQUFVLGtCQUFWQSxVQUFtQjthQUV2Qm1rRixNQUFNeGtGLEVBQUVpRCxHQUFnQixZQUFMLFNBQVhBLEtBQUZqRCxFQUE4QixTQUE1QmlELEtBQUZqRCxFQUEwQzthQUVoRHlrRixLQUFLcGtGO01QakVWLEdPaUVVQSx5QkFDMEI7TUFFYixlQUhiQSxNQUdvQyxXQUhwQ0E7TUFHb0MsR0FBZDdFLEtBQXZCcUU7T0FHUTtVQUhlckUsSUFBdkJxRTtRQUNBK3FDLEVBR0EsVUFKQS9xQyxLQUlvRCxzQkFBRixlQUQ5QzBwQjs7T0FHSTtZQU5SMXBCLElBQXVCckU7UUFDdkJvdkMsRUFNQSxVQVB1QnB2QyxLQU8yQixpQkFEOUMrb0YsTUFDNEMsZUFENUNBO01BR1IsU0FaS2xrRixLQWEyQixZQVQ1QnVxQyxRQUpDdnFDLE9BSUR1cUM7TUFEYyxJQUNkODVDLFVBSkNya0YsS0FJRHVxQztNQVVnQixrQkFYT3B2QyxJQUN2Qm92QyxNQVdIO2FBRUQrNUMsSUFBSXRrRjtNQUNNLElBQVJxSSxFQUFRLFNBRE5ySSxNQUNxQixZQUF2QnFJLElBQWdDLFNBRDlCckksTUFDRnFJLElBQW9ELFNBRGxEckksTUFDd0Q7YUFFNUR1a0YsSUFBSXZrRjtNQUFvQyxvQkFBcENBLFdBQXVCLHFCQUFSLEtBQWZBLFNBQStDO2FBRW5Ed2tGLElBQUl4a0YsRUFBRUMsR0FBUSxlQUFSQSxFQUFlLElBQWpCRCxJQUF5Qjs7OztPQW5FN0IvRTtPQUNBQztPQUNBQztPQU1Bd29GO09BRUFDO09BTkFIO09BRUFDO09BTUFHO09BZUFFO09BWkFEO09BOEJBTTtPQWhCQUo7T0FFQUM7T0FVQXIxRDtPQUVBdTFEO09BbUJBRztPQUdBQztPQUVBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T085REF4c0U7OztPQUVBRTtPQUVBblc7T0FJQUQ7T0FJQXFXO09BUUFHO09BZUFNOztPQVBBL1c7T0FFSTBXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0t5Q0lKa3NFO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0F0L0I7YUFFQXUvQjs7ZUFDVztlQUNBO2VBQ0k7ZUFDRTtlQUNEO2VBQ0U7ZUFDVDtlQUNBO2VBQ0Y7ZUFDTTtnQkFDQTtnQkFDQTtnQkFDTCxTQUFDO1FBS1RDLFdBQ0FDO2FBV01DLE1BQU1wVSxJQUFJcVUsSUFBSXBtRixFQUFFcW1GLElBQUl4bEY7TUFDMUIsR0FEc0J3bEYsUUFBTkQ7T0FDZSwyQkFEbkJyVSxJQUFJcVUsSUFDMkIsV0FEdkJwbUYsRUFBSm9tRjtNQUVPLDBCQUZHdmxGLElBQUp3bEYsc0JBRWpCO01BQWtCO1lBQWxCajJFO1FBQ0U7MkJBSFNnMkUsSUFBTUMsZ0JBRWpCajJFO1VBRUUsTUFKSzJoRSxJQUFJcVUsSUFBSXBtRixFQUFFcW1GLFlBQUl4bEY7VUFJbkIsU0FGRnVQOzs7Y0FHSTthQUNIazJFLE1BQU12VSxJQUFJcVUsSUFBSXBtRixFQUFFcW1GLElBQUl4bEY7TUFDMUIsUUFEc0J3bEY7UUFFSiwwQkFGUXhsRixJQUFKd2xGLGNBRWpCO1FBQWE7Y0FBYmoyRTtVQUNFOzZCQUhTZzJFLElBQU1DLGdCQUVqQmoyRTtZQUVFLE1BSksyaEUsSUFBSXFVLElBQUlwbUYsRUFBRXFtRixZQUFJeGxGO1lBSW5CLFNBRkZ1UDs7OztNQURXLDJCQURKMmhFLElBQUlxVSxJQUNZLFdBRFJwbUYsRUFBSm9tRixLQUtQO2FBQ1BHLE9BQWNwcEMsS0FBTXFwQyxPQUFtQkMsS0FBS3ptRjtNQUNwQyx1QkFETW05QyxLQUFNcXBDLE9BQW1CQyxNQUMvQixLQUQrQkE7TUFDL0IsYUFHUkM7ZUFIRTNVO2VBRGtCeVU7a0JBS0ksTUFKdEJ6VSxJQUlnQyxlQURsQzJVLFFBSjRDMW1GLEVBSTVDMG1GLGFBSnVDRCxNQUNyQzFVO2tCQUdnQixNQUhoQkEsSUFHMEIsZUFBNUIyVSxRQUo0QzFtRixJQUFMeW1GLE1BQ3JDMVUsSUFLeUI7YUFJM0IwVSxLQUFLbGpGO01BQ0MsdUJBRERBLEdBRUMsaUJBREpqRCxLQUNJLEtBREpBLFVBQ0k7O1lBQ1J4RTtRQUFvQjtVQUFTLDZCQUh0QnlILEVBR1B6SDtVQUFvQixpQkFEaEJzYyxFQUNKdGM7VUFBNkIsU0FBN0JBOzs7TUFDQSxPQUZJc2MsQ0FFSDthQU9DdXVFLGNBQWM1VTtNQUNrQixnQ0FBeUIsS0FEM0NBO01BQ2hCLG1DQUFvQixhQURKQSxXQUNzRDthQW9CcEU2VSxTQUFPenBDLEtBQUtxcEMsUUFDZCxzQkFEU3JwQyxLQUFLcXBDLFdBQ2tCO2FBQzlCSyxNQUFJOVUsS0FBTSxtQ0FBTkEsUUFBMkI7YUFDL0IrVSxNQUFJL1U7TUFBTTs0QnZEaEtqQiwyQnVEZ0tXQSxlQUEyQjthQU8vQmdWLGdCQUFjaFY7TUFBeUIsdUNBQXpCQSxLQUFtQzthQUtqRGlWLFNBQVM3cEMsS0FBS3FwQyxPQUFPdG1GO01BQ2YsSUFBSnFELEVBQUksU0FERzQ1QyxLQUFLcXBDLFFBRWhCLGlCQURJampGLEdBRG1CckQsR0FFdkIsT0FESXFELENBRUg7YUFNQzBqRixTQUFPOXBDLEtBQUtxcEMsT0FBT1U7TUFDckIsc0JBRFMvcEMsS0FBS3FwQyxVQUFPVSxLQUNjO2FBYWpDQyxnQkFBY3BWO01BQ2tCLHVCQURsQkE7TUFDaEIsbUNBQW9CLGFBREpBLFdBQzJCO2FBR3pDcVYsTUFBZ0I3akYsRUFBMEJqRDtNQUN0QyxpQ0FEWWlEO01BQ1osYUFFZSxjQUhIQSxLQUEwQmpELElBRTdCLGNBRkdpRCxLQUEwQmpELEdBRzRCO2FBT3RFK21GLE9BQWNscUMsS0FBTXFwQyxPQUFtQlUsSUFBSWxuRjtNQUNuQyxJQUhLK3hFLElBR0wsU0FETTUwQixLQUFNcXBDLE9BQW1CVTtNQUMvQixHQURZVjtRQUR0QjtjQUN5Q1U7Y0FEekM3a0Y7VUFBb0I7MEJBREwwdkUsSUFDZjF2RSxJQUFxQyxXQUNRckMsRUFEN0NxQztZQUFvQixTQUFwQkE7ZUFDeUM2a0YsUUFEekM3a0Y7O2VBRGUwdkU7TUFHTCxJQUpWLEtBR3lDbVYsWUFIekM7OztRQUF5Qjt3QkFDVm5WLElBRGZqMkUsRUFBMEMsV0FHR2tFLEVBSDdDbEU7VUFBeUIsU0FBekJBOzs7YUFDZWkyRSxHQU1nQzthQUM3Q3VWLFNBQWtCbnFDLEtBQU1xcEMsT0FBa0Jud0Q7TUFDbkM7bUJBRFc4bUIsS0FBTXFwQyxPQUFrQm53RDtPQUNuQyxJQURpQm13RDtPQU8xQixLQVA0Q253RDtPQU81Qzs7O1FBQXNDO3dCQU5sQ2t4RCxHQU1KenJGLElBTEk4SCxRQUswRCxpQkFQbEJ5eUIsS0FPNUN2NkI7VUFBc0MsU0FBdENBOzs7TUFDQSxPQVBJeXJGLEVBT0Y7YUFLQUMsVUFBT3JxQyxLQUFLcXBDLE9BQU9pQixLQUFLQztNQUMxQixzQkFEU3ZxQyxLQUFLcXBDLFVBQU9pQixLQUFLQyxNQUNnQjthQWV4Q0MsZ0JBQWM1VjtNQUMrQix1QkFEL0JBLEtBQ2tCLG1CQURsQkE7TUFDaEI7MkNBQW9CLGFBREpBLGlCQUN5QzthQU92RDZWLFdBQVdya0YsRUFBRWpELEdBQUkscUJBQU5pRCxLQUFFakQsR0FBK0I7YUFDNUN1bkYsWUFBWXRrRixFQUFFakQsR0FBSSxxQkFBTmlELEtBQUVqRCxHQUFnQzthQWU5Q3duRixPQUFjM3FDLEtBQU1xcEMsT0FBbUJpQixLQUFLQyxLQUFLMW5GO01BQ3pDLElBUEsreEUsSUFPTCxVQURNNTBCLEtBQU1xcEMsT0FBbUJpQixLQUFLQztNQUNwQyxHQURZbEI7UUFMdEI7Y0FLOENrQjtjQUw5Q3hqRDtVQUNFOztrQkFJdUN1akQ7a0JBSnZDcGxGO2NBQ0U7OEJBSFcwdkUsSUFFYjF2RSxJQURGNmhDLElBRXVCLFdBRzRCbGtDLEVBSmpEcUMsSUFERjZoQztnQkFFSSxTQURGN2hDO21CQUl1Q29sRixTQUp2Q3BsRjs7cUJBREY2aEM7ZUFLOEN3akQsU0FMOUN4akQ7O2VBRGU2dEM7TUFPTCxJQVpWLEtBV3lDMFYsYUFYekM7OztRQUNFO21CQVU0Q0MsYUFWNUM7OztZQUNFOzRCQUdXM1YsSUFMZmoyRSxFQUNFc1UsRUFDcUIsV0FTNEJwUSxFQVhuRGxFLEVBQ0VzVTtjQUNFLFNBREZBOzs7bUJBREZ0VTs7O2FBS2VpMkUsR0FVc0M7YUFDbkRnVyxXQUFrQjVxQyxLQUFNcXBDLE9BQWtCbndEO01BQzVDO1lBRDRDQTtPQUM1QyxXQUFJb3hELE9BQzRDLGlCQUZKcHhEO09BR25DLGFBSFc4bUIsS0FBTXFwQyxPQUN0QmlCLEtBQ0FDO09BQ0ssSUFIaUJsQjtPQVMxQixLQVJJaUI7T0FRSjs7O1FBQ0U7VUFBVSxJQUFOTyxJQUFNLGlCQVZnQzN4RCxLQVM1Q3Y2QjtVQUNZLEdBQU5rc0YsbUJBUkZOO1dBVUE7VUFGUSxJQUVxRCxLQVY3REEsYUFVNkQ7O2dCQUMvRHQzRTtZQUNFOztnQkFYQW0zRSxHQU1KenJGLElBTEk4SCxRQVNGd00sSUFURXhNLFFBVWtDLGlCQUpoQ29rRixJQUdKNTNFO2NBQ0UsU0FERkE7OztVQUhVLFNBRFp0VTs7O01BUUEsT0FkSXlyRixFQWNGO2FBS0FVLFVBQU85cUMsS0FBS3FwQyxPQUFPaUIsS0FBS0MsS0FBS1E7TUFDL0Isc0JBRFMvcUMsS0FBS3FwQyxVQUFPaUIsS0FBS0MsS0FBS1EsTUFDaUI7YUFpQjlDQyxnQkFBY3BXO01BQzRDO2tDQUQ1Q0E7T0FDK0IsbUJBRC9CQTtPQUNrQixtQkFEbEJBO01BQ2hCOzs2Q0FBb0IsYUFESkE7b0JBQ3NEO2FBT3BFcVcsYUFBYTdrRixFQUFFakQsRUFBRW1wQixHQUFJLHFCQUFSbG1CLEtBQUVqRCxFQUFFbXBCLEdBQWtDO2FBQ25ENCtELGNBQWM5a0YsRUFBRWpELEVBQUVtcEIsR0FBSSxxQkFBUmxtQixLQUFFakQsRUFBRW1wQixHQUFtQzthQUNyRDYrRCxhQUFhL2tGLEVBQUVqRCxHQUFJLHFCQUFOaUQsS0FBRWpELEdBQStCO2FBQzlDaW9GLGNBQWNobEYsRUFBRWpELEdBQUkscUJBQU5pRCxLQUFFakQsR0FBZ0M7YUFtQmhEa29GLE9BQWNyckMsS0FBTXFwQyxPQUFtQmlCLEtBQUtDLEtBQUtRLEtBQUtsb0Y7TUFDOUMsSUFUSyt4RSxJQVNMLFVBRE01MEIsS0FBTXFwQyxPQUFtQmlCLEtBQUtDLEtBQUtRO01BQ3pDLEdBRFkxQjtRQVB0QjtjQU9tRDBCO2NBUG5EdHBEO1VBQ0U7O2tCQU00QzhvRDtrQkFONUN4akQ7Y0FDRTs7c0JBS3FDdWpEO3NCQUxyQ3BsRjtrQkFDRTtrQ0FKUzB2RSxJQUdYMXZFLElBREY2aEMsSUFERnRGLElBRzJCLFdBSTZCNStCLEVBTHBEcUMsSUFERjZoQyxJQURGdEY7b0JBR00sU0FERnY4Qjt1QkFLcUNvbEYsU0FMckNwbEY7O3lCQURGNmhDO21CQU00Q3dqRCxTQU41Q3hqRDs7cUJBREZ0RjtlQU9tRHNwRCxTQVBuRHRwRDs7ZUFEZW16QztNQVNMLElBaEJWLEtBZXlDMFYsYUFmekM7OztRQUNFO21CQWM0Q0MsYUFkNUM7OztZQUNFO3VCQWErQ1EsYUFiL0M7OztnQkFDRTtnQ0FJU25XLElBUGZqMkUsRUFDRXNVLEVBQ0UybUIsRUFDdUIsV0FZNkIvMkIsRUFmeERsRSxFQUNFc1UsRUFDRTJtQjtrQkFDRSxTQURGQTs7O3VCQURGM21COzs7bUJBREZ0VTs7O2FBT2VpMkUsR0FZMkM7YUFDeEQwVyxXQUFrQnRyQyxLQUFNcXBDLE9BQWtCbndEO01BQzVDO1lBRDRDQTtPQUM1QyxXQUFJb3hELE9BQzRDLGlCQUZKcHhEO09BRzVDO2NBRElxeEQ7O1VBQ29ELGlCQUFSLGlCQUhKcnhEO09BSW5DLGFBSlc4bUIsS0FBTXFwQyxPQUN0QmlCLEtBQ0FDLEtBQ0FRO09BQ0ssSUFKaUIxQjtPQVUxQixLQVRJaUI7T0FTSjs7O1FBQ0U7VUFBVSxJQUFOTyxJQUFNLGlCQVhnQzN4RCxLQVU1Q3Y2QjtVQUNZLEdBQU5rc0YsbUJBVEZOO1dBV0E7VUFGUSxJQUUrQyxLQVh2REEsYUFXdUQ7O2dCQUN6RHQzRTtZQUNFO2NBQVUsSUFBTmkyRSxJQUFNLGlCQUpSMkIsSUFHSjUzRTtjQUNZLEdBQU5pMkUsbUJBWko2QjtlQWNFO2NBRlEsSUFFK0MsS0FkekRBLGFBY3lEOztvQkFDekRueEQ7Z0JBQ0U7O29CQWZGd3dEO29CQU1KenJGLElBTEk4SDtvQkFTRndNLElBVEV4TTtvQkFhQW16QixJQWJBbnpCO29CQWM4QyxpQkFKMUN5aUYsSUFHSnR2RDtrQkFDRSxTQURGQTs7O2NBSFUsU0FEWjNtQjs7O1VBSFUsU0FEWnRVOzs7TUFhQSxPQW5CSXlyRixFQW1CRjthQVdGbUIsbUJBQW1CbmxGO01BQ2xCLDhCQURrQkE7O2VBRWhCLDJDQUF5QzthQUM1Q29sRixtQkFBbUJwbEY7TUFDbEIsOEJBRGtCQTs7ZUFFaEIsMkNBQXlDO2FBQzVDcWxGLG1CQUFtQnJsRjtNQUNsQiw4QkFEa0JBOztlQUVoQiwyQ0FBeUM7YUFDNUNzbEYsbUJBQW1CdGxGO01BQ2xCLDhCQURrQkE7O2VBRWhCLDJDQUF5QzthQUs1Q3VsRixVQUFVdmxGLEdBQUksdUJBQUpBLE1BQWtCO2FBQzVCd2xGLFVBQVV4bEYsRUFBRWtrRixNQUFPLHVCQUFUbGtGLEtBQUVra0YsTUFBeUI7YUFDckN1QixVQUFVemxGLEVBQUVra0YsS0FBS0MsTUFBTyx1QkFBZG5rRixLQUFFa2tGLEtBQUtDLE1BQThCO2FBQy9DdUIsVUFBVTFsRixFQUFFa2tGLEtBQUtDLEtBQUtRO01BQU8sdUJBQW5CM2tGLEtBQUVra0YsS0FBS0MsS0FBS1EsTUFBbUM7Ozs7T0FyVnpEOUM7T0FDQUM7T0FTQVM7T0FDQUM7T0FUQVQ7T0FDQUM7T0FDQUM7T0FDQUM7T0FHQUc7T0FGQUY7T0FDQUM7T0FFQUU7T0FHQXAvQjtPQUVBdS9CO09Ba0JBQztPQUNBQztVQXVCRUssT0FVQUUsS0FXQUU7O1FBcUJBQztRQWVBSTs7UUFMQUQ7UUFSQUY7UUFDQUM7UUFZQUU7O1FBU0FDO1FBNEJBSTs7UUFkQUY7UUFJQUM7UUFlQUU7O1FBYUFFO1FBd0NBTTs7UUF4QkFIO1FBUUFDO1FBQ0FDO1FBb0JBRTs7UUFzQkFFO1FBZ0RBTzs7UUE5QkFMO1FBUUFDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBd0JBRTtPQWtDRkM7T0FHQUM7T0FHQUM7T0FHQUM7O09BT0FDO09BQ0FDO09BQ0FDO09BQ0FDOztheEM5V0FDLFVBQVVDLFFBQVEzb0YsRUFBRVI7TUFDYixJQUFMdUUsR0FBSyxXQURHNGtGLFFBQVEzb0Y7TUFDWCxxQkFFSSxrQkFIU1IsRUFDbEJ1RSxHQUVhO01BRlIsK0JBQ3VCLHFCQUQ1QkEsR0FDb0QsT0FDdEM7YUFFaEI2a0YsY0FBYzVvRixFQUFFUixHQUNsQixpQkFWRXFFLFdBU2M3RCxFQUFFUixFQUNjO2FBRTlCcXBGLGVBQWU3b0YsRUFBRVIsR0FDbkIsaUJBWkVvRSxZQVdlNUQsRUFBRVIsRUFDUzthQUUxQnNwRixjQUFjeG5FLE1BQU05ZSxLQUFLeEMsRUFBRVI7TUFDbkIsZ0NmOUNiLE9lZ0NLbUUsV0FhYzJkLE1BQU05ZSxZQUFLeEMsRUFBRVIsRUFDZ0I7UUFFM0N1cEYsWUFDQXZzRCxXQUNBd3NEO2FBSUFDLGFBQVdsbEY7TUFDYjtRQUFNLElBQ0pyQixFQURJLG1CQURPcUI7OztnQ0FHYztRQURwQjtnQkFBTHJCLEVBQzZCO2FBRTdCd21GLGFBQVdubEY7TUFDYjtRQUFNLElBQ0pqRSxFQURJLG1CQURPaUU7OztnQ0FHYztRQURwQjtnQkFBTGpFLEVBQzZCO2FBRTdCcXBGLGFBQVdwbEY7TUFDYjtRQUFNLElBQ0ovRCxFQURJLFdBRE8rRDs7O2dDQUdjO1FBRHBCO2dCQUFML0QsRUFDNkI7YUFJN0JvcEYsZUFBYXJsRixHQUFHVSxJQUFJKzNCLElBQUluNUI7TUFDMUI7UUFBTSxhQURTVSxHQUFHVSxJQUFJKzNCLElBQUluNUIsS0FFbEI7OztnQ0FDbUI7bUJBQUk7YUFFN0JnbUYsc0JBQW9CdGxGLEdBQUdWO01BQ3pCO1FBQU0sSUFDSnJELEVBREksb0JBRGdCK0QsR0FBR1Y7OztnQ0FHRTtRQURwQjtnQkFBTHJELEVBQzZCO2FBSTdCc3BGLFVBQVV2bEYsR0FBR1UsSUFBSXJCLElBQUlDO1VBQ1ZZLE1BRE1iLElBQ0ZjLE1BRE1iO01BRXJCO2lCQURlYTtVQUdMLElBQUp2RSxFQUFJLE1BSkFvRSxHQUFHVSxJQUNGUixNQUFJQztVQUdMLFNBQUp2RTtZQUlGO21CQVBXdUUsUUFHVHZFO2FBSUYsTUFQT3NFLFFBR0x0RTthQUhLc0U7YUFBSUM7O2VBQUpELFFBRE1iLFFBV0Q7YUFjaEJtbUYsT0FBTzlrRixJQUFJckIsSUFBSXREO01BQ2pCLElBQUl1RCxJQUFKLHFCQURTb0I7TUFDVCxJQURhckIsTUFBSXRELFVBQ2J1RCxJQUNtQixPQUZkb0I7TUFDVCxJQUdNNlksV0FIRmphOztXQUdFaWEsY0FKT2xhLE1BQUl0RDtVQU1iLGtCQUZFd2Q7UUFJSjttQkFKSUE7U0FJSjtVQUFJa3NFOztZQVJPcG1GOztjQWVQO1NBR0osMEJBVElxbUY7UUFVSixLQW5CT2hsRixNQWtCSDhZLFVBbEJPbmE7UUFtQlgsT0FESW1hLFFBR0g7YUFFRG1zRSxVQUFVM2xGO01BQ1osSUFBSTRsRjtNQUFKO1FBR2tDOzZCQUp0QjVsRjtTQUlSLDBCQUpRQTtTQUVSMnFEOzs7OztNQURKO09BT0Esb0JBTklBLDBCQURBaTdCO09BUUo7UUFESUM7T0FPSixzQkFOSUM7T0FPUSxnQkFoQkE5bEYsR0FlUlUsTUFOQW9sRjtNQU9RLEdBQVJDLFFBUEFELGVBU0Ysa0JBSEVwbEYsTUFDQXFsRjtNQUdDO1FBQ0csSUFJSnBuRixFQUpJLG1CQXBCSXFCOzs7Z0NBdUJOLDRCQVJGVTtRQVdFO2VBQVF5L0MsS0FBS3ovQyxJQUFJckI7WUFBSjJtRixVQUFJOWxGO1FBQ2Y7VUFBVTt3QkFEQzhsRixNQUFJOWxGLE1BekJuQjBsRjtXQTBCYyx5QkFEQ0ssU0FBSS9sRjtXQUtQLFlBL0JKRixHQTBCT2ltRixNQUFJL2xGLE1BRVhnbUY7VUFHSSxHQUFKdHFGLElBSEFzcUYsSUFLRixrQkFQU0QsUUFBSS9sRixRQUtYdEU7VUFKTSxJQVFSLE1BVGFzRSxRQUVYZ21GLFFBRk9GLFlBQUk5bEY7bUJBU087TUFFZCxJQUFOOGxGLE1BQU0sT0F0Qlp0bEYsSUFDQXFsRjtNQXNCRSxlQURJQyxNQXJCTkQsTUFRQXBuRjtNQWNFLFlBRElxbkYsTUFyQk5ELGNBd0JEOzs7O09BOUlEM25GO09BQ0EwQjtPQUNBRDtPQUNBRDtPQU9BaWxGO09BR0FDO09BR0FDO09BR0FDO09BQ0F2c0Q7T0FDQXdzRDtPQUNBL2hGO09BQ0FuQztPQUVBbWtGO09BS0FDO09BS0FDO09BS0FybEY7T0FFQXNsRjtPQUtBQztPQXVEQUs7T0EwQ0ExaUY7O2FDMUlBa2pGLFlBQVV2QixRQUFRM29GLEVBQUVSO01BQ2IsSUFBTHlELEdBQUssV0FERzBsRixRQUFRM29GO01BQ1gscUJBRUksa0JBSFNSLEVBQ2xCeUQsR0FFYTtNQUZSLCtCQUN1QixtQkFENUJBLEdBQ3FELE9BQ3ZDO2FBRWhCa25GLGdCQUFjbnFGLEVBQUVSLEdBQ2xCLG1CQVZFb0QsU0FTYzVDLEVBQUVSLEVBQ2U7YUFFL0I0cUYsaUJBQWVwcUYsRUFBRVIsR0FDbkIsbUJBWkVtRCxVQVdlM0MsRUFBRVIsRUFDVTthQUUzQjZxRixnQkFBYy9vRSxNQUFNOWUsS0FBS3hDLEVBQUVSO01BQ25CLGtDaEIvQ2IsT2dCaUNLOEMsU0FhY2dmLE1BQU05ZSxZQUFLeEMsRUFBRVIsRUFDaUI7O0tBRTVDOHFGO0tBQ0FDO0tBQ0FDOzs7T0F0QkFwb0Y7T0FDQUM7T0FDQU87T0FDQUQ7T0FDQUw7T0FPQTZuRjtPQUdBQztPQUdBQztPQUdBQztPQUNBQztPQUNBQztPQUNBL21GO09BQ0FDO09BQ0FzRTtPQUNBbkY7T0FDQWtGO09BQ0FEO09BQ0E1RTtPQUNBRjtPQUNBRztPQUNBRztPQUNBbUU7Ozs7VWhCOURMOzs7Ozs7O0l1REFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthQ3FDS2dqRixjQUFlQyxJQUF5QkM7TUFDMUMscUNBRGlCRCxRQUF5QkMsZUFDaUM7YUFFekVDLFlBQWNDLE1BQWVDLE9BQWdCQyxNQUMvQyxVQURnQkYsTUFBZUMsT0FBZ0JDLEtBQ3hCO2FBRXJCQyxZQUFhQyxHQUFjQztNQUM3QixVQURlRCxRQUFjQyxVQUFkRCxRQUFjQyxVQUFkRCxRQUFjQyxVQUs1QjthQUVDQyxZQUFhRixHQUFjQztNQUM3QixVQURlRCxRQUFjQyxVQUFkRCxRQUFjQyxVQUFkRCxRQUFjQyxVQUs1QjthQUVDRSxXQUFZSCxHQUFjSTtNQUM1QixtQkFEY0osTUFBY0ksR0FDNUIsU0FEY0osTUFBY0ksR0FDNUIsU0FEY0osTUFBY0ksR0FDd0M7YUFJbEVDLGVBQWdCWDtNRDlEckIsU0M4RHFCQSxtQkFDb0QsT0FEcERBLEtBQ29CLDBCQUFzQzthQUkxRVksYUFBY0M7TUFDaEIsZUFEZ0JBO01BQ2hCOzs7O21CQURnQkE7O01BSmhCLFVBS3lEO2FBR3ZEQyxjQUFnQkMsTUFBZUg7TUFDakMsYUFEa0JHO01BQ2xCLHVCQUlPOztlQURBLE9BSjBCSDs7OztnQkFHYjtnQkFEYSxVQUdUO2FBRXRCSSxjQUFlQztNQUNqQjtxQkFEaUJBOztTQUd3QzsyQkFIeENBO1VBR0gsa0JBSEdBOzs7Ozs7OytCQUlHO2tCQUFLO2FBR3ZCQyxVQUFZTCxLQUFjRSxNQUFlSTtNQUMzQyxJQUFJRixLQURVSixLQUFjRSxNQUFlSSxLQUV4QyxpQkFEQ0YsR0FDb0IsT0FEcEJBLEVBQzJCLGlCQUFpQjthQUcxQ0csK0JBQ0ZQLEtBQ0FFLE1BQ0FaO1VBRkFrQixZQUVBQztNQUNKO1lBQUlDLFVBRkFSLFFBQ0FPO2dCQUNBQyxnQ0FDc0MsVUFKdENGLE9BR0FFO1FBRUMsUUFGREE7VUFHRjtvQkFKRUQ7V0FJRixPQU5FRDs7V0FFQUM7O1FBQ0o7U0FPRSxTQVJFQTtTQVFGLE9BVkVEOztTQUVBQztpQkFTcUI7YUEwR3ZCTSxVQUFZQztNRGhOakIsR0NnTmlCQSxJQUF3QixRQUF4QkEsYUFBd0JDLGFBQXhCQztzQkFBa0QvQjtRQTdEaEU7O1NBSUUsOENBeUQ4REE7U0F6RDlEOztxQkFERWlDLFdBQVVEO1FBakJYLGlCQURvQ0U7OztTQUdyQyxPQXlFWUg7OztvQkE1RXlCRzs7O2VBUHBDLGlCQU9vQ0E7OztpQkFKbkM7O2tEQUltQ0E7a0JBSm5DOzt5QkFERUMsU0FBVVo7Ozs7Ozs7OztvQkFLdUJXOzs7ZUFyQnBDLGlCQXFCb0NBOzs7aUJBakJjO21DQWlCZEE7a0JBakI3QixrQkFpQjZCQTs7Ozs7Ozs7bUJBSW5CO1FBV3BCLElBU3NCRSxRQUFXaEMsS0FvRCtCSjtRQWhEaEU7VUFDNkM7NEJBTHZCb0M7V0FLcEIsOEJBTG9CQTtXQUtwQixRQUxvQkEsU0FBV2hDO2tCQVU3QmtDLHNCQU5BRDtXQVdGLFVBZm9CRCxjQVVsQkU7VUFNQyxHQVpERCxtQkFNQUM7WUFZQTtvREF0QmtCRjthQXNCbEI7O3FCQXRCNkJoQyxRQUk3QmlDLGtCQUprQkQ7YUFzQmxCLE9BREVJLFdBQVVEO2FBckJNSDthQUFXaEM7O1VBS1k7V0FnQ3pDLHVDQXJDa0JnQztXQXFDbEI7O2tCQXJDNkJoQyxPQUFYZ0M7V0E2Q2Q7O2FBVEZRO2FBQVVEO2FBU1IsY0FUUUEsWUFTcUMsYUFUL0NDO1dBcENnQlI7V0FBV2hDO21CQXlEaEM7YUFFQzJDLGNBQWV6QyxHQUFZQztNQUMxQixzQ0FEY0QsTUFBWUM7cUJBRXhCLHlCQUZZRCxNQUFZQztpQkFFZSx5QkFGM0JELE1BQVlDO2lCQUd0Qix5QkFIVUQsTUFBWUM7ZUFJeEIseUJBSllELE1BQVlDLE1BSUc7YUFHOUJ5QyxZQUFhakQsSUFBeUJrQjtNQUN4QyxxQ0FEZWxCLFFBQXlCa0IsZUFDZ0I7YUFFdERnQyxtQkFBb0JoQztNQUNoQixpQkFEZ0JBLEdBRXRCLGlCQUZzQkE7a0NBRXNCO2FBRTFDaUMsa0JBQW1CakM7TUFDZixpQkFEZUE7UUFFdUMscUJBRnZDQSxNQUVKLHlCQUZJQTtRQUVKLGlCQUZJQSxVQUVqQmtDO2tDQUNpRDthQUVuREMsV0FBWXBELEdBQ2QsWUFEY0EsK0JBQzBDO2FBR2xEcUQsVUFBVy9DLEdBQVlDO01EOU9oQyxHQzhPb0JELFVBQVlDLFNBQVpELFVBQVlDLE1BRzNCLGNBSGVELFFBQVlDO01BTWpCLElBQU4rQyxJQUFNLGNBTktoRCxHQUFZQztNQU1qQixRQUFOK0M7UUFTQTs4Q0FmdUIvQztTQWV2Qjs7bUJBREVpRCxZQUFhRDtTQWdCZixjQTlCV2pELEdBa0JUbUQ7U0FZRixJQTlCdUJsRDtTQTRCMkIsaUJBNUIzQkE7UUF1QnZCO3lCQUtNLGNBNUJpQkE7TUFVZCw0QkFWY0EsR0FBWkQsSUE4QlU7YUFFekJvRCxZQUFhekMsR0FBOEIsVUFBOUJBLGVBQW9EO2FBRWpFMEMsZUFBZ0IzRCxHQUFnQyxVQUFoQ0EsZUFBeUQ7Ozs7OztPQTNMekVrQjtPQTJIQVU7T0E4Qkl5QjtPQXZCSk47T0F1REFXO09BaERBVjtPQUdBQztPQUlBQztPQWxLQXRDO09BM0JBWDtPQWtNQW1EO09BL0xBL0M7T0FPQUc7T0FPQUM7T0FwQkFYO09BeUJBYTtPQWtOQWdEOztVRGhSTDs7Ozs7OztJQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDMm5DU0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0ExbkNKRzs7Ozs7Ozs7S0FnS0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lFbUJlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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a0RBRHdCQTtrQkFDNkI7Ozs7T0FuR3JETjtPQXBDQWxCO09BR0FFO09BUUFJO09BWUFNO09BdUZBTzs7VURoS0w7Ozs7Ozs7SUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNPd0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJhcGlfd2ViLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIk9iamVjdCIsImdsb2JhbFRoaXMiLCJ0aGlzIiwiZ2V0IiwiX1RfIiwiZ2xvYmFsIiwic2VsZiIsImNhbWxfaW50NjRfaXNfemVybyIsIngiLCJjYW1sX3N0cl9yZXBlYXQiLCJuIiwicyIsInIiLCJsIiwiY2FtbF9pbnQ2NF9vZmZzZXQiLCJNYXRoIiwiY2FtbF9yYWlzZV9jb25zdGFudCIsInRhZyIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsImgiLCJzaWduIiwib2Zmc2V0IiwibW9kdWx1cyIsImRpdmlzb3IiLCJxdW90aWVudCIsInkiLCJxIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludDY0X2lzX25lZ2F0aXZlIiwiY2FtbF9pbnQ2NF9uZWciLCJjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMiLCJhIiwiaSIsImxlbiIsImYiLCJTdHJpbmciLCJudWxsIiwiY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwianNvb19pc19hc2NpaSIsImNhbWxfdXRmMTZfb2ZfdXRmOCIsImIiLCJ0IiwiYyIsImMxIiwiYzIiLCJ2IiwiaiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImxlbmd0aCIsImNvbnRlbnQiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfcGFyc2VfZm9ybWF0IiwiZm10IiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJlcnJubyIsInZhcmlhbnQiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2J5dGVzX2JvdW5kX2Vycm9yIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfbWxfYnl0ZXNfbGVuZ3RoIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiQXJyYXkiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsImNhbWxfYmxpdF9zdHJpbmciLCJlIiwiTWxGaWxlIiwiTWxGYWtlRmlsZSIsIm9sZCIsImJ1ZiIsInBvcyIsImNsZW4iLCJuZXdfc3RyIiwib2xkX2RhdGEiLCJNbEZha2VEZXZpY2UiLCJyZXMiLCJTeW1ib2wiLCJuYW1lX3NsYXNoIiwibW9kZSIsInJhaXNlX3VuaXgiLCJwYXJlbnQiLCJSZWdFeHAiLCJzZWVuIiwibSIsIm9rIiwiZmlsZSIsImJ5dGVzIiwiY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIiwiY2FtbF9zdHJpbmdfdW5zYWZlX2dldCIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9hcnJheV9vZl9ieXRlcyIsImNhbWxfYnl0ZXNfdW5zYWZlX3NldCIsImNhbWxfYnl0ZXNfc2V0IiwiTWxOb2RlRmlsZSIsImZkIiwicmVxdWlyZSIsImVyciIsImJ1Zl9vZmZzZXQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJvIiwianNfc3RhdHMiLCJ0b19kaXIiLCJ0YXJnZXQiLCJsaW5rIiwiZmlsZV9raW5kIiwiY2FtbF9nZXRfcm9vdCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX3Jvb3QiLCJqc29vX21vdW50X3BvaW50IiwicmVzb2x2ZV9mc19kZXZpY2UiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3JhaXNlX25vdF9mb3VuZCIsImNhbWxfc3lzX2dldGVudiIsImciLCJ1bmRlZmluZWQiLCJzaGlmdF9yaWdodF9uYXQiLCJuYXQxIiwib2ZzMSIsImxlbjEiLCJuYXQyIiwib2ZzMiIsIm5iaXRzIiwid3JhcCIsImNhbWxfZ3Jfc3RhdGUiLCJjYW1sX2dyX3N0YXRlX2dldCIsImNhbWxfZ3JfcG9pbnRfY29sb3IiLCJpbSIsIk1sT2JqZWN0VGFibGUiLCJOYWl2ZUxvb2t1cCIsIm9ianMiLCJjYW1sX3N5c19yZW5hbWUiLCJvX3Jvb3QiLCJuX3Jvb3QiLCJjYW1sX2xvZzEwX2Zsb2F0IiwidW5peF91bmxpbmsiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwidW5peF9ybWRpciIsImNhbWxfbWxfcmVmaWxsX2lucHV0IiwiY2hhbiIsInN0ciIsInN0cl9sZW4iLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9tbF9tYXlfcmVmaWxsX2lucHV0IiwiY2hhbmlkIiwiY2FtbF9hcnJheV9ib3VuZF9lcnJvciIsImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lIiwiY2FtbF9nY19taW5vciIsImJpZ0ludCIsIkJBU0UiLCJMT0dfQkFTRSIsIk1BWF9JTlQiLCJNQVhfSU5UX0FSUiIsInNtYWxsVG9BcnJheSIsIkRFRkFVTFRfQUxQSEFCRVQiLCJCaWdJbnQiLCJqb29fZ2xvYmFsX29iamVjdCIsInN1cHBvcnRzTmF0aXZlQmlnSW50IiwiSW50ZWdlciIsInJhZGl4IiwiYWxwaGFiZXQiLCJjYXNlU2Vuc2l0aXZlIiwicGFyc2VWYWx1ZSIsInBhcnNlQmFzZSIsIkJpZ0ludGVnZXIiLCJ2YWx1ZSIsIlNtYWxsSW50ZWdlciIsIk5hdGl2ZUJpZ0ludCIsImlzUHJlY2lzZSIsImFycmF5VG9TbWFsbCIsImFyciIsInRyaW0iLCJjb21wYXJlQWJzIiwiY3JlYXRlQXJyYXkiLCJ0cnVuY2F0ZSIsImFkZCIsImxfYSIsImxfYiIsImNhcnJ5IiwiYmFzZSIsInN1bSIsImFkZEFueSIsImFkZFNtYWxsIiwic3VidHJhY3QiLCJhX2wiLCJiX2wiLCJib3Jyb3ciLCJkaWZmZXJlbmNlIiwic3VidHJhY3RBbnkiLCJzdWJ0cmFjdFNtYWxsIiwic21hbGwiLCJtdWx0aXBseUxvbmciLCJwcm9kdWN0IiwiYV9pIiwiYl9qIiwibXVsdGlwbHlTbWFsbCIsInNoaWZ0TGVmdCIsIm11bHRpcGx5S2FyYXRzdWJhIiwiYWMiLCJiZCIsImFiY2QiLCJ1c2VLYXJhdHN1YmEiLCJsMSIsImwyIiwiYWJzIiwibXVsdGlwbHlTbWFsbEFuZEFycmF5Iiwic3F1YXJlIiwiYV9qIiwiZGl2TW9kMSIsImRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCIsImxhbWJkYSIsInJlbWFpbmRlciIsInF1b3RpZW50RGlnaXQiLCJzaGlmdCIsImRpdk1vZFNtYWxsIiwiZGl2TW9kMiIsInBhcnQiLCJndWVzcyIsInhsZW4iLCJoaWdoeCIsImhpZ2h5IiwiY2hlY2siLCJkaXZNb2RBbnkiLCJFcnJvciIsImNvbXBhcmlzb24iLCJxU2lnbiIsIm1vZCIsIm1TaWduIiwiXzAiLCJfMSIsIl8yIiwiZXhwIiwiSW5maW5pdHkiLCJpc0Jhc2ljUHJpbWUiLCJtaWxsZXJSYWJpblRlc3QiLCJuUHJldiIsInN0cmljdCIsImlzUHJpbWUiLCJiaXRzIiwibG9nTiIsIml0ZXJhdGlvbnMiLCJuZXdUIiwibmV3UiIsImxhc3RUIiwibGFzdFIiLCJwb3dlcnNPZlR3byIsInBvd2VyczJMZW5ndGgiLCJoaWdoZXN0UG93ZXIyIiwic2hpZnRfaXNTbWFsbCIsInJlbVF1byIsImJpdHdpc2UiLCJmbiIsInhTaWduIiwieVNpZ24iLCJ4UmVtIiwieVJlbSIsInhEaWdpdCIsInlEaWdpdCIsInhEaXZNb2QiLCJ5RGl2TW9kIiwiTE9CTUFTS19JIiwiTE9CTUFTS19CSSIsInJvdWdoTE9CIiwiaW50ZWdlckxvZ2FyaXRobSIsInRtcCIsIm1heCIsIm1pbiIsImdjZCIsImxjbSIsInJhbmRCZXR3ZWVuIiwibG93IiwiaGlnaCIsInJhbmdlIiwiZGlnaXRzIiwidG9CYXNlIiwicmVzdHJpY3RlZCIsInRvcCIsImRpZ2l0IiwidGV4dCIsImFic0Jhc2UiLCJhbHBoYWJldFZhbHVlcyIsImlzTmVnYXRpdmUiLCJzdGFydCIsInBhcnNlQmFzZUZyb21BcnJheSIsInZhbCIsInBvdyIsInN0cmluZ2lmeSIsIm5lZyIsIk51bWJlciIsIm91dCIsImxlZnQiLCJkaXZtb2QiLCJ0b0Jhc2VTdHJpbmciLCJ6ZXJvcyIsInBhcnNlSW50IiwicGFyc2VTdHJpbmdWYWx1ZSIsInNwbGl0IiwiZGVjaW1hbFBsYWNlIiwiaXNWYWxpZCIsInBhcnNlTnVtYmVyVmFsdWUiLCJtbF96X25vcm1hbGl6ZSIsIm1sX3pfcG93IiwiejEiLCJtbF96X3Jvb3QiLCJ6IiwiemVybyIsIm9uZSIsImVuZCIsImFucyIsInR3byIsIm1pZCIsInBvIiwibWxfel9yb290cmVtIiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfYmFfdWludDhfZ2V0NjQiLCJiYSIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3JldHVybl9leG5fY29uc3RhbnQiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jcmVhdGVfZmlsZSIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJjYW1sX3NldF9wYXJzZXJfdHJhY2UiLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJ1bml4X2dldHRpbWVvZmRheSIsIkRhdGUiLCJjYW1sX211bCIsImNhbWxfaGFzaF9taXhfaW50IiwibnVtX2RpZ2l0c19uYXQiLCJuYXQiLCJjYW1sX2hhc2hfbmF0IiwiY2FtbF9jYWxsX2dlbiIsImFyZ3NMZW4iLCJleHRyYV9hcmdzIiwiYXJndW1lbnRzIiwibmFyZ3MiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzIiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX2djX2NvdW50ZXJzIiwibWxfel9kaXYiLCJ6MiIsIm1sX3pfc2lnbiIsIm1sX3pfYWRkIiwibWxfel9jZGl2IiwiejFfcG9zIiwiejJfcG9zIiwiY2FtbF9ncl9zeW5jaHJvbml6ZSIsInVuaXhfaGFzX3N5bWxpbmsiLCJ1bml0IiwibG9nMl9vayIsImpzb29fZmxvb3JfbG9nMiIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiaW50MzJhIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJrIiwicjMiLCJyMiIsInIxIiwiY2FtbF9iYV9zZXJpYWxpemUiLCJzeiIsImNvbXBsZXgiLCJjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50Iiwia2luZCIsImNhbWxfYmFfY3JlYXRlX2J1ZmZlciIsInNpemUiLCJ2aWV3IiwiZGF0YSIsImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2ludDY0X2hpMzIiLCJjYW1sX2ludDY0X2xvMzIiLCJjYW1sX2JhX2N1c3RvbV9uYW1lIiwiTWxfQmlnYXJyYXkiLCJsYXlvdXQiLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfYmFfZGVzZXJpYWxpemUiLCJyZWFkZXIiLCJudW1fZGltcyIsInNpemVfZGltIiwic2l6ZV9kaW1faGkiLCJzaXplX2RpbV9sbyIsInNpeHR5IiwiaW50NjQiLCJjYW1sX2JhX2NvbXBhcmUiLCJjYW1sX2hhc2hfbWl4X2ludDY0IiwiY2FtbF9oYXNoX21peF9mbG9hdCIsInYwIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJ3IiwiY2FtbF9pbnQzMl91bm1hcnNoYWwiLCJjYW1sX25hdGl2ZWludF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X3VubWFyc2hhbCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfaGFzaCIsImNhbWxfY3VzdG9tX29wcyIsImNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSIsImNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbSIsIm51bSIsImN1c3RvbSIsInN3YXAiLCJjYW1sX2NvbXBhcmVfdmFsX3RhZyIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX2J5dGVzX2NvbXBhcmUiLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwiZGl2X2RpZ2l0X25hdCIsIm5hdHEiLCJvZnNxIiwibmF0ciIsIm9mc3IiLCJyZW0iLCJudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQiLCJzaGlmdF9sZWZ0X25hdCIsIk1sTmF0IiwiY3JlYXRlX25hdCIsInNldF90b196ZXJvX25hdCIsImluY3JfbmF0IiwiY2FycnlfaW4iLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJzcmMiLCJkc3QiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfanNfaHRtbF9lbnRpdGllcyIsImVudGl0eSIsInRlbXAiLCJkb2N1bWVudCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQiLCJjYW1sX2JhX3NldF8yIiwibWxfel9vZl9pbnQ2NCIsImk2NCIsIm1sX3pfa3JvbmVja2VyIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJhcmdzMiIsImNhbWxfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImV2YWwiLCJzZXJpYWxpemVfbmF0IiwiY2FtbF9tZW1wcm9mX3NldCIsIl9jb250cm9sIiwibWxfel9uZWciLCJjYW1sX3N5c19leGl0IiwiY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3IiLCJjYW1sX2pzX2Zyb21fYXJyYXkiLCJjYW1sX2JhX3Jlc2hhcGUiLCJ2aW5kIiwibmV3X2RpbSIsImNhbWxfb29fbGFzdF9pZCIsImNhbWxfc2V0X29vX2lkIiwiY2FtbF9ncl9maWxsX3JlY3QiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYSIsInN0cjEiLCJwb3MxIiwiYmEyIiwicG9zMiIsInNsaWNlIiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9nZXRfZ2xvYmFsX2RhdGEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIiwiY2FtbF9iYV91aW50OF9nZXQxNiIsIm1sX3pfb2ZfaW50MzIiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfYmFfZ2V0XzEiLCJjYW1sX2JpZ3N0cmluZ19tZW1jbXAiLCJjYW1sX25ld19zdHJpbmciLCJjYW1sX2VyZl9mbG9hdCIsImExIiwiYTIiLCJhMyIsImE0IiwiYTUiLCJjYW1sX2JhX3VpbnQ4X2dldDMyIiwiY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCIsIm1sX3pfc2hpZnRfcmlnaHQiLCJhbXQiLCJjYW1sX29ial9ibG9jayIsImNhbWxfZ3JfY2xlYXJfZ3JhcGgiLCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIiwiYnMiLCJjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIiwiX3VuaXQiLCJseG9yX2RpZ2l0X25hdCIsImNhbWxfb2JqX2FkZF9vZmZzZXQiLCJjYW1sX2ZpbmFsX3JlbGVhc2UiLCJjYW1sX2pzX3RvX2FycmF5IiwibWxfel9sb2dvciIsImNhbWxfZ3JfcGxvdCIsImNvbG9yIiwiY2FtbF9ieXRlc19zZXQxNiIsImkxNiIsImNhbWxfc3RyaW5nX3NldDE2IiwiY2FtbF9ieXRlc19zZXQ2NCIsImNhbWxfaW50NjRfYnN3YXAiLCJtbF96X2ZpdHNfaW50IiwibWxfel9maXRzX2ludDMyIiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9maWxsX3N0cmluZyIsImNhbWxfZ2NfbWFqb3IiLCJtbF96X3NoaWZ0X2xlZnQiLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsInN0YXRlIiwiYmFja3RyayIsInVuaXhfZ2V0dWlkIiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2J5dGVzX2VxdWFsIiwiY2FtbF9ncl9zaXplX3giLCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIiwib3NfdHlwZSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4iLCJjYW1sX2Nvc2hfZmxvYXQiLCJjYW1sX2VwaGVfa2V5X29mZnNldCIsImNhbWxfd2Vha19jaGVjayIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9ncl90ZXh0X3NpemUiLCJ0eHQiLCJjYW1sX2xleF9ydW5fbWVtIiwibWVtIiwiY3Vycl9wb3MiLCJjYW1sX2xleF9ydW5fdGFnIiwiY2FtbF9uZXdfbGV4X2VuZ2luZSIsImxleF9tZW0iLCJsZXhfYmFzZV9jb2RlIiwibGV4X2JhY2t0cmtfY29kZSIsImxleF9kZWZhdWx0X2NvZGUiLCJsZXhfdHJhbnNfY29kZSIsImxleF9jaGVja19jb2RlIiwibGV4X2NvZGUiLCJwY19vZmYiLCJwc3RhdGUiLCJiYXNlX2NvZGUiLCJjYW1sX2JhX3VpbnQ4X3NldDY0IiwibWxfel9wb3Bjb3VudCIsImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9hY29zaF9mbG9hdCIsImNhbWxfbWxfZmx1c2giLCJvdXRwdXQiLCJjYW1sX21sX3NlZWtfb3V0XzY0IiwiY29tcGFyZV9uYXRfcmVhbCIsImNhbWxfZ2Nfc2V0IiwiY2FtbF9qc19nZXQiLCJjYW1sX21sX3NldF9idWZmZXJlZCIsImNhbWxfZ2NfY29tcGFjdGlvbiIsImNhbWxfd2Vha19nZXQiLCJjYW1sX2VwaGVfZ2V0X2tleSIsImpzb29fel9vZl9qc19zdHJpbmdfYmFzZSIsImJjIiwibWxfel9vZl9zdWJzdHJpbmdfYmFzZSIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJ3aW5fY2xlYW51cCIsImNhbWxfc3lzX2Nsb3NlIiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UiLCJleG4iLCJmb3JjZSIsImNhbWxfc3lzX2lzYXR0eSIsIl9jaGFuIiwiaXNfZGlnaXRfemVybyIsInVuaXhfaW5ldF9hZGRyX29mX3N0cmluZyIsImNhbWxfanNfc2V0IiwibWxfel9nY2RleHRfaW50ZXJuIiwibGFzdHgiLCJsYXN0eSIsIm1sX3pfdGVzdGJpdCIsImNhbWxfYXJyYXlfZ2V0IiwiYXJyYXkiLCJpbmRleCIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCIsIm1sX3pfY29uZ3J1ZW50IiwiY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfbWxfc2Vla19pbl82NCIsImNhbWxfaW50NjRfc2hpZnRfbGVmdCIsImNhbWxfbm90ZXF1YWwiLCJtbF96X2FicyIsImNhbWxfc3lzX2NvbnN0X2ludF9zaXplIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2lzX2pzIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwibWxfel9zcXJ0IiwidW5peF9sb2NhbHRpbWUiLCJkX251bSIsImphbnVhcnlmaXJzdCIsImRveSIsImphbiIsImp1bCIsInN0ZFRpbWV6b25lT2Zmc2V0IiwiY2FtbF9qc19tZXRoX2NhbGwiLCJtbF96X2x1Y251bSIsImNhbWxfd2Vha19jcmVhdGUiLCJjYW1sX2VwaGVfY3JlYXRlIiwiY2FtbF9qc190b19ieXRlX3N0cmluZyIsIm1sX3pfcHJvYmFiX3ByaW1lIiwidW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfdHJhbXBvbGluZSIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJtbF96X3JlbSIsImNhbWxfd2Vha19zZXQiLCJjYW1sX3N5c19yZW1vdmUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2dldDMyIiwiY2FtbF9oeXBvdF9mbG9hdCIsIm1sX3pfZmFjTSIsImN1cnJlbnQiLCJjYW1sX2pzX2NhbGwiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF9lcGhlX3Vuc2V0X2tleSIsIm1sX3pfbXVsX292ZXJmbG93cyIsIm1sX3pfdG9faW50IiwiY2FtbF9oYXNoX21peF9ieXRlc19hcnIiLCJjYW1sX2hhc2hfbWl4X2pzYnl0ZXMiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJtbF96X2ZhYyIsImNhbWxfcmFpc2VfZW5kX29mX2ZpbGUiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwibWxfel9kaXZpc2libGUiLCJjYW1sX29ial9yZWFjaGFibGVfd29yZHMiLCJudGhfZGlnaXRfbmF0IiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiZXhwb25lbnQiLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIiwiY2FtbF9saXN0X3RvX2pzX2FycmF5IiwiY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGUiLCJjYW1sX291dHB1dF92YWwiLCJXcml0ZXIiLCJmbGFncyIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImludGVybl9vYmpfdGFibGUiLCJtZW1vIiwiZXhpc3Rpbmdfb2Zmc2V0IiwiZXh0ZXJuX3JlYyIsIm9wcyIsInN6XzMyXzY0IiwiaGVhZGVyX3BvcyIsIm9sZF9wb3MiLCJ0eXBlX29mX3YiLCJjYW1sX3N0cmluZ19vZl9hcnJheSIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyIsImNhbWxfcmFpc2Vfbm90X2FfZGlyIiwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQiLCJjbWQiLCJ1bml4X2lzYXR0eSIsImZpbGVEZXNjcmlwdG9yIiwidHR5IiwiY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb24iLCJkZXNlcmlhbGl6ZV9uYXQiLCJpbml0aWFsaXplX25hdCIsIm1sX3pfc3VjYyIsImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3ciLCJ1bml4X2xzdGF0IiwidW5peF9sc3RhdF82NCIsImpzX3ByaW50X3N0ZG91dCIsImNhbWxfY29weXNpZ25fZmxvYXQiLCJjYW1sX2dyX3NldF90ZXh0X3NpemUiLCJjYW1sX21kNV9ieXRlcyIsInh4IiwiZmYiLCJnZyIsImhoIiwiaWkiLCJtZDUiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9lcGhlX3NldF9rZXkiLCJjYW1sX2J5dGVzX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXQiLCJjYW1sX2dyX3NpemVfeSIsIm1sX3pfZmFjMiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9pbnQ2NF9hbmQiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJtbF96X2JpbiIsImNvZWZmIiwiY2FtbF9zdGRfb3V0cHV0Iiwic2xlbiIsImpzX3ByaW50X3N0ZGVyciIsImNhbWxfc3lzX29wZW5faW50ZXJuYWwiLCJpZHgiLCJpbmZvIiwiY2FtbF9zeXNfb3BlbiIsIl9wZXJtcyIsIm1sX3pfZ2NkIiwiTWxTdHJpbmdSZWFkZXIiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIl9tYWdpYyIsIl9ibG9ja19sZW4iLCJudW1fb2JqZWN0cyIsIl9zaXplXzMyIiwiX3NpemVfNjQiLCJvYmpfY291bnRlciIsImludGVybl9yZWMiLCJoZWFkZXIiLCJleHBlY3RlZF9zaXplIiwiY2FtbF9zdHJpbmdfb2ZfYnl0ZXMiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMiLCJtbF96X211bCIsIm1sX3pfaGFtZGlzdCIsImNhbWxfc3RyaW5nX2dldCIsInJlX21hdGNoIiwicmVfd29yZF9sZXR0ZXJzIiwib3Bjb2RlcyIsImlzX3dvcmRfbGV0dGVyIiwiaW5fYml0c2V0IiwicmVfbWF0Y2hfaW1wbCIsInBhcnRpYWwiLCJwcm9nIiwiY3Bvb2wiLCJub3JtdGFibGUiLCJudW1ncm91cHMiLCJudW1yZWdpc3RlcnMiLCJzdGFydGNoYXJzIiwicGMiLCJxdWl0IiwiZ3JvdXBzIiwicmVfcmVnaXN0ZXIiLCJiYWNrdHJhY2siLCJpdGVtIiwicHVzaCIsImFjY2VwdCIsInByZWZpeF9tYXRjaCIsIm9wIiwic2FyZyIsInVhcmciLCJncm91cCIsInJlX3NlYXJjaF9iYWNrd2FyZCIsIm1sX3pfbG9nYW5kIiwiY2FtbF9qc19mcm9tX3N0cmluZyIsImNhbWxfYmFfc3ViIiwiY2hhbmdlZF9kaW0iLCJtdWwiLCJuZXdfZGltcyIsIm5ld19kYXRhIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9ieXRlc19zZXQzMiIsImkzMiIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9iYV91aW50OF9zZXQzMiIsIm1sX3pfZGl2X3JlbSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IiwiY2FtbF9zaWduYml0X2Zsb2F0IiwiY2FtbF9ncl9zZXRfbGluZV93aWR0aCIsImNhbWxfZ3Jfc2V0X2ZvbnQiLCJjYW1sX2dyX3NldF9jb2xvciIsImNvbnZlcnQiLCJudW1iZXIiLCJjX3N0ciIsImNhbWxfZ3JfbW92ZXRvIiwiY2FtbF9ncl9yZXNpemVfd2luZG93IiwiY2FtbF9ncl9zdGF0ZV9pbml0IiwiY2FtbF9ncl9jdXJyZW50X3giLCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkiLCJ0YSIsImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSIsImNhbWxfbWxfc2Vla19vdXQiLCJjYW1sX2pzX3R5cGVvZiIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiYnQiLCJjYW1sX2dyX2xpbmV0byIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZSIsImNhbWxfYmFfZGltXzMiLCJjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uIiwiY2FtbF9mb3JtYXRfZXhjZXB0aW9uIiwiYnVja2V0IiwiY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24iLCJoYW5kbGVyIiwiYXRfZXhpdCIsImNhbWxfZXBoZV9kYXRhX29mZnNldCIsImNhbWxfZXBoZV9jaGVja19kYXRhIiwiY2FtbF9ieXRlc19nZXQxNiIsImNhbWxfb2JqX21ha2VfZm9yd2FyZCIsImNhbWxfanNfZnJvbV9ib29sIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lIiwiY2FtbF9leHAyX2Zsb2F0IiwiY2FtbF9ncl9jbG9zZV9ncmFwaCIsImNhbWxfY3JlYXRlX3N0cmluZyIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfbWQ1X2NoYW4iLCJjaGFuX2xlbiIsImNhbWxfb2JqX2R1cCIsImNhbWxfd2Vha19nZXRfY29weSIsImNhbWxfYXRhbmhfZmxvYXQiLCJjYW1sX21sX291dHB1dF9ieXRlcyIsInN0cmluZyIsImpzc3RyaW5nIiwiaWQiLCJjYW1sX21sX291dHB1dCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2FycmF5X2FwcGVuZCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsIiwibWxfel9uZXh0cHJpbWUiLCJjYW1sX2pzX2V4cHIiLCJjYW1sX2ludDY0X211bCIsImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIiwibWxfel9zdWIiLCJtbF96X2ZkaXYiLCJtbF96X3RvX2JpdHMiLCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyIsImNhbWxfZXZlbnRsb2dfcmVzdW1lIiwiY2FtbF9oYXNoX3VuaXZfcGFyYW0iLCJjb3VudCIsImxpbWl0Iiwib2JqIiwiaGFzaF9hY2N1IiwiaGFzaF9hdXgiLCJqc2J5dGVzIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJtbF96X2RpdmV4YWN0IiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyIiwicmVfcmVwbGFjZW1lbnRfdGV4dCIsInJlcGwiLCJvcmlnIiwiY3VyIiwiY2FtbF9wdXJlX2pzX2V4cHIiLCJibGl0X25hdCIsImNhbWxfaW50NjRfdWx0IiwiY2FtbF9pbnQ2NF94b3IiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzIiwiYmExIiwiYnl0ZXMyIiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF90b19qc19zdHJpbmciLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJyZV9zZWFyY2hfZm9yd2FyZCIsImNhbWxfYmxpdF9zdHJpbmdfdG9fYmlnc3RyaW5nIiwiY2FtbF9tYWtlX3ZlY3QiLCJpbml0IiwiY2FtbF9tbF9zZWVrX2luIiwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkiLCJjYW1sX21sX291dHB1dF9jaGFyIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIiwiY2FtbF9vYmpfaXNfYmxvY2siLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkIiwiY2FtbF9qc192YXIiLCJjYW1sX3RydW5jX2Zsb2F0IiwiY2FtbF96YXJpdGhfbWFyc2hhbCIsImJsb2NrIiwiY2FtbF9lcGhlX2JsaXRfZGF0YSIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsImJ1ZmYiLCJub3ciLCJjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlIiwiY2FtbF9iYV9nZXRfMiIsIndpbl9oYW5kbGVfZmQiLCJjYW1sX2JhX3VpbnQ4X3NldDE2Iiwid2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsIiwiY2FtbF9qc19kZWxldGUiLCJjYW1sX2ludF9vZl9zdHJpbmciLCJjYW1sX2xpc3RfbW91bnRfcG9pbnQiLCJwcmV2IiwiY2FtbF9tYXJzaGFsX2NvbnN0YW50cyIsImNhbWxfb2JqX3Jhd19maWVsZCIsImNhbWxfanNfZXF1YWxzIiwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IiwibWxfel9maXRzX25hdGl2ZWludCIsImNhbWxfZ3JfYXJjX2F1eCIsImN0eCIsImN4IiwiY3kiLCJyeSIsInJ4Iiwicm90IiwieFBvcyIsInlQb3MiLCJ4UG9zX3ByZXYiLCJ5UG9zX3ByZXYiLCJzcGFjZSIsImRlbHRhIiwiY2FtbF9ncl9maWxsX2FyYyIsImNhbWxfYmFfc2xpY2UiLCJudW1faW5kcyIsInN1Yl9kaW1zIiwibWxfel9vZl9uYXRpdmVpbnQiLCJjYW1sX21hcnNoYWxfZGF0YV9zaXplIiwiZ2V0MzIiLCJjYW1sX2lucHV0X3ZhbHVlIiwiY2FtbF9iYV9raW5kIiwiY2FtbF9qc19mdW5fY2FsbCIsImNhbWxfZ2NfbWFqb3Jfc2xpY2UiLCJ3b3JrIiwibWxfel9pbnZlcnQiLCJtbF96X3Bvd20iLCJ6MyIsImludiIsIm1sX3pfcG93bV9zZWMiLCJjYW1sX2pzX3B1cmVfZXhwciIsImNvbXBhcmVfZGlnaXRzX25hdCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX2dyX3dhaXRfZXZlbnQiLCJfZXZsIiwiY2FtbF9ncl9zaWdpb19oYW5kbGVyIiwiY2FtbF9oYXNoX21peF9iaWdzdHJpbmciLCJjYW1sX3JlY29yZF9iYWNrdHJhY2UiLCJ1bml4X2dtdGltZSIsImNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSIsImNhbWxfc3lzX2dldF9jb25maWciLCJ1bml4X3RpbWUiLCJjYW1sX21sX291dF9jaGFubmVsc19saXN0IiwiY2FtbF9hc2luaF9mbG9hdCIsIm1sX3pfaGFzaCIsImFjYyIsImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIiLCJhYiIsImNhbWxfbW9kIiwiY2FtbF9iYV9pbml0IiwicmVfc3RyaW5nX21hdGNoIiwiQmlnU3RyaW5nUmVhZGVyIiwiY2FtbF9ncl9kdW1wX2ltYWdlIiwiY2FtbF9iYV9nZXRfZ2VuZXJpYyIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX21vdW50X2F1dG9sb2FkIiwibWxfel9lcXVhbCIsIm1sX3pfZml0c19pbnQ2NCIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEiLCJjYW1sX2JsaXRfYmlnc3RyaW5nX3RvX2JpZ3N0cmluZyIsIm1sX3pfc3FydF9yZW0iLCJkaWZmIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfZGl2IiwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJtbF96X3BlcmZlY3Rfc3F1YXJlIiwiY2FtbF9zeXNfZ2V0X2FyZ3YiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2dyX2NyZWF0ZV9pbWFnZSIsImNhbWxfZXBoZV9nZXRfa2V5X2NvcHkiLCJjYW1sX2xlc3N0aGFuIiwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCIsIm1sX3pfdG9fbmF0aXZlaW50IiwiY2FtbF9yZWdpc3Rlcl9nbG9iYWwiLCJuYW1lX29wdCIsIm11bHRfbmF0IiwibGVuMyIsInNxdWFyZV9uYXQiLCJjYW1sX2pzX2Zyb21fZmxvYXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9nY19zdGF0IiwiY2FtbF9nZXRfbWFqb3JfY3JlZGl0IiwiY2FtbF9zeXNfbW9kaWZ5X2FyZ3YiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfanNfZ2V0X2NvbnNvbGUiLCJjYW1sX3N5c191bnNhZmVfZ2V0ZW52IiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4iLCJyZWZpbGwiLCJmcyIsImNoYW5uZWwiLCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkiLCJjYW1sX3JvdW5kX2Zsb2F0IiwibWxfel9vZl9iaXRzIiwiYmFzZTEiLCJ1bml4X3N0YXQiLCJ1bml4X3N0YXRfNjQiLCJjYW1sX29qc19uZXdfYXJyIiwiRiIsImNvbXBsZW1lbnRfbmF0IiwibWxfel9sb2d4b3IiLCJjYW1sX2pzX3JlZ2V4cHMiLCJjYW1sX2pzX2h0bWxfZXNjYXBlIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2dyX3N0YXRlX3NldCIsImNhbWxfemFyaXRoX3VubWFyc2hhbCIsIm5lZ2F0ZSIsIm1sX3pfdHJhaWxpbmdfemVyb3MiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiYXJpdHkiLCJjYW1sX2djX21pbm9yX3dvcmRzIiwiY2FtbF9iYV9zZXRfMSIsImNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrIiwibGFuZF9kaWdpdF9uYXQiLCJjYW1sX2ludDY0X21vZCIsInVuaXhfcmVhZGxpbmsiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsIndpbl9zdGFydHVwIiwiY2FtbF9iYV9zZXRfMyIsIm1sX3pfamFjb2JpIiwibjEiLCJtbF96X2xlZ2VuZHJlIiwiY2FtbF9qc19pbnN0YW5jZW9mIiwiY2FtbF9nZXRfbWFqb3JfYnVja2V0IiwiY2FtbF9ibGl0X2JpZ3N0cmluZ190b19zdHJpbmciLCJzZXRfZGlnaXRfbmF0X25hdGl2ZSIsIm50aF9kaWdpdF9uYXRfbmF0aXZlIiwiY2FtbF9zdHJpbmdfc2V0NjQiLCJjYW1sX2dyX3N0YXRlX2NyZWF0ZSIsImNhbnZhcyIsImNvbnRleHQiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJjYW1sX2dyX2RyYXdfYXJjIiwiY2FtbF9iYV9tYXBfZmlsZSIsInZmZCIsInNoYXJlZCIsImNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUiLCJhcmduIiwidW5peF9zeW1saW5rIiwic3JjX3Jvb3QiLCJkc3Rfcm9vdCIsImNhbWxfYmFfY3JlYXRlX2Zyb20iLCJkYXRhMSIsImRhdGEyIiwianN0eXAiLCJjYW1sX3RhbmhfZmxvYXQiLCJjYW1sX2dyX2RyYXdfc3RyIiwiZHgiLCJjYW1sX2dyX2RyYXdfc3RyaW5nIiwibWxfel9wcmltb3JpYWwiLCJjYW1sX2dyX2RyYXdfY2hhciIsImNhbWxfdW5tb3VudCIsIm1sX3pfZmliIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyIsImNhbWxfbWxfcG9zX2luXzY0IiwiY2FtbF9ncl9kcmF3X2ltYWdlIiwiaW1hZ2UiLCJjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZSIsIl9jaGFubmVsIiwiY2FtbF9zdHJpbmdfc2V0IiwiY2FtbF9zeXNfcm1kaXIiLCJjYW1sX21sX3Bvc19vdXQiLCJjYW1sX3NwYWNldGltZV9lbmFibGVkIiwiY2FtbF9ieXRlc19ub3RlcXVhbCIsImNhbWxfcnVudGltZV9wYXJhbWV0ZXJzIiwiY2FtbF9qc19vYmplY3QiLCJjYW1sX2JhX2NyZWF0ZSIsImRpbXNfbWwiLCJjYW1sX3dlYWtfYmxpdCIsImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSIsImNhbWxfZm1hX2Zsb2F0IiwiU1BMSVQiLCJNSU5fVkFMVUUiLCJFUFNJTE9OIiwiQyIsIkEiLCJCIiwibXVsdGlwbHkiLCJhdCIsImFoaSIsImFsbyIsImJoaSIsImJsbyIsImFkanVzdCIsInNjYWxlIiwieHMiLCJ5cyIsInpzIiwieHkiLCJ1IiwiY2FtbF9ic3dhcDE2IiwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUiLCJjYW1sX2ZpbmFsX3JlZ2lzdGVyIiwiY2FtbF9ncl9kcmF3X3JlY3QiLCJjYW1sX3N0cmluZ19nZXQxNiIsImNhbWxfZXBoZV91bnNldF9kYXRhIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX2JhX2dldF8zIiwiY2FtbF9lcGhlX2JsaXRfa2V5IiwibWxfel90b19pbnQzMiIsImNhbWxfaW5pdGlhbF90aW1lIiwiY2FtbF9zeXNfdGltZSIsImNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbiIsImNhbWxfY2hlY2tfYm91bmQiLCJ1bml4X2dldHB3dWlkIiwibWxfel9jb21wYXJlIiwiY2FtbF9oYXNoX21peF9zdHJpbmciLCJjYW1sX2hhc2giLCJzZWVkIiwicXVldWUiLCJyZCIsIndyIiwiY2FtbF9vYmpfdGFnIiwiRnVuY3Rpb24iLCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5IiwiY2FtbF9ieXRlc19nZXQzMiIsImNhbWxfZnJleHBfZmxvYXQiLCJtbF96X3ByZWQiLCJjYW1sX3N0cmluZ19nZXQ2NCIsImNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbiIsImNhbWxfbWxfcG9zX291dF82NCIsIm1sX3pfZXh0cmFjdCIsIm1sX3pfcmVtb3ZlIiwibWxfel9vZl9mbG9hdCIsImYxIiwibWxfel9sb2dub3QiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZmxvYXRhcnJheV9ibGl0IiwiY2FtbF9nZXRfbWlub3JfZnJlZSIsImNhbWxfc2V0X3N0YXRpY19lbnYiLCJjYW1sX2JhX2NoYW5nZV9sYXlvdXQiLCJjYW1sX2pzX25ldyIsInVuaXhfbWtkaXIiLCJwZXJtIiwiY2FtbF9ncl9jdXJyZW50X3kiLCJjYW1sX2Zvcm1hdF9pbnQiLCJjYW1sX29ial90cnVuY2F0ZSIsImNhbWxfanNfdG9fc3RyaW5nIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJjYW1sX2FycmF5X2NvbmNhdCIsImNhbWxfZ3Jfb3Blbl9ncmFwaCIsInNwZWNzIiwic3RhdHVzIiwid2luIiwiZG9jIiwidGl0bGUiLCJib2R5IiwiY2FtbF9lcGhlX3NldF9kYXRhIiwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3QiLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfZXZlbnRsb2dfcGF1c2UiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsIm1sX3pfbnVtYml0cyIsInVwcGVyQm91bmQiLCJjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSIsImNhbWxfbG9nMXBfZmxvYXQiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImxvcl9kaWdpdF9uYXQiLCJjYW1sX2dyX2JsaXRfaW1hZ2UiLCJpbTIiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfanNfb25faWUiLCJ1YSIsImNhbWxfaW50NjRfc2hpZnRfcmlnaHQiLCJjYW1sX2JhX2xheW91dCIsImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIiwiY2FtbF9hcnJheV9zZXQiLCJuZXd2YWwiLCJjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbCIsIm1sX3pfcGVyZmVjdF9wb3dlciIsImxvZzJ6IiwienAiLCJzZXRfZGlnaXRfbmF0IiwibWxfel9pbml0IiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfbWxfY2hhbm5lbF9zaXplIiwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QiLCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdCIsInN0eWxlIiwiZXhwX3NpZ24iLCJzaWduX3N0ciIsImNzdCIsInhfc3RyIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IiwibWxfel9mb3JtYXQiLCJjYXMiLCJ3aWR0aCIsImFsdCIsInBhZCIsInByZWZpeCIsInByZSIsIm1sX3pfdG9faW50NjQiLCJtYXNrIiwibWxfel9zaXplIiwiY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIiwiY2FtbF9zeXNfYXJndiIsImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciIsImNhbWxfYmFfZmlsbCIsImNhbWxfbW9kZl9mbG9hdCIsImNhbWxfZ2NfZ2V0IiwiY2FtbF9mbG9hdF9jb21wYXJlIiwibWxfel9zaGlmdF9yaWdodF90cnVuYyIsImNhbWxfc3RyaW5nX3NldDMyIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2dyX21ha2VfaW1hZ2UiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImV2ZW50IiwiZXJyX25vX3ByZWQiLCJlcnJfbm9fc3VjYyIsInplcm8kMiIsIm9uZSQyIiwibWludXNfb25lJDIiLCJtaW5faW50JDIiLCJtYXhfaW50JDIiLCJkdW1teV9wb3MiLCJ6ZXJvX3BvcyIsInN1Yl9mb3JtYXQiLCJmb3JtYXR0aW5nX2xpdCIsImxvY2ZtdCIsIm51bGwkMCIsImN1cnJlbnRfZGlyX25hbWUiLCJwYXJlbnRfZGlyX25hbWUiLCJkaXJfc2VwIiwicXVvdGVxdW90ZSIsIm51bGwkMSIsImN1cnJlbnRfZGlyX25hbWUkMCIsInBhcmVudF9kaXJfbmFtZSQwIiwiZGlyX3NlcCQwIiwibnVsbCQyIiwiY3VycmVudF9kaXJfbmFtZSQxIiwicGFyZW50X2Rpcl9uYW1lJDEiLCJkaXJfc2VwJDEiLCJ6ZXJvJDQiLCJvbmUkNCIsImkiLCJlcmFzZV9yZWwiLCJyZXN0IiwicmVzdCQwIiwicmVzdCQxIiwicmVzdCQyIiwicmVzdCQzIiwicmVzdCQ0IiwicmVzdCQ1IiwicmVzdCQ2IiwicmVzdCQ3IiwidHkiLCJyZXN0JDgiLCJ0eTEiLCJyZXN0JDkiLCJyZXN0JDEwIiwicmVzdCQxMSIsInJlc3QkMTIiLCJyZXN0JDEzIiwiY29uY2F0X2ZtdHR5IiwiZm10dHkxIiwiZm10dHkyIiwidHkyIiwiY29uY2F0X2ZtdCIsImZtdDEiLCJmbXQyIiwicGFkIiwicGFkJDAiLCJwcmVjIiwicGFkJDEiLCJpY29udiIsInByZWMkMCIsInBhZCQyIiwiaWNvbnYkMCIsInByZWMkMSIsInBhZCQzIiwiaWNvbnYkMSIsInByZWMkMiIsInBhZCQ0IiwiaWNvbnYkMiIsInByZWMkMyIsInBhZCQ1IiwiZmNvbnYiLCJwYWQkNiIsInN0ciIsImNociIsImZtdHR5IiwicGFkJDciLCJmbXR0eSQwIiwicGFkJDgiLCJyZXN0JDE0IiwicmVzdCQxNSIsInJlc3QkMTYiLCJmbXRpbmdfbGl0IiwicmVzdCQxNyIsImZtdGluZ19nZW4iLCJyZXN0JDE4IiwicmVzdCQxOSIsImNoYXJfc2V0Iiwid2lkdGhfb3B0IiwicmVzdCQyMCIsImNvdW50ZXIiLCJyZXN0JDIxIiwicmVzdCQyMiIsImlnbiIsInJlc3QkMjMiLCJmIiwiYXJpdHkiLCJ2IiwiciIsImN1ciIsInNlZW4iLCJuIiwiZmFpbHdpdGgiLCJzIiwiaW52YWxpZF9hcmciLCJtaW4iLCJ4IiwieSIsIm1heCIsImFicyIsImxub3QiLCJpbmZpbml0eSIsIm5lZ19pbmZpbml0eSIsIm5hbiIsIm1heF9mbG9hdCIsIm1pbl9mbG9hdCIsImVwc2lsb24iLCJtYXhfaW50IiwibWluX2ludCIsInMxIiwiczIiLCJsMSIsImwyIiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImIiLCJib29sX29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInZhbGlkX2Zsb2F0X2xleGVtIiwibCIsImkkMCIsInRvX3N0cmluZyIsIm9mX3N0cmluZ19vcHQiLCJhcHBlbmQiLCJ0bCIsImhkIiwic3RkaW4iLCJzdGRvdXQiLCJzdGRlcnIiLCJvcGVuX2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX3RleHQiLCJvcGVuX2JpbiIsImZsdXNoX2FsbCIsIml0ZXIiLCJhIiwib3V0cHV0X2J5dGVzIiwib2MiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0Iiwib2ZzIiwibGVuIiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF92YWx1ZSIsImNoYW4iLCJjbG9zZSIsImNsb3NlX25vZXJyIiwib3Blbl9nZW4kMCIsIm9wZW5fdGV4dCQwIiwib3Blbl9iaW4kMCIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsImFjY3UiLCJiZWciLCJhY2N1JDAiLCJyZXMiLCJjbG9zZV9ub2VyciQwIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludCIsInJlYWRfaW50X29wdCIsInJlYWRfZmxvYXQiLCJyZWFkX2Zsb2F0X29wdCIsInN0cmluZ19vZl9mb3JtYXQiLCJzeW1ib2wiLCJzdHIyIiwic3RyMSIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJuZXdfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fYXRfZXhpdCIsImV4aXQiLCJyZXRjb2RlIiwic2V0X2JpbmFyeV9tb2RlIiwiY2xvc2UkMCIsImluX2NoYW5uZWxfbGVuZ3RoIiwicG9zX2luIiwic2Vla19pbiIsImlucHV0X3ZhbHVlIiwiaW5wdXRfYmluYXJ5X2ludCIsImlucHV0X2J5dGUiLCJpbnB1dF9jaGFyIiwic2V0X2JpbmFyeV9tb2RlJDAiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJwb3Nfb3V0Iiwic2Vla19vdXQiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2NoYXIiLCJmbHVzaCIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAiLCJ2JDAiLCJmb2xkIiwiZXF1YWwiLCJlMSIsImUyIiwidjIiLCJ2MiQwIiwiY29tcGFyZSIsIm1hdGNoJDEiLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3IiLCJsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl8iLCJsYXp5X3RhZyIsImNsb3N1cmVfdGFnIiwib2JqZWN0X3RhZyIsImluZml4X3RhZyIsImZvcndhcmRfdGFnIiwibm9fc2Nhbl90YWciLCJhYnN0cmFjdF90YWciLCJzdHJpbmdfdGFnIiwiZG91YmxlX3RhZyIsImRvdWJsZV9hcnJheV90YWciLCJjdXN0b21fdGFnIiwiaW50X3RhZyIsIm91dF9vZl9oZWFwX3RhZyIsInVuYWxpZ25lZF90YWciLCJpbmZvIiwib2JqIiwic3RhcnRfZW52Iiwib2ZfdmFsIiwic2xvdCIsImlkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZXh0ZW5zaW9uX25hbWUiLCJleHRlbnNpb25faWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsInJhaXNlX3VuZGVmaW5lZCIsImZvcmNlX2xhenlfYmxvY2siLCJibGsiLCJjbG9zdXJlIiwicmVzdWx0IiwiZm9yY2VfdmFsX2xhenlfYmxvY2siLCJmb3JjZSIsImx6diIsInQiLCJmb3JjZV92YWwiLCJ0b19sYXp5IiwiZnJvbV92YWwiLCJpc192YWwiLCJtYXAkMCIsIm1hcF92YWwiLCJlbXB0eSIsInJldHVybiQwIiwiY29ucyIsIm5leHQiLCJhcHBlbmQkMCIsInNlcTEiLCJzZXEyIiwibWFwJDEiLCJzZXEiLCJmaWx0ZXJfbWFwIiwic2VxJDAiLCJmaWx0ZXIiLCJjb25jYXQiLCJmbGF0X21hcCIsImZvbGRfbGVmdCIsImFjYyIsImFjYyQwIiwiYWNjJDEiLCJ1bmZvbGQiLCJ1IiwidSQwIiwiaXNfZW1wdHkiLCJ4cyIsInVuY29ucyIsInhzJDAiLCJsZW5ndGgkMCIsInhzJDEiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJhY2N1JDEiLCJmb3JfYWxsIiwicCIsImV4aXN0cyIsImZpbmQiLCJmaW5kX21hcCIsIml0ZXIyIiwieXMiLCJ5cyQwIiwieXMkMSIsImZvbGRfbGVmdDIiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJlcXVhbCQwIiwiZXEiLCJjb21wYXJlJDAiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwiZmFpbHVyZSIsIm1lbW9pemUiLCJvbmNlIiwiYWN0aW9uIiwiemlwIiwibWFwMiIsImludGVybGVhdmUiLCJzb3J0ZWRfbWVyZ2UxIiwic29ydGVkX21lcmdlIiwibWFwX2ZzdCIsInh5cyIsInh5cyQwIiwibWFwX3NuZCIsInVuemlwIiwiZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIiwiZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCIsInoiLCJwYXJ0aXRpb25fbWFwIiwicGFydGl0aW9uIiwicGVlbCIsInhzcyIsInRyYW5zcG9zZSIsInRhaWxzIiwiaGVhZHMiLCJyZW1haW5kZXJzIiwieHNzJDAiLCJ0YWlscyQwIiwiaGVhZHMkMCIsIm1hcF9wcm9kdWN0IiwicHJvZHVjdCIsIm9mX2Rpc3BlbnNlciIsIml0IiwidG9fZGlzcGVuc2VyIiwiaW50cyIsIm5vbmUiLCJzb21lIiwidmFsdWUiLCJkZWZhdWx0JDAiLCJnZXQkMCIsImJpbmQiLCJqb2luIiwibWFwJDIiLCJmb2xkJDAiLCJpdGVyJDAiLCJpc19ub25lIiwiaXNfc29tZSIsImVxdWFsJDEiLCJvMCIsInYxIiwidjAiLCJjb21wYXJlJDEiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsInZhbHVlJDAiLCJnZXRfb2siLCJnZXRfZXJyb3IiLCJiaW5kJDAiLCJqb2luJDAiLCJtYXAkMyIsIm1hcF9lcnJvciIsImZvbGQkMSIsIml0ZXIkMSIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwiZXF1YWwkMiIsInIwIiwicjEiLCJjb21wYXJlJDIiLCJ0b19vcHRpb24iLCJ0b19saXN0JDAiLCJ0b19zZXEkMCIsImVxdWFsJDMiLCJjb21wYXJlJDMiLCJ0b19mbG9hdCIsInRvX3N0cmluZyQwIiwiZXNjYXBlZCIsImxvd2VyY2FzZSIsInVwcGVyY2FzZSIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImNvbXBhcmUkNCIsImMxIiwiYzIiLCJlcXVhbCQ0IiwibWluJDAiLCJtYXgkMCIsImxvX2JvdW5kIiwiaGlfYm91bmQiLCJib20iLCJyZXAiLCJzdWNjIiwicHJlZCIsImlzX3ZhbGlkIiwib2ZfaW50IiwiaXNfY2hhciIsIm9mX2NoYXIiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJlcXVhbCQ1IiwiY29tcGFyZSQ1IiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsImRlY19pbnZhbGlkIiwidXRmXzhfYnl0ZV9sZW5ndGgiLCJ1dGZfMTZfYnl0ZV9sZW5ndGgiLCJsZW5ndGgkMSIsInBhcmFtJDAiLCJjb25zJDAiLCJudGgiLCJsJDAiLCJsJDEiLCJudGhfb3B0IiwicmV2X2FwcGVuZCIsImwxJDAiLCJsMiQwIiwibDEkMSIsImwyJDEiLCJyZXYiLCJpbml0X2F1eCQwIiwicGFyYW0iLCJhMiIsImExIiwicGFpciIsIngkMCIsInJ5IiwicngiLCJ0MiIsImgyIiwidDEiLCJoMSIsInJldl9zb3J0IiwieDIiLCJ4MSIsInRsJDEiLCJ4MyIsIngyJDAiLCJ4MSQwIiwibjEiLCJuMiIsInNvcnQiLCJ0bCQwIiwiYyQwIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiYWNjdSQyIiwiYXV4IiwidGFpbCIsImRpcmVjdCIsImRlcHRoIiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsImFicyQwIiwibWF4X2ludCQwIiwibWluX2ludCQwIiwibG9nbm90IiwiZXF1YWwkNyIsImNvbXBhcmUkNyIsIm1pbiQxIiwibWF4JDEiLCJ0b19zdHJpbmckMSIsInN5bWJvbCQwIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwib2ZzMSIsIm9mczIiLCJzZXAiLCJzZXBsZW4iLCJkc3QiLCJpc19zcGFjZSIsImFwcGx5MSIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaSQxIiwiaW5kZXhfcmVjX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXhfcmVjX29wdCIsIm5ld19sZW4iLCJuZXdfYnVmIiwiZ2V0JDEiLCJzZXQkMCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImkkNCIsImIxJDEiLCJpJDUiLCJiMiQxIiwiaSQ2IiwiaSQxMCIsImIxJDMiLCJpJDExIiwiYjIkMyIsImkkMTIiLCJiMyQxIiwiaSQ3IiwiYjEkMiIsImkkOCIsImIyJDIiLCJpJDkiLCJiMyQwIiwiaSQxMyIsImIxJDQiLCJpJDE0IiwiYjIkNCIsImkkMiIsImIxJDAiLCJpJDMiLCJiMiQwIiwiaSQxNSIsImIxJDUiLCJzZXQiLCJsYXN0IiwibGFzdCQwIiwibGFzdCQxIiwibGFzdCQzIiwibGFzdCQyIiwibGFzdCQ0IiwibGFzdCQ1IiwiaGkiLCJsbyIsImlzX3NwYWNlJDAiLCJpbmRleF9yZWMkMCIsImluZGV4X3JlY19vcHQkMCIsInJpbmRleF9yZWMkMCIsInJpbmRleF9yZWNfb3B0JDAiLCJnIiwiZXF1YWwkMTAiLCJjb21wYXJlJDEwIiwidG9fc3RyaW5nJDIiLCJ0b19idWZmZXIiLCJidWZmIiwiZmxhZ3MiLCJoZWFkZXJfc2l6ZSIsImRhdGFfc2l6ZSIsInRvdGFsX3NpemUiLCJmcm9tX2J5dGVzIiwiZnJvbV9zdHJpbmciLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJwYXJhbSQxIiwiaGQkMCIsImlucHV0X2FycmF5IiwiZWx0Iiwib3V0cHV0X2FycmF5IiwiZWx0JDAiLCJhY2MkMiIsImEwIiwiYmkiLCJhaSIsIm5hIiwibmIiLCJtYXhzb24iLCJpMzEiLCJ0cmlja2xlZG93biIsInRyaWNrbGUiLCJidWJibGVkb3duIiwiYnViYmxlIiwiZSQwIiwiZmF0aGVyIiwibWVyZ2UiLCJzcmMxb2ZzIiwic3JjMWxlbiIsInNyYzIiLCJzcmMyb2ZzIiwic3JjMmxlbiIsImRzdG9mcyIsInNyYzFyIiwic3JjMnIiLCJzMiQxIiwiczEkMSIsImkxIiwiaTIiLCJpMiQwIiwiZCQwIiwiczIkMCIsImkxJDAiLCJkJDEiLCJzMSQwIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsInplcm8kMCIsIm9uZSQwIiwibWludXNfb25lJDAiLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsInBpIiwiaXNfaW50ZWdlciIsInN1Y2MkMCIsInByZWQkMCIsImVxdWFsJDExIiwibWluJDIiLCJtYXgkMiIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwiaGFzaCQwIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsIm1ha2UkMiIsImluaXQkNCIsImFwcGVuZCQyIiwiY29uY2F0JDMiLCJobGVuIiwic3ViJDIiLCJjb3B5JDIiLCJmaWxsJDEiLCJibGl0JDIiLCJzcmMiLCJzb2ZzIiwiZG9mcyIsInRvX2xpc3QkMiIsIm9mX2xpc3QkMCIsImgiLCJpdGVyJDYiLCJpdGVyMiQyIiwibWFwJDgiLCJtYXAyJDIiLCJpdGVyaSQ0IiwibWFwaSQ0IiwiZm9sZF9sZWZ0JDQiLCJmb2xkX3JpZ2h0JDMiLCJleGlzdHMkNCIsImZvcl9hbGwkNCIsIm1lbSQxIiwibWVtX2llZWUiLCJzb3J0JDAiLCJzdGFibGVfc29ydCIsInRvX3NlcSQ1IiwidG9fc2VxaSQyIiwib2Zfc2VxJDMiLCJtYXBfdG9fYXJyYXkiLCJtYXBfZnJvbV9hcnJheSIsInplcm8kMSIsIm9uZSQxIiwibWludXNfb25lJDEiLCJzdWNjJDEiLCJwcmVkJDEiLCJhYnMkMSIsIm1pbl9pbnQkMSIsIm1heF9pbnQkMSIsImxvZ25vdCQwIiwidW5zaWduZWRfdG9faW50IiwidG9fc3RyaW5nJDMiLCJvZl9zdHJpbmdfb3B0JDAiLCJjb21wYXJlJDExIiwiZXF1YWwkMTIiLCJ1bnNpZ25lZF9jb21wYXJlIiwibSIsIm1pbiQzIiwibWF4JDMiLCJ1bnNpZ25lZF9kaXYiLCJxIiwidW5zaWduZWRfcmVtIiwic3VjYyQyIiwicHJlZCQyIiwiYWJzJDIiLCJsb2dub3QkMSIsIm1heF9pbnQkMyIsInVuc2lnbmVkX3RvX2ludCQwIiwidG9fc3RyaW5nJDQiLCJvZl9zdHJpbmdfb3B0JDEiLCJjb21wYXJlJDEyIiwiZXF1YWwkMTMiLCJ1bnNpZ25lZF9jb21wYXJlJDAiLCJtaW4kNCIsIm1heCQ0IiwidW5zaWduZWRfZGl2JDAiLCJ1bnNpZ25lZF9yZW0kMCIsInplcm8kMyIsIm9uZSQzIiwibWludXNfb25lJDMiLCJzdWNjJDMiLCJwcmVkJDMiLCJhYnMkMyIsIm1pbl9pbnQkMyIsIm1heF9pbnQkNCIsImxvZ25vdCQyIiwidW5zaWduZWRfdG9faW50JDEiLCJ0b19zdHJpbmckNSIsIm9mX3N0cmluZ19vcHQkMiIsImNvbXBhcmUkMTMiLCJlcXVhbCQxNCIsInVuc2lnbmVkX2NvbXBhcmUkMSIsIm1pbiQ1IiwibWF4JDUiLCJ1bnNpZ25lZF9kaXYkMSIsInVuc2lnbmVkX3JlbSQxIiwiZW5naW5lIiwidGJsIiwic3RhdGUiLCJuZXdfZW5naW5lIiwiZnJvbV9mdW5jdGlvbiIsIm9wdCIsInN0aCIsIndpdGhfcG9zaXRpb25zIiwiYXV4X2J1ZmZlciIsImxleGJ1ZiIsInJlYWQiLCJuZXdsZW4iLCJuZXdidWYiLCJmcm9tX2NoYW5uZWwiLCJmcm9tX3N0cmluZyQwIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJhcmckMSIsImNtZCQwIiwiZXhuIiwiY3Vycl9jaGFyIiwidG9rIiwicGVla192YWwiLCJzeW1ib2xfc3RhcnRfcG9zIiwic3QiLCJlbiIsInN5bWJvbF9lbmRfcG9zIiwicmhzX3N0YXJ0X3BvcyIsInJoc19lbmRfcG9zIiwic3ltYm9sX3N0YXJ0Iiwic3ltYm9sX2VuZCIsInJoc19zdGFydCIsInJoc19lbmQiLCJpc19jdXJyZW50X2xvb2thaGVhZCIsInBhcnNlX2Vycm9yIiwiaGVpZ2h0IiwiaGwiLCJoJDAiLCJociIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiIsImxybCIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiIsInJsbCIsImFkZCIsInNpbmdsZXRvbiIsImFkZF9taW5fZWxlbWVudCIsImFkZF9tYXhfZWxlbWVudCIsInJoIiwibGgiLCJtaW5fZWx0IiwibWluX2VsdF9vcHQiLCJtYXhfZWx0IiwibWF4X2VsdF9vcHQiLCJyZW1vdmVfbWluX2VsdCIsInIkMCIsInNwbGl0IiwicHJlcyIsInByZXMkMCIsIm1lbSIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJzJDEiLCJlJDEiLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJmaW5kX2ZpcnN0X29wdCIsImZpbmRfbGFzdCIsImZpbmRfbGFzdF9vcHQiLCJmaW5kX29wdCIsInRyeV9qb2luIiwidiQxIiwib2ZfbGlzdCIsInN1YiIsImwkMyIsIngwIiwibCQ0IiwieDAkMCIsImwkNSIsIngwJDEiLCJubCIsIm1pZCIsImwkMiIsIng0IiwiYWRkX3NlcSIsIm9mX3NlcSIsInNlcV9vZl9lbnVtIiwic25vY19lbnVtIiwicmV2X3NlcV9vZl9lbnVtIiwidG9fcmV2X3NlcSIsInRvX3NlcV9mcm9tIiwibG93IiwibGQiLCJscmQiLCJyZCIsInJsZCIsImRhdGEiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtJDEiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjcmVhdGUkMCIsImNsZWFyIiwiY29weSQzIiwicHVzaCIsInBvcCIsInBvcF9vcHQiLCJ0b3AiLCJ0b3Bfb3B0IiwiaXNfZW1wdHkkMCIsImxlbmd0aCQyIiwiaXRlciQ3IiwiZm9sZCQyIiwidG9fc2VxJDYiLCJvZl9zZXEkNCIsImNyZWF0ZSQxIiwiY2xlYXIkMCIsImNlbGwiLCJwZWVrIiwiY29udGVudCIsInBlZWtfb3B0IiwidGFrZSQwIiwidGFrZV9vcHQiLCJjb3B5JDQiLCJxX3JlcyIsInByZXYiLCJpc19lbXB0eSQxIiwibGVuZ3RoJDMiLCJpdGVyJDgiLCJmb2xkJDMiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJ0b19zZXEkNyIsImFkZF9zZXEkMCIsIm9mX3NlcSQ1IiwiY291bnQiLCJmaWxsX2J1ZmYiLCJnZXRfZGF0YSIsImQxMSIsImEkMCIsImEkMSIsInBlZWtfZGF0YSIsInBlZWskMCIsImp1bmtfZGF0YSIsImp1bmsiLCJuZ2V0X2RhdGEiLCJhbCIsIm5wZWVrIiwiZW1wdHkkMiIsIml0ZXIkOSIsInN0cm0iLCJmcm9tIiwib2ZfbGlzdCQxIiwib2Zfc3RyaW5nIiwib2ZfYnl0ZXMkMCIsIm9mX2NoYW5uZWwiLCJpYXBwIiwiaWNvbnMiLCJpc2luZyIsImxhcHAiLCJsY29ucyIsImxzaW5nIiwic2VtcHR5Iiwic2xhenkiLCJkdW1wX2RhdGEiLCJkdW1wIiwiY3JlYXRlJDIiLCJjb250ZW50cyIsInRvX2J5dGVzJDAiLCJzdWIkMyIsImJsaXQkMyIsIm50aCQwIiwibGVuZ3RoJDQiLCJjbGVhciQxIiwicmVzZXQiLCJyZXNpemUiLCJtb3JlIiwib2xkX3BvcyIsIm9sZF9sZW4iLCJuZXdfYnVmZmVyIiwiYWRkX2NoYXIiLCJwb3MiLCJ1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXgiLCJ1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4IiwiYWRkX3V0Zl84X3VjaGFyIiwiYWRkX3V0Zl8xNmJlX3VjaGFyIiwiYWRkX3V0Zl8xNmxlX3VjaGFyIiwiYWRkX3N1YnN0cmluZyIsIm9mZnNldCIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJjdXJyZW50Iiwib3BlbmluZyIsImxpbSQwIiwic3RvcCIsImskMiIsImskMCIsImskMSIsIm5leHRfaSIsImlkZW50IiwidHJ1bmNhdGUiLCJ0b19zZXEkOCIsInRvX3NlcWkkMyIsImFkZF9zZXEkMSIsIm9mX3NlcSQ2IiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJjcmVhdGVfY2hhcl9zZXQiLCJhZGRfaW5fY2hhcl9zZXQiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImNoYXJfc2V0JDAiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiZm10IiwicGFkX29wdCQwIiwicGFkX29wdCQxIiwicGFkX29wdCQyIiwicGFkX29wdCQzIiwicGFkX29wdCQ0IiwicHJlY19vcHQiLCJwYWRfb3B0JDUiLCJuZGVjIiwicGFkX29wdCQ2IiwicGFkX29wdCQ3IiwicGFkX29wdCQ4IiwiZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24iLCJidWZmZXJfY3JlYXRlIiwiaW5pdF9zaXplIiwiYnVmZmVyX2NoZWNrX3NpemUiLCJvdmVyaGVhZCIsIm1pbl9sZW4iLCJuZXdfc3RyIiwiYnVmZmVyX2FkZF9jaGFyIiwiYnVmZmVyX2FkZF9zdHJpbmciLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJjRiIsImJwcmludF9wYWR0eSIsInBhZHR5IiwiYnByaW50X2lnbm9yZWRfZmxhZyIsImlnbl9mbGFnIiwiYnByaW50X3BhZF9vcHQiLCJicHJpbnRfcGFkZGluZyIsInBhZHR5JDAiLCJicHJpbnRfcHJlY2lzaW9uIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0Iiwic3RyJDAiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiYnByaW50X2ZtdHR5Iiwic3ViX2ZtdHR5Iiwic3ViX2ZtdHR5JDAiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5Iiwic3RyaW5nX29mX2ZtdCIsImZtdGl0ZXIiLCJmbXQkMCIsImlnbl9mbGFnJDAiLCJjaHIkMCIsInN0ciQxIiwiaXNfYWxvbmUkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDAiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJ0cmFucyIsInJlc3QyIiwicmVzdDIkMCIsInJlc3QyJDEiLCJyZXN0MiQyIiwicmVzdDIkMyIsInJlc3QyJDQiLCJyZXN0MiQ1IiwicmVzdDIkNiIsInJlc3QyJDciLCJ0eTIkMCIsInJlc3QyJDgiLCJ0eTIyIiwidHkyMSIsImZtdHR5X3JlbF9kZXQiLCJmNCIsImYyIiwicmVzdDIkOSIsInJlc3QyJDEwIiwicmVzdDIkMTEiLCJyZXN0MiQxMiIsInJlc3QyJDEzIiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJqZCIsImRqIiwiZ2EiLCJhZyIsImRlJDkiLCJlZCQ5IiwiYWYkOSIsImZhJDkiLCJkZSQxMCIsImVkJDEwIiwiYWYkMTAiLCJmYSQxMCIsImRlJDExIiwiZWQkMTEiLCJhZiQxMSIsImZhJDExIiwiZGUkMTIiLCJlZCQxMiIsImFmJDEyIiwiZmEkMTIiLCJkZSQxMyIsImVkJDEzIiwiYWYkMTMiLCJmYSQxMyIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJmbXR0eV9vZl9jdXN0b20iLCJhcml0eSQwIiwiZm10dHlfb2ZfZm10IiwidHlfcmVzdCIsInByZWNfdHkiLCJ0eV9yZXN0JDAiLCJwcmVjX3R5JDAiLCJ0eV9yZXN0JDEiLCJwcmVjX3R5JDEiLCJ0eV9yZXN0JDIiLCJwcmVjX3R5JDIiLCJ0eV9yZXN0JDMiLCJwcmVjX3R5JDMiLCJmbXR0eSQxIiwiZm10dHkkMiIsImZtdHR5JDMiLCJ0eSQwIiwiZm10dHkkNCIsImZtdHR5JDUiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpIiwidHlwZV9mb3JtYXRfZ2VuIiwiZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0Iiwic3ViX2ZtdHR5X3Jlc3QkMCIsImZtdHR5X3Jlc3QkMCIsInN1Yl9mbXR0eV9yZXN0JDEiLCJzdWJfZm10dHlfcmVzdCQyIiwiZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMyIsImZtdCQyIiwic3ViX2ZtdHR5X3Jlc3QkNCIsImZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDUiLCJmbXQkMyIsInN1Yl9mbXR0eV9yZXN0JDYiLCJmbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ3IiwiZm10JDQiLCJzdWJfZm10dHlfcmVzdCQ4IiwiZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkOSIsImZtdCQ1Iiwic3ViX2ZtdHR5X3Jlc3QkMTAiLCJmbXR0eV9yZXN0JDUiLCJzdWJfZm10dHlfcmVzdCQxMSIsImZtdCQ2Iiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJmbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQxMyIsImZtdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkMTQiLCJmbXR0eV9yZXN0JDciLCJzdWIyX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTUiLCJzdWIyX2ZtdHR5JDAiLCJmbXQkOCIsInN1Yl9mbXR0eV9yZXN0JDE2IiwiZm10dHlfcmVzdCQ4Iiwic3ViMl9mbXR0eSQxIiwic3ViMV9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE3Iiwic3ViMl9mbXR0eSQyIiwic3ViMV9mbXR0eSQwIiwiZm10JDkiLCJzdWJfZm10dHlfcmVzdCQxOCIsImZtdHR5X3Jlc3QkOSIsInN1Yl9mbXR0eV9yZXN0JDE5IiwiZm10JDEwIiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJmbXR0eV9yZXN0JDEwIiwic3ViX2ZtdHR5X3Jlc3QkMjEiLCJmbXQkMTEiLCJzdWJfZm10dHlfcmVzdCQyMiIsImZtdHR5X3Jlc3QkMTEiLCJzdWJfZm10dHlfcmVzdCQyMyIsImZtdCQxMiIsInN1Yl9mbXR0eV9yZXN0JDI0IiwiZm10dHlfcmVzdCQxMiIsInN1Yl9mbXR0eV9yZXN0JDI1IiwiZm10JDEzIiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJmbXRfcmVzdCIsImZtdF9yZXN0JDAiLCJmbXRfcmVzdCQxIiwiZm10X3Jlc3QkMiIsImZtdF9yZXN0JDMiLCJmbXRfcmVzdCQ0IiwiZm10X3Jlc3QkNSIsInByZWMkNCIsImZtdHR5JDYiLCJmbXRfcmVzdCQ2IiwicHJlYyQ1IiwicHJlYyQ2IiwiZm10dHkkNyIsImZtdF9yZXN0JDciLCJwcmVjJDciLCJwcmVjJDgiLCJmbXR0eSQ4IiwiZm10X3Jlc3QkOCIsImZtdHR5JDkiLCJmbXRfcmVzdCQ5IiwiZm10dHkkMTAiLCJmbXRfcmVzdCQxMCIsImZtdHR5JDExIiwiZm10X3Jlc3QkMTEiLCJmbXR0eSQxMiIsImZtdF9yZXN0JDEyIiwiZm10dHkkMTMiLCJzdWJfZm10dHkxIiwiZm10X3Jlc3QkMTMiLCJzdWJfZm10dHkkMSIsImZtdHR5JDE0IiwiZm10JDE0IiwiZm10X3Jlc3QkMTQiLCJmbXR0eSQxNSIsImZtdCQxNSIsImZtdF9yZXN0JDE1IiwiZm10dHkkMTYiLCJmbXQkMTYiLCJmbXRfcmVzdCQxNiIsImZtdHR5JDE3IiwiZm10JDE3IiwiZm10X3Jlc3QkMTciLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5MyIsImZtdDMiLCJmbXQxJDAiLCJmbXR0eTIkMCIsImZtdDIkMCIsImZtdHR5MyQwIiwiZm10MyQwIiwiZm10dHlfcmVzdCQxMyIsImZtdF9yZXN0JDE4IiwiZm10dHkkMTgiLCJmbXQkMTgiLCJmbXR0eV9yZXN0JDE0IiwiZm10X3Jlc3QkMTkiLCJmbXR0eSQxOSIsImZtdCQxOSIsImZtdHR5X3Jlc3QkMTUiLCJmbXRfcmVzdCQyMCIsImZtdHR5JDIwIiwiZm10JDIwIiwidHlwZV9pZ25vcmVkX3BhcmFtX29uZSIsImZtdHR5X3Jlc3QkMTYiLCJmbXR0eSQyMSIsImZtdCQyMSIsInN1Yl9mbXR0eSQyIiwic3ViX2ZtdHR5JDMiLCJmbXR0eSQyMiIsImZtdCQyMiIsInN1Yl9mbXR0eSQ0IiwidHlwZV9mb3JtYXQiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImskMyIsImthY2MiLCJrJDQiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaWdub3JlZF9wYXJhbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJrb2MiLCJyZXN0JDI0IiwicmVzdCQyNSIsImZuX29mX2N1c3RvbV9hcml0eSQwIiwiZm5fb2ZfY3VzdG9tX2FyaXR5Iiwib3V0cHV0X2FjYyIsInAkMiIsInAkMyIsInAkNCIsImJ1ZnB1dF9hY2MiLCJzdHJwdXRfYWNjIiwiZmFpbHdpdGhfbWVzc2FnZSIsIm9wZW5fYm94X29mX3N0cmluZyIsImludmFsaWRfYm94IiwicGFyc2Vfc3BhY2VzIiwicGFyc2VfbHdvcmQiLCJwYXJzZV9pbnQiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsInVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCIsImVuZF9pbmQiLCJpbnZhbGlkX2Zvcm1hdF93aXRob3V0IiwiZXhwZWN0ZWRfY2hhcmFjdGVyIiwiZXhwZWN0ZWQiLCJhZGRfbGl0ZXJhbCIsImxpdF9zdGFydCIsInNpemUiLCJwYXJzZV9wb3NpdGl2ZSIsInN0cl9pbmQkMCIsInN0cl9pbmQkMSIsInBhcnNlX2ludGVnZXIiLCJuZXh0X2luZCIsImluY29tcGF0aWJsZV9mbGFnIiwicGN0X2luZCIsIm9wdGlvbiIsInN1YmZtdCIsImNvbXB1dGVfaW50X2NvbnYiLCJwbHVzIiwic3BhY2UiLCJwbHVzJDAiLCJzcGFjZSQwIiwic2VhcmNoX3N1YmZvcm1hdF9lbmQiLCJzdWJfZW5kIiwic3RyX2luZCQyIiwic3ViX2VuZCQwIiwic3RyX2luZCQzIiwic3ViX2VuZCQxIiwic3RyX2luZCQ0Iiwic3RyX2luZCQ1Iiwic3ViX2VuZCQyIiwic3RyX2luZCQ2Iiwic3RyX2luZCQ3IiwicGFyc2VfbWFnaWNfc2l6ZSIsInN0cl9pbmRfMSIsInN0cl9pbmRfMiIsInN0cl9pbmRfMyIsInBhcnNlIiwicGFyc2VfZ29vZF9icmVhayIsImZvcm1hdHRpbmdfbGl0JDAiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJwYXJzZV90YWciLCJpc19vcGVuX3RhZyIsImluZCIsInN1Yl9zdHIiLCJzdWJfZm10Iiwic3ViX2Zvcm1hdCQwIiwiZm9ybWF0dGluZyQwIiwiZm9ybWF0dGluZyIsInBhcnNlX2ZsYWdzIiwibWludXMiLCJzZXRfZmxhZyIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfbGl0ZXJhbCIsInBhcnNlX2FmdGVyX3ByZWNpc2lvbiIsInN5bWIkMCIsIm1pbnVzJDAiLCJwYXJzZV9jb252ZXJzaW9uIiwicGFyc2VfY29udiIsInBhZHByZWMiLCJwbHVzX3VzZWQiLCJoYXNoX3VzZWQiLCJzcGFjZV91c2VkIiwiaWduX3VzZWQiLCJwYWRfdXNlZCIsInByZWNfdXNlZCIsImdldF9wbHVzIiwiZ2V0X2hhc2giLCJnZXRfc3BhY2UiLCJnZXRfaWduIiwiZ2V0X3BhZCIsImdldF9wcmVjIiwiZ2V0X3BhZHByZWMiLCJnZXRfaW50X3BhZCIsImNoZWNrX25vXzAiLCJvcHRfb2ZfcGFkIiwid2lkdGgkMSIsImdldF9wYWRfb3B0IiwiZ2V0X3BhZHByZWNfb3B0IiwiZm10X3Jlc3VsdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwicGFkJDkiLCJmbXRfcmVzdCQyMyIsImlnbm9yZWQkMTAiLCJmbXRfcmVzdCQyNCIsInBhZCQxMCIsImZtdF9yZXN0JDI1Iiwic3ViX2ZtdCQwIiwiZm10X3Jlc3QkMjYiLCJpZ25vcmVkJDExIiwiaWdub3JlZCQzIiwiaWdub3JlZCQ1IiwiaWdub3JlZCQ4Iiwic3BhY2UkMSIsImhhc2gkMSIsInBsdXMkMiIsImtpbmQiLCJpZ25vcmVkJDQiLCJpZ25vcmVkIiwiaWdub3JlZCQwIiwiaWdub3JlZCQxIiwicGx1cyQxIiwiaWduJDAiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImFzc29jMyIsInkyIiwieTEiLCJzcGxpdCQxIiwibWFrZV9zeW1saXN0IiwiaGVscF9hY3Rpb24iLCJhZGRfaGVscCIsInNwZWNsaXN0IiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJib29sX29mX3N0cmluZ19vcHQkMCIsImludF9vZl9zdHJpbmdfb3B0JDAiLCJmbG9hdF9vZl9zdHJpbmdfb3B0IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwiZm9sbG93JDAiLCJrZXl3b3JkIiwibm9fYXJnJDAiLCJmb2xsb3ciLCJub19hcmciLCJnZXRfYXJnJDAiLCJnZXRfYXJnIiwiY29uc3VtZV9hcmckMCIsImNvbnN1bWVfYXJnIiwidHJlYXRfYWN0aW9uJDAiLCJ0cmVhdF9hY3Rpb24iLCJmJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJyJDIiLCJhcmckMiIsImYkMyIsImFyZyQzIiwieCQxIiwiciQzIiwiYXJnJDQiLCJ4JDIiLCJzcGVjcyIsImYkNCIsImFyZyQ1IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiYXJnJDYiLCJuZXdhcmciLCJwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyIsInBhcnNlX2FyZ3ZfZHluYW1pYyIsImN1cnJlbnQkMCIsInBhcnNlX2FyZ3YiLCJtc2ckMCIsIm1zZyQxIiwicGFyc2VfZHluYW1pYyIsInBhcnNlX2V4cGFuZCIsInNlY29uZF93b3JkIiwibG9vcCIsIm1heF9hcmdfbGVuIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsImFsaWduIiwibGltaXQiLCJjb21wbGV0ZWQiLCJrc2QiLCJjdXRjb2wkMCIsInNwYWNlcyQwIiwiY3V0Y29sIiwia3dkX2xlbiIsInNwYWNlcyIsInJlYWRfYXV4IiwidHJpbSIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwiY29udiIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsImNvbnN0cnVjdG9yIiwidG9fc3RyaW5nJDYiLCJwcmludCIsImZjdCIsImNhdGNoJDAiLCJyYXdfYmFja3RyYWNlX2VudHJpZXMiLCJidCIsImNvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImZvcm1hdF9iYWNrdHJhY2Vfc2xvdCIsImlzX3JhaXNlIiwicHJpbnRfcmF3X2JhY2t0cmFjZSIsIm91dGNoYW4iLCJyYXdfYmFja3RyYWNlIiwiYmFja3RyYWNlIiwicHJpbnRfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZV90b19zdHJpbmciLCJiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsImV4bl9zbG90IiwiZXhuX3Nsb3RfaWQiLCJleG5fc2xvdF9uYW1lIiwiZXJyb3JzIiwiZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuIiwic3RhdHVzIiwidW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJlbXB0eV9iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZGVidWdnZXJfaW5fdXNlIiwiZXhuJDAiLCJyYXdfYmFja3RyYWNlJDAiLCJjb25zdCQwIiwiZmxpcCIsIm5lZ2F0ZSIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJ3b3JrIiwiZmluYWxseV9ub19leG4iLCJ3b3JrX2V4biIsIndvcmtfYnQiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJvdXRwdXQkMCIsImRpZ2VzdCIsImlucHV0JDAiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJuZXdfc3RhdGUiLCJhc3NpZ24iLCJzdDEiLCJzdDIiLCJmdWxsX2luaXQiLCJzZWVkIiwic2VlZCQwIiwibWFrZSQzIiwibWFrZV9zZWxmX2luaXQiLCJjb3B5JDUiLCJiaXRzIiwiY3VydmFsIiwibmV3dmFsIiwibmV3dmFsMzAiLCJpbnRhdXgiLCJpbnQkMCIsImJvdW5kIiwiZnVsbF9pbnQiLCJicG9zIiwiYnBvcyQwIiwiaW50MzIiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJib29sIiwiYml0czMyIiwiYml0czY0IiwibmF0aXZlYml0cyIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludDMyJDAiLCJuYXRpdmVpbnQkMCIsImludDY0JDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJiaXRzMzIkMCIsImJpdHM2NCQwIiwibmF0aXZlYml0cyQwIiwiZnVsbF9pbml0JDAiLCJpbml0JDUiLCJzZWxmX2luaXQiLCJnZXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJvbmdvaW5nX3RyYXZlcnNhbCIsImZsaXBfb25nb2luZ190cmF2ZXJzYWwiLCJwYXJhbXMiLCJyYW5kb21pemVkX2RlZmF1bHQiLCJyYW5kb21pemVkIiwicmFuZG9taXplIiwiaXNfcmFuZG9taXplZCIsInBybmciLCJwb3dlcl8yX2Fib3ZlIiwiY3JlYXRlJDMiLCJpbml0aWFsX3NpemUiLCJyYW5kb20iLCJjbGVhciQyIiwicmVzZXQkMCIsImNvcHlfYnVja2V0bGlzdCIsImtleSQwIiwibmV4dCQwIiwiY29weSQ2IiwibGVuZ3RoJDUiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwiY2VsbCQwIiwibmlkeCIsIm1hdGNoIiwibWF0Y2gkMCIsInJlc2l6ZSQwIiwib3NpemUiLCJpdGVyJDEwIiwiZG9fYnVja2V0Iiwib2xkX3RyYXYiLCJmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiZm9sZCQ0IiwiYiQwIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0b19zZXEkOSIsInRibF9kYXRhIiwiYnVjayIsImJ1Y2skMCIsImJ1Y2skMSIsInRvX3NlcV9rZXlzIiwidG9fc2VxX3ZhbHVlcyIsImtleV9pbmRleCIsImJ1Y2tldCIsImsxIiwibmV4dDEiLCJrMiIsIm5leHQyIiwiazMiLCJkMyIsIm5leHQzIiwiZmluZF9hbGwiLCJmaW5kX2luX2J1Y2tldCIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsImNvcHkiLCJzeiIsImhhc2hfcGFyYW0iLCJzZWVkZWRfaGFzaCIsImFkZCQwIiwiZmluZCQxIiwiZmluZF9vcHQkMSIsImZpbmRfYWxsJDAiLCJtZW0kMiIsImFkZF9zZXEkMiIsIm9mX3NlcSQ3IiwicmVidWlsZCIsIndlYWtfY3JlYXRlIiwibGVuZ3RoJDYiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCQwIiwic2V0JDEiLCJnZXQkMiIsImdldF9jb3B5IiwiY2hlY2skMCIsImJsaXQkNCIsImZpbGwkMiIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJzeiQwIiwic3okMSIsImNvdW50X2J1Y2tldCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJpbmRleCIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJuZXd0Iiwib2IiLCJvaCIsInNldHRlciQwIiwibmkiLCJmaW5kX29yIiwiaWZub3Rmb3VuZCIsImZpbmRfc2hhZG93IiwiaWZmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJpZCQwIiwidW5rbm93biIsInBwX2VucXVldWUiLCJ0b2tlbiIsInBwX2luZmluaXR5IiwicHBfb3V0cHV0X3N0cmluZyIsInBwX291dHB1dF9uZXdsaW5lIiwiZm9ybWF0X3BwX3RleHQiLCJ0ZXh0IiwiZm9ybWF0X3N0cmluZyIsImJyZWFrX25ld19saW5lIiwicmVhbF9pbmRlbnQiLCJicmVha19saW5lIiwiYnJlYWtfc2FtZV9saW5lIiwiZm9ybWF0X3BwX3Rva2VuIiwic2l6ZSQwIiwidGFicyIsImFkZF90YWIiLCJscyIsInRhZ19uYW1lIiwibWFya2VyIiwiYnJlYWtzIiwiZml0cyIsIm9mZiIsImJveF90eXBlJDAiLCJvZmYkMCIsImluc2VydGlvbl9wb2ludCIsInRhYnMkMCIsImZpcnN0IiwiaGVhZCIsInRhYiIsIm9mZiQxIiwiaW5zZXJ0aW9uX3BvaW50JDAiLCJ3aWR0aCQyIiwiYm94X3R5cGUkMSIsInRib3giLCJ0YWdfbmFtZSQwIiwibWFya2VyJDAiLCJhZHZhbmNlX2xlZnQiLCJwZW5kaW5nX2NvdW50IiwiZW5xdWV1ZV9hZHZhbmNlIiwiZW5xdWV1ZV9zdHJpbmdfYXMiLCJpbml0aWFsaXplX3NjYW5fc3RhY2siLCJzdGFjayIsInF1ZXVlX2VsZW0iLCJzZXRfc2l6ZSIsImxlZnRfdG90YWwiLCJzY2FuX3B1c2giLCJlbGVtIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfb3Blbl90YWciLCJwcF9jbG9zZV90YWciLCJwcF9zZXRfcHJpbnRfdGFncyIsInBwX3NldF9tYXJrX3RhZ3MiLCJwcF9nZXRfcHJpbnRfdGFncyIsInBwX2dldF9tYXJrX3RhZ3MiLCJwcF9zZXRfdGFncyIsInBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBjdCIsInBvdCIsIm1jdCIsIm1vdCIsInBwX3Jpbml0IiwicHBfZmx1c2hfcXVldWUiLCJwcF9wcmludF9hc19zaXplIiwicHBfcHJpbnRfYXMiLCJpc2l6ZSIsInBwX3ByaW50X3N0cmluZyIsInBwX3ByaW50X2J5dGVzIiwicHBfcHJpbnRfaW50IiwicHBfcHJpbnRfZmxvYXQiLCJwcF9wcmludF9ib29sIiwicHBfcHJpbnRfY2hhciIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2luZGVudCIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJmbHVzaF9idWZmZXJfZm9ybWF0dGVyIiwiZmx1c2hfc3RyX2Zvcm1hdHRlciIsIm1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJzb2IiLCJnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJpdGVtcyIsImFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSIsIml0ZW0iLCJmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2IiLCJvcGVuX2hib3giLCJvcGVuX3Zib3giLCJvcGVuX2h2Ym94Iiwib3Blbl9ob3Zib3giLCJvcGVuX2JveCIsImNsb3NlX2JveCIsIm9wZW5fdGFnIiwiY2xvc2VfdGFnIiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfc3RyaW5nJDAiLCJwcmludF9ieXRlcyQwIiwicHJpbnRfaW50JDAiLCJwcmludF9mbG9hdCQwIiwicHJpbnRfY2hhciQwIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9uZXdsaW5lJDAiLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwidnMiLCJvcHQkMSIsInBwX3ByaW50X3NlcSIsInNlcSQxIiwic2VxJDIiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0Iiwib3V0cHV0X2FjYyQwIiwiYnR5IiwicCQ1IiwicCQ2Iiwic3RycHV0X2FjYyQwIiwic2l6ZSQxIiwia2ZwcmludGYkMCIsImlrZnByaW50ZiQwIiwiaWZwcmludGYkMCIsImZwcmludGYkMCIsInByaW50ZiQwIiwiZXByaW50ZiQwIiwia2RwcmludGYiLCJkcHJpbnRmIiwia3ByaW50ZiIsInNwcmludGYkMCIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsInBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImJwcmludGYkMCIsInBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsInN0cmluZ2lmeSIsInBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImZ1bnMiLCJtYXJrX29wZW5fdGFnIiwibWFya19jbG9zZV90YWciLCJwcmludF9vcGVuX3RhZyIsInByaW50X2Nsb3NlX3RhZyIsInNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsInJlc2V0X3Rva2VuIiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJza2lwX2NoYXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiY3JlYXRlJDQiLCJpbmFtZSIsImZyb21fc3RyaW5nJDEiLCJmcm9tX2Z1bmN0aW9uJDAiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJzdGRpYiIsIm9wZW5faW5fZmlsZSIsIm9wZW5faW4iLCJmcm9tX2ZpbGUiLCJmcm9tX2ZpbGVfYmluIiwiZnJvbV9jaGFubmVsJDAiLCJjbG9zZV9pbiIsImljJDAiLCJtZW1vIiwibWVtb19mcm9tX2ljIiwibWVtb19mcm9tX2NoYW5uZWwiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfZmxvYXQiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja190aGlzX2NoYXIiLCJjaGVja19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwidG9rZW5fZmxvYXQiLCJzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciIsInNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJzY2FuX2NoYXIiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwic2Nhbl9jYW1sX2NoYXIiLCJmaW5kX3N0b3AiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsImdldF9jb3VudGVyIiwid2lkdGhfb2ZfcGFkX29wdCIsInN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQiLCJmbXRpbmciLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzJDAiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzJDAiLCJyZWFkZXIiLCJuZXdfayIsInJlYWRlcnNfcmVzdCIsInRha2VfZm9ybWF0X3JlYWRlcnMiLCJmbXQkMjMiLCJmbXQkMjQiLCJmbXQkMjUiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIiwibWFrZV9zY2FuZiIsInJlYWRlcnMiLCJzY2FuJDAiLCJzdHJfcmVzdCIsInBhZF9wcmVjX3NjYW5mIiwic2NhbiQxIiwic2NhbiQyIiwic2NhbiQzIiwic2NhbiQ0IiwiY29udiQwIiwic2NhbiQ1IiwiY29udiQxIiwic2NhbiQ2IiwiY29udiQyIiwic2NhbiQ3Iiwic2NhbiQ4IiwiZm10aW5nX2xpdCQwIiwic3RwJDAiLCJzJDIiLCJzdHJfcmVzdCQwIiwicmVzdCQyNiIsImFyZ19yZXN0Iiwia3NjYW5mIiwiZWYiLCJhcHBseSIsImFyZ3MkMCIsImV4YyIsImJzY2FuZiIsImtzc2NhbmYiLCJzc2NhbmYiLCJzY2FuZiIsImJzY2FuZl9mb3JtYXQiLCJmb3JtYXQiLCJzc2NhbmZfZm9ybWF0IiwiZm9ybWF0X2Zyb21fc3RyaW5nIiwidW5lc2NhcGVkIiwia2ZzY2FuZiIsImZzY2FuZiIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwicGFyYW1zJDAiLCJpbml0aWFsX29iamVjdF9zaXplIiwiZHVtbXlfaXRlbSIsInRhZyIsImNvbXBhcmUkMTQiLCJjb21wYXJlJDE1IiwiY29tcGFyZSQxNiIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwicmVzaXplJDEiLCJhcnJheSIsIm5ld19zaXplIiwib2xkX3NpemUiLCJuZXdfYnVjayIsIm1ldGhvZF9jb3VudCIsImluc3RfdmFyX2NvdW50IiwibmV3X21ldGhvZCIsInRhYmxlIiwiZ2V0X21ldGhvZF9sYWJlbCIsImxhYmVsIiwiZ2V0X21ldGhvZF9sYWJlbHMiLCJuYW1lcyIsInNldF9tZXRob2QiLCJlbGVtZW50IiwiZ2V0X21ldGhvZCIsInRvX2xpc3QkMyIsImFyciIsIm5hcnJvdyIsInZhcnMiLCJ2aXJ0X21ldGhzIiwiY29uY3JfbWV0aHMiLCJ2YXJzJDAiLCJ2aXJ0X21ldGhzJDAiLCJjb25jcl9tZXRocyQwIiwidmlydF9tZXRoX2xhYnMiLCJjb25jcl9tZXRoX2xhYnMiLCJsYWIiLCJ0dmFycyIsImJ5X25hbWUiLCJieV9sYWJlbCIsIm1ldCIsImhtIiwid2lkZW4iLCJzYXZlZF92YXJzIiwic2F2ZWRfaGlkZGVuX21ldGhzIiwibmV3X3Nsb3QiLCJuZXdfdmFyaWFibGUiLCJ0b19hcnJheSIsIm5ld19tZXRob2RzX3ZhcmlhYmxlcyIsIm1ldGhzIiwidmFscyIsIm1ldGhzJDAiLCJubWV0aHMiLCJudmFscyIsImdldF92YXJpYWJsZSIsImdldF92YXJpYWJsZXMiLCJhZGRfaW5pdGlhbGl6ZXIiLCJjcmVhdGVfdGFibGUiLCJwdWJsaWNfbWV0aG9kcyIsInRhZ3MiLCJpbml0X2NsYXNzIiwiaW5oZXJpdHMiLCJjbGEiLCJzdXBlciQwIiwibm0iLCJtYWtlX2NsYXNzIiwicHViX21ldGhzIiwiY2xhc3NfaW5pdCIsImVudl9pbml0IiwibWFrZV9jbGFzc19zdG9yZSIsImluaXRfdGFibGUiLCJkdW1teV9jbGFzcyIsImxvYyIsInVuZGVmIiwiY3JlYXRlX29iamVjdCIsImNyZWF0ZV9vYmplY3Rfb3B0Iiwib2JqXzAiLCJpdGVyX2YiLCJydW5faW5pdGlhbGl6ZXJzIiwiaW5pdHMiLCJydW5faW5pdGlhbGl6ZXJzX29wdCIsImNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaSIsImdldF9kYXRhJDAiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290IiwidGFibGVzJDIiLCJ0YWJsZXMkMCIsInRhYmxlcyQxIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJjbG8kMCIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIngkMyIsIm4kNyIsIngkNCIsIm4kOCIsIm4kOSIsIngkNSIsImYkOCIsImUkMiIsIm4kMTAiLCJ4JDYiLCJmJDkiLCJuJDExIiwieCQ3IiwibiQxMiIsIngkOCIsIm4kMTMiLCJuJDE0IiwiZSQzIiwibiQxNSIsIm0kMiIsIngkOSIsIm0kMyIsIm4kMTYiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ1IiwibiQxOCIsInN0YXRzJDAiLCJpbml0X21vZF9ibG9jayIsImNvbXBzJDAiLCJtb2R1Iiwic2hhcGUiLCJmbiQwIiwiY29tcHMiLCJpbml0X21vZCIsInVwZGF0ZV9tb2RfYmxvY2siLCJjbCIsInVwZGF0ZV9tb2QiLCJpbml0aWFsX2J1ZmZlciIsImJ1ZmZlciIsImJ1ZnBvcyIsInJlc2V0X2J1ZmZlciIsInN0b3JlIiwibmV3YnVmZmVyIiwiZ2V0X3N0cmluZyIsIm1ha2VfbGV4ZXIiLCJrZXl3b3JkcyIsImt3ZF90YWJsZSIsImlkZW50X29yX2tleXdvcmQiLCJrZXl3b3JkX29yX2Vycm9yIiwiY29tbWVudCIsImVzY2FwZSIsImVuZF9leHBvbmVudF9wYXJ0IiwiZXhwb25lbnRfcGFydCIsIm51bWJlciIsImlkZW50MiIsIm5lZ19udW1iZXIiLCJuZXh0X3Rva2VuJDAiLCJtYXliZV9jb21tZW50IiwibmV4dF90b2tlbiIsImhrZXkiLCJjbGVhbiIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJyZXBsYWNlX2J1Y2tldCIsIm5ld19kIiwiYnVja2V0X2xlbmd0aF9hbGl2ZSIsInN0YXRzX2FsaXZlIiwiY3JlYXRlJDUiLCJnZXRfa2V5JDAiLCJnZXRfa2V5X2NvcHkkMCIsInNldF9rZXkkMCIsInVuc2V0X2tleSQwIiwiY2hlY2tfa2V5JDAiLCJibGl0X2tleSQwIiwiZ2V0X2RhdGEkMSIsImdldF9kYXRhX2NvcHkiLCJzZXRfZGF0YSIsInVuc2V0X2RhdGEiLCJjaGVja19kYXRhIiwiYmxpdF9kYXRhIiwibWFrZSQ0IiwiZXBoIiwicXVlcnkiLCJzZXRfa2V5X2RhdGEiLCJtYWtlJDUiLCJhZGQkMSIsInRlc3Rfa2V5IiwicmVtb3ZlJDAiLCJmaW5kJDIiLCJsZW5ndGgkNyIsImNsZWFyJDMiLCJjcmVhdGUkNiIsImdldF9rZXkxIiwiZ2V0X2tleTFfY29weSIsInNldF9rZXkxIiwidW5zZXRfa2V5MSIsImNoZWNrX2tleTEiLCJnZXRfa2V5MiIsImdldF9rZXkyX2NvcHkiLCJzZXRfa2V5MiIsInVuc2V0X2tleTIiLCJjaGVja19rZXkyIiwiYmxpdF9rZXkxIiwiYmxpdF9rZXkyIiwiYmxpdF9rZXkxMiIsImdldF9kYXRhJDIiLCJnZXRfZGF0YV9jb3B5JDAiLCJzZXRfZGF0YSQwIiwidW5zZXRfZGF0YSQwIiwiY2hlY2tfZGF0YSQwIiwiYmxpdF9kYXRhJDAiLCJtYWtlJDYiLCJrZXkxIiwia2V5MiIsInF1ZXJ5JDAiLCJrMiQwIiwiazEkMCIsIm1ha2UkNyIsImFkZCQyIiwidGVzdF9rZXlzIiwicmVtb3ZlJDEiLCJmaW5kJDMiLCJsZW5ndGgkOCIsImNsZWFyJDQiLCJjcmVhdGUkNyIsImxlbmd0aCQ5IiwiZ2V0X2tleSQxIiwiZ2V0X2tleV9jb3B5JDEiLCJzZXRfa2V5JDEiLCJ1bnNldF9rZXkkMSIsImNoZWNrX2tleSQxIiwiYmxpdF9rZXkkMSIsImdldF9kYXRhJDMiLCJnZXRfZGF0YV9jb3B5JDEiLCJzZXRfZGF0YSQxIiwidW5zZXRfZGF0YSQxIiwiY2hlY2tfZGF0YSQxIiwiYmxpdF9kYXRhJDEiLCJtYWtlJDgiLCJxdWVyeSQxIiwia2kiLCJrMCIsIm1ha2UkOSIsImFkZCQzIiwidGVzdF9rZXlzJDAiLCJyZW1vdmUkMiIsImZpbmQkNCIsImxlbmd0aCQxMCIsImNsZWFyJDUiLCJnZW5lcmljX2Jhc2VuYW1lIiwiaXNfZGlyX3NlcCIsImdlbmVyaWNfZGlybmFtZSIsImlzX3JlbGF0aXZlIiwiaXNfaW1wbGljaXQiLCJjaGVja19zdWZmaXgiLCJzdWZmIiwiY2hvcF9zdWZmaXhfb3B0IiwibGVuX2YiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lIiwicXVvdGUkMCIsImFkZF9icyIsImxvb3AkMCIsImxvb3BfYnMiLCJxdW90ZV9jbWRfZmlsZW5hbWUiLCJxdW90ZV9jb21tYW5kJDAiLCJkcml2ZV9hbmRfcGF0aCIsImRpcm5hbWUkMCIsInBhdGgiLCJkcml2ZSIsImRpciIsImJhc2VuYW1lJDAiLCJiYXNlbmFtZSQxIiwiZGlybmFtZSQxIiwibnVsbCQzIiwiY3VycmVudF9kaXJfbmFtZSQyIiwicGFyZW50X2Rpcl9uYW1lJDIiLCJkaXJfc2VwJDIiLCJpc19kaXJfc2VwJDEiLCJpc19yZWxhdGl2ZSQxIiwiaXNfaW1wbGljaXQkMSIsImNoZWNrX3N1ZmZpeCQxIiwiY2hvcF9zdWZmaXhfb3B0JDEiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQxIiwicXVvdGVfY29tbWFuZCQxIiwiYmFzZW5hbWUkMiIsImRpcm5hbWUkMiIsImNvbmNhdCQ0IiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiZXh0ZW5zaW9uIiwiY2hvcF9leHRlbnNpb24iLCJyZW1vdmVfZXh0ZW5zaW9uIiwicHJuZyQwIiwidGVtcF9maWxlX25hbWUiLCJ0ZW1wX2RpciIsInJuZCIsImN1cnJlbnRfdGVtcF9kaXJfbmFtZSIsInNldF90ZW1wX2Rpcl9uYW1lIiwiZ2V0X3RlbXBfZGlyX25hbWUiLCJ0ZW1wX2ZpbGUiLCJ0cnlfbmFtZSIsImNvdW50ZXIkMSIsIm9wZW5fdGVtcF9maWxlIiwic3RoJDAiLCJwZXJtcyIsInN0aCQxIiwiYWRkJDQiLCJzdWIkNCIsIm5lZyIsImNvbmoiLCJtdWwiLCJkaXYiLCJpbnYiLCJub3JtMiIsIm5vcm0iLCJxJDAiLCJwb2xhciIsInNxcnQiLCJ3JDAiLCJleHAiLCJsb2ciLCJwb3ciLCJmbG9hdDMyIiwiZmxvYXQ2NCIsImludDhfc2lnbmVkIiwiaW50OF91bnNpZ25lZCIsImludDE2X3NpZ25lZCIsImludDE2X3Vuc2lnbmVkIiwiaW50MzIkMSIsImludDY0JDEiLCJpbnQkMiIsIm5hdGl2ZWludCQxIiwiY29tcGxleDMyIiwiY29tcGxleDY0Iiwia2luZF9zaXplX2luX2J5dGVzIiwiY19sYXlvdXQiLCJmb3J0cmFuX2xheW91dCIsImNsb29wIiwiaWR4IiwiY29sIiwiZmxvb3AiLCJpbml0JDYiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJjcmVhdGUkOCIsImdldCQzIiwic2V0JDIiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQ5IiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDciLCJvZl9hcnJheSIsImJhIiwiY3JlYXRlJDEwIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDgiLCJvZl9hcnJheSQwIiwicm93IiwiY3JlYXRlJDExIiwiZGltMyIsInNpemVfaW5fYnl0ZXMkMyIsInNsaWNlX2xlZnRfMSIsInNsaWNlX3JpZ2h0XzEiLCJzbGljZV9sZWZ0XzIiLCJzbGljZV9yaWdodF8yIiwiaW5pdCQ5Iiwib2ZfYXJyYXkkMSIsImFycmF5MF9vZl9nZW5hcnJheSIsImFycmF5MV9vZl9nZW5hcnJheSIsImFycmF5Ml9vZl9nZW5hcnJheSIsImFycmF5M19vZl9nZW5hcnJheSIsInJlc2hhcGVfMCIsInJlc2hhcGVfMSIsInJlc2hhcGVfMiIsInJlc2hhcGVfMyIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImxlbmd0aCQxMSIsImlucHV0X2NoYXIkMCIsImlucHV0X2J5dGUkMCIsImlucHV0X2xpbmUkMCIsInJlYWxseV9pbnB1dCQwIiwicmVhbGx5X2lucHV0X3N0cmluZyQwIiwicmVhZF91cHRvIiwiZW5zdXJlIiwibmV3X2xlbiQwIiwibmV3X2xlbiQxIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSQwIiwiaW5pdGlhbF9zaXplJDEiLCJucmVhZCIsImJ1ZiQwIiwiYnVmJDEiLCJyZW0iLCJ3aXRoX29wZW4kMCIsIndpdGhfb3Blbl9iaW4kMCIsIndpdGhfb3Blbl90ZXh0JDAiLCJ3aXRoX29wZW5fZ2VuJDAiLCJzZWVrJDAiLCJwb3MkMCIsImxlbmd0aCQxMiIsInlvanNvbl9vZl9zb3VyY2VfcG9zaXRpb24iLCJ2X2xhd19oZWFkaW5ncyIsInZfZW5kX2NvbHVtbiIsInZfZW5kX2xpbmUiLCJ2X3N0YXJ0X2NvbHVtbiIsInZfc3RhcnRfbGluZSIsInZfZmlsZW5hbWUiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJhcmckMSIsImJuZHMkMSIsImFyZyQyIiwiYm5kcyQyIiwiYXJnJDMiLCJibmRzJDMiLCJhcmckNCIsImJuZHMkNCIsIm1vbmV5X29mX2NlbnRzX3N0cmluZyIsImNlbnRzIiwibW9uZXlfb2ZfdW5pdHNfaW50IiwidW5pdHMiLCJtb25leV9vZl9jZW50c19pbnRlZ2VyIiwibW9uZXlfdG9fZmxvYXQiLCJtIiwibW9uZXlfb2ZfZGVjaW1hbCIsImQiLCJtb25leV90b19zdHJpbmciLCJtb25leV90b19jZW50cyIsIm1vbmV5X3JvdW5kIiwiZGVjaW1hbF9vZl9zdHJpbmciLCJkZWNpbWFsX3RvX2Zsb2F0IiwiZGVjaW1hbF9vZl9mbG9hdCIsImRlY2ltYWxfb2ZfaW50ZWdlciIsImRlY2ltYWxfdG9fc3RyaW5nIiwibWF4X3ByZWNfZGlnaXRzIiwiaSIsInNpZ24iLCJuIiwiaW50X3BhcnQiLCJuJDAiLCJkaWdpdHMiLCJsZWFkaW5nX3plcm9lcyIsImRpZ2l0IiwibnVtX2xlYWRpbmdfemVyb2VzIiwiaSQwIiwiZm10IiwiZGVjaW1hbF9yb3VuZCIsInEiLCJkZWNpbWFsX29mX21vbmV5IiwiaW50ZWdlcl9vZl9zdHJpbmciLCJzIiwiaW50ZWdlcl90b19zdHJpbmciLCJpbnRlZ2VyX3RvX2ludCIsImludGVnZXJfb2ZfaW50IiwiaW50ZWdlcl9leHBvbmVudGlhdGlvbiIsImUiLCJpbnRlZ2VyX2xvZzIiLCJ5ZWFyX29mX2RhdGUiLCJ5IiwibW9udGhfbnVtYmVyX29mX2RhdGUiLCJpc19sZWFwX3llYXIiLCJ5JDAiLCJkYXlfb2ZfbW9udGhfb2ZfZGF0ZSIsImQkMCIsImRhdGVfb2ZfbnVtYmVycyIsInllYXIiLCJtb250aCIsImRheSIsImRhdGVfdG9fc3RyaW5nIiwiZmlyc3RfZGF5X29mX21vbnRoIiwibGFzdF9kYXlfb2ZfbW9udGgiLCJkdXJhdGlvbl9vZl9udW1iZXJzIiwiZHVyYXRpb25fdG9fc3RyaW5nIiwiZHVyYXRpb25fdG9feWVhcnNfbW9udGhzX2RheXMiLCJ5b2pzb25fb2ZfcnVudGltZV92YWx1ZSIsInYwJDQiLCJ2MCQ1IiwidjAkNiIsInYwIiwidjAkNyIsInYwJDAiLCJ2MCQ4IiwidjAkMSIsInYwJDkiLCJ2MCQyIiwidjAkMTAiLCJ2MCQzIiwidjEiLCJ2MCQxMSIsInYwJDEyIiwidjEkMCIsInYwJDEzIiwidjAkMTQiLCJ2MSQxIiwidjEkMiIsInYxJDMiLCJ2MCQxNSIsInYwJDE2IiwidjEkNCIsInYwJDE3IiwidjAkMTgiLCJ1bmVtYmVkZGFibGUiLCJlbWJlZF91bml0IiwiZW1iZWRfYm9vbCIsIngiLCJlbWJlZF9tb25leSIsImVtYmVkX2ludGVnZXIiLCJlbWJlZF9kZWNpbWFsIiwiZW1iZWRfZGF0ZSIsImVtYmVkX2R1cmF0aW9uIiwiZW1iZWRfYXJyYXkiLCJmIiwieW9qc29uX29mX2luZm9ybWF0aW9uIiwidiIsInlvanNvbl9vZl92YXJfZGVmIiwidl9mdW5fY2FsbHMiLCJ2X3ZhbHVlIiwidl9uYW1lIiwidl9wb3MiLCJ5b2pzb25fb2ZfZnVuX2NhbGwiLCJ2X291dHB1dCIsInZfYm9keSIsInZfZnVuX2lucHV0cyIsInZfZnVuX25hbWUiLCJ5b2pzb25fb2ZfZXZlbnQiLCJ2X2lucHV0cyIsImxvZ19yZWYiLCJyZXNldF9sb2ciLCJyZXRyaWV2ZV9sb2ciLCJsb2dfYmVnaW5fY2FsbCIsImluZm8iLCJsb2dfZW5kX2NhbGwiLCJsb2dfdmFyaWFibGVfZGVmaW5pdGlvbiIsImVtYmVkIiwibG9nX2RlY2lzaW9uX3Rha2VuIiwicG9zIiwicHBfZXZlbnRzIiwib3B0IiwicHBmIiwiZXZlbnRzIiwic3RoIiwiaXNfZmlyc3RfY2FsbCIsImZvcm1hdF92YXJfZGVmIiwidmFyJDAiLCJmb3JtYXRfcG9zX29wdCIsImZvcm1hdF92YWx1ZSIsImZvcm1hdF92YXJfZGVmcyIsImZvcm1hdF92YXJfZGVmX3dpdGhfZnVuX2NhbGxzIiwidmFyX3dpdGhfZnVuIiwiZnVuX2NhbGwiLCJmb3JtYXRfZXZlbnQiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJ4JDMiLCJ4JDQiLCJuYW1lIiwiYXR0cnMiLCJuYW1lJDAiLCJ2YWx1ZSIsImVsdHMiLCJ2YXJfZGVmX3dpdGhfZnVuIiwib3V0cHV0IiwiYm9keSIsImZ1bl9pbnB1dHMiLCJmdW5fbmFtZSIsImJvZHkkMCIsImlucHV0cyIsImVtcHR5IiwiZW1wdHlfY3R4IiwicmF3X2V2ZW50X3RvX3N0cmluZyIsIm5hbWUkMSIsInRha2Vfd2hpbGUiLCJwIiwibCIsInQiLCJoIiwicmVzdCIsInQkMCIsInBhcnNlX3Jhd19ldmVudHMiLCJyYXdfZXZlbnRzIiwibmJfcmF3X2V2ZW50cyIsImlzX2Z1bmN0aW9uX2NhbGwiLCJpbmZvcyIsImlzX3Zhcl9kZWYiLCJwYXJzZV9mdW5fY2FsbCIsImJvZHlfY3R4IiwicGFyc2VfZXZlbnRzIiwiYm9keV9yZXYiLCJyZXN0JDAiLCJ2YXJfZGVmIiwib3V0cHV0JDAiLCJjdHgiLCJjdHgkMCIsInZhcl9uYW1lIiwibHMkMCIsImN0eCQxIiwicmVzdCQxIiwiY3R4JDIiLCJpbmZvcyQwIiwicmVzdCQyIiwiY3R4JDMiLCJyZXN0JDMiLCJ2YXJfZG90X3N1YnNjb3BlX3Zhcl9uYW1lIiwibHMiLCJjdHgkNCIsImluZm9zJDEiLCJyYXdfZXZlbnRzJDAiLCJmdW5fY2FsbHMiLCJyZXN0JDQiLCJpbmZvcyQyIiwiZnVuX2NhbGwkMCIsImZ1bl9jYWxscyQwIiwiZnVuX2NhbGxzJDEiLCJyZXN0JDYiLCJ2YWx1ZSQwIiwibmFtZSQyIiwidmFyX2NvbXAiLCJyZXN0JDUiLCJjdHgkNiIsImN0eCQ1IiwibXNnIiwiaGFuZGxlX2RlZmF1bHQiLCJleGNlcHRpb25zIiwianVzdCIsImNvbnMiLCJhY2MiLCJleGNlcHQiLCJuZXdfdmFsIiwiaGFuZGxlX2RlZmF1bHRfb3B0IiwiYiIsIm5vX2lucHV0IiwiY29tcGFyZV9wZXJpb2RzIiwicDEiLCJwMiIsInAxX2RheXMiLCJwMl9kYXlzIiwiZXF1YWxfcGVyaW9kcyIsIm9fbm90Iiwib19sZW5ndGgiLCJhIiwib19taW51c19pbnQiLCJpMSIsIm9fbWludXNfcmF0Iiwib19taW51c19tb24iLCJtMSIsIm9fbWludXNfZHVyIiwib19hbmQiLCJvX29yIiwib194b3IiLCJvX2VxIiwib19tYXAiLCJvX3JlZHVjZSIsImRmdCIsImxlbiIsInIiLCJvX2NvbmNhdCIsIm9fZmlsdGVyIiwib19hZGRfaW50X2ludCIsImkyIiwib19hZGRfcmF0X3JhdCIsIm9fYWRkX21vbl9tb24iLCJtMiIsIm9fYWRkX2RhdF9kdXIiLCJkYSIsImR1Iiwib19hZGRfZHVyX2R1ciIsIm9fc3ViX2ludF9pbnQiLCJvX3N1Yl9yYXRfcmF0Iiwib19zdWJfbW9uX21vbiIsIm9fc3ViX2RhdF9kYXQiLCJvX3N1Yl9kYXRfZHVyIiwiZGF0IiwiZHVyIiwib19zdWJfZHVyX2R1ciIsIm9fbXVsdF9pbnRfaW50Iiwib19tdWx0X3JhdF9yYXQiLCJvX211bHRfbW9uX3JhdCIsImkxX2FicyIsImkyX2FicyIsInNpZ25faW50IiwicmF0X3Jlc3VsdCIsInJlbWFpbmRlciIsInJlcyIsIm9fbXVsdF9kdXJfaW50Iiwib19kaXZfaW50X2ludCIsIm9fZGl2X3JhdF9yYXQiLCJvX2Rpdl9tb25fbW9uIiwib19kaXZfbW9uX3JhdCIsInIxIiwib19kaXZfZHVyX2R1ciIsImQxIiwiZDIiLCJvX2x0X2ludF9pbnQiLCJvX2x0X3JhdF9yYXQiLCJvX2x0X21vbl9tb24iLCJvX2x0X2R1cl9kdXIiLCJvX2x0X2RhdF9kYXQiLCJvX2x0ZV9pbnRfaW50Iiwib19sdGVfcmF0X3JhdCIsIm9fbHRlX21vbl9tb24iLCJvX2x0ZV9kdXJfZHVyIiwib19sdGVfZGF0X2RhdCIsIm9fZ3RfaW50X2ludCIsIm9fZ3RfcmF0X3JhdCIsIm9fZ3RfbW9uX21vbiIsIm9fZ3RfZHVyX2R1ciIsIm9fZ3RfZGF0X2RhdCIsIm9fZ3RlX2ludF9pbnQiLCJvX2d0ZV9yYXRfcmF0Iiwib19ndGVfbW9uX21vbiIsIm9fZ3RlX2R1cl9kdXIiLCJvX2d0ZV9kYXRfZGF0Iiwib19lcV9pbnRfaW50Iiwib19lcV9yYXRfcmF0Iiwib19lcV9tb25fbW9uIiwib19lcV9kdXJfZHVyIiwib19lcV9kYXRfZGF0Iiwib19mb2xkIiwib19ub3QkMCIsIm9fbGVuZ3RoJDAiLCJvX3RvcmF0X2ludCIsIm9fdG9yYXRfbW9uIiwib190b21vbmV5X3JhdCIsIm9fZ2V0RGF5Iiwib19nZXRNb250aCIsIm9fZ2V0WWVhciIsIm9fZmlyc3REYXlPZk1vbnRoIiwib19sYXN0RGF5T2ZNb250aCIsIm9fcm91bmRfbW9uIiwib19yb3VuZF9yYXQiLCJvX21pbnVzX2ludCQwIiwib19taW51c19yYXQkMCIsIm9fbWludXNfbW9uJDAiLCJvX21pbnVzX2R1ciQwIiwib19hbmQkMCIsIm9fb3IkMCIsIm9feG9yJDAiLCJvX2VxJDAiLCJvX21hcCQwIiwib19yZWR1Y2UkMCIsIm9fY29uY2F0JDAiLCJvX2ZpbHRlciQwIiwib19hZGRfaW50X2ludCQwIiwib19hZGRfcmF0X3JhdCQwIiwib19hZGRfbW9uX21vbiQwIiwib19hZGRfZGF0X2R1ciQwIiwib19hZGRfZHVyX2R1ciQwIiwib19zdWJfaW50X2ludCQwIiwib19zdWJfcmF0X3JhdCQwIiwib19zdWJfbW9uX21vbiQwIiwib19zdWJfZGF0X2RhdCQwIiwib19zdWJfZGF0X2R1ciQwIiwib19zdWJfZHVyX2R1ciQwIiwib19tdWx0X2ludF9pbnQkMCIsIm9fbXVsdF9yYXRfcmF0JDAiLCJvX211bHRfbW9uX3JhdCQwIiwib19tdWx0X2R1cl9pbnQkMCIsIm9fZGl2X2ludF9pbnQkMCIsIm9fZGl2X3JhdF9yYXQkMCIsIm9fZGl2X21vbl9tb24kMCIsIm9fZGl2X21vbl9yYXQkMCIsIm9fZGl2X2R1cl9kdXIkMCIsIm9fbHRfaW50X2ludCQwIiwib19sdF9yYXRfcmF0JDAiLCJvX2x0X21vbl9tb24kMCIsIm9fbHRfZHVyX2R1ciQwIiwib19sdF9kYXRfZGF0JDAiLCJvX2x0ZV9pbnRfaW50JDAiLCJvX2x0ZV9yYXRfcmF0JDAiLCJvX2x0ZV9tb25fbW9uJDAiLCJvX2x0ZV9kdXJfZHVyJDAiLCJvX2x0ZV9kYXRfZGF0JDAiLCJvX2d0X2ludF9pbnQkMCIsIm9fZ3RfcmF0X3JhdCQwIiwib19ndF9tb25fbW9uJDAiLCJvX2d0X2R1cl9kdXIkMCIsIm9fZ3RfZGF0X2RhdCQwIiwib19ndGVfaW50X2ludCQwIiwib19ndGVfcmF0X3JhdCQwIiwib19ndGVfbW9uX21vbiQwIiwib19ndGVfZHVyX2R1ciQwIiwib19ndGVfZGF0X2RhdCQwIiwib19lcV9pbnRfaW50JDAiLCJvX2VxX3JhdF9yYXQkMCIsIm9fZXFfbW9uX21vbiQwIiwib19lcV9kdXJfZHVyJDAiLCJvX2VxX2RhdF9kYXQkMCIsIm9fZm9sZCQwIiwiZXhuIiwibW9kdWxlIiwiZ2xvYmFsVGhpcyIsIm51bGwiLCJ1bmRlZmluZWQiLCJqc29vX2V4cG9ydHMiLCJldmVudCIsImR1cmF0aW9uX29mX2pzb28iLCJkIiwiZHVyYXRpb25fdG9fanNvbyIsImRheXMiLCJtb250aHMiLCJ5ZWFycyIsImRhdGVfb2ZfanNvbyIsImQkMCIsImQkMSIsImRheSIsIm1vbnRoIiwieWVhciIsImRhdGVfdG9fanNvbyIsImV2dCIsInBvcyIsInYiLCJpbmZvIiwiZXZlbnQiLCJldmVudF9tYW5hZ2VyIiwiZXhlY3V0ZV9vcl90aHJvd19lcnJvciIsImYiLCJ0aHJvd19lcnJvciIsImRlc2NyIiwicG9zJDAiLCJwb3MkMSIsImVtYmVkX3ByaXNlX2VuX2NoYXJnZSIsIngiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJ4JDMiLCJ4JDQiLCJlbWJlZF9zaXR1YXRpb25fb2JsaWdhdGlvbl9zY28iLCJlbWJlZF9wcmlzZV9lbl9jb21wdGUiLCJlbWJlZF92ZXJzZW1lbnRfYWxsb2NhdGlvbnMiLCJlbWJlZF9lbGVtZW50X3ByZXN0YXRpb25zX2ZhbWkiLCJ4JDUiLCJ4JDYiLCJ4JDciLCJlbWJlZF9jb2xsZWN0aXZpdGUiLCJ4JDgiLCJlbWJlZF9hbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXYiLCJlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmllIiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmllIiwiZW1iZWRfc21pYyIsImVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpbyIsImVtYmVkX2ludGVyZmFjZV9hbGxvY2F0aW9uc19mYSIsImVtYmVkX2VuZmFudF9lbnRyZWUiLCJlbWJlZF9lbmZhbnQiLCJlbWJlZF9lbmZhbnRfbGVfcGx1c19hZ2UiLCJlbWJlZF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwiZW1iZWRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pIiwiZW1iZWRfYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2JDAiLCJlbWJlZF9lbmZhbnRfbGVfcGx1c19hZ2VfaW4iLCJlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2kiLCJlbWJlZF92ZXJpZmljYXRpb25fYWdlX2luZmVyaWUkMCIsImVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZSQwIiwiZW1iZWRfc21pY19pbiIsImVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpbyQwIiwiZW1iZWRfaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhJDAiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAiLCJhZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzMiLCJlbmZhbnRfbGVfcGx1c19hZ2UiLCJlbmZhbnRfbGVfcGx1c19hZ2VfaW4iLCJlbmZhbnRzIiwicG90ZW50aWVsX3BsdXNfYWdlXzEiLCJwb3RlbnRpZWxfcGx1c19hZ2VfMiIsImxlX3BsdXNfYWdlIiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfIiwiZGF0ZV9uYWlzc2FuY2UiLCJkYXRlX2NvdXJhbnRlIiwiYW5uZWVzIiwiciIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2kiLCJzbWljIiwic21pY19pbiIsInJlc2lkZW5jZSIsImJydXRfaG9yYWlyZSIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSIsIm1vbnRhbnQiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiIsImFnZV9sNTEyXzNfMiIsInNtaWNfZG90X2RhdGVfY291cmFudGUiLCJzbWljX2RvdF9yZXNpZGVuY2UiLCJyZXN1bHQiLCJzbWljX2RvdF9icnV0X2hvcmFpcmUiLCJyZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSIsInBsYWZvbmRfbDUxMl8zXzIiLCJlbmZhbnQiLCJjb25kaXRpb25zX2hvcnNfYWdlIiwiZHJvaXRfb3V2ZXJ0IiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4iLCJwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm0iLCJwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm0kMCIsInJlc3NvdXJjZXNfbWVuYWdlIiwiZW5mYW50c19hX2NoYXJnZSIsImF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZSIsInByaXNlX2VuX2NvbXB0ZSIsIm5vbWJyZV9lbmZhbnRzX2FsaW5lYV8yX2w1MjFfMyIsInZlcnNpb25fYXZyaWxfMjAwOF9kb3RfYWdlX21pbiIsImJtYWZfZG90X2RhdGVfY291cmFudGUiLCJyZXN1bHQkMCIsImJtYWZfZG90X21vbnRhbnQiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXQiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmUiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXMiLCJyZXN1bHQkMSIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2RybyIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2NvbiIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2FnZSIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZyIsImVuZmFudF9sZV9wbHVzX2FnZV9kb3RfZW5mYW50cyIsInJlc3VsdCQyIiwiZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9sZV9wbHVzIiwiZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfIiwiZXN0X2VuZmFudF9sZV9wbHVzX2FnZSIsInBsYWZvbmRfaV9pX2Q1MjFfMyIsInBsYWZvbmRfaV9kNTIxXzMiLCJkcm9pdF9vdXZlcnRfY29tcGxlbWVudCIsImRyb2l0X291dmVydF9mb3JmYWl0YWlyZSIsIm1vbnRhbnRfaW5pdGlhbF9iYXNlX3F1YXRyaWVtZSIsIm1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzaWVtZSIsIm5vbWJyZV90b3RhbF9lbmZhbnRzIiwic3VtMSIsInN1bTIiLCJub21icmVfbW95ZW5fZW5mYW50cyIsIm1vbnRhbnRfaW5pdGlhbF9iYXNlX3ByZW1pZXJfZSIsImRyb2l0X291dmVydF9iYXNlIiwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb24iLCJhbGxvY2F0aW9uIiwiY29tcGxlbWVudF9kZWdyZXNzaWYiLCJtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlX3Bhcl8iLCJtb250YW50X2luaXRpYWxfYmFzZV90cm9pc2llbWUkMCIsIm1vbnRhbnRfaW5pdGlhbF9iYXNlX2RldXhpZW1lXyIsInJhcHBvcnRfZW5mYW50c190b3RhbF9tb3llbiIsIm1vbnRhbnRfaW5pdGlhbF9tZXRyb3BvbGVfbWFqbyIsIm1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmUiLCJtb250YW50X2luaXRpYWxfYmFzZSIsIm1vbnRhbnRfaW5pdGlhbF9tYWpvcmF0aW9uIiwibW9udGFudF92ZXJzZV9jb21wbGVtZW50X3BvdXJfIiwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybmVlX2JhIiwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybmVlX21hIiwibW9udGFudF92ZXJzZV9iYXNlIiwibW9udGFudF92ZXJzZV9tYWpvcmF0aW9uIiwibW9udGFudF9iYXNlX2NvbXBsZW1lbnRfcG91cl9iIiwibW9udGFudF92ZXJzZV9jb21wbGVtZW50X3BvdXJfJDAiLCJtb250YW50X3ZlcnNlIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsIiwiaV9kYXRlX2NvdXJhbnRlIiwiaV9lbmZhbnRzIiwiaV9yZXNzb3VyY2VzX21lbmFnZSIsImlfcmVzaWRlbmNlIiwiaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3BlIiwiaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3BlJDAiLCJpX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8iLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9wZXIiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9wZXIkMCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlcyIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlcyQwIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0IiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZW5mIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfYXZhIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9uIiwiaV9tb250YW50X3ZlcnNlIiwicHJpc2VfZW5fY2hhcmdlX3RvX2pzb28iLCJhcmciLCJhcmckMCIsImFyZyQxIiwiYXJnJDIiLCJhcmckMyIsInByaXNlX2VuX2NoYXJnZV9vZl9qc29vIiwicHJpc2VfZW5fY2hhcmdlIiwiY29ucyIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXyIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXyQwIiwic2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUiLCJwcmlzZV9lbl9jb21wdGVfdG9fanNvbyIsInByaXNlX2VuX2NvbXB0ZV9vZl9qc29vIiwidmVyc2VtZW50X2FsbG9jYXRpb25zX3RvX2pzb28iLCJ2ZXJzZW1lbnRfYWxsb2NhdGlvbnNfb2ZfanNvbyIsInZlcnNlbWVudF9hbGxvY2F0aW9ucyIsImVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyIsImFyZyQ0IiwiYXJnJDUiLCJhcmckNiIsImVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyQwIiwiY29sbGVjdGl2aXRlX3RvX2pzb28iLCJhcmckNyIsImNvbGxlY3Rpdml0ZV9vZl9qc29vIiwiY29sbGVjdGl2aXRlIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDAiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAkMSIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvbyIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyQwIiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDEiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX3QiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX28iLCJzbWljX3RvX2pzb28iLCJzbWljX29mX2pzb28iLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMCIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQxIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDAiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkMSIsImVuZmFudF9lbnRyZWVfdG9fanNvbyIsImVuZmFudF9lbnRyZWUiLCJlbmZhbnRfZW50cmVlX29mX2pzb28iLCJlbmZhbnRfdG9fanNvbyIsImVuZmFudF9vZl9qc29vIiwiZW5mYW50X2xlX3BsdXNfYWdlX3RvX2pzb28iLCJlbmZhbnRfbGVfcGx1c19hZ2Vfb2ZfanNvbyIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyIsImZ1bmN0aW9uX2lucHV0MCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvbyIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9faiIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfaiIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQyIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDMiLCJlbmZhbnRfbGVfcGx1c19hZ2VfaW5fdG9fanNvbyIsImVuZmFudF9sZV9wbHVzX2FnZV9pbl9vZl9qc29vIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qIiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDIiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kMyIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaSQwIiwic21pY19pbl90b19qc29vIiwic21pY19pbl9vZl9qc29vIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDIiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMyIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCQyIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDMiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAkNCIsImVuZmFudF9sZV9wbHVzX2FnZSQwIiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDQiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hJDAiLCJzbWljJDAiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kNCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXMkMCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMkMCIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCQ0IiwiZW1iZWRfdHlwZV9wcmV0IiwiZW1iZWRfdGl0dWxhaXJlX3ByZXQiLCJlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgiLCJlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjgiLCJlbWJlZF9hbWVsaW9yZV9wYXJfb2NjdXBhbnQiLCJlbWJlZF9saW1pdGVfdHJhbmNoZSIsImVtYmVkX2xpbWl0ZV90cmFuY2hlX2RlY2ltYWwiLCJlbWJlZF9wcmVzdGF0aW9uX3JlY3VlIiwiZW1iZWRfcGFyZW50X291X2F1dHJlIiwiZW1iZWRfc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlIiwiZW1iZWRfcGFyZW50ZSIsImVtYmVkX2RhdGVfZGVfbmFpc3NhbmNlX291X21vaSIsImVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uIiwiZW1iZWRfcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluIiwiZW1iZWRfdmVyc2VtZW50X2EiLCJlbWJlZF9kZXBlbnNlX2xvZ2VtZW50IiwiZW1iZWRfbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSIsImVtYmVkX3R5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdCIsImVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbCIsImVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGUiLCJlbWJlZF9wcmlzZV9lbl9jaGFyZ2UkMCIsImVtYmVkX3R5cGVfbG9nZW1lbnRfZm95ZXIiLCJlbWJlZF9jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG8iLCJlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGMiLCJlbWJlZF9jb2xsZWN0aXZpdGUkMCIsImVtYmVkX3ByaXNlX2VuX2NoYXJnZV9lbmZhbnQiLCJlbWJlZF9zaXR1YXRpb25fb2JsaWdhdGlvbl9zY28kMCIsImVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaSQwIiwiZW1iZWRfY29udmVudGlvbl9iYWlsbGV1cl9zb2NpIiwiZW1iZWRfY29udmVudGlvbl9hX25faF9hIiwiZW1iZWRfcGVyc29ubmVfc291c19sb2NhdGlvbiIsImVtYmVkX3BhdHJpbW9pbmUiLCJlbWJlZF9jb25kaXRpb25zX2V0cmFuZ2VycyIsImVtYmVkX3BlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbCIsImVtYmVkX2VsaWdpYmlsaXRlX2FpZGVfcGVyc29ubiIsImVtYmVkX2VsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbSIsImVtYmVkX3Jlc3NvdXJjZXNfYWlkZXNfcGVyc29ubiIsImVtYmVkX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYSIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSIsImVtYmVkX2NhbGN1bF9lcXVpdmFsZW5jZV9sb3llciIsImVtYmVkX2NhbGN1bF9ub21icmVfcGFydF9sb2dlbSIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQwIiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0c19hY2NlIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDEiLCJlbWJlZF90cmFpdGVtZW50X2Zvcm11bGVfYWlkZV8iLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkMiIsImVtYmVkX2luZm9zX2NoYW5nZW1lbnRfbG9nZW1lbiIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQwIiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDEiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkMiIsImVtYmVkX291dmVydHVyZV9kcm9pdHNfcmV0cmFpdCIsImVtYmVkX2ltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50IiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlIiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlJDAiLCJlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW8kMSIsImVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZSQxIiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmllJDEiLCJlbWJlZF9zbWljJDAiLCJlbWJlZF9wcmV0IiwiZW1iZWRfbmV1Zl9vdV9hbmNpZW4iLCJlbWJlZF90cmFuY2hlX3JldmVudSIsImVtYmVkX3RyYW5jaGVfcmV2ZW51X2RlY2ltYWwiLCJlbWJlZF9hdXRyZV9wZXJzb25uZV9hX2NoYXJnZSIsImVtYmVkX2RhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZSIsImVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbCIsImVtYmVkX2xvZ2VtZW50X2ZveWVyIiwiZW1iZWRfZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsIiwiZW1iZWRfZW5mYW50X2FfY2hhcmdlIiwiZW1iZWRfdHlwZV9iYWlsbGV1ciIsImVtYmVkX2xvdWVfb3Vfc291c19sb3VlX2FfZGVzXyIsImVtYmVkX25hdGlvbmFsaXRlIiwiZW1iZWRfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyIiwiZW1iZWRfcHJvcHJpZXRhaXJlIiwiZW1iZWRfaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlIiwiZW1iZWRfZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfIiwiZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UiLCJlbWJlZF9kZW1hbmRldXIiLCJlbWJlZF9sb2NhdGlvbiIsImVtYmVkX2VsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbiIsImVtYmVkX2NhdGVnb3JpZV9jYWxjdWxfYV9wX2wiLCJlbWJlZF9tb2RlX29jY3VwYXRpb24iLCJlbWJlZF9sb2dlbWVudCIsImVtYmVkX21lbmFnZSIsImVtYmVkX2VsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbiQwIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uJDAiLCJlbWJlZF9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2wkMCIsImVtYmVkX2VsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbSQwIiwiZW1iZWRfcmVzc291cmNlc19haWRlc19wZXJzb25uJDAiLCJlbWJlZF9jb250cmlidXRpb25zX3NvY2lhbGVzX2EkMCIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQzIiwiZW1iZWRfY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyJDAiLCJlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW0kMCIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQ0IiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0c19hY2NlJDAiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkNSIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQ2IiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDMiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkNCIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQ1IiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDYiLCJlbWJlZF9vdXZlcnR1cmVfZHJvaXRzX3JldHJhaXQkMCIsImVtYmVkX2ltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50XyIsImVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZSQxIiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlJDIiLCJlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW8kMiIsImVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZSQyIiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmllJDIiLCJlbWJlZF9zbWljX2luJDAiLCJlbWJlZF9lbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc18kMCIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCIsImV4b25lcmVfY3NnIiwidGF1eF9jcmRzIiwiYWlkZV9maW5hbGUiLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0iLCJyZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXMiLCJjb25kaXRpb25fMl9kdV84MzJfMjUiLCJuX25vbWJyZV9wYXJ0c19kODMyXzI1IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI2IiwidHJhbmNoZXNfcmV2ZW51c19kODMyXzI2IiwidHJhbmNoZSIsInRyYW5jaGVfaGF1dCIsInRyYW5jaGVzX3JldmVudXNfZDgzMl8yNl9tdWx0aSIsInJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllcyQwIiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvIiwibm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZSIsInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyIsIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTEiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiIsImRhdGVfbmFpc3NhbmNlX2Fzc3VyZSIsImFnZV9vdXZlcnR1cmVfZHJvaXQiLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudCIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIiwibW9kZV9vY2N1cGF0aW9uIiwiYWlkZV92ZXJzZWUiLCJtb250YW50X2FwbCIsIm1vbnRhbnRfY2hhcmdlcyIsImRlcGVuc2VfbG9nZW1lbnQiLCJtb250YW50X2RldHRlIiwibW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSIsImRlcGVuc2VfbG9nZW1lbnRfYnJ1dGUiLCJ0b3RhbF9lY2hlYW5jZXMiLCJtZW5zdWFsaXRlIiwibG95ZXIiLCJ0b3RhbCIsIm1vbnRhbnRfbG95ZXIiLCJkZXBlbnNlX2xvZ2VtZW50X25ldHRlIiwiZWNoZWFuY2VfcHJldF9uZXR0ZSIsIm1lbnN1YWxpdGVfbmV0dGUiLCJlY2hlYW5jZV9wcmV0X2JydXRlIiwibWVuc3VhbGl0ZV9icnV0ZSIsImxveWVyX25ldCIsImxveWVyX2JydXQiLCJzZXVpbF9pbXBheWVfZGVwZW5zZV9kZV9sb2dlbWUiLCJtb250YW50X2ltcGF5ZSIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ1IiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDUiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hJDEiLCJzbWljJDEiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UiLCJsb3llcl9wcmluY2lwYWxfYmFzZSIsImJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbiIsInpvbmUiLCJsb2dlbWVudF9lc3RfY2hhbWJyZSIsImFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZSIsInR5cGVfYWlkZSIsImNvbG9jYXRpb24iLCJyZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZSIsImxvZ2VtZW50X21ldWJsZV9kODQyXzIiLCJmcmFjdGlvbl9sODMyXzMiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTYiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXQiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb24iLCJ0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSIsImFiYXR0ZW1lbnRfZm9yZmFpdGFpcmVfZDgyM18xNyIsImxveWVyX3JlZmVyZW5jZSIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMTYiLCJwbGFmb25kX2xveWVyX2Q4MjNfMTZfMiIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kOCIsImxveWVyX3ByaW5jaXBhbF9hdmVjX3JlZHVjdGlvbiIsInBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNiIsInBsYWZvbmRfZGVncmVzc2l2aXRlX2Q4MjNfMTYiLCJsb3llcl9lbGlnaWJsZSIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51ZSIsInBhcnRpY2lwYXRpb25fbWluaW1hbGUiLCJyYXBwb3J0X2xveWVycyIsImFpZGVfZmluYWxlJDAiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXQiLCJ0YXV4X2xveWVyX2VsaWdpYmxlX2Zvcm11bGUiLCJjcmRzIiwiYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmliIiwidGF1eF9sb3llcl9lbGlnaWJsZV90YXV4X2Fycm9uIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWR1Y3RpIiwidGF1eF9wcmlzZV9jb21wdGVfcmVzc291cmNlcyIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudCIsInBhcnRpY2lwYXRpb25fcmVzc291cmNlcyIsInBhcnRpY2lwYXRpb25fcmVzc291cmNlcyQwIiwicGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSIsImFpZGVfZmluYWxlX2Zvcm11bGUiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMCIsInR5cGVfbG9nZW1lbnRfZm95ZXIiLCJkYXRlX2NvbnZlbnRpb25uZW1lbnQiLCJyZWRldmFuY2UiLCJjb2VmZmljaWVudF9yX2Q4MzJfMjUiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjQiLCJtb250YW50X21pbmltYWxfYWlkZV9kODIzXzI0IiwiY29uZGl0aW9uXzJfZHVfODMyXzI1JDAiLCJwbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWciLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9jb25kaXQiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9ub21icmUiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXQiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWIiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjciLCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMiLCJlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSIsIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUkMCIsImFsbG9jYXRpb25fbWVuc3VlbGxlIiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3IiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDAiLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kMSIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSQyIiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDMiLCJkZW5vbWluYXRldXIiLCJkZW5vbWluYXRldXIkMCIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kOCIsImRlcGVuc2VfbmV0dGVfbWluaW1hbGUiLCJhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW0iLCJlcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kOCQwIiwiYWlkZV9maW5hbGUkMSIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbSIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kOCQxIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEiLCJtZW5zdWFsaXRlX3ByaW5jaXBhbGUiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnQiLCJkYXRlX3NpZ25hdHVyZV9wcmV0IiwibG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuIiwiZGF0ZV9lbnRyZWVfbG9nZW1lbnQiLCJjb3Byb3ByaWV0ZSIsInNpdHVhdGlvbl9yODIyXzExXzEzXzE3IiwidHlwZV9wcmV0IiwiYW5jaWVubmV0ZV9sb2dlbWVudCIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8xMCIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MzJfMTAiLCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMkMCIsIm1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMSIsInRhdXhfdHJhbmNoZV9pbmZlcmlldXJlX2Q4MzJfMSIsInRhdXhfdHJhbmNoZV9zdXBlcmlldXJlX2Q4MzJfMSIsInRhdXhfZnJhbmNzX3ZlcnNfZXVyb3MiLCJhbWVsaW9yZV9wYXJfb2NjdXBhbnQiLCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMkMSIsInJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfZDgzMl8xOCIsImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDgzMiIsImRlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMCIsInBsYWZvbmRfc2lnbmF0dXJlIiwicGxhZm9uZF9lbnRyZWUiLCJwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2IiLCJwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2MiLCJtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzEkMCIsIm1lbnN1YWxpdGVfbWluaW1hbGUiLCJtZW5zdWFsaXRlX2VsaWdpYmxlIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sIiwicmVzc291cmNlc19kZW1hbmRldXIiLCJyZXNzb3VyY2VzX2NvbmpvaW50IiwicGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVuIiwiZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11IiwiY29uam9pbnRfZXhlcmNlX2FjdGl2aXRlX3JlbXVuIiwicGVyc29ubmVzX2FfY2hhcmdlIiwic2l0dWF0aW9uX2ZhbWlsaWFsZSIsImNvbmRpdGlvbl9hZ2VfYm91cnNlX2Vuc2VpZ25lbSIsImRlbWFuZGV1cl9wb3Vyc3VpdF9kZXNfZXR1ZGVzIiwiZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0IiwicGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvIiwibW9udGFudF9mb3JmYWl0YWlyZV9yXzgyMl84IiwibW9udGFudF9mb3JmYWl0YWlyZV9yXzgyMl83IiwicmVzc291cmNlc19mb3JmYWl0YWlyZXNfcjgyMl8yIiwicGVyc29ubmUiLCJyZXNzb3VyY2VzX3BlcnNvbm5lc192aXZhbnRfaGEiLCJhYmF0dGVtZW50IiwicmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlIiwiYWNjIiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfIiwibWVuYWdlIiwiZGVtYW5kZXVyIiwiY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wIiwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2UiLCJwcmV0Iiwic2V1aWxfbDgyMl8zX3BhcnRzX3Byb3ByaWV0ZSIsInNldWlsX2w4MjJfM19wYXJ0c191c3VmcnVpdCIsInNldWlsX2w4MjJfNV9wYXRyaW1vaW5lIiwidXN1ZnJ1aXRfb3VfcHJvcHJpZXRlX2ZhbWlsbGUiLCJjb25kaXRpb25fbm9uX291dmVydHVyZV9sODIyXzkiLCJjb25kaXRpb25fbm9uX291dmVydHVyZV9sODIyXzgiLCJub21icmVfcGVyc29ubmVzX2xvZ2VtZW50IiwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfbWluIiwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2UkMCIsImNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcCQwIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfJDAiLCJwYXRyaW1vaW5lX3RvdGFsX2RlbWFuZGV1ciIsImNvbmRpdGlvbnMiLCJjb25kaXRpb25fbmF0aW9uYWxpdGUiLCJwbGFmb25kX2luZGl2aWR1ZWxfbDgxNV85X3NlY3UiLCJjb25kaXRpb25fbG9nZW1lbnRfbG9jYXRpb25fdGkiLCJ1c3VmcnVpdF9vdV9wcm9wcmlldGVfZmFtaWxsZSQwIiwicGFydHMiLCJwYXJ0cyQwIiwicGFydHMkMSIsInBhcnRzJDIiLCJjb25kaXRpb25fbG9nZW1lbnRfbW9kZV9vY2N1cGEiLCJjb25kaXRpb25fb3V2ZXJ0dXJlX2w4MjJfMTBfcGUiLCJhZ2VfbDE2MV8xN18yX3NlY3UiLCJwcmVzdGF0aW9uIiwiZWxpZ2liaWxpdGVfbG9nZW1lbnQiLCJhZ2VfbDM1MV84XzFfc2VjdSIsImVsaWdpYmlsaXRlIiwicGVyc29ubmVfYV9jaGFyZ2UiLCJwYXJlbnQiLCJjb25kaXRpb25fMl9yODIzXzQiLCJwcmlzZV9lbl9jb21wdGVfcGVyc29ubmVfYV9jaGEiLCJwZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2MiLCJjb2VmZiIsImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZSIsIm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpcyIsImVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyIsImxveWVyX3ByaW5jaXBhbCIsImNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb3llcl9wIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZXNzb3VyIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9iZW5lZmljIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9kYXRlX2NvIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9ub21icmVfIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9zaXR1YXRpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF96b25lIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVuIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9hZ2Vlc19vIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90eXBlX2FpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9jb2xvY2F0IiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZWR1Y3RpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVuJDAiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2FpZGVfZmkiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3RyYWl0ZW0iLCJpbmZvcyIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGUiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kiLCJjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDgiLCJtb250YW50X21pbmltYWxfYWlkZV9kODQyXzE1IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzE1IiwibW9udGFudF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDAiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kMSIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQyIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDMiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kNCIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ1IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDYiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kNyIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ4IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDkiLCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXMiLCJlcXVpdmFsZW5jZV9sb3llciIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZSIsImxveWVyX21pbmltYWwiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RlcGVuc2UiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW4iLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MiLCJyZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmEiLCJjaGFyZ2VzX21lbnN1ZWxsZXNfcHJldCIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml82IiwibW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml82IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzExIiwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzEyIiwiY29lZmZpY2llbnRfZDg0Ml8xMSIsImNvZWZmaWNpZW50X2Q4NDJfMTIiLCJkYXRlX2NhbGN1bCIsImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0MiIsInNldWlsX21pbmltYWxfcmVzc291cmNlc19tZW5hZyIsImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0MiQwIiwicmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NlIiwicGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNiIsInNldWlsX21pbmltYWxfZGVwZW5zZV9uZXR0ZV9taSIsImRlcGVuc2VfbmV0dGVfbWluaW1hbGUkMCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyIiwicmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpIiwibG9jYXRpb24iLCJsb2dlbWVudGZveWVyIiwicHJvcHJpZXRhaXJlIiwibG9jYXRpb24kMCIsInByb3ByaWV0YWlyZSQwIiwiY2F0ZWdvcmllX2NhbGN1bF9hcGwiLCJyZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGkiLCJiYWlsbGV1ciIsInBhcmFtMCIsInRyYWl0ZW1lbnRfZm9ybXVsZSIsInRyYWl0ZW1lbnRfZm9ybXVsZSQwIiwibG9nZW1lbnRfZm95ZXIiLCJyZXN1bHQkMyIsInJlc3VsdCQ0IiwidHJhaXRlbWVudF9mb3JtdWxlJDEiLCJzb3VzX2NhbGN1bF90cmFpdGVtZW50IiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtIiwiaW5mb3JtYXRpb25zIiwiZGF0ZV9lbW1lbmFnZW1lbnQiLCJkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnQiLCJkZWxhaV9hcHJlc19lbW1lbmFnZW1lbnRfbDgyM18iLCJjb25kaXRpb25fcmFuZ19lbmZhbnQiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X21lbmFnZSIsImVsaWdpYmlsaXRlX2FwbF9kb3RfZGVtYW5kZXVyIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fJDAiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2RhdGVfY291cmEkMCIsImVsaWdpYmlsaXRlX2FwbF9kb3RfZWxpZ2liaWxpdCIsImRhdGVfbmFpc3NhbmNlX291X2dyb3NzZXNzZSIsImNvbmRpdGlvbl9wZXJpb2RlX2RlbWVuYWdlbWVudCIsInBsYWZvbmRfZDgyM18yMiIsIm1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50IiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlIiwiY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV8xIiwiY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV82IiwicHJvcHJpZXRlIiwicHJvcHJpZXRlJDAiLCJjb25kaXRpb25fbG9nZW1lbnRfcHJldCIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X21lbmFnZSIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RlbWFuZCIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfYyIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdCIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdCQwIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZWxpZ2liIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3Rfbm9tYnJlIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29lZmZpIiwiY29udmVudGlvbiIsImNvbnZlbnRpb24kMCIsImNvbmRpdGlvbl9sb2dlbWVudF9iYWlsbGV1ciIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiIsImJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbCIsImR1cmVlX2w4NDFfMV8zIiwiY29uZGl0aW9uX2FjY2Vzc2lvbl9wcm9wcmlldGUiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXQkMSIsImVsaWdpYmlsaXRlX2Rpc3Bvc2l0aW9uc19jb21tdSIsImRhdGVfbWFyaWFnZSIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQwIiwiZWxpZ2liaWxpdGVfbDg0MV8yIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiIsImJhaWxsZXVyJDAiLCJyZXN1bHQkNSIsInJlc3VsdCQ2IiwidHJhaXRlbWVudF9mb3JtdWxlJDIiLCJyZXN1bHQkNyIsInJlc3VsdCQ4IiwidHJhaXRlbWVudF9mb3JtdWxlJDMiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pIiwicmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDEiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kMiIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQzIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDQiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kNSIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQwIiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDEiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkMiIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQzIiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDQiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkNSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQwIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDEiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkMiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQzIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkNSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQ2IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDciLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ0IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDUiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkNiIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ3IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDgiLCJhaWRlX2ZpbmFsZV9hcGwiLCJhaWRlX2ZpbmFsZV9hbCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyIsIm1lbmFnZV9zYW5zX2VuZmFudHNfZ2FyZGVfYWx0ZSIsImNhbGN1bGV0dGVfZG90X21lbmFnZSIsImNhbGN1bGV0dGVfZG90X2RlbWFuZGV1ciIsImNhbGN1bGV0dGVfZG90X2RhdGVfY291cmFudGUiLCJjYWxjdWxldHRlX2RvdF9yZXNzb3VyY2VzX21lbmEiLCJjYWxjdWxldHRlX2RvdF9lbGlnaWJpbGl0ZSIsImNhbGN1bGV0dGVfZG90X2FpZGVfZmluYWxlX2ZvciIsImNhbGN1bGV0dGVfZG90X3RyYWl0ZW1lbnRfYWlkZSIsImNhbGN1bGV0dGVfZG90X2NvZWZmaWNlbnRzX2VuZiIsImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZSIsImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZSQwIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlJDEiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUkMiIsImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZSQzIiwidHlwZV9wcmV0X3RvX2pzb28iLCJ0eXBlX3ByZXRfb2ZfanNvbyIsInRpdHVsYWlyZV9wcmV0X3RvX2pzb28iLCJ0aXR1bGFpcmVfcHJldF9vZl9qc29vIiwidGl0dWxhaXJlX3ByZXQiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV8iLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV8kMCIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1IiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV90IiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV9vIiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSIsImFtZWxpb3JlX3Bhcl9vY2N1cGFudF90b19qc29vIiwiYW1lbGlvcmVfcGFyX29jY3VwYW50X29mX2pzb28iLCJsaW1pdGVfdHJhbmNoZV90b19qc29vIiwibGltaXRlX3RyYW5jaGVfb2ZfanNvbyIsImxpbWl0ZV90cmFuY2hlIiwibGltaXRlX3RyYW5jaGVfZGVjaW1hbF90b19qc29vIiwibGltaXRlX3RyYW5jaGVfZGVjaW1hbF9vZl9qc29vIiwibGltaXRlX3RyYW5jaGVfZGVjaW1hbCIsInByZXN0YXRpb25fcmVjdWVfdG9fanNvbyIsInByZXN0YXRpb25fcmVjdWVfb2ZfanNvbyIsInByZXN0YXRpb25fcmVjdWUiLCJwYXJlbnRfb3VfYXV0cmVfdG9fanNvbyIsInBhcmVudF9vdV9hdXRyZV9vZl9qc29vIiwicGFyZW50X291X2F1dHJlIiwic2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlX3RvX2pzIiwic2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlX29mX2pzIiwic2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlIiwicGFyZW50ZV90b19qc29vIiwicGFyZW50ZV9vZl9qc29vIiwicGFyZW50ZSIsImRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZyIsImRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZyQwIiwiem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyIsInpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb28iLCJ6b25lX2RfaGFiaXRhdGlvbiIsInBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3BybyQwIiwidmVyc2VtZW50X2FfdG9fanNvbyIsInZlcnNlbWVudF9hX29mX2pzb28iLCJ2ZXJzZW1lbnRfYSIsImRlcGVuc2VfbG9nZW1lbnRfdG9fanNvbyIsImRlcGVuc2VfbG9nZW1lbnRfb2ZfanNvbyIsIm1vZGVfb2NjdXBhdGlvbl9pbXBheWVfdG9fanNvbyIsIm1vZGVfb2NjdXBhdGlvbl9pbXBheWVfb2ZfanNvbyIsInR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sbyIsInR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sbyQwIiwidHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVuIiwidHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVuJDAiLCJzaXR1YXRpb25fZmFtaWxpYWxlX3RvX2pzb28iLCJzaXR1YXRpb25fZmFtaWxpYWxlX29mX2pzb28iLCJwcmlzZV9lbl9jaGFyZ2VfdG9fanNvbyQwIiwicHJpc2VfZW5fY2hhcmdlX29mX2pzb28kMCIsInR5cGVfbG9nZW1lbnRfZm95ZXJfdG9fanNvbyIsInR5cGVfbG9nZW1lbnRfZm95ZXJfb2ZfanNvbyIsImNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbCIsImNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbCQwIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wJDAiLCJjb2xsZWN0aXZpdGVfdG9fanNvbyQwIiwiY29sbGVjdGl2aXRlX29mX2pzb28kMCIsInByaXNlX2VuX2NoYXJnZV9lbmZhbnRfdG9fanNvbyIsInByaXNlX2VuX2NoYXJnZV9lbmZhbnRfb2ZfanNvbyIsInByaXNlX2VuX2NoYXJnZV9lbmZhbnQiLCJzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV8kMSIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXyQyIiwiZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzJDEiLCJlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMkMiIsImNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsX3RvXyIsImNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsIiwiY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWxfb2ZfIiwiY29udmVudGlvbl9hX25faF9hX3RvX2pzb28iLCJjb252ZW50aW9uX2Ffbl9oX2EiLCJjb252ZW50aW9uX2Ffbl9oX2Ffb2ZfanNvbyIsInBlcnNvbm5lX3NvdXNfbG9jYXRpb25fdG9fanNvbyIsInBlcnNvbm5lX3NvdXNfbG9jYXRpb24iLCJwZXJzb25uZV9zb3VzX2xvY2F0aW9uX29mX2pzb28iLCJwYXRyaW1vaW5lX3RvX2pzb28iLCJwYXRyaW1vaW5lIiwicGF0cmltb2luZV9vZl9qc29vIiwiY29uZGl0aW9uc19ldHJhbmdlcnNfdG9fanNvbyIsImNvbmRpdGlvbnNfZXRyYW5nZXJzIiwiY29uZGl0aW9uc19ldHJhbmdlcnNfb2ZfanNvbyIsInBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudCIsInBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudCQwIiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtJDAiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMSIsInJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbCQwIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDEiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AkMCIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQxIiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvJDAiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMSIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQwIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDEiLCJ0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUiLCJ0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUkMCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ5IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEwIiwiaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyIiwiaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyJDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MkMCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQxIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjJDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSQwIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDEiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF90b18iLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vZl8iLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX3RvX2oiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX29mX2oiLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudF90b19qc28iLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vZl9qc28iLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X3QiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X28iLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckMCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyQxIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDYiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kNyIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyQ2IiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDciLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX3QkMCIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfbyQwIiwic21pY190b19qc29vJDAiLCJzbWljX29mX2pzb28kMCIsInByZXRfdG9fanNvbyIsInByZXRfb2ZfanNvbyIsIm5ldWZfb3VfYW5jaWVuX3RvX2pzb28iLCJuZXVmX291X2FuY2llbl9vZl9qc29vIiwibmV1Zl9vdV9hbmNpZW4iLCJ0cmFuY2hlX3JldmVudV90b19qc29vIiwidHJhbmNoZV9yZXZlbnUiLCJ0cmFuY2hlX3JldmVudV9vZl9qc29vIiwidHJhbmNoZV9yZXZlbnVfZGVjaW1hbF90b19qc29vIiwidHJhbmNoZV9yZXZlbnVfZGVjaW1hbCIsInRyYW5jaGVfcmV2ZW51X2RlY2ltYWxfb2ZfanNvbyIsImF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX3RvX2pzbyIsImF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIiwiYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvIiwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2RlIiwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2RlJDAiLCJsb2dlbWVudF9mb3llcl90b19qc29vIiwibG9nZW1lbnRfZm95ZXJfb2ZfanNvbyIsImVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXyIsImVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwiZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfJDAiLCJlbmZhbnRfYV9jaGFyZ2VfdG9fanNvbyIsImVuZmFudF9hX2NoYXJnZSIsImVuZmFudF9hX2NoYXJnZV9vZl9qc29vIiwidHlwZV9iYWlsbGV1cl90b19qc29vIiwidHlwZV9iYWlsbGV1cl9vZl9qc29vIiwidHlwZV9iYWlsbGV1ciIsImxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXyIsImxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXyQwIiwibG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMiLCJuYXRpb25hbGl0ZV90b19qc29vIiwibmF0aW9uYWxpdGVfb2ZfanNvbyIsIm5hdGlvbmFsaXRlIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfIiwicHJvcHJpZXRhaXJlX3RvX2pzb28iLCJwcm9wcmlldGFpcmVfb2ZfanNvbyIsImluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZSIsImluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZSQwIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpJDAiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMSIsInBlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28iLCJwZXJzb25uZV9hX2NoYXJnZV9vZl9qc29vIiwiZGVtYW5kZXVyX3RvX2pzb28iLCJkZW1hbmRldXJfb2ZfanNvbyIsImxvY2F0aW9uX3RvX2pzb28iLCJsb2NhdGlvbl9vZl9qc29vIiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfJDAiLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMSIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2xfdG9fanNvbyIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2xfb2ZfanNvbyIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2wiLCJtb2RlX29jY3VwYXRpb25fdG9fanNvbyIsIm1vZGVfb2NjdXBhdGlvbl9vZl9qc29vIiwibG9nZW1lbnRfdG9fanNvbyIsImxvZ2VtZW50IiwibG9nZW1lbnRfb2ZfanNvbyIsIm1lbmFnZV90b19qc29vIiwibWVuYWdlX29mX2pzb28iLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMiIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQzIiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtJDIiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMyIsInJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbCQyIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDMiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AkMiIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDExIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEyIiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvJDIiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxNCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQyIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDMiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTUiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTYiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTciLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTgiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MkMiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQzIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjJDIiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSQyIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDMiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl8iLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl8kMCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fdCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fbyIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX3RvXyIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX29mXyIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaSQwIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDIiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckMyIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ4IiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDkiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kOCIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyQ5IiwidmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pJDEiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2kkMiIsInNtaWNfaW5fdG9fanNvbyQwIiwic21pY19pbl9vZl9qc29vJDAiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMiIsImVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaSQzIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wJDQiLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kNCIsImNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mbyQ0IiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDQiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlJDAiLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudCQwIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDEwIiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDEwIiwidmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSQyIiwic21pYyQyIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDE5IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDIwIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDIxIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDQiLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kNCIsImVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaSQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jJDQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kkNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjYyQ0IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDIyIiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtJDQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCQwIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCQwIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDQiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ciLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwiXSwic291cmNlcyI6WyIiLCIvYnVpbHRpbi8raW50NjQuanMiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLytmYWlsLmpzIiwiL2J1aWx0aW4vK3N0ZGxpYi5qcyIsIi9idWlsdGluLytmb3JtYXQuanMiLCIvYnVpbHRpbi8raWVlZV83NTQuanMiLCIvYnVpbHRpbi8rZnNfbm9kZS5qcyIsIi9idWlsdGluLytmcy5qcyIsIi9idWlsdGluLyt1bml4LmpzIiwiL2J1aWx0aW4vK3N5cy5qcyIsIi9idWlsdGluLytmc19mYWtlLmpzIiwiL2J1aWx0aW4vK25hdC5qcyIsIi9idWlsdGluLytncmFwaGljcy5qcyIsIi9idWlsdGluLyttYXJzaGFsLmpzIiwiL2J1aWx0aW4vK2lvLmpzIiwiL2J1aWx0aW4vK2djLmpzIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi96YXJpdGhfc3R1YnNfanMvYmlnaW50ZWdlci5qcyIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvemFyaXRoX3N0dWJzX2pzL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rYmlnYXJyYXkuanMiLCIvYnVpbHRpbi8ranNsaWIuanMiLCIvYnVpbHRpbi8rcGFyc2luZy5qcyIsIi9idWlsdGluLytpbnRzLmpzIiwiL2J1aWx0aW4vK2hhc2guanMiLCIvYnVpbHRpbi8rY29tcGFyZS5qcyIsIi9idWlsdGluLytqc2xpYl9qc19vZl9vY2FtbC5qcyIsIi9idWlsdGluLytvYmouanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2J1aWx0aW4vK2JhY2t0cmFjZS5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvYnVpbHRpbi8rYXJyYXkuanMiLCIvYnVpbHRpbi8rd2Vhay5qcyIsIi9idWlsdGluLyttZDUuanMiLCIvYnVpbHRpbi8rc3RyLmpzIiwiL2J1aWx0aW4vK2JpZ3N0cmluZy1jc3RydWN0LmpzIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC91Y2hhci5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvaW50NjQubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2xleGluZy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2FtbGludGVybmFsRm9ybWF0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9wcmludGV4Yy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZmlsZW5hbWUubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NvbXBsZXgubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2FtbGludGVybmFsQXRvbWljLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9zdGRsaWIubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3BlcnZhc2l2ZXMubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2Zsb2F0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9yYW5kb20ubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2xpc3QubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2luX2NoYW5uZWwubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL291dF9jaGFubmVsLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9laXRoZXIubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL25hdGl2ZWludC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvb2JqLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jYW1saW50ZXJuYWxMYXp5Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9sYXp5Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9zZXEubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL29wdGlvbi5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvcmVzdWx0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9ib29sLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jaGFyLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9ieXRlcy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvaW50Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9zdHJpbmcubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3VuaXQubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL21hcnNoYWwubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2FycmF5Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9pbnQzMi5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvcGFyc2luZy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc2V0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9tYXAubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3N0YWNrLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9xdWV1ZS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc3RyZWFtLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9idWZmZXIubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3ByaW50Zi5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvYXJnLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9mdW4ubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2djLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9kaWdlc3QubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2hhc2h0YmwubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3dlYWsubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2Zvcm1hdC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc2NhbmYubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NhbGxiYWNrLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jYW1saW50ZXJuYWxPTy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2FtbGludGVybmFsTW9kLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9nZW5sZXgubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2VwaGVtZXJvbi5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvYmlnYXJyYXkubWwiLCIvd29ya3NwYWNlX3Jvb3QvcnVudGltZXMvb2NhbWwvcnVudGltZS5tbCIsIiIsIiIsIi93b3Jrc3BhY2Vfcm9vdC9ydW50aW1lcy9qc29vL3J1bnRpbWUubWwiLCIvd29ya3NwYWNlX3Jvb3QvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMubWwiLCIvd29ya3NwYWNlX3Jvb3QvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfYXBpX3dlYi5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9mcmVuY2hfbGF3L29jYW1sL2xhd19zb3VyY2UvYWlkZXNfbG9nZW1lbnQubWwiLCIvd29ya3NwYWNlX3Jvb3QvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FpZGVzX2xvZ2VtZW50X2FwaV93ZWIubWwiLCIvd29ya3NwYWNlX3Jvb3QvZnJlbmNoX2xhdy9vY2FtbC9hcGlfd2ViLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9zdGRfZXhpdC5tbCJdLCJtYXBwaW5ncyI6Ijs7Q0FDQyxTQUFVQTtXQUNGQzs7OztLQUNMQztPQUNFO1FBQ0M7VUFBc0JGLDhDQUVoQkc7UUFDSEM7SUFFUixTQUFTRDtNQUNQLElBQUlFLE9BQVNILFFBQVFJO01BQ3JCRCxvQkFBb0JBO2FBQ2JMLG9CQUNULENBYkQ7R0FjQ0E7Ozs7SUMyTkYsU0FBU08sbUJBQW1CQyxHQUFLLFNBQVEsVUFBWTtJQ3pMckQsU0FBU0MsZ0JBQWdCQyxFQUFHQztNQUMxQixHQUFHRCxPQUFRO01BQ1gsR0FBSUMsU0FBVSxPQUFRLFNBQVNEO01BQy9CLElBQU0sS0FBUTtNQUNkO09BQVEsQ0FDTixHQUFJQSxNQUFPRSxLQUFLRDtRQUNoQkQ7UUFDQSxHQUFJQSxPQUFRLE9BQU9FO1FBQ25C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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7Ozs7Ozs7SXdCbldEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0NrQktDO0tBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDd0JBQztLQUNBQztLQUNBQztLQUlBQztLQUNBQzs7OztLQ3pCQUM7S0FtSEFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0NvOUVNQztLQVFRQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0NsbEZkQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQ3NFRUM7S0FDQUM7S0FDQUM7S0FDQUM7OztLQS9FWUM7S0FtSFpDO0tBQ0FDO0tBQ0FDO0tBQ0FDOzs7S0FtSUFDO0tBQ0FDO0tBQ0FDO0tBQ0FDOzs7S0N4UEZDO0tBQ0FDO0tBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthQzBmSUM7O09Ba0NZOztPQWxDWjtnQkFLSixJQURRQyxjQUNBLG9CQURBQTtnQkFHUixJQURVQyxnQkFDQSxvQkFEQUE7Z0JBR1YsSUFET0MsZ0JBQ0Esb0JBREFBO2dCQUdQLElBRFNDLGdCQUNBLG9CQURBQTtnQkFLVCxJQURhQyxnQkFDQSxvQkFEQUE7Z0JBRGIsSUFEU0MsZ0JBQ0Esb0JBREFBO2dCQUtULElBRFNDLGdCQUNBLG9CQURBQTtnQkFHVCxJQURRQyxnQkFDQSxvQkFEQUE7O2NBRVdDLGdCQUFKQyxZQUNJLFVBREpBLEdBQ0ksVUFEQUQ7O2NBRVNFLGdCQUFYQztVQUNVLFVBRFZBLFFBQ1UsVUFEQ0Q7aUJBRzVCLElBRFNFLGdCQUNBLHFCQURBQTtpQkFHVCxJQURTQyxpQkFDQSxxQkFEQUE7aUJBR1QsSUFET0MsaUJBQ0EscUJBREFBO2lCQUdQLElBRFVDLGlCQUNBLHFCQURBQTtpQkFHVixJQURrQkMsaUJBQ0EscUJBREFBLFVBRVU7YUFpQnhCQyxhQVdKQyxPQUFPQztNQUFVLFVBQWpCRDtPQStCZ0IsT0EvQlRDOztPQUFVLE9BQWpCRDtnQkFFQSxJQURRbEIsS0FEUmtCLFVBRVEsdUJBREFsQixLQUREbUI7Z0JBSVAsSUFEVWxCLE9BSFZpQixVQUlVLHVCQURBakIsT0FISGtCO2dCQU1QLElBRE9qQixPQUxQZ0IsVUFNTyx1QkFEQWhCLE9BTEFpQjtnQkFRUCxJQURTaEIsT0FQVGUsVUFRUyx1QkFEQWYsT0FQRmdCO2dCQVVQLElBRGFmLE9BVGJjLFVBVWEsdUJBREFkLE9BVE5lO2dCQVlQLElBRFNkLE9BWFRhLFVBWVMsdUJBREFiLE9BWEZjO2dCQWNQLElBRFNiLE9BYlRZLFVBY1MsdUJBREFaLE9BYkZhO2dCQWdCUCxJQURRWixPQWZSVyxVQWdCUSx1QkFEQVgsT0FmRFk7O2NBMkJZWCxPQTNCbkJVLFVBMkJlVCxHQTNCZlM7VUE0Qm1CLFVBREpULEdBQ0ksYUFEQUQsT0EzQlpXOztjQTZCb0JULE9BN0IzQlEsVUE2QnNCRSxJQTdCdEJGLFVBNkJpQlAsSUE3QmpCTztVQThCMkIsVUFEVlAsSUFBS1MsSUFDSyxhQURBVixPQTdCcEJTO2lCQWtCUCxJQURTUCxPQWpCVE0sVUFrQlMsd0JBREFOLE9BakJGTzs7VUFvQlAsSUFEU04sUUFuQlRLLFVBb0JTLHdCQURBTCxRQW5CRk07O1VBc0JQLElBRE9MLFFBckJQSSxVQXNCTyx3QkFEQUosUUFyQkFLOztVQXdCUCxJQURVSixRQXZCVkcsVUF3QlUsd0JBREFILFFBdkJISTs7VUEwQlAsSUFEa0JILFFBekJsQkUsVUEwQmtCLHdCQURBRixRQXpCWEcsU0ErQmU7YUFNbEJFLFdBSUpDLEtBQUtDO01BQVEsVUFBYkQ7T0EyREEsT0EzREtDOztPQUFRLE9BQWJEO2dCQWtCQSxJQURLdEIsS0FqQkxzQixRQWtCSyxxQkFEQXRCLEtBakJBdUI7Z0JBb0JMLElBRFV0QixPQW5CVnFCLFFBb0JVLHFCQURBckIsT0FuQkxzQjs7Y0FDUXJCLE9BRGJvQixRQUNRRSxJQURSRjtVQUVhLFVBRExFLElBQ0ssV0FEQXRCLE9BRFJxQjs7Y0FHYXBCLE9BSGxCbUIsUUFHYUcsTUFIYkg7VUFJa0IsVUFETEcsTUFDSyxXQURBdEIsT0FIYm9COztjQU1rQm5CLE9BTnZCa0IsUUFNaUJJLEtBTmpCSixRQU1ZSyxNQU5aTCxRQU1LTSxNQU5MTjtVQU91QixVQURsQk0sTUFBT0QsTUFBS0QsS0FDTSxXQURBdEIsT0FObEJtQjs7Y0FRb0JsQixPQVJ6QmlCLFFBUW1CTyxPQVJuQlAsUUFRY1EsTUFSZFIsUUFRT1MsUUFSUFQ7VUFTeUIsVUFEbEJTLFFBQU9ELE1BQUtELE9BQ00sV0FEQXhCLE9BUnBCa0I7O2NBVXdCakIsT0FWN0JnQixRQVV1QlUsT0FWdkJWLFFBVWtCVyxNQVZsQlgsUUFVV1ksUUFWWFo7VUFXNkIsVUFEbEJZLFFBQU9ELE1BQUtELE9BQ00sV0FEQTFCLE9BVnhCaUI7O2NBWW9CaEIsT0FaekJlLFFBWW1CYSxPQVpuQmIsUUFZY2MsTUFaZGQsUUFZT2UsUUFaUGY7VUFheUIsVUFEbEJlLFFBQU9ELE1BQUtELE9BQ00sV0FEQTVCLE9BWnBCZ0I7O2NBY29CZixPQWR6QmMsUUFjbUJnQixPQWRuQmhCLFFBY2NpQixNQWRkakIsUUFjT2tCLE1BZFBsQjtVQWV5QixVQURsQmtCLE1BQU9ELE1BQUtELE9BQ00sV0FEQTlCLE9BZHBCZTs7Y0FxQk1iLE9BckJYWSxRQXFCTW1CLE1BckJObkI7VUFzQlcsVUFETG1CLE1BQ0ssV0FEQS9CLE9BckJOYTtpQkFnQ0wsSUFETVgsT0EvQk5VLFFBZ0NNLHNCQURBVixPQS9CRFc7O2NBa0NnQlYsUUFsQ3JCUyxRQWtDZ0JvQixJQWxDaEJwQjtVQW1DcUIsV0FETG9CLElBQ0ssV0FEQTdCLFFBbENoQlU7O2NBb0NjVCxRQXBDbkJRLFFBb0NjcUIsSUFwQ2RyQjtVQXFDcUIsV0FEUHFCLElBQ08sV0FERjdCLFFBcENkUzs7Y0F1Q21CUixRQXZDeEJPLFFBdUNpQnNCLE1BdkNqQnRCLFFBdUNZdUIsTUF2Q1p2QjtVQXdDMEIsV0FEZHVCLE1BQUtELE1BQ1MsV0FERjdCLFFBdkNuQlE7O2NBeUNxQlAsUUF6QzFCTSxRQXlDbUJ3QixRQXpDbkJ4QixRQXlDY3lCLE1BekNkekI7VUEwQzBCLFdBRFp5QixNQUFLRCxRQUNPLFdBREE5QixRQXpDckJPO2lCQXdCTCxJQURNeUIsUUF2Qk4xQixRQXdCTSxzQkFEQTBCLFFBdkJEekI7aUJBMEJMLElBRE0wQixRQXpCTjNCLFFBMEJNLHNCQURBMkIsUUF6QkQxQjs7Y0FxRHVCMkIsUUFyRDVCNUIsUUFxRGdCNkIsV0FyRGhCN0I7VUFzRDRCLFdBRFo2QixXQUNZLFdBREFELFFBckR2QjNCOztjQXVEdUI2QixRQXZENUI5QixRQXVEZ0IrQixXQXZEaEIvQjtVQXdENEIsV0FEWitCLFdBQ1ksV0FEQUQsUUF2RHZCN0I7aUJBOEJMLElBRE8rQixRQTdCUGhDLFFBOEJPLHNCQURBZ0MsUUE3QkYvQjs7Y0E0QytCZ0MsUUE1Q3BDakMsUUE0QzBCa0MsU0E1QzFCbEMsUUE0Q2VtQyxVQTVDZm5DO1VBNkNvQyxXQURyQm1DLFVBQVdELFNBQ1UsV0FEQUQsUUE1Qy9CaEM7O2NBOENzQm1DLFFBOUMzQnBDLFFBOENrQnFDLFFBOUNsQnJDO1VBK0MyQixXQURUcUMsUUFDUyxXQURBRCxRQTlDdEJuQztpQkFpREwsSUFEZXFDLFFBaERmdEMsUUFpRGUsc0JBREFzQyxRQWhEVnJDOztjQWtEZXNDLFFBbERwQnZDLFFBa0Rld0MsSUFsRGZ4QztVQW1Eb0IsV0FETHdDLElBQ0ssV0FEQUQsUUFsRGZ0Qzs7Y0EyQmF3QyxRQTNCbEJ6QyxRQTJCZTBDLEVBM0JmMUMsUUEyQlEyQyxNQTNCUjNDO1VBNEJrQixXQURWMkMsTUFBT0QsRUFDRyxXQURBRCxRQTNCYnhDLE9BMkREO29DQS9HQU4sYUFuREFsQixVQW1HQXNCOzs7a0JDeGxCQzZDLEdBQUksVUFBSkEsRUFBTztpQkFDUkMsR0FBSSxPQUFKQSxJQUFPO2lCQUNQQSxFQUFFRCxHQUFJLE9BQUpBLEVBQUksUUFBUTtzQkFNTUMsRUFBRUQsR0FFNUIsSUFBSUUsSUFGc0JELEtBRTFCLE9BRjRCRCxFQUU1QixPQUFJRSxHQUdEOzZCQUU4QkQsRUFBRUUsS0FBS0g7TUFFeEMsSUFBSUUsSUFGNkJELEtBRWpDLE9BQUlDLFFBRitCQyxNQUFGRixPQUFPRCxNQVFqQzsyQkFFd0JDLEVBQUVHLEdBRWpDLElBQUlGLElBRjJCRCxLQUUvQixPQUFJQyxNQUY2QkUsTUFFakMsT0FBSUYsR0FHRDtrQkFFSUQsR0FBVyxjQUFYQSxLQUFXLFFBQW1CO2tCQUM5QkEsR0FBVyxjQUFYQSxNQUFXLFFBQXNCOzs7OztJQ3JDeEMsU0NIRUksU0RTU0MsR0FBSSxpQkFBSkEsRUFBb0I7SUFOL0IsU0NKRUMsWURXWUQsR0FBSSwwQkFBSkEsRUFBNkI7SUFQM0M7YUNNRUUsSUQ2Q0lDLEVBQUVDLEdBQU8sc0JBQVRELEVBQUVDLEdBQUZELEVBQUVDLENBQTJCO0lBbkRuQyxTQ09FQyxJRDZDSUYsRUFBRUMsR0FBTyx5QkFBVEQsRUFBRUMsR0FBRkQsRUFBRUMsQ0FBMkI7SUFwRG5DLFNDb0NFRSxJRHlDSUgsR0FBSSxZQUFKQSxXQUE0QjtJQTdFbEMsU0MwQ0VJLEtEeUNLSixHQUFJLE9BQUpBLE1BQWU7SUE0RXRCOztLQUVBO0tBRUE7S0FFQTtLQUVBO0tBRUE7S0F6S0E7O0lBeUtBLGFBc0JRYSxHQUFHQztNQUNYO2dDQURRRDtPQUNSLHlCQURXQztPQUVILG9CQURKQyxLQUEwQkM7TUFFOUIsaUJBSFFILEtBRUpoQixJQURBa0I7TUFHSixpQkFKV0QsS0FFUGpCLEVBREFrQixHQUEwQkM7TUFHOUIsNEJBRkluQixFQUdvQjtJQTNCeEIsU0NwREVvQixZRHFGWXRCO01Wak9qQixRVWlPaUJBLGlCQUMwQyxPQUQxQ0EsRUFDVyxtQ0FBbUQ7SUFsQzVFLFNDbERFdUIsZURpSGVDLEdBQ2pCLE9BRGlCQSxvQkFDWTtJQWhFN0IsU0NqREVDO01Ea0hpQjs7aUJBR1o7O2dCQUE0QjtJQXBFbkMsU0NoREVDO01Ec0hxQjs7a0JBR1o7SUF6RVgsU0MvQ0VDLGNEMEhjM0IsR0FDaEIsbUNBRGdCQSxFQUNDO0lBNUVqQixTQzdDRTRCLGtCRDZIa0IxQjtNQUVwQjtRQUFTLCtCQUZXQTs7OytCQUdGO1FBUGxCLFdBT3NCO0lBbkZ0QixTQ21ERTJCLGtCRG9Da0IzQjtNQUNwQiw0QkFEb0JBLEdBRVAxRTtNQUNYO1dBRkVzRyxLQUNTdEcsRUFDSSxXQUhHMEU7UUFJWiwwQkFKWUEsRUFFUDFFO1FBRUw7Ozs7UUZxUEYsYUVwUGtCLFFBSFhBO1FBSUosT0FOVzBFLEVBUWQ7SUEvRk4sU0VsSkU4QixVRm1QZ0J0QztNQUFzQixtREFBdEJBLEdBQThDO0lBakdoRSxTRW5KRXVDLGNGd1BvQi9CO01BRXRCO1FBQVMsaUNBRmFBOzs7K0JBR0o7UUFQSSxXQU9BO0lBeEd0QixTSTNJRWdDLE9KdVBVZCxHQUFHQztNQUNmLEdBRFlELFFBR0plLEdBSElmLE1BR1ZnQixHQUhVaEIsTUFHUSxVQUFsQmdCLEdBQWtCLE9BQVpELEdBSE9kLEtBRVAsT0FGT0EsRUFHYztJQVduQjs7S0FDQztLQUNBO2FNM1JUbUIsU055U2FDLEtBQUtDLEtBQUtDO01BQzRCLElBQWpEQyxFQUFpRCw0QkFBMUIsY0FERkQsS0FBVkYsS0FBS0M7TUFFcEIseUJBRElFLEVBRHFCRDtNQUV6QixPQURJQyxDQUVIO0lBakJVLFNNNVJUQyxVTitTU0YsTUFDWCx3QkFEV0EsS0FDNkQ7SUFwQjdELFNNN1JURyxTTm1UYUgsTUFDZix3QkFEZUEsS0FDMkQ7SUF2Qi9ELFNNclFUSTtNTm9TRixTQUFRQztRVjNWWDtRVTJWa0I7O2dCQUVSbEIsYUFBSG1COztjQUVNLGNBRk5BOzs7Ozt3QkFBR25COztVQURHLFNBT0U7TUFDSixpREFBc0I7SUF4Q25CLFNNalFUb0IsYU5rVGFDLEdBQUdqRDtNQUNsQiw0QkFEZWlELEdBQUdqRCxJQUNsQixxQkFEa0JBLEdBQ21CO0lBbEQxQixTTWxRVGtELGNOc1RjRCxHQUFHakQ7TUFDbkIsc0JBRGdCaUQsR0FBR2pELElBQ25CLHNCQURtQkEsR0FDMEI7SUFyRGxDLFNNaFFUbUQsT051VE9GLEdBQUdqRCxFQUFFb0QsSUFBSUM7TVZuWHJCO2FVbVhpQkQsWUFBSUMsZ0NBQU5yRCxLQUFNcUQsV0FBSkQ7T0FHVCw0QkFISUgsR0FBR2pELEVBQUVvRCxJQUFJQztNQUViLDhCQUMwQjtJQTFEcEIsU00vUFRDLGlCTjJUaUJMLEdBQUdqRCxFQUFFb0QsSUFBSUM7TVZ4WC9COzs7UVV3WDJCRDs7OztRQUFJQzs7O2dDQUFOckQsS0FBTXFELFdBQUpEO09BR25CLHNCQUhjSCxHQUFHakQsRUFBRW9ELElBQUlDO01BRXZCLHdDQUNpQztJQS9EM0IsU0NwSFRFLGFEMExhQyxLQUFLOUQsR0FBSSx5QkFBVDhELEtBQUs5RCxJQUFnQztJQXRFekMsU014UVQrRCxNTm9WVVIsSUFBSyxjQUFMQSxJQUFlLDZCQUFmQSxHQUFtQztJQTVFcEMsU012UVRTLFlOb1ZnQlQ7TUFDbEIsS0FBSyxjQURhQTtNQUVsQjtRQUFLLCtCQUZhQSxJQUVrQjsyQkFBRztJQS9FNUIsU0s1UlRVLFdMb1hZcEIsS0FBS0MsS0FBS0M7TUFDNEIsSUFBaERDLEVBQWdELDJCQUExQixjQURGRCxLQUFWRixLQUFLQztNQUVuQix5QkFESUUsRUFEb0JEO01BRXhCLE9BRElDLENBRUg7SUEzRlUsU0s3UlRrQixZTDBYUW5CLE1BQ1Ysd0JBRFVBLEtBQ2lDO0lBOUZoQyxTSzlSVG9CLFdMOFhZcEIsTUFDZCx3QkFEY0EsS0FDK0I7SUFqR2xDLFNLdlBUcUIsTUwrVk1DLEdBQUcvRCxFQUFFb0QsSUFBSUM7TVZwYXBCO2FVb2FnQkQsWUFBSUMsZ0NBQU5yRCxLQUFNcUQsV0FBSkQ7T0FHUixxQkFIR1csR0FBRy9ELEVBQUVvRCxJQUFJQztNQUVaLDZCQUN5QjtJQTNHbkIsU0E2R0xXLG9CQUFvQkQsR0FBRy9ELEVBQUVvRCxJQUFJQztVQUFKWSxVQUFJQztNQUNuQztlQURtQ0E7VUFFekIsSUFBSnZFLEVBQUksY0FGZ0JvRSxHQUFHL0QsRUFBRWlFLE1BQUlDO1VBRXpCLFNBQUp2RSxFQUVDO1VBRkcsSUFHSCxNQUw0QnVFLFFBRTdCdkUsTUFHQyxNQUx3QnNFLFFBRXpCdEUsTUFGeUJzRSxZQUFJQzs7UUFDbEIsU0FLZDtJQW5IUSxTQ3ZHVEcsYUQ0TmFOLEdBQUcvRCxFQUFFb0QsSUFBSUM7TVZqYjNCO2FVaWJ1QkQsWUFBSUMsZ0NBQU5yRCxLQUFNcUQsV0FBSkQ7T0FHZiwyQkFIVVcsR0FBRy9ELEVBQUVvRCxJQUFJQztNQUVuQixvQ0FDZ0M7SUF4SDFCLFNDdEdUaUIsb0JEZ09vQlAsR0FBR1Y7TUFDakIsSUFBSnJELEVBQUksa0JBRGlCcUQ7TUFFekIsYUFGc0JVLEdBQ2xCL0QsSUFEcUJxRDtNQUV6Qiw0QkFESXJELEVBRW9CO0lBN0hiLFNDekdUdUUsV0QwT1dmO01BQ2IsU0FBUWdCLGFBQWFDOzs7O2dCQUVieEMsY0FBTkMsY0FDTW1CLHlCQURObkI7WUFFRSxnQkFGRkEsS0FGbUJ1QyxZQUdicEI7WUFDSixrQkFESUEsNEJBREFwQjs7VUFEQSxPQURhd0M7VUFNUkMsT0FBS3JCO01BQ2hCO1FBQVEsSUFBSnZELEVBQUksZ0NBUkcwRDtRQVFILFNBQUoxRDtVQUNVLEtBRkg0RSxLQUlEO21CQUNhLCtCQUxQckIsU0FBTHFCOztVQU1GLFVBTEw1RTtZQWNRLElBQU42RSxJQUFNLG9CQWRSN0U7WUFlSSxjQXZCRzBELEtBc0JMbUIsUUFkRjdFO1lBY1EsSUFDSixNQWhCUXVELE1BQ1p2RCxNQWVJLFVBREY2RSxJQWZLRCxrQkFBS3JCOztVQU9KLElBQU53QixJQUFNLGtCQU5SL0U7VUFPSyxjQWZFMEQsS0FjTHFCLE1BTkYvRTtVQVFLLG1CQWhCRTBEO1VBZ0JGLEdBVEVrQjtXQVlEO21CQVpNckIsTUFDWnZEO2lCQVltQiwrQkFEVG9FLGdCQUxSVyxJQVBLSDs7b0JBT0xHOzBDQVk2QjtJQTNKMUIsU0t4UVRDLGNMNGFlZjtNQUFLO1FBQUssK0JBQVZBLElBQWdDOzJCQUFHO0lBcEt6QyxTQzdKVGdCLFdEdVVXckMsR0FBSSwyQk16Y2ZOLE9OeWNXTSxFQUF3QjtJQTFLMUIsU0M1SlRzQyxhRHVVYWhGLEdBQUkscUJNMWNqQm9DLE9OMGNhcEMsRUFBMEI7SUEzSzlCLFNDM0pUaUYsWUR1VVlqRixHQUFJLG9CTTNjaEJvQyxPTjJjWXBDLEVBQXlCO0lBNUs1QixTQzFKVGtGLFVEdVVVNUo7TUFBeUIscUJNNWNuQzhHLE9ONGNtQyw0QkFBekI5RyxHQUEwQztJQTdLM0MsU0N6SlQ2SixZRHVVWTNGLEdBQXlCLHFCTTdjckM0QyxPTjZjcUMsVUFBekI1QyxHQUE0QztJQTlLL0MsU0N4SlQ0RixjRHVVY3BGO01BQ2hCLGNNL2NFb0MsT044Y2NwQztNQUNRLG9CTS9jdEJvQztNTitjK0MscUJNL2MvQ0EsT04rYzJEO0lBaExsRCxTQ3ZKVGlEO01Ed1VtQixvQk1oZG5CakQsV05nZDRDLHFCTWhkNUNBLE9OZ2R3RDtJQWpML0MsU0N0SlRrRCxXRDJVVzVDLEdBQUksMkJNbmRmTCxPTm1kV0ssRUFBd0I7SUFyTDFCLFNDckpUNkMsYUQyVWF2RixHQUFJLHFCTXBkakJxQyxPTm9kYXJDLEVBQTBCO0lBdEw5QixTQ3BKVHdGLFlEMlVZeEYsR0FBSSxvQk1yZGhCcUMsT05xZFlyQyxFQUF5QjtJQXZMNUIsU0NuSlR5RixVRDJVVW5LO01BQXlCLHFCTXRkbkMrRyxPTnNkbUMsNEJBQXpCL0csR0FBMEM7SUF4TDNDLFNDbEpUb0ssWUQyVVlsRyxHQUF5QixxQk12ZHJDNkMsT051ZHFDLFVBQXpCN0MsR0FBNEM7SUF6TC9DLFNDakpUbUcsY0QyVWMzRjtNQUNoQixjTXpkRXFDLE9Od2RjckM7TUFDUSxvQk16ZHRCcUM7TU55ZCtDLHFCTXpkL0NBLE9OeWQyRDtJQTNMbEQsU0NoSlR1RDtNRDRVbUIsb0JNMWRuQnZELFdOMGQ0QyxxQk0xZDVDQSxPTjBkd0Q7SUE1TC9DLFNDL0lUd0QsaUJEK1VlLGNNL2RmekQsUU4rZGUsa0JLL2RmRCxNTCtkNkM7SUFoTXBDLFNDOUlUMkQsZ0JEK1V3QywwQkFBYixhQUFhO0lBak0vQixTQzdJVEMsb0JEK1VtQyxzQ0FBYTtJQWxNdkMsU0M1SVRDLGtCRCtVNEMsNEJBQWIsYUFBYTtJQW5NbkMsU0MzSVRDLHNCRCtVdUMsa0NBQWE7SUFwTTNDLFNDaEZUQyx3Qlg1T0wsSVUwaEJxQ2hJO0lBOU52QixTQzVFVGlJO01Ea1RNO09BRnNDQztPQUFOcko7T0FBaEJzSjtPQUFOdko7T0FFVixTQUZnQnVKLEtBRVQsVUFGK0JEO01BQ3RDLHFCQURVdEosS0FBc0JDO0lBUXRCLElBQWhCdUosaUJNamZBekQ7SU5pZmdCLFNDdFRoQjBELFFEd1RZL0c7TUFDZDtRQUVtQjs7U0FDSixTQU5iOEc7U0FNYTttQkFEWEUsYUFDQUM7cUJBQ0FFO2NBQ0MsbUJBSERILGtCQUdxRCxXQU4zQ2hIO2NBTStDLGtCQUZ6RGlILFdBR1M7bUJBRlRFO1NBRFcsb0JBRFhILGFBQ0FDO1NBS1Usd0JBWFpILGNBTUVHLFNBQ0FFO1NBSVUsU0FBVkM7UUFBVTtvQkFDZTtJQVpYLFNDcFRoQkMsa0JEa1VnQixrQkFkaEJQLG1CQWN5RDtJQWR6QyxTQ3ZUaEJRLEtEdVVLQztNQUNQLGNBQ0EsNkJBRk9BLFFBRVM7SUFFVjtzREN4VUpGO0lENlVvRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQzlpQnBENUc7T0FDQUY7Ozs7Ozs7Ozs7Ozs7O09BU0FHO09BQ0FHO09BNkJBQztPRXlDUVE7T0Z2Q1JDO09BSUFSO09DbENBQztPQUNBQztPQUNBQztPQU1BQztPQUNBQztPQUNBQzs7T0RtR0FPO09BRUFDO09BRUFHO09BREFEO09BRUFFO09BRUFDO09DckdBSTtPQURBQztPRVFBQztPQ3hCQUc7T0NBQUM7T0FDQUM7T0xpSUEwQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBRTtPQURBRDtPQUdBRztPQURBRDtPS2hKQXJEO09BREFDO09BRUFOO09BcUJBMEY7T0FDQW5GO09BQ0FrRjtPQUVBN0U7T0FDQUY7T0FDQUc7T0FDQUc7T0FKQXdFO09MOElBRDtPQUNBdEU7T0FDQXFFO09BQ0FEO09BQ0FEO09LdkpBakU7T0FDQUM7T0FTQStEO09EL0JBN0Q7T0FEQUM7T0FFQUY7T0prTEE2RDtPQUNBakQ7T0k5SUFUO09KZ0pBTztPQUNBQztPQUNBaUQ7T0FDQUQ7T0FDQUQ7T0FDQUQ7T0FDQUQ7T0FDQUQ7T0l6S0FEO09BQ0FuQztPQXlIQWtDOztPSitEQWQ7T0FJQUM7T0FDQVc7T0FDQVA7T0FDQTVFO09Ec0xJcUM7T0NyTEo2QztJRDZVb0Q7Ozs7O09DOWlCcEQ1RztPQUNBRjs7T0FTQUc7T0FDQUc7T0E2QkFDO09FeUNRUTtPRnZDUkM7T0FJQVI7T0NsQ0FDO09BQ0FDO09BQ0FDO09BTUFDO09BQ0FDO09BQ0FDOztPRG1HQU87T0FFQUM7T0FDQUU7T0FDQUM7T0FDQUM7T0FFQUM7T0NyR0FJO09BREFDO09FUUFDO09DeEJBRztPQ0FBQztPQUNBQztPTGlJQTBDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09LakpBdEQ7T0FEQUM7T0FFQU47T0FxQkEwRjtPQUNBbkY7T0FDQWtGO09BRUE3RTtPQUNBRjtPQUNBRztPQUNBRztPQUpBd0U7T0w4SUFEO09BQ0F0RTtPQUNBcUU7T0FDQUQ7T0FDQUQ7T0t2SkFqRTtPQUNBQztPQVNBK0Q7T0QvQkE3RDtPQURBQztPQUVBRjtPSmtMQTZEO09BQ0FqRDtPSTlJQVQ7T0pnSkFPO09BQ0FDO09BQ0FpRDtPQUNBRDtPQUNBRDtPQUNBRDtPQUNBRDtPQUNBRDtPSXpLQUQ7T0FDQW5DO09BeUhBa0M7T0orREFkO09BSUFDO09BQ0FXO09BQ0FQO09BQ0E1RTtPQUNBa0Y7SUQ2VW9EO2FPL2lCcERvQixLQUFLdkksR0FBSSxVQUFKQSxFQUFVO2FBQ2Z3SSxNQUFNeEksR0FBSSxVQUFKQSxFQUFXO2FBRWpCeUksZUFBVSx5QkFFSTthQUVkQyxnQkFBVyx5QkFFRTthQUViQztNQUFZLG1CQUNKLElBQUwzSSxXQUFLLFVBQUxBLEdBQ00sUUFBSTthQUViNEk7TUFBYSxrQkFDTCxTQUNDLElBQUw1SSxXQUFLLFVBQUxBLEVBQVc7YUFFZjZJLFNBQVMvSSxFQUVYZ0o7TWpCdkNILFNpQnVDR0EsTUFEVSxJQUFMOUksRUFDTDhJLEtBRGUscUJBREpoSixFQUNORSxJQUNXLE9BQWhCOEk7YUFFRUMsVUFBVWpKLEVBQ1pnSjtNakIxQ0gsU2lCMENHQSxLQUFlLE9BQWZBLEVBQ1csSUFBTDlJLEVBRE44SSxLQUNpQixxQkFGTGhKLEVBRU5FO2FBRUpnSixJQUFLVCxLQUFNQztNakI3Q2hCLG1CaUI4Q2EsSUFBTHhJLFdBQVUscUJBRFJ1SSxLQUNGdkk7TUFDTSxJQUFMaUo7TUFBVyxxQkFGSlQsTUFFUFM7YUFFSkMsS0FBTVgsS0FBTUM7TWpCakRqQixtQmlCa0RhLElBQUx4SSxXQUFLLGtCQURGdUksS0FDSHZJO01BQ00sSUFBTGlKO01BQUssa0JBRkdULE1BRVJTO2FBTUpFLE1BQU9aLEtBQU1DLE1BQU1ZLEdBQUdDO01BQUssU0FBUkQ7O2lCQUFHQyxPQUNKLElBQU5DLEdBRFVELE1BQ0osa0JBRFhkLFVBQ0tlOztpQkFET0Y7aUJBQUdDLE9BRUYsSUFBTkUsS0FGUUYsTUFFRixrQkFGUGIsV0FFQ2U7TUFDcUIsUUFBSzthQUV4Q0MsUUFBU2pCLEtBQU1DLE1BQU1ZLEdBQUdDO01BQUssU0FBUkQ7O2lCQUFHQyxPQUNOLElBQU5DLEdBRFlELE1BQ04sa0JBRFRkLFVBQ0dlO1FBRUs7ZUFISUY7ZUFBR0MsTUFJUDtNQUZHLElBQU5FLEtBRlVGO01BRUosa0JBRkxiLFdBRURlLEtBRUk7Ozs7T0FoRGxCaEI7T0FDQUM7T0FFQUM7T0FJQUM7T0FJQUM7T0FJQUM7T0FJQUM7T0FJQUU7T0FJQUM7T0FJQUU7OztPQVFBQztPQUtBSzs7SWpCOURMOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPa0IrQ0tDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lsQi9DTDthbUIwQnNCQyxTQUFTckcsR0FBSSxtQkFBSkEsbUJBQWtCO2FBVTNCc0csYUFBYWxKLEVBQUU3RSxHQUFJLHNCQUFONkUsRUFBRTdFLEVBQXlDO2FBQ3hEZ08saUJBQWlCbkosRUFBRTdFLEVBQUVvRSxHQUN4QyxzQkFEb0NTLEVBQUU3RSxFQUFFb0UsRUFDRDs7S0FXckM2SjtLQUNBQztLQUVBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUVBQztLQUVBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUlBQztLQUNBQztLQUNBQzthQXdCRUMsS0FBTUM7TUFDQSxnQkFEQUE7UUFFSTt5Q0FGSkE7U0FURyxNQVBJRDtTQVlrQyxVQVpsQ0E7UUFZa0MsVUFWN0M5SyxNQU9BZ0w7a0NBU3lCO2FBTTNCQyxPQUNFdks7TW5CdkdUO1NtQnlHVSxTQUZEQSxNQUVpQixhQUZqQkE7WUFDQXdLLEtBREF4SztNWHlhQSxrQld4YUF3SyxLQURBeEs7O01BTW9CLEdBQW5CLFNBTER3SyxTQUtvQixhQUxwQkE7WUFJQWxJLEtBSkFrSTt3QkFJQWxJLEtBRUc7TUFFRixvQkFKREE7ZUFKQWtJO2VBU0csMENBQXVDO2FBRTNCbEksS0FBTWtJLE1BQ3BCLE9BRG9CQSxPQUNDO2FBRVBDLEdBQUlELE1BQ2xCLE9BRGtCQSxPQUNHOzs4QkFqQnhCRCxPQWFpQmpJLEtBR0FtSTtLQUluQkM7S0FDQUM7S0FDQUM7S0FTRUM7YUFHQUMsT0FBT3JKO01BQ1QsY0FEU0EsTUFDVCxVQURTQSxLQUhQb0o7TUFLQTtNQUNGLGdDQUhTcEosRUFHRDthQUVOc0osT0FBTy9LLEdBQUksT0FBSkEsb0JBQW9DO2FBRTNDZ0wsd0JBQXdCM0MsRUFBRTRDLEVBQUVDO01BQzlCLGNBRDRCRCxNQUM1QixVQUQ0QkEsSUFDTixPQURJNUMsWUFFeEI7OEJBRjRCNkMsU0FFYjthQUdmQyxRQUFROUMsRUFBRTRDO01BQ1osd0JBRFU1QyxFQUFFNEM7TUFFWixpQ0FGVTVDLEVBQUU0QyxFQUVEO2FBR1RHLGFBQWEvQyxFQUFFNEM7TUFDakIsd0JBRGU1QyxFQUFFNEM7TUFFakIsc0NBRmU1QyxFQUFFNEMsRUFFRDthQUdkSSxRQUFRaEQsRUFBRTRDLEVBQUVqTDtNQUNkLHdCQURVcUksRUFBRTRDO01BRVoseUJBRlU1QyxFQUFFNEMsRUFBRWpMLEVBRUQ7YUFHWHNMLFVBQVVqRCxFQUFFNEM7TUFDZCx3QkFEWTVDLEVBQUU0QztNQUVkLDJCQUZZNUMsRUFBRTRDLEVBRUQ7YUFHWE0sVUFBVWxELEVBQUU0QztNQUNkLHdCQURZNUMsRUFBRTRDO01BRWQsbUNBRlk1QyxFQUFFNEMsRUFFRDthQUtYTyxTQUFTN0MsR0FBRzhDLEdBQUc3QyxHQUFHOEMsR0FBR2pLO01BRUY7OztRQUZFQTs7OztRQUFUZ0s7OztVQUNhLE9BRGhCOUMsTUFBWWxILFNBQVRnSzs7OztRQUFNQzs7O1VBRUMsT0FGSjlDLE1BQU1uSCxTQUFIaUs7UUFJZjtvQkFKa0JqSztTQUlsQixVQUFlLDJCQUpUa0gsR0FBRzhDLEdBQUc3QyxHQUFHOEMsR0FBR2pLO1FBSW1CO01BRHJDLDhDQUNxQzs7Ozs7O09BM0N4Q3FKO09BS0FDO09BT0FJO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BT0FDOzs7O3NCbkIvS1A7OztPbUJxSU9YOzs7T0EzR2U1QjtPQVVBQztPQUNBQztPQVlqQkM7T0FDQUM7T0FFQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FFQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7O09BSUFDO09BQ0FDO09BQ0FDO1VBd0JFQzs7T0E0QkZNO09BQ0FDO09BQ0FDOzs7O2FDdEdBZSx1QkFBc0MsZUFBZTthQUtyREMsaUJBQWtCQztNQUNHLElBQW5CQyxRQURnQkQ7TUFFcEIsU0FQRUY7TUFPRjtRQUVlLElBQVRJLE9BQVMsV0FIWEQ7UUFJRixzQkFMa0JELElBSWRFO1FBSUosT0FKSUE7WUFHRDFEO21DQUNILHlCQUFvRCxNQURqREEsQ0FDd0QsRUFBM0QsTUFER0EsRUFFSTthQUlQMkQscUJBQXNCSDtNQUNELElBQW5CQyxRQURvQkQ7TUFFeEIsU0FwQkVGO01BbUJxQixJQUVuQkksT0FBUyxXQUZURDtNQUdKLHNCQUp3QkQsSUFHcEJFO01BQ0osT0FESUEsTUFFRTthQU9KRSxNQVFFQztNQUVKLElBQUlDLEVBQUosYUFGSUQ7TUFFSixPQUFJQyxVQUZBRCxPQUVBQyxVQUZBRCxJQUtDLGlCQUxEQSxJQUtxQjthQ052QkUsVURTV0Y7TUFFYixJQUFJQyxFQUFKLGFBRmFEO01BRWIsT0FBSUMsVUFGU0QsT0FFVEMsVUFGU0QsSUFLUixxQkFMUUEsSUFLZ0I7OzttQkE5QzNCTixpQkFhQUkscUJBWUFDLE1DT0FHOzthQ3lWRUMsUUR2VlFoTixHQUNKLElBQUpXLEVBQUksc0JBQ1IsT0FGWVgsRUFFWixPQURJVyxDQUVnQjthQUVsQnNNLFNBQVUvTTtNQUNKLElBQUo0TSxFQUFJLGFBREk1TTtTQUNSNE0sb0NBSUQsT0FMUzVNO01BRTBELHNDQUYxREEsRUFNVDthQUdEZ04sT0FBUTlLLEdBQWMsb0JBQWRBLGNBQWtEO2FBUzFEK0ssTUFBSW5OLEVBQUVXO01BQ1I7OzttQ0FEUUE7cUREekRONEwsaUJDeURNNUw7Z0JBQ0Esa0JBREZYLFNBQ1k7YUFFaEJvTixRQUFRcE4sRUFBRVc7TUFDVCxVQURTQTtRQUVQOzJCQUZPQTtTQUVQLGtCQUZPQSxrQkQ1RFY0TCxpQkM0RFU1TDtRQUVPLDJCQUZUWDtNQUdMOzs7bUNBSE9XO3FERDVEVjRMLGlCQzREVTVMO2dCQUdDLGtCQUhIWCxTQUdhOzs7OztPQU5yQm1OO09BVEFEO09BVEFEO09BcUJBRztPQzZURUo7T0R6VkZEO09DeVZFQztPRGxWRkM7T0FTQUM7O2FDbkRBRyxhQUFXLFFBQUc7YUFFZEMsU0FBTzNNLFNBQU8sVUFBUEEsRUFGUDBNLE1BRTZCO2FBRTdCRSxLQUFLNU0sRUFBRTZNLFlBQVUsVUFBWjdNLEVBQUU2TSxLQUF3QjthQUUzQkMsU0FBT0MsS0FBS0M7TUFDWixxQkFET0Q7TUFDUDtZQUVLRixjQUFIN007UUFBcUIsVUFBckJBLGlCdEJqQ1gsT3NCOEJTOE0sU0FHS0QsS0FIT0c7TUFFVCxrQkFGU0EsT0FHNEI7YUFFeENDLE1BQUk1TixFQUFFNk47TUFBZSxxQkFBZkE7TUFBZTtRQUVJO1NBQXBCTDtTQUFIN007U0FBdUIsb0J0QnJDbEMsT3NCbUNTaU4sTUFBSTVOLEVBRUN3TjtRQUFlLHFCQUZoQnhOLEVBRUZXO01BREMsUUFDaUM7YUFFcENtTixXQUFXOU4sRUFBRTZOO010QnZDdEIsSXNCdUNzQkU7TUFBUztRQUFNLHFCQUFmQTtRQUFlO1VBR3hCLElBRENQLGNBQUg3TSxXQUNFLG1CQUhPWCxFQUVUVztVQUNFO1lBRVEsSUFBTEM7WUFBYyxVQUFkQSxpQnRCNUNoQixPc0J1Q1NrTixXQUFXOU4sRUFFTndOO1VBQ0QsSUFIU08sTUFFUlA7O1FBREYsU0FJb0M7YUFFdkNRLE9BQU9oTyxFQUFFNk47TXRCOUNsQixJc0I4Q2tCRTtNQUFTO1FBQU0scUJBQWZBO1FBQWU7Y0FFbkJQLGNBQUg3TTtVQUNELGNBSE1YLEVBRUxXO1dBRVUsVUFGVkEsaUJ0QmhEWCxPc0I4Q1NxTixPQUFPaE8sRUFFRndOO2NBRklPLE1BRUpQOztRQURGLFNBSWdCO2FBRW5CUyxPQUFPSjtNQUFlLHFCQUFmQTtNQUFlO1lBRWpCTCxjQUFIN007UUFDSSxnQkFESkEsaUJ0QnZEWCxPc0JxRFNzTixPQUVLVDtNQURGLFFBRW1CO2FBRXRCVSxTQUFTbE8sRUFBRTZOO01BQWUscUJBQWZBO01BQWU7UUFHakI7U0FESkw7U0FBSDdNOztTQUNPLG9CdEI3RGxCLE9zQjBEU3VOLFNBQVNsTyxFQUVKd047UUFDRiwyQkFITXhOLEVBRVBXO01BREMsUUFFMEI7YUFJN0J3TixVQUFVbk8sRUFBRW9PLElBQUlQO1VBQUpRLFVBQUlOO01BQ3RCO1FBQU0scUJBRGdCQTtRQUNoQjtVQUdVO1dBREhQO1dBQUg3TTtXQUNNLGlCQUpBWCxFQUFFcU8sTUFHUjFOO1dBSFEwTjtXQUFJTixNQUdUUDs7UUFERixPQUZPYSxNQUtRO2FBRXBCL0ssS0FBS3RELEVBQUU2TjtNdEJ4RWhCLElzQndFZ0JFO01BQ2I7UUFBTSxxQkFET0E7UUFDUDtjQUVPUCxjQUFIN007VUFDSixXQUpLWCxFQUdEVztjQUhHb04sTUFHQVA7O1FBREYsU0FHTTthQUVYZSxPQUFPdk8sRUFBRXdPO01BQ1QscUJBRE94TyxFQUFFd087TUFDVDs2QkFFS0MsZUFBSDlOO1FBQW1CLFVBQW5CQSxpQnRCbEZYLE9zQitFUzROLE9BQU92TyxFQUdGeU87TUFERCxRQUM2QjthQUVyQ0MsU0FBU0MsSUFDTCxxQkFES0EsTUFDTCxnQkFJRzthQUVQQyxPQUFPRDtNQUNILHFCQURHQTtNQUNILGNBQ0tFLGNBQUhsTywwQkFBR2tPO01BR1AsUUFBSTthQVdHQyxTQUFPQztVQVBEN0osT0FBS3lKLEdBT0pJO01BTmxCO1FBQU0scUJBRGdCSjtRQUNoQjtVQUlGLHlCQUxhekoseUJBQUt5SjtRQUdsQixPQUhhekosS0FRRjthQVVKOEosTUFBTWhQLEVBQUUrTztVQVJEalQsSUFBRTZTLEdBUURJO01BUG5CO1FBQU0scUJBRGNKO1FBQ2Q7Y0FHS0UsY0FBSGxPO1VBQ0osV0FHYVgsRUFSQ2xFLEVBSVY2RTtVQUNKLFFBTGM3RSxnQkFBRTZTLEdBSVRFOztRQURQLFNBTVk7YUFVTEksV0FBV2pQLEVBQUVrUCxPQUFLSDtVQVJON0osS0FRQ2dLLE9BUklwVCxJQUFFNlMsR0FRREk7TUFQN0I7UUFBTSxxQkFEd0JKO1FBQ3hCO1VBSVM7V0FESkU7V0FBSGxPO1dBQ08sa0JBR09YLEVBUkNrRixLQUFLcEosRUFJcEI2RTtXQUNPLElBTGE3RTtXQUFMb0o7V0FBS3BKO1dBQUU2UyxHQUluQkU7O1FBRFAsT0FIbUIzSixLQVNHO2FBRXBCaUssUUFBUUMsRUFBRVQ7TXRCcEluQixJc0JvSW1CRTtNQUNoQjtRQUFNLHFCQURVQTtRQUNWO1VBSUYsSUFET0UsY0FBSHBPLFdBQ0osZ0JBTFV5TyxFQUlOek87VUFDSixhQUxZa08sS0FJTEU7VUFEUDtpQkFFbUI7YUFFakJNLE9BQU9ELEVBQUVUO010QjNJbEIsSXNCMklrQkU7TUFDZjtRQUFNLHFCQURTQTtRQUNUO1VBSUYsSUFET0UsY0FBSHBPLFdBQ0osZ0JBTFN5TyxFQUlMek87VUFDSixRQUZBO1VBRUEsSUFMV2tPLEtBSUpFOztRQURQLFNBRWtCO2FBRWhCTyxLQUFLRixFQUFFVDtNdEJsSmhCLElzQmtKZ0JFO01BQ2I7UUFBTSxxQkFET0E7UUFDUDtjQUdLRSxjQUFIcE87VUFDRCxjQUxJeU8sRUFJSHpPLEdBQ1EsVUFEUkE7Y0FKS2tPLEtBSUZFOztRQURQLFNBRWlDO2FBRS9CUSxTQUFTdlAsRUFBRTJPO010QnpKcEIsSXNCeUpvQkU7TUFDakI7UUFBTSxxQkFEV0E7UUFDWDtVQUlJLElBRENFLGNBQUhwTyxXQUNFLGtCQUxLWCxFQUlQVztVQUNFLEdBR0orTCxPQUNFLE9BREZBO1VBSEksSUFMT21DLEtBSU5FOztRQURQLFNBTVU7YUFTUlMsTUFBTXhQLEVBQUUyTyxHQUFHYztVQUFIWixRQUFHYTtNQUNqQjtRQUFNLHFCQURRYjtRQUNSO1VBSUksSUFEQ0UsY0FBSHBPLFdBQ0UsbUJBTE8rTztVQUtQO2dCQUdLQyxnQkFBSC9PO1lBQ0osV0FUSVosRUFJSlcsRUFJSUM7Z0JBUkVpTyxLQUlIRSxLQUpNVyxLQVFGQzs7VUFEUDtRQUpKLFNBT2lCO2FBRWZDLFdBQVc1UCxFQUFFa0YsS0FBS3lKLEdBQUdjO1VBQVJySyxZQUFLeUosUUFBR2E7TUFDM0I7UUFBTSxxQkFEa0JiO1FBQ2xCO1VBSUksSUFEQ0UsY0FBSHBPLFdBQ0UsbUJBTGlCK087VUFLakI7WUFJUzthQURKQzthQUFIL087YUFDTyxrQkFURlosRUFBRW9GLE9BSVh6RSxFQUlJQzthQVJPd0U7YUFBS3lKLEtBSWJFO2FBSmdCVyxLQVFaQzs7VUFEUCxPQVBXdks7UUFHZixPQUhlQSxPQVVZO2FBRXpCeUssU0FBUzdQLEVBQUUyTyxHQUFHYztVQUFIWixRQUFHYTtNQUNwQjtRQUFNLHFCQURXYjtRQUNYO1VBSUksSUFEQ0UsY0FBSHBPLFdBQ0UsbUJBTFUrTztVQUtWO1lBSUYsSUFET0MsZ0JBQUgvTyxhQUNKLGdCQVRPWixFQUlQVyxFQUlJQztZQUNKLGFBVFNpTyxLQUlORSxLQUpTVyxLQVFMQztZQURQOztRQUpKLFNBTTZCO2FBRTNCRyxRQUFROVAsRUFBRTJPLEdBQUdjO1VBQUhaLFFBQUdhO01BQ25CO1FBQU0scUJBRFViO1FBQ1Y7VUFJSSxJQURDRSxjQUFIcE8sV0FDRSxtQkFMUytPO1VBS1Q7WUFJRixJQURPQyxnQkFBSC9PLGFBQ0osZ0JBVE1aLEVBSU5XLEVBSUlDO1lBQ0osUUFGQTtZQUVBLElBVFFpTyxLQUlMRSxLQUpRVyxLQVFKQzs7VUFEUDtRQUpKLFNBTTRCO2FBRTFCSSxRQUFNQyxHQUFHckIsR0FBR2M7VUFBSFosUUFBR2E7TUFDbEI7UUFBTSxxQkFEU2IsUUFDSCxtQkFETWE7UUFDTjs7WUFJUjthQURxQkM7YUFBSC9PO2FBQVhtTzthQUFIcE87YUFDSixnQkFMUXFQLEdBSUpyUCxFQUFjQztZQUNsQixhQUxXaU8sS0FJSkUsS0FKT1csS0FJT0M7OztTQURyQjtRQUtBLFNBQUs7YUFFSE0sVUFBUUMsSUFBSXZCLEdBQUdjO1VBQUhaLFFBQUdhO01BQ3JCO1FBQU0scUJBRFliLFFBQ04sbUJBRFNhO1FBQ1Q7OztZQUlBLElBRGFDLGdCQUFIL08sYUFDVixhQUxFc1AsU0FJUXRQO1lBQ1YsU0FBSnNDLE9BTFUyTCxVQUFHYSxLQUlJQztZQUVOLE9BRFh6TTtVQUtKO1FBRkEsb0JBRUU7YUFNQWlOLFNBQVNuUSxFQUFFbEUsRUFBRXNVO01BQ25CLEdBRGlCdFUsSUFBRXNVO1FBQ0w7Y0FER3RVO1NBRUosb0J0QnJQaEIsT3NCbVBTcVUsU0FBU25RLE9BQUlvUTtRQUVYLHFCQUZPcFEsRUFBRWxFO01BS2YsUUFBRzthQUVIdVUsS0FBSy9QLEVBQUVOO01BQ1QsUUFET007UUFJTCxpQ3RCOVBMLE9zQm1QUzZQLFNBT0duUSxPQUFGTTtNQUVMLGdDQUVjO2FBRVZnUSxPQUFPM1A7TUFDSixVQURJQSxpQnRCaFFoQixPc0JnUVMyUCxPQUFPM1AsU0FDSzthQUVaNFAsUUFBUXZRO01BQ0gsb0J0QnBRZCxPc0JtUVN1USxRQUFRdlE7TUFDUixxQkFEUUEsVUFDTzthQU1md1EsZUFBZTdCO01BQ3JCO01BQVUsZ0JBRFdBLGtCdEIxUXhCLE9zQjBRUzZCLGVBQWU3QixlQUNXO2FBTzlCOEIsTUFBTTlCO01BQ0YscUJBREVBO01BQ0Y7UUFJa0I7U0FEYkU7U0FBSGxPO1NBQ2dCLG9CdEJ2UjNCLE9zQjBRUzZQLGVBUUU3QjtRQUtLLFVBRExoTyxpQnRCdFJYLE9zQjhCUzhNLFNBd1BLb0I7TUFEUCxRQUV3QzthQU10QzZCLFNBQVMxUSxFQUFFVztNQUNULElBQUpDLEVBQUksV0FET1osRUFBRVc7TUFFUixVQURMQyxpQnRCOVJQLE9zQjZSUzhQLFNBQVMxUSxFQUNYWSxTQUNrQjthQVdwQitQLFFBQVEzUSxFQUFFVztNQUNMLG9CdEIzU1YsT3NCNlJTK1AsU0FhSTFRLEVBQUVXO01BQ0wsc0J0QjNTVixVc0IwU2VBLFFBQ1M7YUFJZmlRLFNBQVM1USxFQUFFbEUsRUFBRTZTO01BQ2IscUJBRGFBO01BQ2I7UUFJVztTQURORTtTQUFIbE87Y0FKUzdFO1NBS0Esb0J0QnBUcEIsT3NCK1NTOFUsU0FBUzVRLE9BSUo2TztRQUNELHFCQUxLN08sRUFBRWxFLEVBSVQ2RTtNQURKLFFBRWlDO2FBRTFCa1EsS0FBSzdRLEVBQUUyTztNQUNsQixpQ3RCdlRILE9zQitTU2lDLFNBT1U1USxPQUFFMk8sU0FDSDthQVFUbUMsVUFBVTlRLEVBQUVRLEVBQUVtTztNQUNkLHFCQURjQTtNQUNkO1FBSU0sSUFEREUsY0FBSGxPLFdBQ0ksZUFMSVgsRUFBRVEsRUFJVkc7UUFFSyxVQURMb1EsbUJ0QnBVWCxPc0IrVFNELFVBQVU5USxFQUtSK1EsSUFER2xDO01BRFAsUUFHMEI7YUFFNUJtQyxLQUFLaFIsRUFBRVEsRUFBRW1PO01BQ0osb0J0QnhVVixPc0IrVFNtQyxVQVFDOVEsRUFBRVEsRUFBRW1PO01BQ0osc0J0QnhVVixVc0J1VVluTyxRQUNnQjthQUtuQnlRLFNBQVMzUSxFQUFFcU87TUFDakIsYUFEZXJPO2VBclRiK007O2lCQTBUUSxxQkFMT3NCO2lCQUtQO3VCQUdLRSxjQUFIbE87bUJBQ0ssVUFETEEsRUFDSyxTQVRGTCxVQVFBdU87aUJBRFAsUUFFMkI7YUFFakNxQyxLQUFLNVEsRUFBRXFPO01BQ1QsR0FET3JPLE1BQ08sMEJBQXNCLGdCQUQ3QkEsRUFBRXFPLEdBRUk7YUFvQlh3QyxLQUFLN1EsRUFBRXFPO01BQ1QsWUFET3JPOztpQkFBRXFPOzt1QkFkUXlDLElBY1Y5USxFQWRZdU8sS0FjVkY7bUJBYlQ7cUJBQU0scUJBRGFFO3FCQUNiO3VCQUlGLHNCQUxhdUM7dUJBS2IsU0FBSUMsSUFFRixrQkFIS3RDO3VCQUNQLElBTGFxQyxJQUtUQyxJQUxXeEMsS0FJUkU7O3FCQURQLFNBaUJlO2VBTEwseUJBS0s7YUFFYnVDLFdBQVdsQyxFQUFFVDtNQUNiLHFCQURhQTtNQUNiO1lBR0tFLGNBQUhsTztRQUNELGtCQUxVeU8sRUFJVHpPO3FDdEIxWFgsT3NCc1hTMlEsV0FBV2xDLEVBSU5QOztNQURQLFFBRThDO2FBRTVDMEMsV0FBV25DLEVBQUVUO010QjdYdEIsSXNCNlhzQkU7TUFDbkI7UUFBTSxJQUdKMkMsS0FISSxXQURhM0M7UUFDYixHQUdKMkM7Y0FBU3pDLEtBQVR5QyxRQUFNN1EsRUFBTjZRO1VBQ0ssY0FMVXBDLEVBSVR6TyxRQUpXa08sS0FJUkU7VUFDNkIsT0FEdEN5QztRQURFLFNBRXdDO2FBRXRDQyxNQUFNekIsR0FBR3JCO01BQ1QscUJBRFNBO01BQ1Q7UUFJd0Q7U0FEbkRFO1NBQUhsTztTQUNzRCxnQkFMbERxUCxHQUlKclA7U0FDMEMsb0J0QnpZckQsT3NCNlhTNFEsZ0JBV0sxQztTQUM4QixvQnRCelk1QyxPc0JvWVM0QyxNQUFNekI7U0FLaUIsZ0JBTGpCQSxHQUlKclA7U0FDUyxvQnRCellwQixPc0JzWFMyUSxnQkFrQkt6QztRQUNELHlCdEJ6WWIsVXNCd1lXbE87TUFESixRQUVxRTs7YUF5QnJFK1EsZUFHQSxrQkFBa0I7YUFpQmhCQyxRQUFRaEQ7TUFDZCxTQTFCYW9DO1FBMkJMLHFCQUZNcEM7UUFFTixjQUdLRSxjQUFIbE8sV0FDSyxVQURMQSxFQUNLLFFBREZrTztRQURQLFFBRW9CO01BOUJkLElBTkdyTyxFQU1ILFFBREN1UTtNQUNEO1FBTEEsc0JBREd2UTtRQUNILG9CQURHQSxrQkY3WGIrTCxpQkU2WGEvTCxLQXFDZDthQUVLb1IsS0FBS2pEO01BQ1gsU0FyQlUzTztRQXNCRixxQkFGRzJPO1FBRUgsY0FHS0UsY0FBSGxPLFdBQ0ssVUFETEEsRUFDSyxLQURGa087UUFEUCxRQUVpQjtNQXpCUixJQUFUZ0QsVUFESTdSO01BQ0s7UUFLSCxJQUFKQSxFQUFJLFNBTE42UixPQVZGSCxTQWVRLGtCQUFKMVIsSUFDRCxDQW9CTjthQUdLOFIsSUFBSW5ELEdBQUdjO01BQ1AscUJBRElkO01BQ0o7UUFJSSxJQURDRSxjQUFIbE8sV0FDRSxtQkFMRzhPO1FBS0g7Y0FHS0MsZ0JBQUg5TztVQUNVLGFBTGRELEVBSUlDLGtCdEJqZGYsT3NCeWNTa1IsSUFJS2pELEtBSUlhO1FBRFA7TUFKSixRQU00QjthQUUxQnFDLEtBQUsvUixFQUFFMk8sR0FBR2M7TUFDVixxQkFET2Q7TUFDUDtRQUlJLElBRENFLGNBQUhsTyxXQUNFLG1CQUxNOE87UUFLTjtVQUlXO1dBRE5DO1dBQUg5TztXQUNTLG9CdEI3ZHhCLE9zQm9kU21SLEtBQUsvUixFQUlBNk8sS0FJSWE7VUFDRCxxQkFUSDFQLEVBSUhXLEVBSUlDO1FBREo7TUFKSixRQU04QjthQUU1Qm9SLFdBQVdyRCxHQUFHYztNQUNkLHFCQURXZDtNQUNYO1lBR0tFLGNBQUhsTztRQUNLLFVBRExBLGlCdEJuZVgsT3NCK2RTcVIsV0FBY3ZDLEdBSVRaO01BRFAsa0JBSGdCWSxLQUtVO2FBNEI1QndDLGNBQWMvQixJQUFJdlAsRUFBRWdPLEdBQUcvTixFQUFFNk87TUFDeEIsc0JBRGFTLElBQUl2UCxFQUFLQzs7OztrQkFibkIscUJBYXFCNk87a0JBYnJCO3dCQUdLQyxjQUFIOU87MkJBVU5xUixjQUFjL0IsSUFBSXZQLEVBQUVnTyxHQVZkL04sRUFBRzhPO2tCQURQLFVBV2dCL08sRUFBRWdPOztnQkFBRmhPOztrQkFOZCxxQkFNZ0JnTztrQkFOaEI7d0JBR0tFLGNBQUhsTzsyQkFHTnNSLGNBQWMvQixJQUhSdlAsRUFBR2tPLEtBR2NqTyxFQUFFNk87a0JBSnZCLFVBSXFCN08sRUFBRTZPLEtBSVc7YUFFcEN5QyxhQUFhaEMsSUFBSXZCLEdBQUdjO01BQ2hCLHFCQURhZCxNQUNQLG1CQURVYztNQUNWOztjQU1lQyxnQkFBSDlPLGFBQVhpTyxjQUFIbE87aUJBYlJzUixjQU1hL0IsSUFPTHZQLEVBQUdrTyxLQUFXak8sRUFBRzhPO1lBSGxCeE07O3FCQURILGFBQ0dBO01BRUgsT0FGR0EsQ0FJd0I7YUFHM0JpUCxRQUFRQztNQUNSLHFCQURRQTtNQUNSO1lBR1VDLGdDQUFQMVI7UUFDSSxVQURKQSxpQnRCcmhCWixPc0JpaEJTd1IsUUFJVUU7TUFEWixRQUVxQjthQUVuQkMsUUFBUUY7TUFDUixxQkFEUUE7TUFDUjtZQUdVQyxnQ0FBSnpSO1FBQ0MsVUFEREEsaUJ0QjVoQmYsT3NCd2hCUzBSLFFBSVVEO01BRFosUUFFcUI7YUFFdkJFLE1BQU1IO01BQ0ssb0J0QmhpQmhCLE9zQndoQlNFLFFBT0VGO01BQ1IseUJ0QmhpQkgsT3NCaWhCU0QsUUFjRUMsZ0JBQ2dCO2FBUWxCSSx5QkFBeUJ4UyxFQUFFMk87TXRCeGlCcEMsSXNCd2lCb0NFO01BQ2pDO1FBQU0scUJBRDJCQTtRQUMzQjtVQUlJLElBRENFLGNBQUhwTyxXQUNFLG1CQUxxQlgsRUFJdkJXO1VBQ0U7WUFFRixJQURVQztZQUNEO29CQURDQTttQ3RCOWlCckIsT3NCd2lCUzRSLHlCQUF5QnhTLEVBSXBCK087VUFDRCxJQUx1QkYsS0FJdEJFOztRQURQLFNBTW9DO2FBRWxDMEQsMEJBQTBCelMsRUFBRTJPO010Qm5qQnJDLElzQm1qQnFDRTtNQUNsQztRQUFNLHFCQUQ0QkE7UUFDNUI7VUFJSSxJQURDRSxjQUFIcE8sV0FDRSxtQkFMc0JYLEVBSXhCVztVQUNFLHlCQUx3QmtPLEtBSXZCRTtVQUNELElBR1MyRDtVQUNGO2tCQURFQTs7b0J0QjNqQnRCLE9zQm1qQlNELDBCQUEwQnpTLEVBSXJCK087UUFEUCxTQU00QzthQUU5QzRELGNBQWMzUyxFQUFFMk87TUFFbEIsb0J0QmhrQkgsT3NCbWpCUzhELDBCQVdVelMsRUFBRTJPO01BQ2xCOzZCdEIvakJILE9zQndpQlM2RCx5QkFzQlV4UyxFQUFFMk87bUJBRVk7YUFFNUJpRSxVQUFVeEQsRUFBRVQ7TUFDZCxjQUF5QmhPLEdBQVMsc0JBRHRCeU8sRUFDYXpPLEVBQWM7TUFBMUIsb0J0Qm5rQmhCLE9zQjhDU3FOLFlBb2hCUVc7TUFDZCx5QnRCbmtCSCxPc0I4Q1NYLE9Bb2hCTW9CLEVBQUVULGVBQzZCO2FBV3pDa0UsS0FBS0M7TUFDRCw0QnRCL2tCVCxPc0J1Q1NoRixXQW9ESmMsT0FtZktrRSxXQUNzQjthQUV2QkMsVUFBVUQ7TUFDRyxlQURIQSxLQUNHO01BQ2hCLFlBRENHO1FBRUssWUFGRUQsT0FHVDtNQUdhLFVBTlhDLHFCdEJsbEJQLE9zQmlsQlNGLFVBQ0tDLGFBTW9CO2lCQU1mRSxXQUFXSjtNQUNyQixxQkFEcUJBO01BQ3JCO1FBRVUsSUFESkssZUFBSnhFLFlBQ1EsbUJBRFJBO1FBQ1E7VUFRVztXQVBaRTtXQUFIbE87V0FPZSxhQVhYdVM7V0FXVzs7V0FDVyxvQnRCMW1CekMsVXNCa21Ca0JyRSxLQU9JbUU7V0FDUyxvQnRCMW1CL0IsZ0JzQmdtQmVHO1VBVUUseUJ0QjFtQmpCLFVzQmttQmV4UyxFQU9Bc1M7UUFSSSxJQWNXLGFBakJYQyxZQWlCVztRQUNOLFVBRFRHLHVCdEIvbUJmLFdzQittQnNCRCxRQWZQRDtNQXFCUixpQkF2QllELGFBdUJXO2FBa0J6QkksWUFBWXRULEVBQUUyTyxHQUFHYztNQUNuQixjQUNXOU87UUFDUCxjQUFTQyxHQUNQLGtCQUpRWixFQUVIVyxFQUNFQyxFQUNGO1FBRFAsc0J0QjFvQlAsT3NCbUNTZ04sV0FvbUJhNkIsU0FLWDtNQUpVLFNBSk5xRCxVdEJwb0JmLE9zQm1DU2xGLFdBb21CVWU7TUFGaEIsb0J0QnJvQkgsV3NCd0JLdEIsTUE0bUJVeUY7NEJ0QnBvQmYsT3NCcURTN0Usa0JBeWxCSjthQUVBc0YsUUFBUTVFLEdBQUdjO01BQ2IsNEJBQWlCOU8sRUFBRUMsR0FBSyxVQUFQRCxFQUFFQyxFQUFXLEVBRHBCK04sR0FBR2MsR0FDd0I7YUFFbkMrRCxhQUFhQztNQUNmLFNBQVF2UTtRQUNBLHFCQUZPdVE7UUFFUCxVQUlGLElBREc5UyxXQUNILFVBREdBLEVBSkR1QztRQUdGLFFBRVc7TUFMakIsT0FBUUEsQ0FPUDthQUVDd1EsYUFBYS9FO01BQ2YsSUFBSW5PLEtBRFdtTztNQUNmO1FBRVEscUJBRkpuTztRQUVJLGNBR0ttTyxZQUFIaE8sV0FMTkgsT0FLU21PLGFBQUhoTztRQURKLFFBR007YUFJTmdULEtBQUs3WDtNQUNYLFNBRFdBLFVBQ0YsVUFERUEsaUJ0QnpxQmQsT3NCeXFCUzZYLGlCQUNnQjs7OztPQXRsQnBCakY7T0FPQUU7T0FnQlNFO09BbkNMeEw7T0FQQTZLO09BcURLYTtPQVdBQztPQUdMRTtPQU9BRTtPQU9BQztPQU9BQztPQWtCQUM7T0FZQUk7T0FZQUM7T0FXQUM7T0FXQUM7T0FVQUU7T0EzTUo1QztPQUVBQztPQUVBQztPQThOQThDO09BM0tJOUI7T0FpTEErQjtPQUdBQztPQWVKRTtPQXdCQUU7T0F2UUkvQztPQW1SS2lEO09BeFFMN0M7T0FQQUY7T0FnU0prRDtPQWlCQUU7T0FzQkFDO09BUUlHO09BT0FDO09BT0FFO09Ba0RBRTs7T0FTQUM7T0FrSkFtQjtPQW5qQkF0RjtPQXVCQVE7T0FLQUM7O09BK1lBNEQ7T0FXQUM7T0FXQUM7T0F1Q0pFO09BMElBcUI7T0FUQUQ7T0F4R0FmOztPQStCQUk7T0FJQUM7T0FpRkFZO09BVUFFO09BWUlDOztRQ3ZwQkpDO2FBQ0FDLEtBQUszVCxHQUFJLFVBQUpBLEVBQVU7YUFDZjRULE1BQU1sSSxFQUFHbUksV0FBVSxHQUFibkksR0FBb0MsSUFBTDFMLEVBQS9CMEwsS0FBb0MsT0FBTDFMLEVBQWlCLE9BQTdDNlQsU0FBb0Q7YUFDN0RDO01BQU0sVUFBbUIsSUFBTDlULFdBQUssT0FBTEE7TUFBaUIsc0NBQTRCO2FBQ2pFK1QsS0FBS3JJLEVBQUU1TCxHQUFJLEdBQU40TCxHQUE0QyxJQUFMMUwsRUFBdkMwTCxLQUE0QyxrQkFBMUM1TCxFQUFxQ0UsR0FBWixRQUFvQjthQUNwRGdVLFlBQU8sVUFBbUIsSUFBTHRJLFdBQUssT0FBTEEsRUFBaUIsUUFBSTthQUMxQ3VJLE1BQUluVSxFQUFFNEwsR0FBSSxHQUFKQSxHQUEwQyxJQUFMMUwsRUFBckMwTCxLQUErQyxxQkFBakQ1TCxFQUF1Q0UsSUFBWixRQUEyQjthQUMxRGtVLE9BQU1SLEtBQU1DO012QnpCakIsVXVCeUIyQyxJQUFMM1QsV0FBSyxrQkFBMUIyVCxLQUFxQjNULEdBQXNCLE9BQWpEMFQ7YUFDTlMsT0FBS3JVO012QjFCVixVdUIwQmlDLElBQUxFLFdBQUssa0JBQXZCRixFQUFrQkUsR0FBbUI7YUFDMUNvVSxlQUFVLGdCQUF1QzthQUNqREMsZUFBVSxnQkFBdUM7YUFFakRDLFFBQU14RSxHQUFHeUUsR0FBR3JJO01BQUssR0FBUnFJO1dBQUdySSxRQUNBc0ksR0FEQXRJLE1BQ1R1SSxHQURNRix3QkFBSHpFLEdBQ0gyRSxHQUFTRDs7T0FDQSxLQUZBdEksR0FFQTtNQUNULFFBQUs7YUFFUndJLFVBQVExRSxJQUFJdUUsR0FBR3JJO01BQUssR0FBUnFJOztXQUFHckksSUFDRyxJQUFOc0ksR0FER3RJLE1BQ0csa0JBRFY4RCxTQUNJd0U7UUFHRTtNQURBLE9BSEN0SSxPQUlBO2FBRWZ5SSxVQUFXakI7TXZCekNoQixVdUJ5QytELElBQUwxVCxXQUFLLFVBQUxBLEdBQWxCLFVBQXhCMFQ7YUFDWGtCLGVBQVUsVUFBZ0MsSUFBTDVVLFdBQUssVUFBTEEsS0FBVixRQUFrQjthQUM3QzZVO01BQVMsVUFBdUMsSUFBTDdVLFdBQUssc0J2QjNDckQsT3NCMEJLb04sU0NpQjJDcE47TUFBakIsT0RuQjFCbU4sS0NtQjREOzs7O09BekI1RHVHO09BQ0FDO09BQ0FDO09BQ0FFO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BRUFDO09BS0FJO09BTUFDO09BQ0FDO09BQ0FDOzthQ3pCQUMsR0FBRzlVLEdBQUksVUFBSkEsRUFBUTthQUNYK1UsTUFBTWpNLEdBQUksVUFBSkEsRUFBVzthQUNqQmtNLFFBQU0vVSxFQUFHNFQ7TUFBVSxTQUFiNVQsTUFBa0MsSUFBTEQsRUFBN0JDLEtBQWtDLE9BQUxELEVBQW9CLE9BQTlDNlQsU0FBcUQ7YUFDOURvQjtNQUFTLG1CQUFpQixJQUFMalYsV0FBSyxPQUFMQTtNQUFvQix1Q0FBK0I7YUFDeEVrVjtNQUFZLGtCQUFnQztNQUFaLElBQUxwTTtNQUFLLE9BQUxBLENBQTZDO2FBQ3hFcU0sT0FBS2xWLEVBQUVIO01BQUksU0FBTkcsTUFBMkIsSUFBTEQsRUFBdEJDLEtBQTJCLGtCQUF6QkgsRUFBb0JFLEdBQTJCLE9BQWpEQyxDQUFrRDthQUN2RG1WLE9BQTRCdE0sR0FBckIsU0FBcUJBLE1BQUosSUFBTDdJLEVBQVM2SSxLQUFKLE9BQUw3SSxFQUF5QixPQUFoQjZJLENBQWlCO2FBQzdDdU0sTUFBSXZWLEVBQWdDZ0o7TXhCekJ6QyxTd0J5QnlDQSxNQUFYLElBQUw5SSxFQUFnQjhJLEtBQVIscUJBQXhCaEosRUFBZ0JFLElBQWdDLE9BQWhCOEk7YUFDcEN3TSxVQUFVeFYsRUFBc0NFO014QjFCckQsU3dCMEJxREEsS0FBYSxPQUFiQSxFQUFkLElBQUw4SSxFQUFtQjlJLEtBQVIscUJBQTlCRixFQUFtQmdKO2FBQzdCeU0sT0FBTVQsR0FBSUM7TXhCM0JmLG1Cd0IyQndDLElBQUwvVSxXQUFLLGtCQUE3QjhVLEdBQXdCOVU7TUFBdUIsSUFBTDhJO01BQUssa0JBQTNDaU0sTUFBc0NqTTthQUNoRDBNLE9BQUsxVjtNeEI1QlYsbUJ3QjRCK0IsSUFBTEUsV0FBSyxrQkFBckJGLEVBQWdCRSxHQUFzQjthQUMzQ3lWLFdBQVczVjtNeEI3QmhCLGtCd0I2QnNELFNBQWQsSUFBTGdKLFdBQUssa0JBQXhCaEosRUFBbUJnSjthQUM5QjRNLGFBQVEseUJBQXdDO2FBQ2hEQyxnQkFBVyx5QkFBd0M7YUFFbkRDLFFBQU9kLEdBQUlDLE1BQU1jLEdBQUdDO01BQUssU0FBUkQ7O2lCQUFHQyxPQUNOLElBQU50QixHQURZc0IsTUFDTixrQkFEUGhCLFFBQ0NOOztpQkFEU3FCO2lCQUFHQyxPQUVBLElBQU4xTSxHQUZNME0sTUFFQSxrQkFGVGYsV0FFRzNMO01BQ1IsUUFBSzthQUVYMk0sVUFBU2pCLEdBQUlDLE1BQU1jLEdBQUdDO01BQUssU0FBUkQ7O2lCQUFHQyxPQUNSLElBQU50QixHQURjc0IsTUFDUixrQkFETGhCLFFBQ0ROO1FBRU87ZUFISXFCO2VBQUdDLE1BSVA7TUFGSyxJQUFOMU0sR0FGUTBNO01BRUYsa0JBRlBmLFdBRUMzTCxHQUVFO2FBRWhCNE07TUFBWSxtQkFBaUIsSUFBTGhXLFdBQUssVUFBTEEsR0FBeUIsUUFBSTthQUNyRGlXO01BQVUsbUJBQWlCLElBQUxqVyxXQUFLLFVBQUxBLEtBQXNCLFFBQUU7YUFDOUNrVztNQUFTO1FBQWlCLElBQUxsVyxXQUFLLHNCeEI5Qy9CLE9zQjBCS29OLFNFb0JxQnBOO01BQStCLE9GdEJwRG1OLEtFc0I2RDs7OztPQTVCN0QySDtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQUtBRztPQU1BQztPQUNBQztPQUNBQzs7SUN6QitCLFNBQS9CQyxtQnpCckJMO0l5QnFCb0MsSUFDL0JDO0lBRCtCLFNBRy9CQyxnQkFBVyxrQkFBaUM7SUFIYixTQVkvQkMsbUJBQVksbUNBQTBDO0lBWnZCLG1CQVluQixXQUEwQztJQVp2Qjs7O3NCekJyQnBDO095QnFCS0g7T0FDQUM7O09BRUFDO09BU0FDO0lBWitCO2FDQS9CN1gsSUFBSTJCO00xQnJCVCxRMEJxQlNBLGlCQUMrQyxPQUQvQ0EsRUFDbUIsZ0NBQXdDO2FBTy9EbVcsUUFPQXZUO00xQnBDTDtNMEI2QmUsU0FPVkE7b0JBTFEsMEJBS1JBOzs7b0JBTlE7O29CQU1SQTs7a0JBRFE7a0JBRkE7bUJBREE7bUJBRUE7O01sQjhlSjtRa0IzZU0sSUFBSjZOLElBQUk7OEJBQUpBLE1BRE43TjtRQUNVLDRCQUFKNk47TUFLSixJQUFJdlEsRUFBSjs0QkFBSUE7TUFBSixzQkFBSUEsVUFOTjBDO01BTUUsc0JBQUkxQyxXQU5OMEM7TUFNRSxzQkFBSTFDLFVBTk4wQztNQU1FLDRCQUFJMUMsRUFLYzthQUVwQmtXLFVBQ0F4VDtNQURZLFNBQ1pBO01BRFk7Ozs7TWxCK2RSLGdCa0I5ZEpBLFlBSU07YUFFTnlULFVBQ0F6VDtNQURZLFNBQ1pBO01BRFk7Ozs7TWxCd2RSLGdCa0J2ZEpBLFlBSU07YUFFTjBULGdCQUNBMVQsR0FEa0IsWUFDbEJBLHlCQUNNO2FBRU4yVCxnQkFDQTNULEdBRGtCLFlBQ2xCQSx5QkFDTTthQUlONFQsVUFBUUMsR0FBR0MsSUFBSyxPQUFSRCxLQUFHQyxNQUFzQjthQUNqQ0MsUUFBT0YsR0FBUUMsSUFBUyxjQUFqQkQsS0FBUUMsV0FBMEI7Ozs7T0FyRHpDclk7T0FRQThYO09Bb0JBQztPQU9BQztPQU9BQztPQUlBQztPQU1BQztPQUNBRzs7O0t6QmpEQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FFQUM7S0FDQUM7YUFFQUMsS0FBS2hKO01BQ1AsT0FET0E7ZUFMTDZJO2VBS0s3SSxjQUVTLFlBaEJkcFUsYUFjS29VLFNBR0Y7YUFFSGlKLEtBQUtqSjtNQUNQLE9BRE9BLFlBWEw0SSxTQVdLNUksUUFFUyxZQXRCZHJVLGFBb0JLcVUsU0FHRjthQUVIa0osU0FBUzViO01BQUksY0FBSkEsTUFBSSxVQUFKQTs7Ozs7TUFKWCxXQUl5RTthQUN2RTZiLE9BQU83YjtNQUFPLGdCQUFQQTs7ZVV6QlAyRTtpQlZDZSwwQkF3QlIzRSxtQ0FBd0Q7YUFJL0Q4YixRQUFRcEosR0FBSSxPQUFKQSxXQUFXO2FBQ25CcUosUUFBUTNVLEdBQUksT0FBSkEsQ0FBZTthQUN2QjRVLFFBQVF0SjtNQUNWLGFBRFVBO2VVL0JSL047aUJWRTBCOzs7NkNBNkJsQitOO2dCQUVPO2FBRWZ1SixxQkFIRixXQUNpQjthQUlmQyxtQkR4REw7UUN5REtDO2FBQ0FDLFdEMURMO2FDeUVjQyxvQkFBb0JDLEdBQUksY0FBSkEsaUJBQXlCO2FBQzdDQyxrQkFBa0JELEdBQUksUUFBSkEsaUJBQWtDO2FBQ3BERSxpQkFBaUJGLEdBQUksT0FBSkEsWUFBbUM7YUFDcERHLFdBQVdqWSxFQUFFa08sR0FBSSxZQUFObE8sV0FBRWtPLENBQThDO2EwQm9kcEVnSyxZMUJuZDRCbFksR0FBSSxPQUFKQSxlQUErQjthQUUzRG1ZLGtCQUtGaks7TUFMd0IsUUFLeEJBO1FBSE8sU0FHUEE7VUFGTyxVQUVQQTtZQURPLFdBQ1BBO2NBQU8sYUFBUEEsRUFDSyw2QkFEbUI7WUFERjtVQURBO1FBREE7TUFETiw0QkFLQzthQUVma0ssbUJBR0ZsSztNQUh5QixRQUd6QkE7UUFETyxXQUNQQSxHQUFPLGFBQVBBLEVBQ0ssNkJBRG1CO1FBREY7TUFETiw0QkFHQzt1QkFKUSxXQUlSOzs7O09BbEVmMEk7T0FDQUM7T0FJQUc7T0FDQUM7T0FFQUM7T0FLQUM7T0FLQUM7T0FDQUM7c0JENUNMOztPQ2dES0M7T0FDQUM7T0FDQUM7T0FJQUM7T0FFQUM7T0FDQUM7T0FDQUM7T0FlU0M7T0FFQUc7T0FEQUQ7T0FFQUU7TzBCb2RUQztPMUJqZEFDO09BUUFDOzthYTlEQUMsU0FBT3ZXOzs7O1VBRkMsdURBQUx3Vzs7UUFERyxXQUdtQjthQUV6QkMsT0FBS3RWLEVBQUVuQixHQUFJLFVBQU5tQixFQUFFbkIsRUFBUTthQUVmTTtNQUFLLFVBRUcsSUFBUmEsV0FBUSxPQUFSQSxFQURNLHVCQUNHO2FBRVRkO01BQUssVUFFRyxJQUFMTCxXQUFLLE9BQUxBLEVBREcsdUJBQ0c7YUFFVDBXLElBRWMxVyxFQUFFOUI7TUFEbEIsUUFDa0JBO1lBQUZ5WSxNQUFFM0g7UUFDaEI7YUFEYzJIO2dCQUdUQyxJQUhTRCxPQUdaeFYsRUFIWXdWO3FCQUFFM0gsSUFHUSxPQUF0QjdOO1lBQTZCLFFBSGY2TixZQUFGMkgsSUFHVEMsSUFIVzVIOztVQUVSO01BSEksZ0NBS0E7YUFFWjZILFFBRWM3VyxFQUFFOUI7TUFEbEIsUUFDa0JBO1lBQUZ5WSxNQUFFM0g7UUFDaEI7YUFEYzJIO2dCQUdUQyxJQUhTRCxPQUdaeFYsRUFIWXdWO3FCQUFFM0gsSUFHUSxVQUF0QjdOO1lBQWtDLFFBSHBCNk4sWUFBRjJILElBR1RDLElBSFc1SDs7VUFFUjtNQUhJLGtDQUtBO2FBSVI4SCxXQUFXeFgsR0FBR0M7VUFBSHdYLFFBQUdDO01BQ3BCO1dBRGlCRDsyQkFHZjVWLEVBSGU0VixRQUFHRyxRQUdsQi9WLEVBSGtCNlYsTUFBSEQsVUFBR0M7O1FBRVosT0FGWUEsS0FHYzthQUVoQ0csSUFBSW5YLEdBQUksa0JBQUpBLElBQW1CO2FBTW5Cb1gsV0FBUzFkLEVBQUV3RSxFQUFFTjtNQUNuQixHQURpQk0sS0FBRnhFLEVBQ0E7TUFFTCxJQUFKcUUsRUFBSSxXQUhTSCxFQUFKbEU7TUFJUixVQUREcUUsRUFDQyxXQUpRckUsVUFBRXdFLEVBQUVOLEdBSU07b0JBU2xCNkQsSUFBSTdEO01BQ1gsUUFETzZEO1FBRVAsUUFGT0E7Y0FqQmdCdUssTUFBSXRTO1VBQzNCO2VBZ0JPK0gsT0FqQm9CL0gsU0FGekJ5ZCxJQUVxQm5MO1lBRWxCLFFBRnNCdFMsVUFFSixvQkFlWmtFLEVBakJnQmxFLEdBQUpzUyxlQUFJdFM7O1FBb0J0QixvQkFIRStILElBQUk3RDtNQUNLLGlDQUVLOztNQUVMLGNBRVhHLFdBQUhpQyxXQUFZLGNBQVpBLEVBQVksUUFBVGpDO01BREcsUUFDZTttQkFJYkg7TWQxRmI7UWM0RnFCLElBQWJvQyxXQUFIbUIsV0FBZ0IsYUFGUnZELEVBRVJ1RCxHQUE0QixVQUFoQnBELEVBQWdCLE1BRnBCSCxFQUVMb0M7TUFERztpQkFHR3RHLEVBQUVrRTtNZDlGaEI7UWNnR3FCLElBQWJvQyxXQUFIbUIsV0FBZ0IsYUFGTHZELEVBQUZsRSxFQUVUeUg7UUFBOEIsVUFBbEJwRCxFQUFrQixJQUZyQnJFLFVBQUVrRSxFQUVSb0M7TUFERztvQkFHRHBDLEVBQUVvQyxHQUFJLGFBQU5wQyxFQUFFb0MsRUFBYztxQkFFYnBDLEVBQUV5Wjs7OztVQUdRO1dBQWJyWDtXQUFIbUI7V0FBZ0IscUJBSFZ2RCxFQUdOdUQ7O21CQUFHbkI7O1FBREcsWUFHQztvQkFHQXBDO01kNUdkOzs7Y2M4R1FvQyxhQUFIbUI7VUFBUSxXQUZDdkQsRUFFVHVEO3NCQUFHbkI7O1FBREc7cUJBT0FwQyxFQUFFK1k7Ozs7Y0FGTDNXLFdBQUhtQjtVQUFRLFdBRUZ2RCxJQUZOdUQ7VUFBUSw4QkFBTG5COztRQURHLFNBR2lCO3lCQUVUcEMsRUFBRWtGLEtBQUs5QztVQUFMZ0QsWUFBSzJUO01BQ3ZCO1dBRHVCQTtVQUdEO1dBQWpCQyxJQUhrQkQ7V0FHckJ4VixFQUhxQndWO1dBR0Qsa0JBSE4vWSxFQUFFb0YsT0FHaEI3QjtXQUhnQjZCO1dBQUsyVCxJQUdsQkM7O1FBREcsT0FGVTVULE9BR2dCO3dCQUVqQnBGLEVBQUVvQyxFQUFFOEM7TUFDckIsR0FEbUI5QyxPQUdkMlcsSUFIYzNXLEtBR2pCbUIsRUFIaUJuQixLQUdMLGtCQUhHcEMsRUFHZnVELEVBQVksV0FIR3ZELEVBR1orWSxJQUhnQjdUO01BRWIsT0FGYUEsSUFHYztvQkFFeEJsRixFQUFFMEIsR0FBR0M7TUFDaEIsR0FEYUQ7V0FBR0M7VUFHYyxJQUFmeVgsS0FIQ3pYLE1BR0wrWCxHQUhLL1gsTUFHVHdYLEtBSE16WCxNQUdWaVksR0FIVWpZLE1BR2lCLGFBSG5CMUIsRUFHUjJaLEdBQVFEO1VBQW1DLFVBQXBCdlosRUFBb0IsT0FIbkNILEVBR0ptWixLQUFRQzs7T0FERCxLQUZFelgsR0FFRjtNQUVGLGlDQUF1QjtzQkFFeEIzQixFQUNVMEIsR0FBR0M7VUFBUnVELE9BQUtpVSxRQUFHQztNQUN0QjtXQURtQkQ7YUFBR0M7WUFHUzthQUFoQkUsS0FIT0Y7YUFHWE0sR0FIV047YUFHZkMsS0FIWUY7YUFHaEJRLEdBSGdCUjthQUdZLHFCQUp0Qm5aLEVBSU4yWixHQUFRRCxJQUhHeFU7O2FBQUtpVSxLQUdaRTthQUhlRCxLQUdQRTs7O1NBREQsS0FGUUYsS0FFUixPQUZBbFU7UUFJRixzQ0FFRTtxQkFHSmxGLEVBQUUwQixHQUFHQztVQUFId1gsUUFBR0M7TUFDakI7V0FEY0Q7YUFBR0M7Z0JBR0ZFLEtBSEVGLFFBR05NLEdBSE1OLFFBR1ZDLEtBSE9GLFFBR1hRLEdBSFdSO1lBR1EsV0FIVm5aLEVBR1QyWixHQUFRRDtnQkFIR1AsS0FHUEUsS0FIVUQsS0FHRkU7OztTQURELEtBRkdGLEtBRUg7UUFFRixtQ0FBd0I7MEJBRW5CcFosRUFBRWtGLEtBQUt4RCxHQUFHQztVQUFSeUQsWUFBSytULFFBQUdDO01BQzNCO1dBRHdCRDthQUFHQztZQUdRO2FBQXBCRSxLQUhZRjthQUdoQk0sR0FIZ0JOO2FBR3BCQyxLQUhpQkY7YUFHckJRLEdBSHFCUjthQUdXLGtCQUhsQm5aLEVBQUVvRixPQUdoQnVVLEdBQVFEO2FBSFF0VTthQUFLK1QsS0FHakJFO2FBSG9CRCxLQUdaRTs7O1NBREQsS0FGYUYsS0FFYixPQUZLaFU7UUFJUCx3Q0FBNkI7eUJBRXZCcEYsRUFBRTBCLEdBQUdDLEdBQUd1RDtNQUMxQixHQURvQnhEO1dBQUdDO2NBR1J5WCxLQUhRelgsTUFHWitYLEdBSFkvWCxNQUdoQndYLEtBSGF6WCxNQUdqQmlZLEdBSGlCalk7VUFHVSxrQkFIWjFCLEVBR2YyWixHQUFRRCxHQUFtQixZQUhaMVosRUFHWG1aLEtBQVFDLEtBSFdsVTs7T0FFWixLQUZTdkQsR0FFVCxPQUZZdUQ7TUFJZCx3Q0FBOEI7dUJBRTVCa0s7TWRsS2pCOzs7VWNvS2EsSUFBTGhOLGFBQUhtQixhQUFRLGdCQUZJNkwsRUFFWjdMO1VBQVEscUJBQUxuQjtVQURHOztzQkFHS2dOO01kdEtoQjs7O1Vjd0thLElBQUxoTixhQUFIbUIsYUFBUSxnQkFGRzZMLEVBRVg3TDtVQUFRLFFBREY7VUFDRSxZQUFMbkI7O1FBREc7d0JBR09nTixFQUFFMU4sR0FBR0M7VUFBSHdYLFFBQUdDO01BQ3BCO1dBRGlCRDthQUFHQztZQUdFO2FBQVBFLEtBSEtGO2FBR1RNLEdBSFNOO2FBR2JDLEtBSFVGO2FBR2RRLEdBSGNSO2FBR0ssZ0JBSFAvSixFQUdadUssR0FBUUQ7WUFBVyxhQUhMUCxLQUdWRSxLQUhhRCxLQUdMRTs7O1NBREQsS0FGTUYsS0FFTjtRQUVGLHNDQUEyQjt1QkFFekJoSyxFQUFFMU4sR0FBR0M7VUFBSHdYLFFBQUdDO01BQ25CO1dBRGdCRDthQUFHQztZQUdHO2FBQVBFLEtBSElGO2FBR1JNLEdBSFFOO2FBR1pDLEtBSFNGO2FBR2JRLEdBSGFSO2FBR00sZ0JBSFIvSixFQUdYdUssR0FBUUQ7WUFBVztnQkFITlAsS0FHVEUsS0FIWUQsS0FHSkU7OztTQURELEtBRktGLEtBRUw7UUFFRixxQ0FBMEI7aUJBRTVCelk7TWR0TGI7OztVY3dMYSxJQUFMeUIsYUFBSG1CLGFBQVEsd0JBQVJBLEVBRlE1QztVQUVBLFFBREY7VUFDRSxZQUFMeUI7O1FBREc7a0JBR0d6QjtNZDFMZDs7O2NjNExReUIsYUFBSG1CLHdCQUZTNUM7a0JBQ0g7c0JBQ0h5Qjs7UUFERzttQkFHSXpCO01kOUxmOzs7Y2NnTVl5Qiw4QkFBSk4sV0FBRnlCO1VBQWMsc0JBQWRBLEVBRlM1QyxHQUUwQixPQUFqQ21CO3NCQUFJTTs7UUFERDt1QkFHUXpCO01kbE1uQjs7O2Njb01ZeUIsOEJBQUpOLFdBQUZ5QjtVQUFjLHNCQUFkQSxFQUZhNUMsR0FFc0IsVUFBakNtQjtzQkFBSU07O1FBREQ7a0JBR0d6QjtNZHRNZDs7O2Njd01ZeUIsOEJBQUpOLFdBQUZ5QjttQkFGUTVDLEVBRWtCLE9BQXhCbUI7c0JBQUlNOztRQUREO3NCQUdPekI7TWQxTWxCOzs7Y2M0TVl5Qiw4QkFBSk4sV0FBRnlCO21CQUZZNUMsRUFFYyxVQUF4Qm1CO3NCQUFJTTs7UUFERDt1QkFHUXpCO01kOU1uQjs7O1VjZ05vQjtXQUFMeUI7O1dBQVRtQjtXQUFjLHdCQUFkQSxFQUZhNUM7VUFFQyxRQURUO1VBQ1MsWUFBTHlCOztRQURKO3NCQUdPekI7TWRsTmxCOzs7Y2NvTmV5Qiw4QkFBVG1CLHNCQUZZNUM7a0JBQ1A7c0JBQ0l5Qjs7UUFESjswQkFHV3pCO01kdE50QjtZY3dOdUJ5QixXQUFsQndYLGNBQUNyVyxFQUFEcVc7UUFDSywwQkFESnJXLEVBRmdCNUMsR0FFQ3lCLEtBQWxCd1gsS0FDeUMsYUFIeEJqWixFQUVDeUI7TUFEWjt5QkFJVXpCO01kM05yQjtZYzZOdUJ5QixXQUFsQndYLGNBQUNyVyxFQUFEcVc7ZUFBQ3JXLE1BRmU1QyxFQUVFeUIsS0FBbEJ3WCxLQUFxRCxZQUZyQ2paLEVBRUV5QjtNQURaO29CQUdHZ047TWQvTmQ7OztjY2lPVWhOLGFBQUx6QjtVQUFhLGNBRkp5TyxFQUVUek8sR0FBc0IsT0FBdEJBO3NCQUFLeUI7O1FBREM7c0JBR09nTjtNZG5PbEI7OztjY3FPVWhOLGFBQUx6QjtVQUFhLGNBRkF5TyxFQUViek8sR0FBc0IsVUFBdEJBO3NCQUFLeUI7O1FBREM7d0JBR09wQztNZHZPbEI7OztVYzBPa0IsSUFEUm9DLGFBQUx6QixhQUNhLGtCQUhBWCxFQUViVztVQUNhLEdBQ1IrTCxPQUFvQixPQUFwQkE7VUFEUSxZQURSdEs7O1FBREM7c0JBT0dnTjtNQUNYOzs7OztnQkFFT2hOLFdBQUx6QjtZQUFhLGNBSEp5TyxFQUdUek87Y0FBc0IsY0FBdEJBLDhCQUFLeUI7OztVQURDLG9CQUVEO3FCQUlHZ04sRUFBRXFLOzs7O1VBR2M7V0FBckJyWDtXQUFIekI7V0FBd0IsaUJBSGhCeU8sSUFHUnpPOzs7O21CQUFHeUI7O1FBREcsZ0JBR0U7MEJBRUdwQztNQUNiOzs7OztZQUdZLElBREhvQyxXQUFMekIsV0FDUSxpQkFKQ1gsRUFHVFc7WUFDUTtjQUVNLHlCQUFMVCw4QkFISmtDOztZQUNHLFVBREhBOztVQURDLG9CQU1KO3dCQUdNcEMsRUFER3laOzs7O1VBSUQ7V0FETHJYO1dBQUx6QjtXQUNVLGNBSEZYLEVBRVJXO1dBRU8saUJBREZnTzs7bUJBREF2TTs7UUFEQyxnQkFJRzsyQkFFR3BDLEVBQUVrRixLQUFLdVU7aUJBQUx2VSxzQkFBS3VVOzs7VUFJSDtXQURYclg7V0FBTHpCO1dBQ2dCLGlCQUpKWCxTQUdaVztXQUNnQjs7dUJBQUprWjtrQkFBTjNLOzttQkFERDlNOztRQURPLDhCQUlIO3lCQUVEZ04sRUFBRXFLOzs7O2NBR1ByWCxhQUFMekI7VUFBYSxjQUhIeU8sRUFHVnpPO1lBQXNCLGFBQXRCQSx5QkFBS3lCO1VBQTJDLFlBQWhEekIsc0JBQUt5Qjs7UUFEVztRQUFULHlCQUVHOzZCQUVJZ04sRUFBRXFLOzs7O1VBSUgsSUFEUnJYLGFBQUx6QixhQUNhLGlCQUpDeU8sRUFHZHpPO1VBQ2E7WUFDUyx5QkFBTFQsNEJBRlprQztVQUNRLElBRVUsd0JBQUwrRyxpQ0FIYi9HOztRQURZO1FBQVYsMEJBT0c7O01BRUU7UUFHSztTQURWQTs7U0FBSnhCO1NBQUZEO1NBQ2dCLGNBRFZ5QjtTQUNVOztxQkFEaEJ6QixFQUNNb1osT0FESm5aLEVBQ1FrWjtNQUZMLFVBRW9DO3FCQUU5QnBZLEdBQUdDO01BQ2pCLEdBRGNEO1dBQUdDO2NBR0Z5WCxLQUhFelgsTUFHTitYLEdBSE0vWCxNQUdWd1gsS0FIT3pYLE1BR1hpWSxHQUhXalk7VUFHb0IsYUFBL0JpWSxHQUFRRCxJQUF1QixRQUEzQlAsS0FBUUM7O09BREQsS0FGR3pYLEdBRUg7TUFFRixvQ0FBMEI7bUJBSTFCdU8sSUFHVnhPLEdBRElDO01BRE4sR0FFRUQ7V0FESUM7Y0FFWXFZLEdBRlpyWSxNQUVNc1ksR0FGTnRZLE1BRUV1WSxHQUROeFksTUFDQXlZLEdBREF6WTtVQUVLLHNCQUxLd08sSUFJVmlLLEdBQVVGO3lCQUdHLE1BUEgvSixJQUdWeE8sR0FDZ0JzWTtzQkFBaEJHLEdBRWEsTUFOSGpLLElBSUpnSyxHQUZGdlk7UUFDTSxPQUFWRDtNQURVLE9BQU5DLEVBS3dCO3VCQUdoQnVPLElBQUk5TjtNQUNsQixTQXdDSWdZLFNBQVM5WixFQUFFOEI7UUFDYixTQURXOUI7YUFBRThCOzs7Y0FHRTtlQURFSztlQUFONFg7ZUFBTkMsR0FGUWxZO2VBR0UsaUJBNUNIOE4sSUEyQ1BvSyxHQUFNRCxPQUFOQyxNQUFNRCxnQkFBTkM7Y0FDMkMsVUFBeEM5WixFQURTaUM7O2tCQUZObkMsS0FBRThCOzs7OztlQU9KO2dCQUZjbVk7Z0JBQU5DO2dCQUFOQztnQkFBTkMsS0FMUXRZO2dCQU9KO2dDQWhERzhOLElBOENQd0ssS0FBTUQ7dUJBR0EsV0FqREN2SyxJQThDRHVLLEtBQU1EO3dCQUFaRSxRQUFNRCxRQUFNRDt5QkFJRCxXQWxESnRLLElBOENQd0ssS0FBWUY7MEJBQVpFLFFBQVlGLE1BQU5DOzBCQUFNRCxNQUFaRSxRQUFNRDt1QkFNRyxXQXBERnZLLElBOENQd0ssS0FBWUY7d0JBQU5DLFFBQU5DLFFBQVlGO3lCQU9ILFdBckRGdEssSUE4Q0R1SyxLQUFNRDswQkFBTkMsUUFBTUQsTUFBWkU7MEJBQVlGLE1BQU5DLFFBQU5DO2VBUU0sVUFQSDNKLElBRGV3SjtRQVluQjtZQWpCT2phO1NBaUJQLEdBakJPQSxJQWlCSHFhO1NBRVMsV0FGVEEsR0FqQkt2WTtTQW1CSTs7U0FDQSxhQUZUd1ksR0FDSXhCO1NBQ0s7O1NBNUREMVgsR0EyRFJGO1NBM0RXRyxHQTREWEY7U0E1RGN5RDtRQUN0QjthQURnQnhEO2VBQUdDO2tCQUlMcVksR0FKS3JZLE1BSVRzWSxHQUpTdFksTUFJYnVZLEdBSlV4WSxNQUlkeVksR0FKY3pZO2NBS1Qsa0JBTkt3TyxJQUtWaUssR0FBUUY7Z0JBR0QsY0FIQ0EsR0FKWS9VLE1BQUh2RCxHQUlMcVksR0FKUTlVO2NBTWIsY0FGUGlWLEdBSm9CalYsTUFBTnhELEdBSVZ3WSxHQUpnQmhWOztxQkFHVixXQUhJeEQsR0FBTXdEOztvQkFFVixXQUZPdkQsR0FBR3VEO3lCQTREVjRWLE1BQ2dCO01BN0Q5QixTQWtCUUQsS0FBS3ZhLEVBQUU4QjtRQUNiLFNBRFc5QjthQUFFOEI7OztjQUdFO2VBREVLO2VBQU40WDtlQUFOQyxHQUZRbFk7ZUFHRSxpQkF0Qkg4TixJQXFCUG9LLEdBQU1ELGFBQU5DLGdCQUFNRDtjQUNzQyxVQUF6QzdaLEVBRFNpQzs7a0JBRk5uQyxLQUFFOEI7Ozs7O2VBT0o7Z0JBRmNtWTtnQkFBTkM7Z0JBQU5DO2dCQUFOQyxLQUxRdFk7Z0JBT0o7Z0NBMUJHOE4sSUF3QlB3SyxLQUFNRDt1QkFNRyxXQTlCRnZLLElBd0JQd0ssS0FBWUY7eUJBT0gsV0EvQkZ0SyxJQXdCRHVLLEtBQU1EO2dDQUFOQyxRQUFOQzswQkFBTUQsUUFBTUQsTUFBWkU7d0JBQU1ELFFBQU5DLFFBQVlGO3VCQUdOLFdBM0JDdEssSUF3QkR1SyxLQUFNRDt5QkFJRCxXQTVCSnRLLElBd0JQd0ssS0FBWUY7Z0NBQVpFLFFBQU1EOzBCQUFOQyxRQUFZRixNQUFOQzt3QkFBTkMsUUFBTUQsUUFBTUQ7ZUFRTixVQVBIekosSUFEZXdKO1FBWW5CO1lBakJPamE7U0FpQlAsR0FqQk9BLElBaUJIcWE7U0FFUyxlQUZUQSxHQWpCS3ZZO1NBbUJJOztTQUNBLGlCQUZUd1ksR0FDSXhCO1NBQ0s7O1NBN0JHMVgsR0E0QlpGO1NBNUJlRyxHQTZCZkY7U0E3QmtCeUQ7UUFDMUI7YUFEb0J4RDtlQUFHQztrQkFJVHFZLEdBSlNyWSxNQUlic1ksR0FKYXRZLE1BSWpCdVksR0FKY3hZLE1BSWxCeVksR0FKa0J6WTtjQUtiLGtCQWZLd08sSUFjVmlLLEdBQVFGO2dCQUVELGNBRlBFLEdBSndCalYsTUFBTnhELEdBSWR3WSxHQUpvQmhWO2NBT2pCLGNBSEMrVSxHQUpnQi9VLE1BQUh2RCxHQUlUcVksR0FKWTlVOztxQkFHZCxXQUhReEQsR0FBTXdEOztvQkFFZCxXQUZXdkQsR0FBR3VEO3lCQTZCZDRWLE1BQ29CO01Bd0J4QixJQUFOalgsSUFBTSxTQWhFUXpCO01BZ0VSLFlBQU55QixJQUN1QixLQUR2QkEsSUFoRWN6QixPQWlFcUI7dUJBeUMzQjhOLElBQUk5TjtNQUNoQixTQThESWdZLFNBQVM5WixFQUFFOEI7UUFDYixTQURXOUI7YUFBRThCOzs7Y0FJQztlQUZHSztlQUFONFg7ZUFBTkMsR0FGUWxZO2VBSUMsZUFuRUo4TixJQWlFTG9LLEdBQU1EO2VBRUcsUUFBSlUsT0FGTFQsVUFFS1MsT0FGTFQsTUFBTUQsZ0JBQU5DO2NBR3FELFVBRmxEOVosRUFEU2lDOztrQkFGTm5DLEtBQUU4Qjs7Ozs7ZUFVQztnQkFGU21ZO2dCQUFOQztnQkFBTkM7Z0JBQU5DLEtBUlF0WTtnQkFVQyxlQXpFSjhOLElBdUVMd0ssS0FBTUQ7ZUFFRyxTQUFKTztnQkFFTTtnQ0EzRU45SyxJQXVFQ3VLLEtBQU1EO2lCQUlEO3dCQUFKUzt1QkFKRFI7d0JBSUNRLE9BSkRSLFFBQU1ELGdCQUFOQztpQkFDSDFKOztnQkFLRyxPQUpEaUs7a0JBS00sSUFBSkUsSUFBSSxXQTlFTmhMLElBdUVDdUssS0FBTUQ7a0JBT0QsU0FBSlU7K0JBUFBSLFFBQU1EOzttQkFTRSxPQUZEUztnQ0FQUFIsUUFBTUQsUUFBTUQ7O29CQVdDO29DQWxGUnRLLElBdUVMd0ssS0FBWUY7cUJBV0M7NEJBQUpXOzJCQVhUVCxRQUFNRDs0QkFXR1U7NkJBWFRULFFBQVlGLE1BQU5DOzZCQUFNRCxNQUFaRSxRQUFNRDs7a0JBT0ssSUFOUjFKOztrQkFlUSxJQUFKcUssSUFBSSxXQXZGTmxMLElBdUVMd0ssS0FBWUY7a0JBZ0JELFNBQUpZOytCQWhCRFgsUUFBTkM7O21CQWtCUSxPQUZEVTtnQ0FoQkRYLFFBQU5DLFFBQVlGOztvQkFvQkM7b0NBM0ZSdEssSUF1RUN1SyxLQUFNRDtxQkFvQkM7NEJBQUphOzJCQXBCSFosUUFBTkM7NEJBb0JTVzs2QkFwQkhaLFFBQU1ELE1BQVpFOzZCQUFZRixNQUFOQyxRQUFOQzs7a0JBZ0JXLElBZlIzSjtlQXdCSixVQXhCSUEsSUFEZXdKO1FBMkJuQjtZQW5DT2phO1NBbUNQLEdBbkNPQSxJQW1DSHFhO1NBRVMsV0FGVEEsR0FuQ0t2WTtTQXFDSTs7U0FDQSxhQUZUd1ksR0FDSXhCO1NBQ0s7O1NBcEdEMVgsR0FtR1JGO1NBbkdXRyxHQW9HWEY7U0FwR2N5RDtRQUN0QjthQURnQnhEO2VBQUdDO2NBS1AsSUFERXFZLEdBSktyWSxNQUlUc1ksR0FKU3RZLE1BSWJ1WSxHQUpVeFksTUFJZHlZLEdBSmN6WSxNQUtKLGFBTkZ3TyxJQUtSaUssR0FBUUY7Y0FDRSxTQUFKL1c7Z0JBQ1UsY0FGaEJpWCxHQUpvQmpWLE1BQU54RCxHQUlWd1ksR0FKYXZZLEdBSUxxWSxHQUpROVU7Y0FPYixRQUZEaEMsR0FJQyxjQUxDK1csR0FKWS9VLE1BQUh2RCxHQUlMcVksR0FKUTlVO2NBS1YsSUFHSCxVQUpQaVYsR0FKb0JqVixNQUFOeEQsR0FJVndZLEdBSmdCaFY7O3FCQUdWLFdBSEl4RCxHQUFNd0Q7O29CQUVWLFdBRk92RCxHQUFHdUQ7eUJBb0dWNFYsTUFDZ0I7TUFyRzlCLFNBc0JRRCxLQUFLdmEsRUFBRThCO1FBQ2IsU0FEVzlCO2FBQUU4Qjs7O2NBSUM7ZUFGR0s7ZUFBTjRYO2VBQU5DLEdBRlFsWTtlQUlDLGVBM0JKOE4sSUF5QkxvSyxHQUFNRDtlQUVHLFFBQUpVLE9BRkxULFdBRUtTLE9BRkNWLE1BQU5DLGdCQUFNRDtjQUcrQyxVQUZsRDdaLEVBRFNpQzs7a0JBRk5uQyxLQUFFOEI7Ozs7O2VBVUM7Z0JBRlNtWTtnQkFBTkM7Z0JBQU5DO2dCQUFOQyxLQVJRdFk7Z0JBVUMsZUFqQ0o4TixJQStCTHdLLEtBQU1EO2VBRUcsU0FBSk87Z0JBRU07Z0NBbkNOOUssSUErQkN1SyxLQUFNRDtpQkFJRDt3QkFBSlM7dUJBSkRSO3lCQUlDUSxPQUpLVCxNQUFOQyxvQkFBTUQ7aUJBQ1R6Sjs7Z0JBS0csUUFKRGlLO2tCQWNNLElBQUpFLElBQUksV0EvQ05oTCxJQStCTHdLLEtBQVlGO2tCQWdCRCxTQUFKVTsrQkFoQkRULFFBQU5DOzttQkFrQlEsUUFGRFE7b0JBSU07b0NBbkRSaEwsSUErQkN1SyxLQUFNRDtxQkFvQkM7NEJBQUpXOzJCQXBCSFYsUUFBTkM7NkJBb0JTUzs2QkFwQkdYLE1BQU5DLFFBQU5DOzZCQUFNRCxRQUFNRCxNQUFaRTs7O2dDQUFNRCxRQUFOQyxRQUFZRjtrQkFnQkQsSUFmUnpKOztrQkFNUSxJQUFKcUssSUFBSSxXQXRDTmxMLElBK0JDdUssS0FBTUQ7a0JBT0QsU0FBSlk7K0JBUFBWLFFBQU1EOzttQkFTRSxRQUZEVztvQkFJTTtvQ0ExQ1JsTCxJQStCTHdLLEtBQVlGO3FCQVdDOzRCQUFKYTsyQkFYVFgsUUFBTUQ7NkJBV0dZOzZCQVhHYixNQUFaRSxRQUFNRDs2QkFBTkMsUUFBWUYsTUFBTkM7OztnQ0FBTkMsUUFBTUQsUUFBTUQ7a0JBT0QsSUFOUnpKO2VBd0JKLFVBeEJJQSxJQURld0o7UUEyQm5CO1lBbkNPamE7U0FtQ1AsR0FuQ09BLElBbUNIcWE7U0FFUyxlQUZUQSxHQW5DS3ZZO1NBcUNJOztTQUNBLGlCQUZUd1ksR0FDSXhCO1NBQ0s7O1NBakRHMVgsR0FnRFpGO1NBaERlRyxHQWlEZkY7U0FqRGtCeUQ7UUFDMUI7YUFEb0J4RDtlQUFHQztjQUtYLElBREVxWSxHQUpTclksTUFJYnNZLEdBSmF0WSxNQUlqQnVZLEdBSmN4WSxNQUlsQnlZLEdBSmtCelksTUFLUixhQWpCRndPLElBZ0JSaUssR0FBUUY7Y0FDRSxTQUFKL1c7Z0JBQ1UsY0FGaEJpWCxHQUp3QmpWLE1BQU54RCxHQUlkd1ksR0FKaUJ2WSxHQUlUcVksR0FKWTlVO2NBT2pCLE9BRkRoQyxHQUdDLGNBSlBpWCxHQUp3QmpWLE1BQU54RCxHQUlkd1ksR0FKb0JoVjtjQUtkLElBSUgsVUFMQytVLEdBSmdCL1UsTUFBSHZELEdBSVRxWSxHQUpZOVU7O3FCQUdkLFdBSFF4RCxHQUFNd0Q7O29CQUVkLFdBRld2RCxHQUFHdUQ7eUJBaURkNFYsTUFDb0I7TUEwQ3hCLElBQU5qWCxJQUFNLFNBeEdNekI7TUF3R04sWUFBTnlCLElBQ3VCLEtBRHZCQSxJQXhHWXpCLE9BeUd1Qjs2QkFHakJWLEdBQUdDO1VBQUh3WCxRQUFHQztNQUN6QjtXQURzQkQ7YUFBR0MsdUJBQUhDLHVCQUFHRDtVQUlkO1FBREEsT0FIY0EsVUFLa0I7aUNBR2pCaFgsRUFBRTlCO1VBQUZ5WSxNQUFFM0g7TUFDNUI7V0FEMEIySDtVQU14QixJQURLQyxJQUxtQkQ7VUFNeEIsT0FOMEIzSCxLQU94QixRQVB3QkEsWUFBRjJILElBS25CQyxJQUxxQjVIO1VBTVg7UUFIZixhQUgwQkEsbUJBT0c7cUJBVW5CcEIsR0FBR3RPLEdBQUdDO1VBQUh3WCxRQUFHQztNQUNsQjtXQURlRDthQUFHQztZQUlFO2FBQU5FLEtBSklGO2FBSVJNLEdBSlFOO2FBSVpDLEtBSlNGO2FBSWJRLEdBSmFSO2FBSUssZ0JBSlJuSixHQUlWMkosR0FBUUQ7WUFBVSxhQUpMUCxLQUlURSxLQUpZRCxLQUlKRTs7O1NBRkYsS0FGTUYsS0FFTjtRQUNhLFNBQ3FCO3VCQUVoQ2xKLElBQUl4TyxHQUFHQztVQUFId1gsUUFBR0M7TUFDckI7V0FEa0JEOzthQUFHQztZQU1YLElBRElFLEtBTE9GLFFBS1hNLEdBTFdOLFFBTVgsYUFOSWxKLFNBS0p3SjtZQUNBLFNBQUp4VyxPQU5ZaVcsVUFBR0MsS0FLUEU7WUFFRyxPQURYcFc7VUFGUTtRQURBLE9BSE9rVyxVQVFHO3NCQUlmaFg7TUFDVCxTQUFRbVosSUFBSW5aO1FBQU8sR0FBUEE7Y0FFSG9aLEtBRkdwWixLQUVSekIsRUFGUXlCO1VBRWtCLFVBQTFCekIsaUJkcGtCUCxPY2trQlc0YSxJQUVDQztRQURDLFFBQzZCO01BRnZDLHNCZGxrQkgsT2Nra0JXRCxJQURDblosUUFLSjtvQkFFSXlMO01BQ1QsU0FBUTROLE9BQU9DLE1BQU03TjtRQUNuQixTQURhNk47VUFHWDt3Q0FBbUJ0TixJQUFJek4sR0FBSyxVQUFMQSxFQUFKeU4sSUFBZSxPQUhqQlA7UUFLUixxQkFMUUE7UUFLUjtjQUVNTCxjQUFIN007VUFBaUIsVUFBakJBLEVBQWlCLE9BUGxCK2EsY0FPSWxPO1FBREYsUUFDcUM7TUFQdEQsa0JBRFNLLElBVUs7Ozs7T0F6akJaOEs7OztPQUVBRTtPQUVBblc7T0FJQUQ7T0FJQXFXO09BUUFHO09BZUFNOztPQVBBL1c7T0FFSTBXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FjckNKeUMsT0FDQUMsTUFDQUM7YUFTQUMsTUFBSW5iLEdBQUksWUFBSkEsV0FBNEI7UUFDaENvYixxQkFDQUM7YUFJQUMsT0FBT3RiLEdBQUksT0FBSkEsTUFBaUI7YUFJeEJ1YixtQjVCdkNMO1E0QndDS0M7YUFDQUMsTUFBSXpiLEVBQUVDLEdBQVEsT0FBVkQsS0FBRUMsRUFBRkQsRUFBRUMsQ0FBK0I7YUFDckN5YixNQUFJMWIsRUFBRUMsR0FBUSxPQUFSQSxLQUFGRCxJQUFFQyxDQUErQjthQVVyQzBiLFlBQVUzYixHQUFJLG1DQUFKQSxFQUFxQjs7OztPQWxDL0JnYjtPQUNBQztPQUNBQztPQVNBQztPQUNBQztPQUNBQztPQUlBQztPQUlBQztPQUNBQztPQUNBQztPQUNBQztPQVVBQzs7b0JEWEtoYyxFQUFFNEM7TUFDRCxJQUFKMUMsRUFBSSxrQkFEREYsR0FFUCxnQkFESUUsSUFER0YsRUFBRTRDLEdBRVQsT0FESTFDLENBRUg7b0JBRU1GLEVBQUVOO01BQ0Qsd0JBRERNLEdBQ0MsS0FEREEsVUFDQzs7WUFDUnhFO1FBQ0U7VUFBZSxzQkFGYjBFLEVBQ0oxRSxFQUNpQixXQUhSa0UsRUFFVGxFO1VBQ2lCLFNBRGpCQTs7O01BR0EsT0FKSTBFLENBSUg7SUFFUztrQkFFSEE7TUFDUCw2QkFET0EsR0FFUCxvQkFESXFEO01BRUosZ0JBSE9yRCxJQUVITCxJQURBMEQ7TUFFSixPQURJMUQsQ0FFSDtJQU5TLGtCQVFFMkIsR0FBcUIsaUNBQXJCQSxHQUE2QjtJQVIvQixrQkFTRXRCLEdBQUksaUNBQUpBLEdBQTZCO0lBVC9CLGFBV0pBLEVBQUVvRCxJQUFJQztNM0JoRWY7YTJCZ0VXRCxZQUFJQyxnQ0FBTnJELEtBQU1xRCxXQUFKRDtRQUlFLElBQUp6RCxFQUFJLGtCQUpFMEQsS0FLVixnQkFMSXJELEVBQUVvRCxJQUlGekQsSUFKTTBELEtBS1YsT0FESTFEO01BRkQsNENBS0Y7SUFsQk8sb0JBb0JHMkIsRUFBRThCLElBQUlDO01BQXVCLGdDQUE3Qi9CLEVBQUU4QixJQUFJQyxLQUFzQztJQXBCL0MsU0F1QlIwWSxTQUFLaFosRUFBRXpCO01BQ1QsTUFET3lCLElBQUV6QixNQUNULEtBRFNBLFVBQ1QsTUFBSW9CO01BQUosR0FET0s7OztPQUtBO01uQitiRCxnQm1CaGNtQiw4QkFIckJMLENBSUk7SUE1QkUsZ0JBOEJEMUMsRUFBRWlJLEtBQUtDO01BQ047NkJBQVYscUJBRFNsSSxHQUFFaUksTUFBS0M7T0FFaEIsb0JBREk3RTtNQUNKLFFBRlc0RTtXQUdFK1QsT0FIRi9ULEtBR05nVTs7V0FBUUQsU0FBUkMsU0FITWhVO01BQ0QsSUFHTmlVLE9BQVMsTUFBYixxQkFKU2xjLEtBR0ppYyxXQUZENVksTUFFUzJZO01BQ0EsT0FBVEUsT0FDZSxnQkFMVmxjLEVBR0ppYyxPQUREdGMsRUFDU3FjLE9BQ1RFO01BQ21ELE9BSG5EdmMsQ0FJSDtJQXBDUyxjQXNDSEssRUFBRW9ELElBQUlDLElBQUlYO00zQjNGcEI7YTJCMkZZVSxZQUFJQyxnQ0FBTnJELEtBQU1xRCxXQUFKRDtPQUdKLHVCQUhFcEQsRUFBRW9ELElBQUlDLElBQUlYO01BRVosOENBQ3VCO0lBekNsQixjQTJDSDFCLEdBQUdtYixLQUFLbGIsR0FBR21iLEtBQUsvWTtNM0JoRzFCOzs7UTJCZ0cwQkE7Ozs7UUFBYjhZOzs7K0JBQUhuYixNQUFnQnFDLFdBQWI4WTs7OztRQUFRQzs7OytCQUFIbmIsTUFBUW9DLFdBQUwrWTtPQUliLHVCQUpFcGIsR0FBR21iLEtBQUtsYixHQUFHbWIsS0FBSy9ZO01BR2xCLGtDQUMrQjtJQS9DMUIsZ0JBaURJckMsR0FBR21iLEtBQUtsYixHQUFHbWIsS0FBSy9ZO00zQnRHakM7OztRMkJzR2lDQTs7OztRQUFiOFk7OztnQ0FBSG5iLE1BQWdCcUMsV0FBYjhZOzs7O1FBQVFDOzs7K0JBQUhuYixNQUFRb0MsV0FBTCtZO09BSXBCLHdCQUpTcGIsR0FBR21iLEtBQUtsYixHQUFHbWIsS0FBSy9ZO01BR3pCLGtEQUNzQztJQXJEakMsZ0JBd0RIN0QsRUFBRXVEO01BQ1QsOEJBRFNBLFdBQ1Q7OztRQUE2QjtxQkFEdEJ2RCxFQUNzQixzQkFEcEJ1RCxFQUNUekg7VUFBNkIsU0FBN0JBOzs7Y0FBbUQ7SUF6RHpDLGlCQTRERmtFLEVBQUV1RDtNQUNWLDhCQURVQSxXQUNWOzs7UUFBNkI7cUJBRHJCdkQsRUFDUmxFLEVBQTZCLHNCQURuQnlILEVBQ1Z6SDtVQUE2QixTQUE3QkE7OztjQUFzRDtJQTdENUMsa0JBK0VEK2dCLElBRVB6YTtNM0J0SUwsRzJCc0lLQTtRQUFLLGdDQUZFeWEsaUJBRVB6YSxFQUFLOzs7OztjQWxCaUI7ZUFLaEJLO2VBTEs5QixnQ0FPa0JtYztlQVBQLGFBQVhuYyxJQUFpQzs7cUJBS3RDOEI7O3FCQURNOzs7VUFnQjRCLGtEQUZ4Q0w7Ozs7O29CQVBNMFk7Z0JBQ04sdUJBTGlCaUM7Z0JBTWpCO2tCQUdPRixNQVRVRSxVQUtqQiwrQkFMNkJEO2dCQU03QjtnRUFONkJBOzt5QkFJdkJoQzs7Y0FETix1QkFIaUJpQyxRQUdqQjtxQkFIaUJBO1lBQ1gsT0FEV0E7TUFVWDtJQWhGRSxlQXNGSnZiLEdBQUdDO01BQ1Q7K0JBRE1EO09BQ04sd0JBRFNDO09BR0Qsb0JBRkpDLEtBQ0FDO01BRUosZ0JBSk1ILEtBR0ZyQixJQUZBdUI7TUFJSixnQkFMU0QsS0FHTHRCLEVBRkF1QixHQUNBQztNQUdKLE9BRkl4QixDQUdIO0lBNUZTLFNBa0dSNmM7TUFBVzs7Ozs7TW5CeVhQLG1CbUJ2WE07SUFwR0YsY0FzR0h4YztNQUNQLDZCQURPQSxHQUNQOztRQUVrQixHQURkMUUsT0FEQStILE9BRWMsK0JBSFhyRCxFQUVIMUU7VUFFRjtRQUVGLElBQUlzVSxLQUxBdk07O1VBTWMsR0FMZC9ILFFBSUFzVSxRQUNjLCtCQVBYNVAsRUFNSDRQO1lBRUY7VUFFRixPQVJJdFUsUUFJQXNVLEtBS0YsSUFYSzVQLEVBRUgxRSxNQUlBc1UsT0FKQXRVLDRCQVdHO0lBbkhHLG1CQXFIQTBFO01BQ1Ysc0NBRFVBLFdBQ1Y7O1lBQ0E2QjtRQUNFOzBDQUhRN0IsRUFFVjZCO1VBQ0U7Ozs7Ozs7Ozs7OztVbkJtV0k7VW1CcldGL0I7VUFFRixTQURGK0I7OztNQU9BLEdBUkkvQixTQVFKLHFCQVRVRSxHQVNZLFlBVFpBO01BQ1YsSUFTTXVRLElBQUssa0JBVFB6UTtNQVNPO01BVFgsSUFTVywwQkFWREUsV0FVQzs7WUFFVDFFO1FBQ0U7c0NBYk0wRSxFQVlSMUU7VUFDRSxTQVdFb0g7Ozs7Ozs7Ozs7Ozs7O2dCQURFLHNCQWJGNk4sSUFURnpRO2dCQXNCSTtzQ0FiRnlRLElBVEZ6UTs7O2dCQWtCSSxzQkFURnlRLElBVEZ6UTtnQkFrQkk7c0NBVEZ5USxJQVRGelE7OztnQkFnQkksc0JBUEZ5USxJQVRGelE7Z0JBZ0JJO3NDQVBGeVEsSUFURnpROzs7Z0JBb0JJLHNCQVhGeVEsSUFURnpRO2dCQW9CSTtzQ0FYRnlRLElBVEZ6UTs7Ozs7YUF5Qkksc0JBaEJGeVEsSUFURnpRO2FBeUJJO21DQWhCRnlRLElBVEZ6USxXQXVCRTRDO2FBRUU7bUNBaEJGNk4sSUFURnpRLFlBdUJFNEM7YUFFRTttQ0FoQkY2TixJQVRGelEsV0F1QkU0Qzs7O2FBVEUsc0JBTEY2TixJQVRGelE7YUFjSTttQ0FMRnlRLElBVEZ6USxLQXVCRTRDOzttQkFBcUIsc0JBZHJCNk4sSUFURnpRLEtBdUJFNEM7O1VBV0Y7VUF0QkEsU0FERnBIOzs7TUF5QkEsT0EzQklpVixHQTRCSDtJQTNKTyxlQTZKSi9RLEVBQUVRO01BQ1IsSUFBSTRCLEVBQUoscUJBRFE1QjtNQUNSLFNBQUk0QixFQUNVLE9BRk41QjtNQUNSLElBRVUsb0JBRk40QixHQUVNLEtBRk5BLFVBRU07O1lBQ1J0RztRQUFzQjtVQUFlLHNCQURqQ3FFLEVBQ0pyRSxFQUFxQyxXQUpqQ2tFLEVBSWtCLHNCQUpoQlEsRUFJTjFFO1VBQXFDLFNBQXJDQTs7O01BQ0EsT0FGSXFFLENBR0g7SUFuS08sZ0JBcUtISCxFQUFFUTtNQUNULElBQUk0QixFQUFKLHFCQURTNUI7TUFDVCxTQUFJNEIsRUFDVSxPQUZMNUI7TUFDVCxJQUVVLG9CQUZONEIsR0FFTSxLQUZOQSxVQUVNOztZQUNSdEc7UUFBc0I7VUFBZTtZQURqQ3FFLEVBQ0pyRSxFQUFxQyxXQUpoQ2tFLEVBSUxsRSxFQUFzQixzQkFKZjBFLEVBSVAxRTtVQUFxQyxTQUFyQ0E7OztNQUNBLE9BRklxRSxDQUdIO0lBM0tPLHFCQTZLRUgsRUFBRVcsRUFBRTRDO01BQ2hCLFNBRGM1QyxHQUNkLDBCQURnQjRDLFdBQ2hCOztZQUNBekg7UUFDRTtVQUFLLGtCQUhLa0UsRUFDUkcsS0FFRixzQkFIY29ELEVBRWhCekg7VUFDTyxTQURQQTs7O01BR0EsT0FKSXFFLElBSUY7SUFsTFEsc0JBb0xHSCxFQUFFdUQsRUFBRTVDO01BQ2pCLFNBRGlCQSxHQUNqQiwwQkFEZTRDO01BQ2Y7WUFDQXpIO1FBQ0U7VUFBSyxrQkFITWtFLEVBR1gsc0JBSGF1RCxFQUVmekgsR0FESXFFO1VBRUcsU0FEUHJFOzs7TUFHQSxPQUpJcUUsSUFJRjtJQXpMUSxrQkEyTERpUCxFQUFFNU87TUFDWCwyQkFEV0EsR0FFRTFFO01BQ1g7V0FEV0EsTUFEVHdFLEVBRVk7UUFDTixjQUpEOE8sRUFJRixzQkFKSTVPLEVBRUUxRSxJQUVxQjtRQUMzQixRQUhNQTtpQkFJUDtJQWpNSSxtQkFtTUFzVCxFQUFFNU87TUFDWiwyQkFEWUEsR0FFQzFFO01BQ1g7V0FEV0EsTUFEVHdFLEVBRVk7UUFDTixjQUpBOE8sRUFJSCxzQkFKSzVPLEVBRUMxRTtVQUVxQixRQUZyQkE7UUFHTixTQUNEO0lBek1JLDJCQTJNUTBFLEdBQUksYUQ3THBCcVcsZ0JDNkxnQnJXLEVBQThCO0lBM010QywyQkE0TVFBLEdBQUksYURsTXBCb1csZ0JDa01nQnBXLEVBQThCO0lBNU10QyxTQThNUnljLE9BQU9qZCxFQUFFUTtNQUNYLDhCQURXQSxHQUNVLE9BRFZBO01BRUQsSUFBSkwsRUFBSSxLQUZDSztNQUdNLHNCQURYTCxJQUNXLFdBSFJILEVBRUMsc0JBRkNRO01BR00sT0FEWEwsQ0FHSDtJQW5OTywwQkFxTlNLLEdBQUksY0R2TXJCcVcsZ0JDdU1pQnJXLEVBQWlDO0lBck4xQyw0QkFzTldBLEdBQUksY0Q1TXZCb1csZ0JDNE1tQnBXLEVBQWlDO0lBdE41QyxxQkF5TkswYyxPQUFPMWM7TUFDdEI7a0NBRHNCQTtPQUN0Qiw2QkFEZTBjO09BQ2YsS0FDSUUsV0FEQUQ7TUFBSjtZQUVZcmhCO1FBQ1Y7YUFEVUEsTUFEUnNoQixRQUVrQjtVQUNmLHlCQUxlNWMsRUFHVjFFLE9BRUwsc0JBTFFvaEIsT0FHSHBoQjtXQUV5QztVQUM5QyxRQUhLQTs7TUFOYSxXQVVHO0lBaE9sQixtQkFtT0d1aEIsT0FBTzdjO01BQ3BCO2tDQURvQkE7T0FDcEIsNkJBRGE2YztPQUNiLEtBQUlGLFFBQ0FHO09BREosVUFFSUM7TUFGSjtZQUdZemhCO1FBQ1Y7YUFEVUEsTUFGUndoQixRQUdrQjtVQUNmO2tDQU5hOWMsRUFHaEIrYyxPQUNRemhCOztZQUVMLHNCQU5NdWhCLE9BSUR2aEI7V0FFa0Q7VUFDdkQsUUFIS0E7O01BVlYsV0FjbUI7SUEzT1gsU0E4T0owaEIsVUFBVWhkLEVBQUVpZCxJQUFJM2hCLEVBQUVvSDtNM0JuUzNCLEkyQm1TeUJiO01BQ3RCO1dBRGtCb2IsT0FBSXBiLElBQ0w7UUFDakIseUJBRmdCN0IsRUFBTTZCLFNBQUVhLEVBRUcsT0FGTGI7UUFFWSxRQUZaQTtpQkFFcUM7SUFoUGpELGVBbVBGN0IsRUFBRTBDLEdBQUksaUJBQU4xQyxFQUFNLHFCQUFOQSxLQUFFMEMsRUFBOEI7SUFuUDlCLFNBc1BKeWEsY0FBY25kLEVBQUVpZCxJQUFJM2hCLEVBQUVvSDtNM0IzUy9CLEkyQjJTNkJiO01BQzFCO1dBRHNCb2IsT0FBSXBiLElBQ1Q7UUFDakIseUJBRm9CN0IsRUFBTTZCLFNBQUVhLEVBRUQsVUFGRGI7UUFFYSxRQUZiQTtpQkFFMEM7SUF4UDFELG1CQTJQRTdCLEVBQUUwQztNQUFJLHFCQUFOMUMsRUFBTSxxQkFBTkEsS0FBRTBDLEVBQWtDO0lBM1B0QyxvQkE4UEcxQyxFQUFFMUUsRUFBRW9IO01BQ2pCLElBQUlkLEVBQUoscUJBRGE1QjtjQUFFMUUsUUFDWHNHLElBRFd0RyxHQUdmLGlCQUhhMEUsRUFDVDRCLEVBRFd0RyxFQUFFb0g7TUFFTSxrREFDTjtJQWpRUCx3QkFvUU8xQyxFQUFFMUUsRUFBRW9IO01BQ3JCLElBQUlkLEVBQUoscUJBRGlCNUI7Y0FBRTFFLFFBQ2ZzRyxJQURldEcsR0FLakIscUJBTGUwRSxFQUNiNEIsRUFEZXRHLEVBQUVvSDtNQUduQixrREFFcUI7SUF6UWIsU0E0UUowYSxXQUFXcGQsRUFBRTFFLEVBQUVvSDtNM0JqVXhCLEkyQmlVc0JiO01BQ25CO2dCQURtQkE7VUFFbkIseUJBRmlCN0IsRUFBRTZCLFNBQUVhLEVBRU0sT0FGUmI7VUFFZSxRQUZmQTs7UUFDTCxnQkFDMEM7SUE5UTlDLGdCQWlSRDdCLEVBQUUwQztNQUFJLGtCQUFOMUMsRUFBTSxxQkFBTkEsV0FBRTBDLEVBQWlDO0lBalJsQyxxQkFvUkkxQyxFQUFFMUUsRUFBRW9IO00zQnpVckIsUzJCeVVtQnBILDZCQUFGMEUsTUFBRTFFLEdBSWQsa0JBSlkwRSxFQUFFMUUsRUFBRW9IO01BRWhCLGtEQUVnQjtJQXhSUixTQTJSSjJhLGVBQWVyZCxFQUFFMUUsRUFBRW9IO00zQmhWNUIsSTJCZ1YwQmI7TUFDdkI7Z0JBRHVCQTtVQUV2Qix5QkFGcUI3QixFQUFFNkIsU0FBRWEsRUFFRSxVQUZKYjtVQUVnQixRQUZoQkE7O1FBQ1QsU0FDbUQ7SUE3UnZELG9CQWdTRzdCLEVBQUUwQztNQUFJLHNCQUFOMUMsRUFBTSxxQkFBTkEsV0FBRTBDLEVBQXFDO0lBaFMxQyx5QkFtU1ExQyxFQUFFMUUsRUFBRW9IO00zQnhWekIsUzJCd1Z1QnBILDZCQUFGMEUsTUFBRTFFO09BSWxCLHNCQUpnQjBFLEVBQUUxRSxFQUFFb0g7TUFFcEIsa0RBRW9CO0lBdlNaLHVCQTJTTTFDLEVBQUUxRSxFQUFFb0g7TUFDcEIsSUFBSWQsRUFBSixxQkFEZ0I1QjtjQUFFMUUsUUFDZHNHLElBRGN0RztPQUtoQjtTQUFXLFVBTEcwRSxFQUNaNEIsRUFEY3RHLEVBQUVvSCxHQUtQOzs7K0JBQTRDOztNQUZ2RCxrREFFNEQ7SUFoVHBELGtCQW9UQzFDLEVBQUUwQyxHQUFJLHFCQUFOMUMsSUFBRTBDLEVBQXVCO0lBcFQxQix3QkF1VE8xQyxFQUFFMUUsRUFBRW9IO00zQjVXeEIsUTJCNFdzQnBILDZCQUFGMEUsTUFBRTFFO09BSWpCO1NBQVcsV0FKSTBFLEVBQUUxRSxFQUFFb0gsR0FJUjs7OytCQUEyQzs7TUFGdEQsa0RBRTJEO0lBM1RuRCxtQkFnVUN2QyxFQUFPQyxHQUFRLGtDQUFmRCxFQUFPQyxFQUEwQjtJQWhVbEMsdUJBb1VNaWMsSUFBSXJjO01BQ3BCOztpQ0FEb0JBO09BQ3BCLDBCQURvQkE7TUFDcEI7WUFFQTFFO1FBQ0U7bUNBSmtCMEUsRUFHcEIxRSxPQUhnQitnQjtZQUllLFNBSDNCMWM7WUFJSyxjQUxXSyxFQUdwQjFFLFdBRElzVSxPQUNKdFU7WUFFUyxPQUZUQTs7OztNQUZBLFNBQUlxRTtNQVFKLGNBVG9CSyxJQUVoQjRQLFdBT1k7SUE3VU4scUJBaVZFNVAsR0FBSSxhRDlVZG1XLFVDOFVVblcsRUFBd0I7SUFqVjFCLHFCQWtWRUEsR0FBSSxhRHRWZGtXLFVDc1ZVbFcsRUFBd0I7SUFsVjFCLG9CQW9WR0EsR0FBSSxjRGpWZm1XLFVDaVZXblcsRUFBMkI7SUFwVjlCLHNCQXFWS0EsR0FBSSxjRHpWakJrVyxVQ3lWYWxXLEVBQTJCO0lBclZoQyxrQkF5VkRBO01BQ1QsU0FBUSthLElBQUl6ZjtRQUNWLEdBRFVBLE1BQ1YscUJBRk8wRSxHQUVjO1FBRVgscUJBSkhBLEVBQ0cxRSxHQUdBLEtBSEFBO1FBSUssVUFEVDZFLGlCM0JsWlgsTzJCK1lXNGEsZ0JBSW1CO01BSjNCOzRCM0IvWUgsTzJCK1lXQSxlQU1IO0lBaFdLLGlCQWtXQS9hO01BQ1YsU0FBUSthLElBQUl6ZjtRQUNWLEdBRFVBLE1BQ1YscUJBRlEwRSxHQUVhO1FBRVgscUJBSkZBLEVBQ0UxRSxHQUdBLEtBSEFBO1FBSVMsYUFKVEEsRUFHSjZFLGtCM0IzWlgsTzJCd1pXNGEsZ0JBSXVCO01BSi9COzRCM0J4WkgsTzJCd1pXQSxlQU1IO0lBeldLLGtCQTJXRHpmO01BQ1QsWUFDYztNQVNkO2lCQUNPb0g7VUFDRixHQVpENUMsU0FZQyxxQkFYRDJFO1lBR1k7YUFBVjZZO2NBQVUsVUFBZCxxQkFIRTdZO1lBR1ksd0JBSFpBLFlBR0U2WTthQUMwQjtZQURoQixJQUVWQyxRQUFVLE9BRlZEO1lBR0osS0FORTdZLFNBS0U4WSxVQU5GemQ7WUFPRixTQURJeWQ7VUFPRCxlQVpEOVksT0FEQTNFLEtBV0c0QztVQUVGO2tCQUNNO1FBZkZwSDtNQVdULFdBVEltSixTQURBM0UsS0FnQlM7SUE1WEgsU0E0c0JKMGQsTUFuVGlCbGMsRUFBRWhHLEdBR2IscUNBSFdnRyxFQUFFaEcsR0FHYTtJQTVaNUIsa0JBOFpDZ0csRUFBRWhHLEdBQ1osc0JBRFVnRyxFQUFFaEcsY0FDa0Q7SUEvWnJELHVCQWlhTWdHLEVBQUVoRyxHQUViLHdCQUZXZ0csRUFBRWhHLEVBRUk7SUFuYVosdUJBcWFNZ0csRUFBRWhHLEdBQ2dCLHFDQURsQmdHLEVBQUVoRyxHQUVJO0lBdmFaLHNCQXlhS2dHLEVBQUVoRyxHQUNoQix3QkFEY2dHLEVBQUVoRyxjQUNvRDtJQTFhM0Qsc0JBNGFLZ0csRUFBRWhHLEdBQ2hCLHdCQURjZ0csRUFBRWhHLGNBQ29EO0lBN2EzRCxzQkErYUtnRyxFQUFFaEcsR0FDaEIscUJBRGNnRyxFQUFFaEcsY0FDb0Q7SUFoYjNELHNCQWtiS2dHLEVBQUVoRyxHQUVaLHdCQUZVZ0csRUFBRWhHLEVBRUk7SUFwYlgsc0JBc2JLZ0csRUFBRWhHLEdBQ21DLHdCQUFsQixpQkFEbkJnRyxFQUFFaEcsR0FFSTtJQXhiWCxzQkEwYktnRyxFQUFFaEcsR0FFWix3QkFGVWdHLEVBQUVoRyxFQUVJO0lBNWJYLHNCQThiS2dHLEVBQUVoRyxHQUNtQyx3QkFBbEIsaUJBRG5CZ0csRUFBRWhHLEdBRUk7SUFoY1gsU0F5ckJObWlCLE1BbFBtQm5jLEVBQUVoRyxFQUFFNkUsR0FHM0Isd0JBSHVCbUIsRUFBRWhHLEVBR3pCLGFBSDJCNkUsR0FHUTtJQTFjekIsc0JBNGNLbUIsRUFBRWhHLEVBQUU2RSxHQUVkLHdCQUZVbUIsRUFBRWhHLEVBQUU2RSxFQUVJO0lBOWNiLHNCQWdkS21CLEVBQUVoRyxFQUFFNkUsR0FDUSx3QkFEWm1CLEVBQUVoRyxFQUNVLGFBRFI2RSxHQUVJO0lBbGRiLHNCQW9kS21CLEVBQUVoRyxFQUFFNkUsR0FFZCx3QkFGVW1CLEVBQUVoRyxFQUFFNkUsRUFFSTtJQXRkYixzQkF3ZEttQixFQUFFaEcsRUFBRTZFO01BQ1Esd0JBRFptQixFQUFFaEcsRUFDMkIsaUJBRHpCNkUsR0FFSTtJQTFkYixzQkE0ZEttQixFQUFFaEcsRUFBRTZFLEdBRWQsd0JBRlVtQixFQUFFaEcsRUFBRTZFLEVBRUk7SUE5ZGIsc0JBZ2VLbUIsRUFBRWhHLEVBQUU2RTtNQUNRLHdCQURabUIsRUFBRWhHLEVBQzJCLGlCQUR6QjZFLEdBRUk7SUFsZWI7YUE0ZUN1ZCxRQUFRNWQsRUFBRWtPLEczQmppQnhCLE9DNEVjK0osVzBCcWRRalksRUFBRWtPLEVBQThDO0lBNWV6RCxTQThmQzJQLGtCQUFrQnJjLEdBQUksY0FBSkEsZ0JBQW1CO0lBOWZ0QyxTQStmQ3NjLGtCQUFrQnRjLEdBQUksY0FBSkEsZ0JBQW9CO0lBL2Z2QyxTQWdnQkN1YyxrQkFBa0J2YyxHQUFJLGNBQUpBLGdCQUFvQjtJQWhnQnZDLFNBaWdCQ3djLGtCQUFrQnhjO01BQUksU0FBSkEsWUFBSSxvQkFBSkEsT0FESSxXQUNvQjtJQWpnQjNDLFNBa2dCQ3ljLGtCQUFrQnpjLEdBQUksY0FBSkEsZ0JBQWtCO0lBbGdCckMsU0F3Z0JDMGMsY0FBY0MsR0FBR0MsR0FBR0M7TUFDL0IsUUFEeUJGLGtCQUFHQyxnQkFBR0MsT0FHZjtJQTNnQk4sU0E2Z0JDQyxjQUFjSCxHQUFHQyxHQUFHQyxHQUFHRTtNQUNsQyxRQUR5QkosaUJBQUdDLGtCQUFHQyxnQkFBR0UsT0FJbEI7SUFqaEJOLHlCQW1oQlEvYyxFQUFFaEc7TUFDWCxzQkFEU2dHLEVBQUVoRyxHQUNYLHlCQURTZ0c7TUFDVCxVQWhCZ0IyYzs7Ozs7O2NBc0NyQixJQUFJcGMsSUF2Qll2RztjQXVCaEIsR0FwQkErRSxNQW9CSXdCLElBQTZCO2NBQWpDLElBQ0lxYyxHQUFLLHNCQXhCSzVjLEVBdUJWTztjQUNtQixxQkFBbkJxYyxJQUE2QztjQURqRCxJQUVJaEIsSUFGQXJiO2NBRUosR0F0QkF4QixNQXNCSTZjLElBQTZCO2NBRmpDLElBR0lpQixHQUFLLHNCQTFCSzdjLEVBeUJWNGI7Y0FDbUIseUJBQW5CaUI7dUJBQTZDO3VCQUN2Qyx3QkExQ1dGLEdBdUNqQkMsR0FFQUM7O2NBR0osSUFBSUcsSUE3QlloakI7Y0E2QmhCLEdBMUJBK0UsTUEwQklpZSxJQUE2QjtjQUFqQyxJQUNJQyxLQUFLLHNCQTlCS2pkLEVBNkJWZ2Q7Y0FDbUIscUJBQW5CQyxNQUE2QztjQURqRCxJQUVJQyxJQUZBRjtjQUVKLEdBNUJBamUsTUE0QkltZSxJQUE2QjtjQUZqQyxJQUdJQyxLQUFLLHNCQWhDS25kLEVBK0JWa2Q7Y0FDbUIscUJBQW5CQyxNQUE2QztjQUhqRCxJQUlJQyxJQUZBRjtjQUVKLEdBOUJBbmUsTUE4QklxZSxJQUE2QjtjQUpqQyxJQUtJTCxHQUFLLHNCQWxDSy9jLEVBaUNWb2Q7Y0FDbUIseUJBQW5CTDt1QkFBNkM7dUJBQ3ZDLHdCQWxEV0osR0E2Q2pCTSxLQUVBRSxLQUVBSjs7Y0FXSixJQUFJTSxLQTdDWXJqQjtjQTZDaEIsR0ExQ0ErRSxNQTBDSXNlLEtBQTZCO2NBQWpDLElBQ0lDLEtBQUssc0JBOUNLdGQsRUE2Q1ZxZDtjQUNtQixxQkFBbkJDLE1BQTZDO2NBRGpELElBRUlDLEtBRkFGO2NBRUosR0E1Q0F0ZSxNQTRDSXdlLEtBQTZCO2NBRmpDLElBR0lDLEtBQUssc0JBaERLeGQsRUErQ1Z1ZDtjQUNtQixxQkFBbkJDLE1BQTZDO2NBSGpELElBSUlDLEtBRkFGO2NBRUosR0E5Q0F4ZSxNQThDSTBlLEtBQTZCO2NBSmpDLElBS0lDLEtBQUssc0JBbERLMWQsRUFpRFZ5ZDtjQUNtQix5QkFBbkJDO3VCQUE2Qzt1QkFDdkMsd0JBbEVXZixHQTZEakJXLEtBRUFFLEtBRUFFOzs7O2NBYkosSUFBSUMsSUFyQ1kzakI7Y0FxQ2hCLEdBbENBK0UsTUFrQ0k0ZSxJQUE2QjtjQUFqQyxJQUNJQyxLQUFLLHNCQXRDSzVkLEVBcUNWMmQ7Y0FDbUIscUJBQW5CQyxNQUE2QztjQURqRCxJQUVJQyxJQUZBRjtjQUVKLEdBcENBNWUsTUFvQ0k4ZSxJQUE2QjtjQUZqQyxJQUdJQyxLQUFLLHNCQXhDSzlkLEVBdUNWNmQ7Y0FDbUIscUJBQW5CQyxNQUE2QztjQUhqRCxJQUlJQyxJQUZBRjtjQUVKLEdBdENBOWUsTUFzQ0lnZixJQUE2QjtjQUpqQyxJQUtJQyxLQUFLLHNCQTFDS2hlLEVBeUNWK2Q7Y0FDbUIseUJBQW5CQzt1QkFBNkM7dUJBQ3ZDLHdCQTFEV3JCLEdBcURqQmlCLEtBRUFFLEtBRUFFOzt1QkF6RGlCckI7WUEwQnJCLElBQUlzQixLQVhZamtCO1lBV2hCLEdBUkErRSxNQVFJa2YsS0FBNkI7WUFBakMsSUFDSUMsS0FBSyxzQkFaS2xlLEVBV1ZpZTtZQUNtQixxQkFBbkJDLE1BQTZDO1lBRGpELElBRUlDLEtBRkFGO1lBRUosR0FWQWxmLE1BVUlvZixLQUE2QjtZQUZqQyxJQUdJQyxLQUFLLHNCQWRLcGUsRUFhVm1lO1lBQ21CLHlCQUFuQkM7cUJBQTZDO3FCQUN2Qyx3QkE5Qld6QixHQTJCakJ1QixLQUVBRTs7UW5CdEVGO1VtQnlFRixJQUFJQyxJQWpCWXJrQjtVQWlCaEIsR0FkQStFLE1BY0lzZixJQUE2QjtVQUFqQyxJQUNJQyxLQUFLLHNCQWxCS3RlLEVBaUJWcWU7VUFDbUIscUJBQW5CQyxNQUE2QztVQURqRCxJQUVJQyxJQUZBRjtVQUVKLEdBaEJBdGYsTUFnQkl3ZixJQUE2QjtVQUZqQyxJQUdJQyxLQUFLLHNCQXBCS3hlLEVBbUJWdWU7VUFDbUIseUJBQW5CQzttQkFBNkM7bUJBQ3ZDLHdCQXBDVzdCLEdBaUNqQjJCLEtBRUFFOztxQkFuQ2lCN0IsSUFvQkgsaUJBcEJHQTs7VUFzQnJCLElBQUk4QixLQVBZemtCO1VBT2hCLEdBSkErRSxNQUlJMGYsS0FBNkI7VUFBakMsSUF0QndCQyxLQXVCZixzQkFSSzFlLEVBT1Z5ZTtVQUNtQix5QkF2QkNDO21CQXVCeUI7bUJBL0MxQ3RDLFdBd0JjTyxnQkFBRytCO01BbUVyQixxQkFBYTtJQXZrQlYseUJBeWtCUTFlLEVBQUVoRyxFQUlsQjBTO01BSEYsU0FBSWlTO1EzQi9uQlA7TTJCK25CRyxJQUNJNWYsSUFESixxQkFEa0JpQjtjQUloQjBNO1FBQ08sU0FEUEE7VUFJTyxVQUpQQTtZQVVPLFdBVlBBO2NBaUJPLGFBakJQQSxFQXlCSztjQVBILElBQUlrUyxLQXRCWTVrQjtjQXNCaEIsT0FwQkErRSxNQW9CSTZmOzt3QkFFSCxlQXhCYTVlLEVBQUVoRyxRQUlsQjBTO3dCQXFCRyxJQXpCYTFNLEVBQUVoRyxpQkFJbEIwUzt3QkFzQkcsSUExQmExTSxFQUFFaEcsaUJBSWxCMFM7d0JBdUJHLElBM0JhMU0sRUFzQlY0ZSxXQWxCTmxTOztZQVdFLElBQUltUyxPQWZZN2tCO1lBZWhCLE9BYkErRSxNQWFJOGY7O3NCQUVILGVBakJhN2UsRUFBRWhHLFFBSWxCMFM7c0JBY0csSUFsQmExTSxFQUFFaEcsaUJBSWxCMFM7c0JBZUcsSUFuQmExTSxFQWVWNmUsYUFYTm5TOztVQUtFLElBQUlvUyxPQVRZOWtCO1VBU2hCLE9BUEErRSxNQU9JK2Y7O29CQUVILGVBWGE5ZSxFQUFFaEcsUUFJbEIwUztvQkFRRyxJQVphMU0sRUFTVjhlLGFBTE5wUzs7UUFFRSxlQU5jMU0sRUFBRWhHLEVBSWxCMFM7UUFFRTtNQUZjLDRCQXlCQztJQXRtQlQsd0JBeW1CTzFNO01BQWpCLDZCQUFpQkEsV0FBRWhHO01BQ2pCO1dBRFcrRSxNQUFNL0UsRUFDRDtRQUVNLGdDQUhQZ0csRUFBRWhHO1FBR0s7Ozs7OztnQkF1QmxCLElBQUk0a0IsS0ExQlM1a0I7Z0JBNkJWOzttQkE3QkkrRSxNQTBCSDZmOzs7a0JBRUQsa0JBQWtCLHNCQTVCVjVlLEVBQUVoRzs7O2tCQTZCVixrQkFBa0Isc0JBN0JWZ0csRUEwQlA0ZTtrQkFLQyxRQUxEQSxhQTFCUzVrQjtnQkE4QlI7O2dCQUdMLElBQUk4a0IsT0FqQ1M5a0I7Z0JBcUNWOzttQkFyQ0krRSxNQWlDSCtmOzs7a0JBRUQsa0JBQWtCLHNCQW5DVjllLEVBQUVoRzs7O2tCQW9DVixrQkFBa0Isc0JBcENWZ0csRUFBRWhHOzs7a0JBcUNWLGtCQUFrQixzQkFyQ1ZnRyxFQWlDUDhlO2tCQU1DLFFBTkRBLGVBakNTOWtCO2dCQXNDUjs7Z0JBV0wsSUFBSStrQixPQWpEUy9rQjtnQkFxRFY7O21CQXJESStFLE1BaURIZ2dCOzs7a0JBRUQsa0JBQWtCLHNCQW5EVi9lLEVBQUVoRzs7O2tCQW9EVixrQkFBa0Isc0JBcERWZ0csRUFBRWhHOzs7a0JBcURWLGtCQUFrQixzQkFyRFZnRyxFQWlEUCtlO2tCQU1DLFFBTkRBLGVBakRTL2tCO2dCQXNEUjs7OztnQkFiTCxJQUFJZ2xCLE9BekNTaGxCO2dCQTZDVjs7bUJBN0NJK0UsTUF5Q0hpZ0I7OztrQkFFRCxrQkFBa0Isc0JBM0NWaGYsRUFBRWhHOzs7a0JBNENWLGtCQUFrQixzQkE1Q1ZnRyxFQUFFaEc7OztrQkE2Q1Ysa0JBQWtCLHNCQTdDVmdHLEVBeUNQZ2Y7a0JBTUMsUUFOREEsZUF6Q1NobEI7Z0JBOENSOzs7Y0FsQ0wsSUFBSWlsQixPQVpTamxCO2NBZVY7O2lCQWZJK0UsTUFZSGtnQjs7O2dCQUVELGtCQUFrQixzQkFkVmpmLEVBQUVoRzs7O2dCQWVWLGtCQUFrQixzQkFmVmdHLEVBWVBpZjtnQkFLQyxRQUxEQSxlQVpTamxCO2NBZ0JSOztVbkI5Skw7WW1CaUtBLElBQUk2a0IsT0FuQlM3a0I7WUFzQlY7O2VBdEJJK0UsTUFtQkg4Zjs7O2NBRUQsa0JBQWtCLHNCQXJCVjdlLEVBQUVoRzs7O2NBc0JWLGtCQUFrQixzQkF0QlZnRyxFQW1CUDZlO2NBS0MsUUFMREEsZUFuQlM3a0I7WUF1QlI7OytCQW5CYSxRQUpMQTs7WUFNYixJQUFJa2xCLE9BTlNsbEI7WUFRVjs7ZUFSSStFLE1BTUhtZ0I7OztjQUVELGtCQUFrQixzQkFSVmxmLEVBTVBrZjtjQUlDLFFBSkRBLGVBTlNsbEI7WUFTUjtRQStDRixTQUVjO0lBbnFCYiw0QkF1cUJXZ0csRUFBRWhHO01BQ3ZCLElBQ0krRSxJQURKLHFCQURxQmlCO2NBQUVoRyxRQUVuQitFLE1BRm1CL0U7UUFJdkIsR0FKdUJBLE1BRW5CK0UsSUFFWTtRQUNWLElBR0pvZ0IsR0FISSxNQUxlbmYsRUFBRWhHO29CQVFyQm1sQjtVQURPLFdBQ1BBLEdBRHFCO1VBRW5CLElBQUlQLEtBVGU1a0I7VUFTbkIsR0FQQStFLE1BT0k2ZixLQUNlLG9CQVJuQjdmLE1BRm1CL0U7VUFTbkIsSUFHRTBTLEVBREksTUFYVzFNLEVBQUVoRztzQkFZakIwUztZQUVFLElBQUlDLE1BTlZ3UyxtQkFJSXpTO1lBRUUsaUJBQUlDO1VBRjZCO1FBTkosaUJBRW5Dd1M7TUFMdUIsMkNBWU47SUF0ckJULDRCQXdyQlduZixFQUFFaEcsRUFLckIwUztNQUpGLElBQ0kzTixJQURKLHFCQURxQmlCO2NBQUVoRyxRQUVuQitFLE1BRm1CL0U7Z0JBS3JCMFM7VUFDTyxXQURQQTtZQUlPLGFBSlBBLEVBV0s7WUFOSCxJQUFJa1MsS0FWZTVrQjtZQVVuQixHQVJBK0UsTUFRSTZmLEtBQ2U7WUFEbkI7YUFFQSxJQVBGbFM7YUFPRSxXQUFJQzthQUFKLFdBQUlBO1lBR0osTUFmaUIzTSxFQUFFaEcsRUFhZm1sQjtZQUVRLE1BZktuZixFQUFFaEcsVUFjZm9sQjtZQUNRO1VBUlosSUFBSVAsT0FQZTdrQjtVQU9uQixPQUxBK0UsTUFLSThmLFVBQ3VCLE1BUlY3ZSxFQUFFaEcsRUFLckIwUztRQUFnQjtNQUZPLDZDQWFOO0lBeHNCVCwyQkEyc0JPMU07TUFBakIsNkJBQWlCQSxXQUFFaEc7TUFDakI7V0FEVytFLE1BQU0vRSxFQUVEO1FBQ2hCLEdBSGlCQSxNQUFOK0UsSUFHSztRQUNWLElBRUoyTixFQUZJLE1BSlMxTSxFQUFFaEc7b0JBTWYwUztVQUFPLFdBQVBBLEVBQXFCO1VBRW5CLElBQUlrUyxLQVJTNWtCO1VBUWIsR0FSTytFLE1BUUg2ZixLQUNlO1VBRG5CLElBR0VqUyxJQURJLE1BVkszTSxFQUFFaEc7c0JBV1gyUztZQUNPLFFBWkkzUztVQVd3QjtRQVBuQyxJQUMrQixJQUxwQkE7aUJBY0k7SUF6dEJiLDRCQTZ0QldnRyxFQUFFaEc7TUFDdkIsSUFDSStFLElBREoscUJBRHFCaUI7Y0FBRWhHLFFBRW5CK0UsTUFGbUIvRTtRQUl2QixHQUp1QkEsTUFFbkIrRSxJQUVZO1FBQ1YsSUFHSm9nQixHQUhJLGlCQUxlbmYsRUFBRWhHO29CQVFyQm1sQjtVQURPLFdBQ1BBLEdBRHFCO1VBRW5CLElBQUlQLEtBVGU1a0I7VUFTbkIsR0FQQStFLE1BT0k2ZixLQUNlLG9CQVJuQjdmLE1BRm1CL0U7VUFTbkIsSUFHRTBTLEVBREksaUJBWFcxTSxFQUFFaEc7c0JBWWpCMFM7WUFFRSxJQUFJQyxNQU5Wd1MsbUJBSUl6UztZQUVFLGlCQUFJQztVQUY2QjtRQU5KLGlCQUVuQ3dTO01BTHVCLDZDQVlOO0lBNXVCVCw0QkE4dUJXbmYsRUFBRWhHLEVBS3JCMFM7TUFKRixJQUNJM04sSUFESixxQkFEcUJpQjtjQUFFaEcsUUFFbkIrRSxNQUZtQi9FO2dCQUtyQjBTO1VBQ08sV0FEUEE7WUFJTyxhQUpQQSxFQVdLO1lBTkgsSUFBSWtTLEtBVmU1a0I7WUFVbkIsR0FSQStFLE1BUUk2ZixLQUNlO1lBRG5CO2FBRUEsSUFQRmxTO2FBT0UsV0FBSUM7YUFBSixXQUFJQTtZQUdKLGlCQWZpQjNNLEVBQUVoRyxFQWFmbWxCO1lBRVEsaUJBZktuZixFQUFFaEcsVUFjZm9sQjtZQUNRO1VBUlosSUFBSVAsT0FQZTdrQjtVQU9uQixPQUxBK0UsTUFLSThmLFVBQ3VCLGlCQVJWN2UsRUFBRWhHLEVBS3JCMFM7UUFBZ0I7TUFGTyw2Q0FhTjtJQTl2QlQsMkJBaXdCTzFNO01BQWpCLDZCQUFpQkEsV0FBRWhHO01BQ2pCO1dBRFcrRSxNQUFNL0UsRUFFRDtRQUNoQixHQUhpQkEsTUFBTitFLElBR0s7UUFDVixJQUVKMk4sRUFGSSxpQkFKUzFNLEVBQUVoRztvQkFNZjBTO1VBQU8sV0FBUEEsRUFBcUI7VUFFbkIsSUFBSWtTLEtBUlM1a0I7VUFRYixHQVJPK0UsTUFRSDZmLEtBQ2U7VUFEbkIsSUFHRWpTLElBREksaUJBVkszTSxFQUFFaEc7c0JBV1gyUztZQUNPLFFBWkkzUztVQVd3QjtRQVBuQyxJQUMrQixJQUxwQkE7aUJBY0k7SUEvd0JiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JFYkh3RSxFQUFFNEMsR0FDVCxtQ0FETzVDLEVBQUU0QyxHQUNRO29CQUNWNUMsRUFBRU4sR0FDVCxtQ0FET00sRUFBRU4sR0FDUTtvQkFFVlE7TUFDUCxpQ0FBTyxxQkFEQUEsSUFDYzttQkFHZkEsRUFBRW9ELElBQUlDO01BQ1osZ0NBQU0scUJBREFyRCxHQUFFb0QsSUFBSUMsS0FDZ0I7c0JBc0JuQmdaLElBRVB6YTtNN0IxRUwsRzZCMEVLQTtRQUFLLGlDQUZFeWEsaUJBRVB6YSxFQUFLOzs7OztjQWxCaUI7ZUFLaEJLO2VBTEs5QixpQ0FPa0JtYztlQVBQLGFBQVhuYyxJQUFpQzs7cUJBS3RDOEI7O3FCQURNOzs7VUFnQjhCLGtEQUYxQ0w7Ozs7O29CQVBNMFk7Z0JBQ04sd0JBTGlCaUM7Z0JBTWpCO2tCQUdPRixNQVRVRSxVQUtqQixnQ0FMNkJEO2dCQU03QjtpRUFONkJBOzt5QkFJdkJoQzs7Y0FETix3QkFIaUJpQyxRQUdqQjt3Q0FIaUJBO01BVVg7b0JBU0QvYyxFQUFFUTtNQUNULCtCQURTQSxXQUNUOzs7UUFBNkI7cUJBRHRCUixFQUNzQix1QkFEcEJRLEVBQ1QxRTtVQUE2QixTQUE3QkE7OztjQUFvRDtxQkFHNUNrRSxFQUFFUTtNQUNWLCtCQURVQSxXQUNWOzs7UUFBNkI7cUJBRHJCUixFQUNSbEUsRUFBNkIsdUJBRG5CMEUsRUFDVjFFO1VBQTZCLFNBQTdCQTs7O2NBQXNEO21CQUVoRGtFLEVBQUVRO01BQ1Isa0NBRE1SLEVBQ0UscUJBREFRLElBQ2M7b0JBQ2ZSLEVBQUVRO01BQ1QsbUNBRE9SLEVBQ0UscUJBREFRLElBQ2M7MEJBQ1ZSLEVBQUVXLEVBQUU0QztNQUNGLG9CQURGdkQsRUFDRSxxQkFEQVcsR0FBRTRDLEVBQ087eUJBQ1p2RCxFQUFFdUQsRUFBRTVDO01BQ0EsbUJBREpYLEVBQUV1RCxFQUNFLHFCQURBNUMsR0FDTztzQkFDZFgsRUFBRVEsR0FDQSxnQkFERlIsRUFDRSxxQkFEQVEsR0FDTzt1QkFDUlIsRUFBRVEsR0FDQSxpQkFERlIsRUFDRSxxQkFEQVEsR0FDTzthQU1qQjJnQjtNQUFXOzs7OztNckJzYVAsbUJxQnBhTTtvQkFFTDNnQjtNQUNKLHFCQURJQSxTQUNRLE9BRFJBO01BRThCOztRQUE3QixXQUFILHVCQUZFQTs7O1FBRThCLGtDQUY5QkE7T0FJRixPQUpFQTtNQUdJLGlDQUFRLHFCQUhaQSxJQUlEO3VCQUdtQkE7TUFBekIsNEJBQXlCQSxHQUFJMUU7TUFDM0I7V0FEeUJ3RSxLQUFFeEUsRUFDWixPQURRMEU7UUFFckIsaUNBRnFCQSxFQUFJMUUsR0FFekI7Ozs7O1FyQnlaRTtTcUJ2Wk0sc0NBQVcscUJBSkUwRTtRQUVyQixJQUdPLElBTGtCMUU7aUJBT0U7YUFHekJzbEIsWUFBVTVnQixFQUFFaWQsSUFBSTNoQixFQUFFb0g7TTdCL0gzQixJNkIrSHlCYjtNQUN0QjtXQURrQm9iLE9BQUlwYixJQUNMO1FBQ2pCLDBCQUZnQjdCLEVBQU02QixTQUFFYSxFQUVHLE9BRkxiO1FBRVksUUFGWkE7aUJBRXFDO3FCQUduRDdCLEVBQUUwQyxHQUFJLG1CQUFOMUMsRUFBTSxzQkFBTkEsS0FBRTBDLEVBQThCO2FBR2xDbWUsZ0JBQWM3Z0IsRUFBRWlkLElBQUkzaEIsRUFBRW9IO003QnZJL0IsSTZCdUk2QmI7TUFDMUI7V0FEc0JvYixPQUFJcGIsSUFDVDtRQUNqQiwwQkFGb0I3QixFQUFNNkIsU0FBRWEsRUFFRCxVQUZEYjtRQUVhLFFBRmJBO2lCQUUwQzt5QkFHeEQ3QixFQUFFMEM7TUFBSSx1QkFBTjFDLEVBQU0sc0JBQU5BLEtBQUUwQyxFQUFrQzswQkFHbkMxQyxFQUFFMUUsRUFBRW9IO01BQ2pCLElBQUlkLEVBQUosc0JBRGE1QjtjQUFFMUUsUUFDWHNHLElBRFd0RyxHQUdiLG1CQUhXMEUsRUFDVDRCLEVBRFd0RyxFQUFFb0g7TUFFTSxvREFDSjs4QkFHRjFDLEVBQUUxRSxFQUFFb0g7TUFDckIsSUFBSWQsRUFBSixzQkFEaUI1QjtjQUFFMUUsUUFDZnNHLElBRGV0RyxHQUtqQix1QkFMZTBFLEVBQ2I0QixFQURldEcsRUFBRW9IO01BR25CLG9EQUVxQjthQUdqQm9lLGFBQVc5Z0IsRUFBRTFFLEVBQUVvSDtNN0I3SnhCLEk2QjZKc0JiO01BQ25CO2dCQURtQkE7VUFFbkIsMEJBRmlCN0IsRUFBRTZCLFNBQUVhLEVBRU0sT0FGUmI7VUFFZSxRQUZmQTs7UUFDTCxnQkFDMEM7c0JBRy9DN0IsRUFBRTBDO01BQUksb0JBQU4xQyxFQUFNLHNCQUFOQSxXQUFFMEMsRUFBaUM7MkJBRzlCMUMsRUFBRTFFLEVBQUVvSDtNN0JyS3JCLFM2QnFLbUJwSCw4QkFBRjBFLE1BQUUxRTtPQUlkLG9CQUpZMEUsRUFBRTFFLEVBQUVvSDtNQUVoQixvREFFZ0I7YUFHWnFlLGlCQUFlL2dCLEVBQUUxRSxFQUFFb0g7TTdCNUs1QixJNkI0SzBCYjtNQUN2QjtnQkFEdUJBO1VBRXZCLDBCQUZxQjdCLEVBQUU2QixTQUFFYSxFQUVFLFVBRkpiO1VBRWdCLFFBRmhCQTs7UUFDVCxTQUNtRDswQkFHcEQ3QixFQUFFMEM7TUFBSSx3QkFBTjFDLEVBQU0sc0JBQU5BLFdBQUUwQyxFQUFxQzsrQkFHbEMxQyxFQUFFMUUsRUFBRW9IO003QnBMekIsUzZCb0x1QnBILDhCQUFGMEUsTUFBRTFFO09BSWxCLHdCQUpnQjBFLEVBQUUxRSxFQUFFb0g7TUFFcEIsb0RBRW9COzZCQUdOMUMsRUFBRTFFLEVBQUVvSDtNQUNwQixJQUFJZCxFQUFKLHNCQURnQjVCO2NBQUUxRSxRQUNkc0csSUFEY3RHO09BS2hCO1NBQVcsWUFMRzBFLEVBQ1o0QixFQURjdEcsRUFBRW9ILEdBS1A7OzsrQkFBNEM7O01BRnZELG9EQUU0RDt3QkFHbkQxQyxFQUFFMEMsR0FBSSx1QkFBTjFDLElBQUUwQyxFQUF1Qjs4QkFHbkIxQyxFQUFFMUUsRUFBRW9IO003QnRNeEIsUTZCc01zQnBILDhCQUFGMEUsTUFBRTFFO09BSWpCO1NBQVcsYUFKSTBFLEVBQUUxRSxFQUFFb0gsR0FJUjs7OytCQUEyQzs7TUFGdEQsb0RBRTJEOytCQUUzQzFDO01BQ2xCLDhDQUFrQixxQkFEQUEsSUFDYzsrQkFDZEE7TUFDbEIsOENBQWtCLHFCQURBQSxJQUNjO2dDQUNiQTtNQUNuQiw2Q0FBbUIscUJBREFBLElBQ2M7a0NBQ1pBO01BQ3JCLCtDQUFxQixxQkFEQUEsSUFDYzsyQkFHcEIwYyxPQUFPMWM7TUFDdEI7bUNBRHNCQTtPQUN0Qiw4QkFEZTBjO09BQ2YsS0FDSUUsV0FEQUQ7TUFBSjtZQUVZcmhCO1FBQ1Y7YUFEVUEsTUFEUnNoQixRQUVrQjtVQUNmLDBCQUxlNWMsRUFHVjFFLE9BRUwsdUJBTFFvaEIsT0FHSHBoQjtXQUV5QztVQUM5QyxRQUhLQTs7TUFOWixXQVU0Qjt5QkFHZnVoQixPQUFPN2M7TUFDcEI7bUNBRG9CQTtPQUNwQiw4QkFEYTZjO09BQ2IsS0FBSUYsUUFDQUc7T0FESixVQUVJQztNQUZKO1lBR1l6aEI7UUFDVjthQURVQSxNQUZSd2hCLFFBR2tCO1VBQ2Y7bUNBTmE5YyxFQUdoQitjLE9BQ1F6aEI7O1lBRUwsdUJBTk11aEIsT0FJRHZoQjtXQUVrRDtVQUN2RCxRQUhLQTs7TUFWVixXQWNtQjs2QkFHTCtnQixJQUFJcmM7TUFDcEI7O2tDQURvQkE7T0FDcEIsMkJBRG9CQTtNQUNwQjtZQUVBMUU7UUFDRTtvQ0FKa0IwRSxFQUdwQjFFLE9BSGdCK2dCO1lBSWUsU0FIM0IxYztZQUlLLGdCQUxXSyxFQUdwQjFFLFdBRElzVSxPQUNKdFU7WUFFUyxPQUZUQTs7OztNQUZBLFNBQUlxRTtNQVFKLGdCQVRvQkssSUFFaEI0UCxXQU9ZO3lCQUlKNVA7TUFDWix3Q0FBWSxxQkFEQUEsSUFDYzt5QkFDZEE7TUFDWix3Q0FBWSxxQkFEQUEsSUFDYzswQkFDYkE7TUFDYix1Q0FBYSxxQkFEQUEsSUFDYzs0QkFDWkE7TUFDZix5Q0FBZSxxQkFEQUEsSUFDYzt1QkFJbEJHLEVBQU9DLEdBQVEsMkJBQWZELEVBQU9DLEVBQTBCO3NCQUtuQ0osR0FBSSxxQ0FBSkEsR0FBcUI7dUJBRXBCQSxHQUFJLG9DQUFKQSxHQUFzQjtzQkFFdkJnaEIsR0FBSSxxQ0FBSkEsR0FBcUI7K0JBSVpoaEIsRUFBRTFFO01BQXNCLDRDQUF4QjBFLEdBQUUxRSxFQUErQjs4QkFDbEMwRTtNQUFxQiwyQ0FBckJBLEdBQTRCO2tDQUV4QkEsRUFBRTFFO01BQXlCLCtDQUEzQjBFLEdBQUUxRSxFQUFrQztpQ0FDckMwRTtNQUF3Qiw4Q0FBeEJBLEdBQStCO2tDQUU5QkEsRUFBRTFFO01BQXlCLCtDQUEzQjBFLEdBQUUxRSxFQUFrQztpQ0FDckMwRTtNQUF3Qiw4Q0FBeEJBLEdBQStCO3dCQVN4Q0EsRUFBRTFFLEdBQWUscUNBQWpCMEUsR0FBRTFFLEVBQXdCOzZCQUNyQjBFLEVBQUUxRTtNQUFvQiw2Q0FBdEIwRSxHQUFFMUUsRUFBNkI7NkJBQy9CMEUsRUFBRTFFO01BQW9CLDBDQUF0QjBFLEdBQUUxRSxFQUE2Qjs0QkFDaEMwRSxFQUFFMUU7TUFBbUIseUNBQXJCMEUsR0FBRTFFLEVBQTRCOzRCQUM5QjBFLEVBQUUxRTtNQUFtQix5Q0FBckIwRSxHQUFFMUUsRUFBNEI7NEJBQzlCMEUsRUFBRTFFO01BQW1CLHlDQUFyQjBFLEdBQUUxRSxFQUE0Qjs0QkFDOUIwRSxFQUFFMUU7TUFBbUIsNkNBQXJCMEUsR0FBRTFFLEVBQTRCOzRCQUM5QjBFLEVBQUUxRTtNQUFtQix5Q0FBckIwRSxHQUFFMUUsRUFBNEI7NEJBQzlCMEUsRUFBRTFFO01BQW1CLDZDQUFyQjBFLEdBQUUxRSxFQUE0Qjs0QkFDOUIwRSxFQUFFMUU7TUFBbUIseUNBQXJCMEUsR0FBRTFFLEVBQTRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YUN2UjNDMmxCLHFCQUFjLFFBQUk7YUFDbEJDLHVCQUFnQixRQUFDO2FBQ2pCQyxtQkFBZSxZQUFJO3VCQUZuQkYsU0FDQUMsV0FDQUM7O2FDWUFDLFVBQVVDLEtBQUtqZSxJQUFJQyxJQUFJM0QsRUFBRTRoQjtNL0JoQzlCOzs7UStCZ0NvQmxlOzs7O1FBQUlDOzs7K0JBQVRnZSxRQUFTaGUsV0FBSkQ7T0FHWiwyQ0FIT2llLEtBQUtqZSxJQUFJQyxJQUFJM0QsRUFBRTRoQjtNQUV0QixrREFDcUM7UUFZeENDO2FBQ0FDLFVBQVVILEtBQUtqZTtNL0JoRHBCLFErQmdEb0JBLGdDQUFMaWUsa0JBQUtqZTtPQUdaLDhCQUhPaWUsS0FBS2plO01BRVoseUNBQ3lCO2FBQzVCcWUsV0FBV0osS0FBS2plLEtBQW9CLHNCQUF6QmllLEtBQUtqZSxRQUFzQzthQUV0RHNlLFdBQVdMLEtBQUtqZTtNL0J0RHJCLFErQnNEcUJBLGdDQUFMaWUsa0JBQUtqZTtRQUlOLElBQU5DLElBQU0sdUJBSkNnZSxLQUFLamU7UUFJTiw2QkFKQ2llLGNBSVBoZSxnQkFKWUQ7aUJBTVg7aUJBQ0Esb0NBUE1pZSxLQUFLamU7TUFFYiwwQ0FNRjthQUVEdWUsWUFBWU4sS0FBS2plO01BR1IsdUNBSEdpZSxNQUFLamUsSUFHeUI7Ozs7O09BbkMxQ2dlOztPQXNCQU07T0FVQUM7T0FqQkFKO09BQ0FDO09BSUFDOztJQ2hCYTtvQkFZUjdmLEVBQUVwQztNQUNULFNBRE9vQyxFQUNPO01BQ2QsUUFGT0E7UUFNSSx1QkFOSkEsRUFNYSxXQU5YcEMsTUFNRSxLQU5Kb0MsVUFNSTs7Y0FDVnRHO1VBQ0U7b0JBREZBLEtBQ21CLFdBUlhrRSxFQU9SbEU7WUFDRSxTQURGQTs7O1FBR0EsT0FKSXVKO01BSlMsa0NBUVY7SUF0QlcsdUJBd0JEK2MsR0FBR0MsR0FBR2hTO01BQ1YsdUJBREkrUixRQUNKLEtBRElBLFdBQ0o7O1lBQ1Z6aEI7UUFDRTtVQUFpQixRQURuQkEsS0FDbUIsZUFIRjBoQixHQUFHaFM7VUFHRCxTQURuQjFQOzs7TUFHQSxPQUpJMEUsR0FJRDtJQTdCWSxnQkFpQ1I5QjtNQUNQLElBQUluQixFQURHbUIsYUFDUCxhQUFJbkIsTUFBd0MsZUFEckNtQixJQUNIbkIsRUFBd0Q7SUFsQzdDLGtCQW9DTnVYLEdBQUdEO01BQ1osSUFBSWhZLEdBREtpWTtNQUNULGFBQUlqWTtlQUNXLE9BRkhnWTs7aUJBR2UsZUFIbEJDLEtBQ0xqWTtpQkFHQywwQkFKSWlZLEdBQUdELEdBSVU7SUF4Q1AsZUEwQ1RuVyxFQUFFSyxJQUFJQztNaEM5RWYsUWdDOEVXRCxZQUFJQyxXQUFOTixlQUFNTSxXQUFKRDtPQUdILHNCQUhDTCxFQUFFSyxJQUFJQztNQUVQLGlDQUNvQjtJQTdDVixnQkErQ1JOLEVBQUVLLElBQUlDLElBQUkzRDtNaENuRnBCLFFnQ21GWTBELFlBQUlDLFdBQU5OLGVBQU1NLFdBQUpEO09BR0osK0JBSEVMLEVBQUVLLElBQUlDLElBQUkzRDtNQUVaLGtDQUN1QjtJQWxEYixnQkFvRFJ5WixHQUFHZ0QsS0FBS2pELEdBQUdrRCxLQUFLL1k7TWhDeEYxQjs7O1FnQ3dGMEJBOzs7O1FBQWI4WTs7O1VBQUhoRCxnQkFBZ0I5VixXQUFiOFk7Ozs7UUFBUUM7OztVQUFIbEQsZ0JBQVE3VixXQUFMK1k7T0FJYiwrQkFKRWpELEdBQUdnRCxLQUFLakQsR0FBR2tELEtBQUsvWTtNQUdsQixrQ0FDK0I7SUF4RHJCLGdCQTBEUjdELEVBQUV1RDtNQUNULFNBRFNBLHFCQUNUOzs7UUFBNkI7cUJBRHRCdkQsRUFBRXVELE1BQ1R6SDtVQUE2QixTQUE3QkE7OztjQUFtRDtJQTNEcEMsaUJBNkRQa0UsRUFBRXVELEVBQUV6QjtNQUNaLEdBRFV5QixpQkFBRXpCO09BRVY7TUFFQSxTQUpReUIscUJBSVI7OztRQUE2QjtxQkFKdkJ2RCxFQUFFdUQsTUFJUnpILEdBSlVnRyxNQUlWaEc7VUFBNkIsU0FBN0JBOzs7Y0FBcUU7SUFqRXhELGVBbUVUa0UsRUFBRXVEO01BQ1IsSUFBSW5CLEVBREltQjtNQUNSLFNBQUluQixFQUNVO01BRGQsSUFFVSxpQkFGTkEsRUFFZSxXQUhicEMsRUFBRXVELE9BR0UsS0FGTm5CLFVBRU07O1lBQ1J0RztRQUNFO2dCQURGQSxLQUNpQixXQUxia0UsRUFBRXVELE1BSU56SDtVQUNFLFNBREZBOzs7TUFHQSxPQUpJcUUsQ0FLSDtJQTNFWSxnQkE2RVJILEVBQUV1RCxFQUFFekI7TUFDWCxPQURTeUIsYUFDVCxHQURXekI7TUFDWCxHQUFJd2dCLE9BQ0FDLEdBRUY7TUFDRyxTQUpERCxHQUthO01BTGpCLElBTVksaUJBTlJBLEdBTWtCLFdBUGZ0aUIsRUFBRXVELEtBQUV6QixPQU9DLEtBTlJ3Z0IsV0FNUTs7WUFDUnhtQjtRQUNFO2dCQURGQSxLQUNpQixXQVRka0UsRUFBRXVELE1BUUx6SCxHQVJPZ0csTUFRUGhHO1VBQ0UsU0FERkE7OztNQUdBLE9BSklxRSxDQU1MO0lBMUZZLGlCQTRGUEgsRUFBRXVEO01BQ1YsU0FEVUEscUJBQ1Y7OztRQUE2QjtxQkFEckJ2RCxFQUNSbEUsRUFEVXlILE1BQ1Z6SDtVQUE2QixTQUE3QkE7OztjQUFzRDtJQTdGdkMsZ0JBK0ZSa0UsRUFBRXVEO01BQ1QsSUFBSW5CLEVBREttQjtNQUNULFNBQUluQixFQUNVO01BRGQsSUFFVSxpQkFGTkEsRUFFZSxXQUhacEMsSUFBRXVELE9BR0MsS0FGTm5CLFVBRU07O1lBQ1J0RztRQUNFO2dCQURGQSxLQUNpQixXQUxaa0UsRUFJTGxFLEVBSk95SCxNQUlQekg7VUFDRSxTQURGQTs7O01BR0EsT0FKSXFFLENBS0g7SUF2R1ksbUJBeUdMb0Q7TUFDVixRQURVQSxxQkFDS3pILE1BQUV1SjtNQUNmO2dCQURhdko7VUFDMEIsYUFGL0J5SCxNQUNLekgsR0FBRXVKLEtBQ3dCLElBRDFCdkosZ0JBQUV1SjtRQUNELE9BRENBLElBRU87SUE1R1QsU0ErR1RvZDs7OztVQUVJOzs7O21CQUFMQzs7UUFERztJQWhITyxpQkFxSGJ0Z0I7TUFGVSxHQUVWQTtRQUNrQztTQUQ5QkssR0FBSkw7O1NBQ2tDLGlCQUFqQixjQURqQkE7O2VBQUlLOzs7Z0JBSU1xWSxjQUFKNkg7WUFBVSxXQUFWQTtZQUFVLDhCQUFON0g7O1VBREUsT0FGTnZYO01BRkEsVUFNSztJQTFIRSxxQkE0SEh2RCxFQUFFVyxFQUFFNEM7TUFDaEIsU0FEYzVDLEdBQ2QsS0FEZ0I0QyxxQkFDaEI7O1lBQ0F6SDtRQUNFO1VBQUssa0JBSEtrRSxFQUNSRyxLQURZb0QsTUFFaEJ6SDtVQUNPLFNBRFBBOzs7TUFHQSxPQUpJcUUsSUFJRjtJQWpJYSx5QkFtSUNILEVBQUVvTyxJQUFJd1U7TUFDdEIsSUFBSS9lLElBRGtCK2U7TUFDdEIsU0FBSS9lLElBQ1ksVUFGRXVLO01BQ2xCO09BRWlCLGlCQUhEcE8sRUFBRW9PLElBQUl3VTtPQUdMOztPQUNJLDRCQUhqQi9lLElBRU9nZjtPQUNVLFNBRGZ4VTtPQUNlLEtBSGpCeEs7T0FHaUI7O1lBRW5CL0g7UUFDRTtVQUFnQjs4QkFQSmtFLEVBS1ZzTyxTQUxnQnNVLGdCQU1wQjltQjtXQUNrQjs7cUJBQVprbkI7VUFFSixpQkFIRmxuQixLQUNZaW5CO1VBQU0sU0FEbEJqbkI7OztNQUtBLFVBTkl3UyxTQURBd1UsYUFRSDtJQS9JWSxzQkFpSkY5aUIsRUFBRXVELEVBQUU1QztNQUNqQixTQURpQkEsR0FDakIsS0FEZTRDO01BQ2Y7WUFDQXpIO1FBQ0U7VUFBSyxrQkFITWtFLEVBQUV1RCxNQUVmekgsR0FESXFFO1VBRUcsU0FEUHJFOzs7TUFHQSxPQUpJcUUsSUFJRjtJQXRKYSxrQkF3Sk5pUCxFQUFFN0w7TUFDWCxNQURXQSxhQUVFekg7TUFDWDtXQURXQSxNQURUd0UsRUFFWTtRQUNOLGNBSkQ4TyxFQUFFN0wsTUFFRXpILElBRXFCO1FBQzNCLFFBSE1BO2lCQUlQO0lBOUpTLG1CQWdLTHNULEVBQUU3TDtNQUNaLE1BRFlBLGFBRUN6SDtNQUNYO1dBRFdBLE1BRFR3RSxFQUVZO1FBQ04sY0FKQThPLEVBQUU3TCxNQUVDekgsS0FFcUIsUUFGckJBO1FBR04sU0FDRDtJQXRLUyxvQkF3S0pzVCxFQUFFMU4sR0FBR0M7TUFDaEIsT0FEYUQsY0FDYixHQURnQkM7TUFDaEIsR0FBSWdaLE9BQ0FDLEdBQ2E7TUFGakIsSUFHa0I5ZTtNQUNoQjtXQURnQkEsTUFIZDZlLEdBSWE7UUFDUCxjQU5DdkwsRUFBRTFOLE9BSUs1RixHQUpGNkYsT0FJRTdGO1VBRW1DLFFBRm5DQTtRQUdYLFNBQ0Q7SUFoTFMsbUJBa0xMc1QsRUFBRTFOLEdBQUdDO01BQ2YsT0FEWUQsY0FDWixHQURlQztNQUNmLEdBQUlnWixPQUNBQyxHQUNhO01BRmpCLElBR2tCOWU7TUFDaEI7V0FEZ0JBLE1BSGQ2ZSxHQUlhO1FBQ1AsY0FOQXZMLEVBQUUxTixPQUlNNUYsR0FKSDZGLE9BSUc3RixJQUVtQztRQUM5QyxRQUhXQTtpQkFJWjtJQTFMUyxlQTRMVDZFLEVBQUU0QztNQUNSLE1BRFFBLGFBRUt6SDtNQUNYO1dBRFdBLE1BRFR3RSxFQUVZO1FBQ2tCLHNCQUoxQmlELE1BRUt6SCxHQUZQNkUsR0FJd0M7UUFDdkMsUUFITTdFO2lCQUlQO0lBbE1TLGdCQW9NUjZFLEVBQUU0QztNQUNULE1BRFNBLGFBRUl6SDtNQUNYO1dBRFdBLE1BRFR3RSxFQUVZO1FBQ0QsR0FKUkssTUFBRTRDLE1BRUl6SCxHQUV3QjtRQUM5QixRQUhNQTtpQkFJUDtJQTFNUyxvQkE0TUpzVCxFQUFFN0w7TUFDYixNQURhQSxhQUVBekg7TUFDWDtXQURXQSxNQURUd0UsRUFFWTtRQUVKLElBQUpLLEVBTEs0QyxNQUVBekg7UUFJTixjQU5Jc1QsRUFLSHpPLEdBQ1EsVUFEUkE7UUFBSSxJQUVILElBTEk3RTtpQkFPUDtJQXJOUyxvQkF1TkprRSxFQUFFdUQ7TUFDYixNQURhQSxhQUVBekg7TUFDWDtXQURXQSxNQURUd0UsRUFFWTtRQUVOLElBRUpILEVBRkksV0FMQ0gsRUFBRXVELE1BRUF6SDtRQUdILEdBRUpxRSxFQUFlLE9BQWZBO1FBRkksSUFDSSxJQUpEckU7aUJBT1A7SUFoT1MsaUJBa09QNkU7TUFDTCxjQURLQSxPQUNTO01BQ1o7YUFGR0E7T0FFSDs7U0FGR0E7T0FLRSxpQkFESkwsRUFEQTJpQjtPQUdJLGlCQUZKM2lCLEVBREltZTtPQUdBLEtBRkpuZTtPQUVJOztZQUNSeEU7UUFDRTtzQkFSSTZFLE1BT043RSxHQUNFO1VBQ0EsTUFGRkEsS0FDTXFuQjtVQUVKLE1BSEZybkIsS0FDVW9uQjtVQUFSLFNBREZwbkI7OztNQUtBLFVBUEl5SCxFQUNBekIsRUFPSDtJQS9PWSxtQkFpUEx5QixFQUFFekI7TUFDWixPQURVeUIsYUFDVixHQURZekI7TUFDWixHQUFJc2hCLE9BQ0FDLEdBQ2E7TUFBMkIsU0FGeENELEdBR1c7TUFIZixJQUtVLGlCQUxOQSxNQURNN2YsS0FBRXpCLE9BTUYsS0FMTnNoQixXQUtNOztZQUNSdG5CO1FBQ0U7VUFBZ0IsTUFEbEJBLFFBUFF5SCxNQU9SekgsR0FQVWdHLE1BT1ZoRztVQUNrQixTQURsQkE7OztNQUdBLE9BSkk2RSxDQUtIO0lBNVBZO2tCQStQUnVQLElBQUkzTTtNQUNYLFNBQUkrZixPQUFPbGhCLEVBQUV0RztRQUNYLFVBRFdBLDRCQUNYLEtBQUl5bkI7UUFBSixJQUFJQSxlQURLbmhCO1VBR1MsU0FGZG1oQixZQUdpQixzQkFMWmhnQjtVQUtKLGNBTEEyTSxJQUtJLGlCQUxBM00sRUFFTGdnQjtXQUcwQyxPQUgxQ0E7VUFFYztXQUVoQixLQUpFQTtXQUlnQixzQkFOWGhnQjtXQU1XLEtBSGhCNUM7VUFHQyxjQU5BdVAsSUFNSSxpQkFOQTNNO1dBTW9DLE9BSnpDZ2dCO1VBS0YsT0FKRTVpQjtRQU1GLElBUEU0aUIsZUFES25oQjtVQVF5QixTQVA5Qm1oQixZQU84QixzQkFUekJoZ0I7VUFTUyxzQkFUYjJNLElBU2lCLGlCQVRiM00sRUFFTGdnQjtXQVFHLE9BUkhBO1FBU0csR0FUSEEsTUFES25oQixFQVVjLE9BVG5CbWhCO1FBUzRCLGdCQVZyQnpuQixFQVVxQztNQVZsRCxTQVlRMG5CLFlBQVlwaEIsRUFBRXRHLEVBQUVrTjtRaENoVDNCLElnQ2dUeUIzRztRQUNwQjtVQUFRLElBQUorTixFQUFJLE9BRFVoTyxFQUFFQztVQUVqQixrQkFmRTZOLElBZUUsaUJBZkUzTSxFQWNMNk0sVUFEa0JwSDtZQUdaLDBCQWhCRHpGLEVBY0w2TTtZQUVGLGlCQWhCTzdNLEVBYVdsQjtZQUdWLElBSFVBLElBQ2hCK047O1VBSUssaUJBbEJBN00sRUFhV2xCLGdCQUFFMkc7VUFLYixTQUVMO01BbkJOLFNBcUJJeWEsUUFBUXJoQixFQUFFdEcsRUFBRWtOO1FBQUk7VUFBSSxxQkFBWjVHLEVBQUV0RyxFQUFFa047Ozs7WUFBMkMsSUFBTDNHLFdBQUssaUJBdEJoRGtCLEVBc0IyQ2xCLGdCQUF0QzJHLEVBQTJDO29CQUFTO01BckJwRSxTQXNCUTBhLFdBQVd0aEIsRUFBRXRHO1FoQzFUeEIsSWdDMFR3QnVHO1FBQ25CO1VBQVEsZUFEU0QsRUFBRUMsS0FFWCxzQkF6QkNrQixFQXVCVW1hO1VBRW5CLGlCQXpCU25hLEVBdUJVbEI7VUFDWCxJQURXQTttQkFHTDtNQXpCaEIsU0EyQklzaEIsT0FBT3ZoQixFQUFFdEc7UUFBSTtVQUFJLG9CQUFWc0csRUFBRXRHOzs7Z0NBQXdDLElBQUx1RyxXQUFLLE9BQUxBO29CQUFNO01BM0J0RCxNQURXa0IsYUFDWCxPQXNDSW5CO01BdENKO1lBdUNBK2Q7UUFBb0M7a0JBRGhDL2QsRUFDSitkLElBQWdELGlCQXhDckM1YyxFQXdDWDRjO1VBQW9DLFNBQXBDQTs7O01BdkNBLFNBc0NJL2Q7TUFFSjs7O1FBQ0U7VUFBUTtnQ0ExQ0NtQixFQXlDWGxCO1dBRVUsc0JBM0NDa0I7VUEyQ1QsaUJBM0NTQSxFQXlDWGxCO1VBQ1UsSUFFRSxXQUhaQSxPQVprQnZHO1VBQ2hCO2dCQUFJK25CLFFBRFkvbkI7WUFDaEIsR0FEZ0JBLE1BQ1orbkI7WUFFRDs4QkFoQ0UzVCxJQWdDRSxpQkFoQ0UzTSxFQThCTHNnQixvQkFEY0Q7YUFNVCxpQkFuQ0FyZ0IsRUE2Qk96SCxZQUFFOG5COztjQUlSLDBCQWpDRHJnQixFQThCTHNnQjtjQUdGLGlCQWpDT3RnQixFQTZCT3pIO2NBSWQsT0FIRStuQixZQURZL25CLEVBQ1orbkI7Y0FJeUMsaUJBbENwQ3RnQixVQTZCU3FnQjtZQUNsQixTQVdGdmhCOzs7O01BeENBLGFBc0NJRDtNQU9KO1FBQXVCLHVCQTlDWm1CLFFBOENpQyxzQkE5Q2pDQTtRQThDeUIsaUJBOUN6QkE7UUE4QzRDLGlCQTlDNUNBLFVBOENReUY7UUFBSTs7O2lCQUEwQztJQTdTbEQscUJBaVREa0gsSUFBSTNNO01BQ2xCLFNBQUl1Z0IsTUFBTUMsUUFBUUMsUUFBUUMsS0FBS0MsUUFBUUMsUUFBUXBILElBQUlxSDtRQUNqRDtlQURRTCxVQUFRQztTQUNoQixNQUQ2QkUsVUFBUUM7U0FrQkcsc0JBbEJoQkYsS0FBS0M7U0FrQmIsc0JBbkJBM2dCLEVBQ1J3Z0I7U0FFS1UsR0FGTFY7U0FFUXZpQjtTQUFHa2pCLEdBRlVSO1NBRVB6aUI7U0FBRzJXLEVBRndCZ007UUFHL0M7VUFBRyxrQkFKT2xVLElBR0kxTyxHQUFNQztZQVNsQixpQkFYeUNzYixJQUVwQjNFLFlBQUgzVztZQVNsQixJQUNJa2pCLEtBVldEO1lBU2YsR0FDSUMsT0FYMEJMO2NBYTVCO21CQVptQmxNO2VBWUwsc0JBZEk2TCxLQVloQlU7ZUFWV0QsR0FVWEM7ZUFWY2xqQjtlQUFHMlc7O1lBY25CLGNBakJVN1UsRUFHSGtoQixHQUZnQzFILElBRXBCM0UsVUFEckJpTSxRQUNTSTtVQUVULGlCQUp5QzFILElBRXBCM0UsWUFBVDVXO1VBRVosSUFDSXNqQixLQUhLTDtVQUVULEdBQ0lLLE9BSkpUO1lBTUU7aUJBTG1Cak07YUFLWCxzQkFSRTdVLEVBTVJ1aEI7YUFIS0wsR0FHTEs7YUFIUXRqQjthQUFTNFc7O1VBT25CLGNBVGtCNkwsS0FFTFMsR0FGMEIzSCxJQUVwQjNFLFVBRFNrTSxRQUNmSSxRQWdCK0M7TUFsQnBFLFNBb0JJTyxRQUFRQyxPQUFPbkksSUFBSXFILE9BQU92Z0I7UUFDNUIsU0FENEJBLFlBQzVCOzs7O1VBQ0U7O2tCQUZRcWhCLFNBQ1ZwcEI7YUFDVSxtQkF2Qk15SDthQXVCTixNQUZXNmdCLFNBQ3JCdG9COztpQkFEcUJzb0IsVUFHZmhVOztnQkFDbUIsa0JBekJiRixJQXlCaUIsaUJBSlo2TSxvQkFFWC9UO2tCQUdGO3dCQUZFb0g7bUJBRWUsc0JBTEoyTTttQkFLSSxLQUZmM007a0JBRUYsaUJBTGEyTTtrQkFLYjs7Y0FHRixTQUxJM007Y0FLSixpQkFSZTJNLHNCQUVYL1Q7Y0FNSixTQVBGbE47Ozs7Z0JBUUk7TUE3Qk4sU0ErQlFxcEIsT0FBT0QsT0FBT25JLElBQUlxSCxPQUFPdmdCO1FBQy9CLEdBRCtCQSxTQUNULGVBRFRxaEIsT0FBT25JLElBQUlxSCxPQUFPdmdCO1FBQzBCLE9BRDFCQSxZQUMwQixHQUQxQkEsTUFFekJuQztRQUVKLE9BSld3akIsU0FFUHhqQixPQUZjcWIsSUFBSXFILFNBRWxCMWlCLE9BQ0FDO1FBRUosT0FMV3VqQixPQWhDRzNoQixFQWdDSDJoQixTQUdQdmpCLE9BREFEO1FBR0osYUFMV3dqQixTQUdQdmpCLE9BREFELEdBRmNxYixJQUFJcUgsU0FFbEIxaUIsT0FDQUMsR0FIY29iLElBQUlxSCxPQU9yQjtNQXRDTCxJQXdDSWhpQixFQXpDY21CO01BQ2xCLEdBd0NJbkIsT0FDZ0IsaUJBMUNGbUIsSUF5Q2RuQjtNQXhDSjtPQXlDeUMsR0FEckNBO09BQ3FDLEdBRHJDQSxJQUVFVjtPQUVJLGlCQURKQyxHQUNZLGlCQTdDQTRCO01BOENoQixPQUhJN0IsR0FFQW9MLElBREFuTDtNQUdKLFNBL0NnQjRCLEVBNENaNUIsR0FEQUQ7TUFJSixhQUhJQyxHQURBRCxHQUVBb0wsSUFEQW5MLEdBNUNZNEIsSUFpRGY7SUFsV1ksa0JBeVdOQTtNQUNULFNBQVFnWSxJQUFJemY7UUFDVixHQURVQSxJQURIeUg7VUFJRyxNQUpIQSxNQUNHekgsR0FHQSxLQUhBQTtVQUlLLFVBRFQ2RSxpQmhDalpYLE9nQzhZVzRhO1FBS0QsUUFBTztNQUxkOzRCaEM5WUgsT2dDOFlXQSxlQU9IO0lBalhVLG1CQW1YTGhZO01BQ1YsU0FBUWdZLElBQUl6ZjtRQUNWLEdBRFVBLElBREZ5SDtVQUlFLE1BSkZBLE1BQ0V6SCxHQUdBLEtBSEFBO1VBSVMsYUFKVEEsRUFHSjZFLGtCaEMzWlgsT2dDd1pXNGE7UUFLRCxRQUFPO01BTGQ7NEJoQ3haSCxPZ0N3WldBLGVBT0g7SUEzWFUsa0JBd1lONEU7TUFDVCxXQUFRLHFCQUFtQi9SLElBQUl6TixHQUFLLFVBQUxBLEVBQUp5TixJQUFlLE9BRGpDK1I7TUFYTyxHQUVkL2Q7UUFDWTtTQURSSyxHQUFKTDs7U0FDWSxrQkFEWkE7U0FFVSxpQkFESnlCLElBRE5uQjtTQUVVLElBREptQjs7ZUFERnBCOzs7Z0JBS01xWSxjQUFKNkg7WUFBVSxXQUFWQTtZQUFVLDhCQUFON0g7O1VBREUsT0FGTnZYO01BSEEsVUFZSztJQTFZRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRcEJSYjZoQixVQUNBQyxTQUNBQzthQUlBQyxVQUFXNWtCLEdBQVksT0FBWkEsZUFBdUI7YUFDbEM2a0IsWUFBYTdrQixHQUFZLFlBQVpBLFdBQXdCO2FBQ3JDOGtCLE9BQVE5a0IsR0FBWSxPQUFaQSxVQUFrQjtRQUUxQitrQjthQXlFQUMsV0FBV2hsQjtNQUFRLFNBQVJBLEtBQVEseUJBQVJBO01BQVEsWUE3RW5CNGtCLFVBNkVXNWtCLE9BQThCO2FBS3pDaWxCLE9BQUtqbEIsR0FBSSw0QkFBSkEsRUFyRkxLLFNBcUY4QjthQUM5QjZrQixPQUFLbGxCLEdBQUksNEJBQUpBLEVBckZMTSxhQXFGa0M7YUFjbEM2a0IsU0FBTW5sQixFQUFFQyxHQUFJLGdDQUFORCxFQUFFQyxNQUFtQjthQUVsQm1sQixNQUFLcGxCLEVBQVdDO01BQzNCLE1BRGdCRCxJQUFXQzs7UUFDSyxHQUFoQixtQkFEV0EsUUFDSyxtQkFEaEJEO1FKMllWLFlJeFlFLE9BSFFBLFNBQVdDO01BRXRCLE9BRnNCQSxTQUFYRCxDQUdjO2FBRW5CcWxCLE1BQUtybEIsRUFBV0M7TUFDM0IsTUFEZ0JELElBQVdDOztRQUNLLEdBQWhCLG1CQURXQSxRQUNLLG1CQURoQkQ7UUpzWVYsWUluWUUsT0FIbUJDLFNBQVhEO01BRVgsT0FGV0EsU0FBV0MsQ0FHRzthQUVuQnFsQixRQUFTdGxCLEVBQVdDO01BQ2hCLEdBREtELFVBQVdDO1FBRTFCLE1BRmVELElBQVdDOztVQUVNLEdBQWhCLG1CQUZVQSxRQUVNLG1CQUZqQkQ7VUppWWQsWUkvWDRELFVBRm5DQyxFQUFYRDtRQUVrQyxVQUZsQ0EsRUFBV0M7TUFDRixVQS9HM0JNLFFBZ0hzRTthQUU3RGdsQixRQUFTdmxCLEVBQVdDO01BQy9CLE1BRG9CRCxJQUFXQzs7UUFDQyxHQUFoQixtQkFEZUEsUUFDQyxtQkFEWkQ7UUo2WGQsWUkxWEUsT0FIdUJDLE9BQVhELEVBQVdDO01BRTFCLE9BRmVELE9BQVdDLEVBQVhELENBR1U7YUFFbkJ3bEIsUUFBU3hsQixFQUFXQztNQUMvQixNQURvQkQsSUFBV0M7O1FBQ0MsR0FBaEIsbUJBRGVBLFFBQ0MsbUJBRFpEO1FKd1hkLFlJclhFLE9BSFlBLE9BQVdDLEVBQVhEO01BRWYsT0FGMEJDLE9BQVhELEVBQVdDLENBR0Q7YUFFbkJ3bEIsWUFBYXpsQixFQUFXQztNQUNoQyxHQURxQkQsT0FDUCxVQURrQkM7TUFFM0IsR0FGMkJBLE9BRWIsVUFGRUQ7TUFHbkIsTUFIbUJBLElBQVdDOztRQUdFLEdBQWhCLG1CQUhjQSxRQUdFLG1CQUhiRDtRSm1YbEIsWUloWDJELFVBSDlCQyxFQUFYRDtNQUc4QixVQUg5QkEsRUFBV0MsRUFHbUM7YUFJcEV5bEIsT0FBSzFsQixHQUFJLDBCQUFKQSxFQUFnQzthQWFuQzJsQixZQUFZL2lCLEVBQUVLLElBQUlDLElBQUkzRDtNQUN4QixVQURnQjBELE1BQUlDO01BQ3BCLGFBRGdCRDtZQUNoQjlILEVBRGdCOEg7UUFDZ0I7Z0JBQWhDOUgsS0FEd0JvRTtVQUNRLFNBQWhDcEU7OztNQWRTLFFBYzRDO2FBS25EeXFCLE1BQU1oakIsRUFBRUssSUFBSUMsSUFBSWdJO01BQ2xCLFNBRFVqSTtNQUNWOzs7aUJBRGNDOzs7OztnQkFBSkQsTUFBSUM7d0JBQU5OLGdCQUFFSyxNQUFJQztNQUVaLHdCQUZnQmdJLFNBRUQ7YUFFZjJhLE9BQUtsbUIsRUFBRUo7TUFDSSxJQUFUd00sT0FBUyx1QkFETnBNO01BRVAsWUFESW9NLFNBREdwTSxFQUFFSjtNQUVULE9BREl3TSxNQUVFO2FBRUorWixPQUFLcmtCLEVBQUVwQztNQUNULFFBRE9vQztRQUdLLCtCQUhMQSxHQUdLLEtBSExBLFVBR0s7O2NBQ1Z0RztVQUNFO29CQURGQSxLQUNtQixXQUxaa0UsRUFJUGxFO1lBQ0UsU0FERkE7OztRQUdBLE9BSkl1SjtNQUZRLHdDQU1UO2FBRUhxaEIsU0FBTy9NLEdBQUdEO01BQ1o7VUFEU0M7T0FDVCxHQURZRDtPQUdDLDhCQUZUaFksS0FDQUM7TUFFSixxQkFKU2dZLEtBR0xqTixTQUZBaEw7TUFJSixxQkFMWWdZLEtBR1JoTixPQUZBaEwsR0FDQUM7TUFHSixPQUZJK0ssTUFHRTthQVVKaWEsU0FBT3ZrQjs7OztVQU5UO1dBSVFLO1dBQU5DO1dBTFcvQixFQUtYK0I7V0FKRixhQURhL0IsSUFDUzs7aUJBSWQ4Qjs7UUFJUix1Q0FDYXNXLElBSEozVyxFQUdNdEc7UUFDYjthQURXaWQ7Z0JBR0grQixLQUhHL0IsT0FHVDRKLEtBSFM1SixPQUlMNk4sS0FESmpFO1lBRUEscUJBRkFBLE9BSkFqVyxPQUNXNVEsRUFJUDhxQjtZQUNKLFFBTFc5cUIsSUFJUDhxQixTQUpLN04sSUFHSCtCLEtBSEtoZjs7VUFFTCxHQUZLQSxpQkFEWDRRO3dDQVVFO2FBRUptYSxNQUFJdGpCLEVBQUVLLElBQUlDO01BQ1osTUFETU4sRUFBRUssSUFBSUM7TUFFQyxJQUFUNkksT0FBUyx1QkFGRDdJO01BR1oscUJBSE1OLEVBQUVLLElBRUo4SSxTQUZRN0k7TUFHWixPQURJNkksTUFFRTthQUVKb2EsT0FBS3ZqQjtNQUNQLE1BRE9BLGFBRVAsOEJBREluQjtNQUVKLHFCQUhPbUIsSUFFSG1KLFNBREF0SztNQUVKLE9BRElzSyxNQUVFO2FBRUpxYSxPQUFLeGpCLEVBQUVLLElBQUlDLElBQUkzRDtNQUNqQixNQURPcUQsRUFBRUssSUFBSUMsMEJBQ2IsbUJBRE9OLEVBQUVLLElBQUlDLElBQUkzRCxFQUVNO2FBRXJCOG1CLE9BQUtDLElBQUlDLEtBQUtuSyxJQUFJb0ssS0FBS3RqQjtNQUN6QixNQURPb2pCLElBQUlDLEtBQWNyakI7TUFFekIsTUFGZ0JrWixJQUFJb0ssS0FBS3RqQjtNQUd6Qiw0QkFIT29qQixJQUFJQyxLQUFLbkssSUFBSW9LLEtBQUt0akIsSUFHUTthQUUvQnVqQixVQUFRN2pCO01BQ1ksY0FEWkEsNEJaNVBmLE9ZNFBlQSxhQUN5QjthQUVqQzhqQixVQUVhamxCO01BRG9CLGtDQUFmLFNBQ0xBLElBQUZ0RyxJQUFFaWQ7TUFDYjtXQURhQTtjQUdOak0sRUFITWlNLE9BR1h1TyxFQUhXdk87VUFHRCxXQUhEamQsS0FHVHdyQjtVQUFVLFFBSER4ckIsZ0JBQUVpZCxJQUdOak07O1FBREMsT0FITkosT0FNSTthQUdONmEsT0FBS3ZuQixFQUFFdUQ7TUFDVCxTQURTQSxxQkFDVDs7O1FBQTZCO3FCQUR0QnZELEVBQUV1RCxNQUNUekg7VUFBNkIsU0FBN0JBOzs7Y0FBb0Q7YUFHbEQwckIsUUFBTXhuQixFQUFFdUQsRUFBRXpCO01BQ1osR0FEVXlCLGlCQUFFekI7T0FFVjtNQUVBLFNBSlF5QixxQkFJUjs7O1FBQTZCO3FCQUp2QnZELEVBQUV1RCxNQUlSekgsR0FKVWdHLE1BSVZoRztVQUE2QixTQUE3QkE7OztjQUFxRTthQUVyRTJyQixNQUFJem5CLEVBQUV1RDtNQUNSLE1BRFFBLGFBRVIseUJBREluQixHQUNKLEtBRElBLFVBQ0o7O1lBQ0F0RztRQUNFO2dCQURGQSxLQUNpQixXQUpYa0UsRUFBRXVELE1BR1J6SDtVQUNFLFNBREZBOzs7TUFHQSxPQUpJcUUsQ0FJSDthQUVDdW5CLE9BQUsxbkIsRUFBRXVELEVBQUV6QjtNQUNYLE9BRFN5QixhQUNULEdBRFd6QjtNQUNYLEdBQUl3Z0IsT0FDQUMsR0FFRjtNQUhGLElBS1UseUJBTE5ELElBS00sS0FMTkEsV0FLTTs7WUFDUnhtQjtRQUNFO2dCQURGQSxLQUNpQixXQVJaa0UsRUFBRXVELE1BT1B6SCxHQVBTZ0csTUFPVGhHO1VBQ0UsU0FERkE7OztNQUdBLE9BSklxRSxDQUtIO2FBR0R3bkIsUUFBTTNuQixFQUFFdUQ7TUFDVixTQURVQSxxQkFDVjs7O1FBQTZCO3FCQURyQnZELEVBQ1JsRSxFQURVeUgsTUFDVnpIO1VBQTZCLFNBQTdCQTs7O2NBQXNEO2FBRXBEOHJCLE9BQUs1bkIsRUFBRXVEO01BQ1QsTUFEU0EsYUFFVCx5QkFESW5CLEdBQ0osS0FESUEsVUFDSjs7WUFDQXRHO1FBQ0U7Z0JBREZBLEtBQ2lCLFdBSlZrRSxFQUdQbEUsRUFIU3lILE1BR1R6SDtVQUNFLFNBREZBOzs7TUFHQSxPQUpJcUUsQ0FJSDthQUdDMG5CLFlBQVU3bkIsRUFBRVcsRUFBRTRDO01BQ2hCLFNBRGM1QyxHQUNkLEtBRGdCNEMscUJBQ2hCOztZQUNBekg7UUFDRTtVQUFLLGtCQUhLa0UsRUFDUkcsS0FEWW9ELE1BRWhCekg7VUFDTyxTQURQQTs7O01BR0EsT0FKSXFFLElBSUY7YUFHQTJuQixhQUFXOW5CLEVBQUV1RCxFQUFFNUM7TUFDakIsU0FEaUJBLEdBQ2pCLEtBRGU0QztNQUNmO1lBQ0F6SDtRQUNFO1VBQUssa0JBSE1rRSxFQUFFdUQsTUFFZnpILEdBRElxRTtVQUVHLFNBRFByRTs7O01BR0EsT0FKSXFFLElBSUY7YUFHQTRuQixTQUFPM1ksRUFBRTdMO01BQ1gsTUFEV0EsYUFFRXpIO01BQ1g7V0FEV0EsTUFEVHdFLEVBRVk7UUFDTixjQUpEOE8sRUFBRTdMLE1BRUV6SCxJQUVxQjtRQUMzQixRQUhNQTtpQkFJUDthQUdKa3NCLFVBQVE1WSxFQUFFN0w7TUFDWixNQURZQSxhQUVDekg7TUFDWDtXQURXQSxNQURUd0UsRUFFWTtRQUNOLGNBSkE4TyxFQUFFN0wsTUFFQ3pILEtBRXFCLFFBRnJCQTtRQUdOLFNBQ0Q7YUFHSm1zQixNQUFJdG5CLEVBQUU0QztNQUNSLE1BRFFBLGFBRUt6SDtNQUNYO1dBRFdBLE1BRFR3RSxFQUVZO1FBQ0UsNEJBSlZpRCxNQUVLekgsR0FGUDZFLEdBSXdDO1FBQ3ZDLFFBSE03RTtpQkFLUDthQUdKb3NCLFNBQVN2bkIsRUFBRTRDO01BQ2IsTUFEYUEsYUFFQXpIO01BQ1g7V0FEV0EsTUFEVHdFLEVBRVk7UUFDRixHQUpISyxLQUFFNEMsTUFFQXpILEdBRXVCO1FBQzdCLFFBSE1BO2lCQUtQOzthQUlKcXNCLE9BQUtqWSxJQUFJM007TUFDWCxTQUFJK2YsT0FBT2xoQixFQUFFdEc7UUFDWCxVQURXQSw0QkFDWCxLQUFJeW5CO1FBQUosSUFBSUEsZUFES25oQjtVQUlKOztjQUxBOE4sSUFLSSxlQUxBM00sRUFFTGdnQixLQUdpQixlQUxaaGdCLEVBRUxnZ0I7OztXQUcwQyxPQUgxQ0E7VUFJQzs7Y0FOQXJULElBTUksZUFOQTNNLEVBR0w1QyxNQUdnQixlQU5YNEMsRUFFTGdnQjs7O1dBSXlDLE9BSnpDQTtVQUtGLE9BSkU1aUI7UUFNYztXQVBkNGlCOztVQURLbmhCOzs7OztXQVFTLFdBVGI4TixJQVNpQixlQVRiM00sRUFFTGdnQixLQU84QixlQVR6QmhnQixFQUVMZ2dCO1NBUUcsT0FSSEE7UUFTRyxHQVRIQSxNQURLbmhCLEVBVWMsT0FUbkJtaEI7UUFTNEIsa0JBVnJCem5CLEVBVXFDO01BVmxELFNBWVEwbkIsWUFBWXBoQixFQUFFdEcsRUFBRWtOO1Faelg3QixJWXlYMkIzRztRQUNwQjtVQUFRLElBQUorTixFQUFJLE9BRFVoTyxFQUFFQztVQUVqQixrQkFmRTZOLElBZUUsZUFmRTNNLEVBY0w2TSxHQURrQnBIO1lBR3BCLGVBaEJPekYsRUFhV2xCLElBR1YsZUFoQkRrQixFQWNMNk0sUUFEZ0IvTixJQUNoQitOO1VBSUssc0JBbEJBN00sRUFhV2xCLElBQUUyRyxHQU9sQjtNQW5CTixTQXFCSXlhLFFBQVFyaEIsRUFBRXRHLEVBQUVrTjtRQUFJO1VBQUkscUJBQVo1RyxFQUFFdEcsRUFBRWtOOzs7O1lBQTJDLElBQUwzRyxXQUFLLHNCQXRCaERrQixFQXNCMkNsQixJQUF0QzJHO29CQUFvRDtNQXJCcEUsU0FzQlEwYSxXQUFXdGhCLEVBQUV0RztRWm5ZMUIsSVltWTBCdUc7UUFDbkI7VUFBUSxJQURXcWIsSUFDWCxPQURTdGIsRUFBRUM7VUFFbkIsZUF6QlNrQixFQXVCVWxCLElBRVgsZUF6QkNrQixFQXVCVW1hO1VBQ1gsSUFEV3JiO21CQUdMO01BekJoQixTQTJCSXNoQixPQUFPdmhCLEVBQUV0RztRQUFJO1VBQUksb0JBQVZzRyxFQUFFdEc7OztrQ0FBd0MsSUFBTHVHLFdBQUssT0FBTEE7b0JBQU07TUEzQnRELE1BRFdrQixhQUNYLE9Bc0NJbkI7TUF0Q0o7WUF1Q0ErZDtRQUFvQztrQkFEaEMvZCxFQUNKK2QsSUFBZ0QsZUF4Q3JDNWMsRUF3Q1g0YztVQUFvQyxTQUFwQ0E7OztNQXZDQSxTQXNDSS9kO01BRUo7OztRQUNFO1VBQVEsSUFiVXdoQixJQWFWLGVBMUNDcmdCLEVBeUNYbEI7VUFFRSxlQTNDU2tCLEVBeUNYbEIsSUFFVSxlQTNDQ2tCO1VBMENELElBRUUsV0FIWmxCLE9BWmtCdkc7VUFDaEI7Z0JBQUkrbkIsUUFEWS9uQjtZQUNoQixHQURnQkEsTUFDWituQjtZQUVELG1CQWhDRTNULElBZ0NFLGVBaENFM00sRUE4QkxzZ0IsUUFEY0Q7YUFNVCxlQW5DQXJnQixFQTZCT3pILEVBQUU4bkI7O2NBSWhCLGVBakNPcmdCLEVBNkJPekgsRUFJTixlQWpDRHlILEVBOEJMc2dCO2NBR0YsT0FIRUEsWUFEWS9uQixFQUNaK25CO2NBSXlDLGVBbENwQ3RnQixJQTZCU3FnQjtZQUNsQixTQVdGdmhCOzs7O01BeENBLGFBc0NJRDtNQU9KO1FBQXVCLElBQUo0RyxFQUFJLGVBOUNaekY7UUE4Q3lCLGVBOUN6QkEsSUE4Q2lDLGVBOUNqQ0E7UUE4Q1ksU0FBZ0MsZUE5QzVDQSxJQThDUXlGOzs7TUF0RGpCLFdBc0QrRDthQUkvRG9mLFlBQVlsWSxJQUFJM007TUFDbEIsU0FBSXVnQixNQUFNQyxRQUFRQyxRQUFRQyxLQUFLQyxRQUFRQyxRQUFRcEgsSUFBSXFIO1FBQ2pEO2VBRFFMLFVBQVFDO1NBQ2hCLE1BRDZCRSxVQUFRQztTQWtCRyxvQkFsQmhCRixLQUFLQztTQWtCYixvQkFuQkEzZ0IsRUFDUndnQjtTQUVLVSxHQUZMVjtTQUVRdmlCO1NBQUdrakIsR0FGVVI7U0FFUHppQjtTQUFHMlcsRUFGd0JnTTtRQUcvQztVQUFHLGtCQUpPbFUsSUFHSTFPLEdBQU1DO1lBU2xCLGVBWHlDc2IsSUFFcEIzRSxFQUFIM1c7WUFTbEIsSUFDSWtqQixLQVZXRDtZQVNmLEdBQ0lDLE9BWDBCTDtjQWE1QjttQkFabUJsTTtlQVlMLG9CQWRJNkwsS0FZaEJVO2VBVldELEdBVVhDO2VBVmNsakI7ZUFBRzJXOztZQWNuQixjQWpCVTdVLEVBR0hraEIsR0FGZ0MxSCxJQUVwQjNFLFVBRHJCaU0sUUFDU0k7VUFFVCxlQUp5QzFILElBRXBCM0UsRUFBVDVXO1VBRVosSUFDSXNqQixLQUhLTDtVQUVULEdBQ0lLLE9BSkpUO1lBTUU7aUJBTG1Cak07YUFLWCxvQkFSRTdVLEVBTVJ1aEI7YUFIS0wsR0FHTEs7YUFIUXRqQjthQUFTNFc7O1VBT25CLGNBVGtCNkwsS0FFTFMsR0FGMEIzSCxJQUVwQjNFLFVBRFNrTSxRQUNmSSxRQWdCK0M7TUFsQnBFLFNBb0JJTyxRQUFRQyxPQUFPbkksSUFBSXFILE9BQU92Z0I7UUFDNUIsU0FENEJBLFlBQzVCOzs7O1VBQ0U7WUFBUTs4QkF2Qk1OLEVBcUJOMmhCLFNBQ1ZwcEI7YUFDVSxNQUZXc29CLFNBQ3JCdG9COztjQUd5QjtnQkFKSnNvQjs7Z0JBR2ZoVTs7OztnQkFDbUIsV0F6QmJGLElBeUJpQixlQUpaNk0sSUFHWDNNLE1BREFwSDtnQkFHRixlQUxhK1QsSUFHWDNNLGFBRWUsZUFMSjJNLElBR1gzTTtnQkFFRjs7Y0FHRixlQVJlMk0sSUFHWDNNLGFBREFwSDtjQU1KLFNBUEZsTjs7OztnQkFRSTtNQTdCTixTQStCUXFwQixPQUFPRCxPQUFPbkksSUFBSXFILE9BQU92Z0I7UUFDL0IsR0FEK0JBLFNBQ1QsZUFEVHFoQixPQUFPbkksSUFBSXFILE9BQU92Z0I7UUFDMEIsT0FEMUJBLFlBQzBCLEdBRDFCQSxNQUV6Qm5DO1FBRUosT0FKV3dqQixTQUVQeGpCLE9BRmNxYixJQUFJcUgsU0FFbEIxaUIsT0FDQUM7UUFFSixPQUxXdWpCLE9BaENHM2hCLEVBZ0NIMmhCLFNBR1B2akIsT0FEQUQ7UUFHSixhQUxXd2pCLFNBR1B2akIsT0FEQUQsR0FGY3FiLElBQUlxSCxTQUVsQjFpQixPQUNBQyxHQUhjb2IsSUFBSXFILE9BT3JCO01BdENMLElBd0NJaGlCLEVBekNjbUI7TUFDbEIsR0F3Q0luQixPQUNnQixpQkExQ0ZtQixJQXlDZG5CO01BeENKLElBeUN5QyxHQURyQ0EsVUFDcUMsR0FEckNBLElBRUVWLE9BRUoseUJBRElDO01BRUosT0FISUQsR0FFQW9MLElBREFuTDtNQUdKLFNBL0NnQjRCLEVBNENaNUIsR0FEQUQ7TUFJSixhQUhJQyxHQURBRCxHQUVBb0wsSUFEQW5MLEdBNUNZNEIsSUFpRGY7YUFLRDhrQixTQUFPOWtCO01BQ1QsU0FBUWdZLElBQUl6ZjtRQUNWLEdBRFVBLElBREh5SDtVQUlHLE1BSkhBLE1BQ0d6SCxHQUdBLEtBSEFBO1VBSUssVUFEVDZFLGlCWnhkYixPWXFkYTRhO1FBS0QsUUFBTztNQUxkOzRCWnJkTCxPWXFkYUEsZUFPSDthQUdIK00sVUFBUS9rQjtNQUNWLFNBQVFnWSxJQUFJemY7UUFDVixHQURVQSxJQURGeUg7VUFJRSxNQUpGQSxNQUNFekgsR0FHQSxLQUhBQTtVQUlTLGFBSlRBLEVBR0o2RSxrQlpuZWIsT1lnZWE0YTtRQUtELFFBQU87TUFMZDs0QlpoZUwsT1lnZWFBLGVBT0g7YUFhSGdOLFNBQU9wSTtNQUNUOztPQUFRLDJCQUFtQi9SLElBQUl6TixHQUFLLFVBQUxBLEVBQUp5TixJQUFlLE9BRGpDK1I7T0FUQyxhQURJdkg7T0FFZCx5QkFESS9VO09BQ0osSUFESUE7O2FBRFUrVTs7O2NBS05uVyxZQUFKQztVQUFVLFdBQVZBO1VBQVUsOEJBQU5EOztRQURFLE9BRk5jLEVBVVM7YUFHWGlsQixhQUFheG9CLEVBQUV1RDtNQUNqQixJQUFJbkIsRUFEYW1CO01BQ2pCLFNBQUluQixFQUNVO01BRGQsSUFFVSxpQkFGTkEsRUFFbUIsV0FIUnBDLEVBQUV1RCxPQUdQLEtBRk5uQixVQUVNOztZQUNSdEc7UUFDRTtnQkFERkEsS0FDdUIsV0FMVmtFLEVBQUV1RCxNQUlmekg7VUFDRSxTQURGQTs7O01BR0EsT0FKSXFFLENBS0g7YUFFRHNvQixlQUFlem9CLEVBQUV1RDtNQUNuQixNQURtQkEsYUFFbkIseUJBREluQixHQUNKLEtBRElBLFVBQ0o7O1lBQ0F0RztRQUNFO2dCQURGQSxLQUNpQixXQUpBa0UsRUFBRXVELE1BR25Cekg7VUFDRSxTQURGQTs7O01BR0EsT0FKSXFFLENBSUg7Ozs7Ozs7c0JaemdCTjs7O09ZMkxPcW1COztPQUtBQztPQVNBQztPQWdCQUM7T0FjQUU7T0FNQUM7T0FNQUM7T0FJQUM7T0FLQUk7T0FHQUM7T0FVQUU7T0FnQ0FJO09BdEJBRjtPQXlCQUc7T0FTQUM7T0FRQUM7T0FoREFOO09BY0FFO09BbURBTTtPQVRBRDtPQWtCQUU7T0FVQUM7T0FXQUM7T0FrREFDOztPQXNEQUM7T0FXQUM7T0FxQkFDO09BS0FDO09BVUFDOzs7Ozs7T0F2ZUZyRDtPQUNBQztPQUNBQztPQXNGQU07T0FDQUM7T0F0RkE3a0I7T0FDQUM7T0FDQUM7T0FLQXdrQjtPQUNBdmtCO09BQ0FDO09BQ0FDO09BUEFra0I7T0FDQUM7T0FDQUM7T0EyRUFFO09BbEVBcGpCO09BQ0FEOztPQXFGQXdqQjtPQUVTQztPQUtBQztPQUtBQztPQUlBQztPQUtBQztPQUtBQztPQU9UQzs7dUJacEtMOzs7UVkyTE9HOztRQUtBQztRQVNBQztRQWdCQUM7UUFjQUU7UUFNQUM7UUFNQUM7UUFJQUM7UUFLQUk7UUFHQUM7UUFVQUU7UUFnQ0FJO1FBdEJBRjtRQXlCQUc7UUFTQUM7UUFRQUM7UUFoREFOO1FBY0FFO1FBbURBTTtRQVRBRDtRQWtCQUU7UUFVQUM7UUFXQUM7UUFrREFDOztRQXNEQUM7UUFXQUM7UUFxQkFDO1FBS0FDO1FBVUFDOzs7UXFCdGRGQyxTQUNBQyxRQUNBQzthQUNBQyxPQUFLdm9CLEdBQUksT0FBSkEsU0FBWTthQUNqQndvQixPQUFLeG9CLEdBQUksT0FBSkEsU0FBWTthQUNqQnlvQixNQUFJem9CLEdBQU8seUJBQVBBLGNBQWdDO1FBQ3BDMG9CLHNCQUNBQzthQUNBQyxTQUFPNW9CLEdBQUksT0FBSkEsTUFBa0I7SUFLVCxTQUhoQjZvQixnQkFJTTdvQjtNQUN3Qjs7YUFBdkIsbUJBRERBOzs7YUFDd0IsaUJBRHhCQTtPQUVBLFVBRkFBO01BSUEsUUFBSTthQVNWOG9CLFlBQVU5b0IsR0FBSSw2QkFBSkEsRUFBaUI7YUFJM0Irb0IsZ0JBQWM3b0I7TUFFaEI7UUFBUywrQkFGT0E7OzsrQkFHRTtRQVBGLFdBT007YUFJcEI4b0IsV0FBUzNvQixFQUFPQyxHQUFRLHdCQUFmRCxFQUFPQyxFQUEwQjthQUMxQzJvQixTQUFPNW9CLEVBQU9DLEdBQVEsOEJBQWZELEVBQU9DLE1BQXVCO2FBRXJDNG9CLGlCQUFpQmxwQixFQUFFbXBCO01BQ2Isd0JBRFducEIsbUJBQUVtcEIsbUJBQ2tCO2FBRXJDQyxNQUFJL29CLEVBQUVDLEdBQVcsc0JBQWJELEVBQUVDLEdBQUZELEVBQUVDLENBQStCO2FBQ3JDK29CLE1BQUlocEIsRUFBRUMsR0FBVyx5QkFBYkQsRUFBRUMsR0FBRkQsRUFBRUMsQ0FBK0I7YUFLckNncEIsYUFBYXRwQixFQUFFOFg7TUFDZCxpQkFEY0EsS0FFWiw2QkFGVTlYLEVBQUU4WCxHQWpEZnVRLE1BREFEO01Bc0RvRCxNQUFILFNBSnBDcG9CLFlBQUU4WCxRQUtQLEVBTEs5WCxJQUtDLFNBRFZ1cEIsRUFKV3pSO01BTVosNkJBRENqWSxFQUxXaVksR0FJWHlSLFdBRTJDO2FBRS9DQyxhQUFheHBCLEVBQUU4WCxHQUNqQixPQURlOVgsSUFDYyxTQUFsQixhQURJQSxFQUFFOFgsU0FDZTs7OztPQTNEOUJzUTtPQUNBQztPQUNBQztPQWdEQWdCO09BUUFFO09BdkRBakI7T0FDQUM7T0FDQUM7T0FFQUU7T0FEQUQ7T0FFQUU7T0FFQUM7T0FxQkFFO09BSkFEO09BV0FFO09BR0FFO09BRkFEO09BS0FHO09BQ0FDOzthL0I1Q0FJLE9BQUt6cEIsR0FBSSxzQkFBSkEsTUFBWTthQUNqQjBwQixPQUFLMXBCLEdBQUksc0JBQUpBLE1BQVk7YUFDakIycEIsTUFBSTNwQjtNQUFPLHlCQUFQQSxTQUEyQix1QkFBM0JBLEVBQWdDO2FBR3BDNHBCLFNBQU81cEIsR0FBSSw4QkFBSkEsTUFBa0I7SUFHYixJQUFWNnBCLFVBQVU7YUFEWkMsa0JBRUU5cEI7TUFDd0I7O2FBQXZCLG1CQWJIakcsT0FZRWlHOzs7YUFDd0IsbUJBRHhCQSxFQURBNnBCO09BR0Esc0NBRkE3cEI7TUFJQSxRQUFJO0lBTE0sU0FRWitwQixZQUFVL3BCLEdBQUksaUNBQUpBLEVBQWlCO0lBUmYsU0FZWmdxQixnQkFBYzlwQjtNQUVoQjtRQUFTLGlDQUZPQTs7OytCQUdFO1FBUEYsV0FPTTtJQWZSLFNBNEJaK3BCLFdBQVM1cEIsRUFBT0MsR0FBUSwwQkFBZkQsRUFBT0MsRUFBMEI7SUE1QjlCLFNBNkJaNHBCLFNBQU83cEIsRUFBT0MsR0FBUSxnQ0FBZkQsRUFBT0MsTUFBdUI7SUE3QnpCLFNBK0JaNnBCLG1CQUFpQm5xQixFQUFFbXBCO01BQ2I7OEJBRFducEIsRUFwQ2pCOUYsV0FxQ3NCLGVBREhpdkIsRUFwQ25CanZCLFdBcUNxQztJQWhDekIsU0FrQ1prd0IsTUFBSS9wQixFQUFFQyxHQUFXLHNCQUFiRCxFQUFFQyxHQUFGRCxFQUFFQyxDQUErQjtJQWxDekIsU0FtQ1orcEIsTUFBSWhxQixFQUFFQyxHQUFXLHlCQUFiRCxFQUFFQyxHQUFGRCxFQUFFQyxDQUErQjtJQW5DekIsU0F3Q1pncUIsZUFBYXRxQixFQUFFOFg7TUFDZCxpQkFEY0EsRUFuRGYvZDtPQXFERywrQkFGVWlHLEVBQUU4WCxHQWxEZjlkLE1BREFEO01BdURvRDs7O1VBQUgsdUJBQXpCLCtCQUpYaUcsS0FBRThYO09BS1AsaUJBTEs5WCxFQUtDLGVBRFZ1cEIsRUFKV3pSO01BTVosK0JBRENqWSxFQUxXaVksR0FNbUIsT0FGOUJ5UixJQUUyQztJQTlDbkMsU0FnRFpnQixlQUFhdnFCLEVBQUU4WDtNQUNqQixzQkFEZTlYLEVBQ2MsZUFBbEIsZUFESUEsRUFBRThYLE1BQ2U7SUFqRGxCOzs7T0FYWi9kO09BQ0FDO09BQ0FDO09BaURBcXdCO09BUUFDO09BeERBZDtPQUNBQztPQUNBQztPQUVBeHZCO09BREFEO09BRUEwdkI7T0FFQUU7T0FhQUU7T0FKQUQ7T0FvQkFFO09BR0FFO09BRkFEO09BS0FFO09BQ0FDO0lBbkNZO1FnQmJaRyxTQUNBQyxRQUNBQzthQUNBQyxPQUFLM3FCLEdBQUksT0FBSkEsU0FBWTthQUNqQjRxQixPQUFLNXFCLEdBQUksT0FBSkEsU0FBWTthQUNqQjZxQixNQUFJN3FCLEdBQU8seUJBQVBBLGNBQWdDO0lBRTFCLDBCQUNBO2FBQ1ZnckIsU0FBT2hyQixHQUFJLE9BQUpBLE1BQWtCO0lBR2IsU0FEWmlyQixrQkFFRWpyQjtNQUN3Qjs7YUFBdkIsbUJBRERBOzs7YUFDd0IsaUJBRHhCQTtPQUVBLFVBRkFBO01BSUEsUUFBSTtJQUxNLFNBUVprckIsWUFBVWxyQixHQUFJLCtCQUFKQSxFQUFpQjtJQVJmLFNBWVptckIsZ0JBQWNqckI7TUFFaEI7UUFBUywrQkFGT0E7OzsrQkFHRTtRQVBGLFdBT007SUFmUixTQW1CWmtyQixXQUFTL3FCLEVBQU9DLEdBQVEsd0JBQWZELEVBQU9DLEVBQTBCO0lBbkI5QixTQW9CWitxQixTQUFPaHJCLEVBQU9DLEdBQVEsOEJBQWZELEVBQU9DLE1BQXVCO0lBcEJ6QixTQXNCWmdyQixtQkFBaUJ0ckIsRUFBRW1wQjtNQUNiLHdCQURXbnBCLG1CQUFFbXBCLG1CQUNrQjtJQXZCekIsU0F5QlpvQyxNQUFJbHJCLEVBQUVDLEdBQVcsc0JBQWJELEVBQUVDLEdBQUZELEVBQUVDLENBQStCO0lBekJ6QixTQTBCWmtyQixNQUFJbnJCLEVBQUVDLEdBQVcseUJBQWJELEVBQUVDLEdBQUZELEVBQUVDLENBQStCO0lBMUJ6QixTQStCWm1yQixlQUFhenJCLEVBQUU4WDtNQUNkLGlCQURjQSxLQUVaLCtCQUZVOVgsRUFBRThYLEdBMUNmMlMsTUFEQUQ7TUErQ29ELE1BQUgsU0FKcEN4cUIsWUFBRThYLFFBS1AsRUFMSzlYLElBS0MsU0FEVnVwQixFQUpXelI7TUFNWiwrQkFEQ2pZLEVBTFdpWSxHQUlYeVIsV0FFMkM7SUFyQ25DLFNBdUNabUMsZUFBYTFyQixFQUFFOFg7TUFDakIsT0FEZTlYLElBQ2MsU0FBbEIsZUFESUEsRUFBRThYLFNBQ2U7SUF4Q2xCOzs7T0FaWjBTO09BQ0FDO09BQ0FDO09BeUNBZTtPQVFBQztPQWhEQWY7T0FDQUM7T0FDQUM7T0FDQXhoQjtPQUVBMGhCO09BREFEO09BRUFFO09BRUFDO09BYUFFO09BSkFEO09BV0FFO09BR0FFO09BRkFEO09BS0FFO09BQ0FDO0lBMUJZO2FmV1pHLE9BQU9DLElBQUlDLE1BQU1sbkI7TUFDTjtzQ0FESmluQixJQUFJQyxNQUFNbG5CO09BQ04sVUFBVHlIO09BQVMsVUFETXpILFlBdkNqQnZLO01BeUNpRDtrQkFGaEN1SztRQUVnQyxTQUZoQ0E7UUFFZ0MscUNBRmhDQTtNQU9uQixPQU5JeUgsTUFNRTthQUdKMGYsV0FBV0YsSUFBSUMsTUFBTWxuQjtNQUNWOzBDQURBaW5CLElBQUlDLE1BQU1sbkI7T0FDVixVQUFUeUg7T0FBUyxVQURVekgsWUFqRHJCdks7TUFtRGlEO2tCQUY1QnVLO1FBRTRCLFNBRjVCQTtRQUU0QixxQ0FGNUJBO01BT3ZCLE9BTkl5SCxNQU1FO2FBa0VKMmYsY0FBZ0JDLElBQXVCdHNCO01BQ3pDLEdBRGtCc3NCLElBQWlCLFFBQWpCQSxzQkFBaUJDLGFBQWpCQztNQUNsQjtZQURrQkEsZUFQaEI3eEIsU0FuSEFEO09BcUlxQyxLQVhyQjh4QixlQVBoQjd4QixTQW5IQUQ7T0EySDJCO09BUWpCOzs7Ozs7OztPQVBHO01BREM7dUJBakVpQmd5QjtnQkFFL0I7OzZCQThEdUMxc0IsRUFoRW5CeXNCLFdBQ3RCLHFCQURzQkE7aUJBRXBCLE1BREVFLFdBRDZCRDtnQkFhakMsd0JBYmlDQSwwQkFHN0Jwc0I7a0JBVStEO3NCQWJsQ29zQiw2QkFHN0Jwc0I7O29CQVUrRCxxQkFibENvc0I7bUJBaUIxQjtxQkFqQjBCQTs7b0JBNEIzQjtxQkFERUU7c0JBQ0Y7NEJBTEsscUJBdkJzQkY7b0JBNEIzQixHQURFRSxXQTNCeUJGLDZCQUc3QnBzQjtxQkEyQks7b0JBRkgsSUFHRXVzQixPQUFTLGtCQUpURDtvQkFNSixLQWpDNkJGLG9CQStCekJHLFNBL0J5Qkg7b0JBaUM3QixZQUZJRztrQkFTTixJQUFJcnNCLEVBeEMyQmtzQjtrQkF3Qy9CLFlBeEMrQkEsWUF3QzNCbHNCO2tCQUFKLFlBeEMrQmtzQixZQXdDM0Jsc0I7a0JBQUo7OEJBeEMrQmtzQixZQXdDM0Jsc0I7a0JBQUosWUF4QytCa3NCLFlBd0MzQmxzQjtrQkFBSixNQXhDK0Jrc0IsV0F3Qy9CLEtBTUk1ZixxQkFOSjs7d0JBT0FoUjtvQkFDRTtzQkFBUSxJQUFKb0UsRUFBSSxpQkFGTjRNLEVBQ0poUjtzQkFDVSxRQUFKb0UsRUFFRixpQkFKQTRNLEVBQ0poUixZQUNNb0UsSUFSRk07c0JBUU0sU0FEVjFFOzs7Z0JBT0YsS0F0RHNCMndCLGFBQVdDLG9CQUc3QnBzQjtnQkFtREosWUF0RGlDb3NCLFlBRzdCcHNCO2dCQW1ESjs7Ozs7Ozs7Ozs7bUJBdUJDO2FBRUN3c0IsYUFBY04sZUFBZWpvQjtNQUMvQjtlQURnQmlvQix3QkFDbUJ2bkIsSUFBSTNFLEdBQUssYUFEYmlFLEdBQ0lVLE1BQUkzRSxFQUFxQixFQUFDO2FBRTNEeXNCLGNBQWNULElBQXVCOXJCO01BQ3ZDLEdBRGdCOHJCLElBQWlCLFFBQWpCQSxzQkFBaUJDLGFBQWpCQztNQUNoQjtZQURnQkEsZUF6QmQ3eEIsU0FuSEFEO09Bd0pxQyxLQVp2Qjh4QixlQXpCZDd4QixTQW5IQUQ7T0FzSlU7Ozs7Ozs7a0NBVjJCOEY7T0FFeEIsY0FGd0JBO01BRXhCO3VCQURNa3NCLFFBQVUsc0JBQThCOzs7Ozs7Ozs7OzttQkFhNUQ7YUFFQ00sYUFBYU4sT0FBT087TUFDdEIsZ0JBRGVQLGNBQU9PO01BQ3RCLFlBRHNCQTtNQUN0QixRQUN1QzthQUVyQ0MsYUFBYVIsT0FBT1M7TUFDdEIsU0FEZVQ7TUFDZixnQkFEc0JTO01BQ3RCLFFBQStEO2FBRTdEWCxlQUFlRSxRQUFTLE9BQVRBLGVBbktmaHlCLGFBbUtzRDthQUV0RDB5QixPQUFPVjtNQUNULElBQUk3b0IsSUFESzZvQjtNQUNULGtCQURTQSxvQkFDTDdvQixJQUN1RDthQUV6RHdwQixXQUFXWCxPQUFPakksR0FBR0M7TUFDdkIsSUFBSTdnQixJQURtQjZnQixLQUFIRCxPQUNwQixrQkFEYWlJLFVBQU9qSSxHQUNoQjVnQixJQUNxQzthQUV2Q3lwQixlQUFlWixPQUFPakksR0FBR0M7TUFDM0IsUUFEd0JELElBQ1IsSUFDVjVnQixJQUZxQjZnQixLQUFIRCxPQUdqQixxQkFIVWlJLFVBQU9qSSxHQUVsQjVnQjtNQUVHLFFBRU47YUFFRDBwQixnQkFBZ0JiLE9BQU81d0IsR0FBSSxzQkFBWDR3QixVQUFPNXdCLEVBQWlDO2FBRXhEMHhCLG9CQUFvQmQsT0FBTzV3QjtNQUM3QixZQUQ2QkEsS0FFdEIsZUFGZTR3QixVQUFPNXdCLEtBSXZCO2FBR0oyeEIsWUFBWWYsT0FBTzV3QjtNQUNyQixzQkFEYzR3QixzQkFBTzV3QixNQUNpQzthQUVwRDR4QixhQUFhaEIsUUFBUyxPQUFUQSxhQUFvQzthQUNqRGlCLFdBQVdqQixRQUFTLE9BQVRBLGFBQW1DO2FBRTlDa0IsZUFBZWxCLFFBQVMsT0FBVEEsVUFBMkI7YUFDMUNtQixhQUFhbkIsUUFBUyxPQUFUQSxVQUEwQjthQUV2Q29CLFNBQVNwQjtNQUNYO1dBRFdBO09BQ1gsS0FBSXFCLFFBeE1GcnpCO09Bd01GLFdBRFdneUIsZ0JBQ1BxQjtNQUhvQixXQVNuQjthQU1IQyxZQUFZekw7TUFDZDs7VUFFSXdMLElBSFV4TDtNQUNkLEdBRUl3TCxRQXZORnJ6QjtPQXlOQSxZQUZFcXpCLE9BcEdGcHpCO01BdUdGO2NBQXVCOzs7O09BMU5yQkQ7T0F5SUFveUI7T0FHQUM7T0FsQkFWO09Ba0NBVztPQUlBRTtPQUdBVjtPQUVBWTtPQXlCQUs7T0FHQUM7T0FDQUM7T0FFQUM7T0FDQUM7T0FFQUM7T0FhQUU7T0EzQ0FYO09BSUFDO09BUUFDO09BRUFDO09BaEpBdkI7T0FVQUc7O0krQmdCVTs7Ozs7O09BQ0E7T0FDUyxtQi9CbkVuQjF4QjtPK0JvRWlCLG1CL0JwRWpCQTs7Ozs7Ozs7Ozs7OztJK0JpRVUsU0FpQlZ3ekI7TUFDRjtlQW5CRUQ7T0FtQkYsUUFBSUU7T0FFUSxxQkFEUkM7T0FFUSxxQkFGUkE7T0FHWSx5QkFIWkEsUS9CcEZGMXpCO08rQndGWSx1QkFKVjB6QixRL0JwRkYxekI7TStCeUZBLE9BekJBdXpCLFNBcUJFSSxRQUZBRjtNQU1GLFNBSkVFO01BTUYsT0EzQkFKLFNBc0JFSyxRQUhBSDtNQVFGLFNBTEVHO01BT0YsT0E3QkFMLFNBdUJFTSxZQUpBSjtNQVVGLFNBTkVJO01BUUYsT0EvQkFOLFNBd0JFTyxVQUxBTDtNQVlGLFNBUEVLO01BT0YsU0FYRUo7TUFXRixRQUV3QjtJQWhDZCxTQWtDVks7TUFDRixPQXBDRVIsbUJBb0NGLG1CQUN1QjtJQXBDWCxJQXNDVlMseUNBQWdELFFBQUs7SUF0QzNDLFNBd0NWQyxRQUFRQyxPQUFPQyxNQUFNQyxNQUFNcEM7TUFDN0I7Z0JBMUNFdUI7T0EwQ0YsUUExQ0VBO09BMENGLGVBMUNFQTtPQTBDRixXQTFDRUE7T0EwQ0YsZUExQ0VBO09BMENGLFVBMUNFQTtPQTBDRixhQTFDRUE7TUEwQ0YsU0ExQ0VBO01BMENGLFNBRGlCWTtNQUNqQixVQUQ2Qm5DO01BQzdCO1lBQWE0QyxNQUFJQztRQUNmO1VBQU0sb0NBRkVYLE9BekNSWCxJQTBDV3FCLElBQUlDO1VBQ1Q7O2FBRWMsSUFITEMsTUFHSyxXQUpDVixNQUFNcEM7YUFJUCxTQUpPQTthQUlQLFVBSk9BO2FBSVAsSUFIVDRDLE1BQUlDOzttQkFRWDttQkFTQSxtQkFqQk9ELE1BQUlDO21CQW1CWCxtQkFuQk9ELE1BQUlDOzthQVVYO2VBRStEO3FCQXREbkV0QjtnQkFzRG1FOzRCQUFoQyxpQkFiM0JXLDBCQXpDUlg7Z0JBc0RtRTtnQkFacER3QjtnQkFBSkM7Ozt1Q0FlUDttQkFmV0QsUUFBSkM7MkJBQUlIOzs7YUFxQlgsV0F0QklYLGlDQUNHVSxNQUFJQztZQW1DWkk7O1FBQ0gsSUFBSUMsVUE5RUozQjtRQThFQSxVQWJFYztRQWFGLFVBWkVDO1FBWUYsU0FYRUM7UUFXRixVQVZFQztRQVVGLFNBVEVDO1FBU0YsU0FSRUM7UUFRRixVQVBFQztRQU9GLEdBREdNLG1CQVdDLElBREt6dkIsRUFWTnl2QixPQVdDLE9BREt6dkI7UUFHTDs7aUJBQ08ydkI7VUFDQSxZQURBQTtZQUV1QixzQkFGdkJBO1lBRUUsd0JBcERMakIsOEJBcUNKZ0I7OztVQWdCUyx3QkFyRExoQixVQWtER2lCLGtCQWJQRCxhQWdCd0Q7UUFKeEQsTUFiREQsSUFrQlU7SUE5RkgsU0FnR1ZHLFNBQVM3QixJQUFJM3RCO01BQ2YsU0FEVzJ0QixVQUFJM3RCLE1BQ0wsd0JBREMydEIsc0JBQ3dCO0lBakd2QixTQW1HVjhCO01sQzdMTCxJa0M4TGdCajBCLEVBckdYbXlCO01Bc0dBO2VBRFdueUI7VUFFTjtpQkF2R0xteUIsVUFxR1dueUI7V0FHQSxvQkF4R1hteUI7V0F3R1csTUF4R1hBLFVBcUdXbnlCO1dBSUEsb0JBekdYbXlCO1VBMEdLLGlCQUZDK0IsR0FDQUMsSUFDYSxPQUZiRDtVQURELElBR3NCLElBTGhCbDBCOztRQUNJLFNBdEdmbXlCO1FBc0dlLHdCQXRHZkEsdUJBNkdlO0lBNUdMLFNBOEdWaUM7TUFBb0IsU0EvR3BCakMsUUErR29CLHdCQS9HcEJBLHNCQStHZ0Q7SUE5R3RDLFNBK0dWa0MsY0FBYzd2QjtNQUFJLFNBaEhsQjJ0QixxQkFnSGMzdEI7TUFBSSx3QkFoSGxCMnRCLHNCQWdIcUU7SUEvRzNELFNBZ0hWbUMsWUFBWTl2QjtNQUFJLFNBakhoQjJ0QixxQkFpSFkzdEI7TUFBSSx3QkFqSGhCMnRCLHNCQWlIaUU7SUFoSHZELFNBa0hWb0Msb0JBQWtCLDZCQUE4QjtJQWxIdEMsU0FtSFZDLGtCQUFnQiwyQkFBNEI7SUFuSGxDLFNBb0hWQyxVQUFVandCLEdBQUkscUJBQUpBLEtBQThCO0lBcEg5QixTQXFIVmt3QixRQUFRbHdCLEdBQUksbUJBQUpBLEtBQTRCO0lBckgxQixTQXVIVm13QixxQkFBcUJaO01BQ3ZCLGtCQWxGRW5CLHlCQWlGcUJtQixJQUNlO0lBeEgxQixTQTBIVmEsbUJBQTJCLFFBQUU7SUExSG5COzs7T0FrSFZMO09BQ0FDO09BQ0FDO09BQ0FDO09BbEJBVDtPQVdBRztPQUNBQztPQUNBQztPQTlFQTNCOztzQmxDNUhMOztPa0NrSUtFO09Bd0RBbUI7T0F1QkFXO09BR0FDO0lBMUhVOzs7OztrQkNWTkMsY0FBUyxVQUVHLElBQU5ySixXQUFNLE9BQU5BLEVBREcsUUFDSTtrQkFPYjdiLE9BQU9ySixFQUFFbEMsRUFBRUM7V0FDYixHQURTaUMsRUFDc0MsTUFEdENBLEtBQ0x3dUIsR0FBcUN0SixXQUFyQ3NKO1dBQ0osR0FGYXp3QixFQUVrQyxRQUZsQ0EsS0FFVDJ3QixHQUFxQ0QsYUFBckNDO1dBQ0osU0FESUEsTUFEQUYsY0FDQUU7cUJBRksxdUIsRUFBRWxDLEVBQUVDLE9BR3lDO2tCQU9wRDR3QixJQUFJM3VCLEVBQUVsQyxFQUFFQztXQUNWLEdBRE1pQyxFQUN5QyxNQUR6Q0EsS0FDRnd1QixHQUFxQ3RKLFdBQXJDc0o7V0FDSixHQUZVendCLEVBRXFDLFFBRnJDQSxLQUVOMndCLEdBQXFDRCxhQUFyQ0M7V0FDSixJQURJQSxjQURBRjthQUVnQixHQUhkeHVCO2VBT2dCLElBREM0dUIsR0FOakI1dUIsS0FNVzZ1QixHQU5YN3VCLEtBTUs4dUIsR0FOTDl1QixLQU9nQixZQURDNHVCO2VBQ2Qsa0JBREVFLElBRVUsY0FGVkEsR0FBTUQsR0FFSSxPQUZFRCxHQU5mOXdCLEVBQUVDO2VBU0MsR0FIWTZ3QjtpQkFPbUIsSUFEWEcsSUFOUkgsTUFNQ0ksSUFOREosTUFNTkssSUFOTUwsTUFPbUIsWUFEWEcsSUFadkJqeEIsRUFBRUM7aUJBYVMscUJBUFIrd0IsR0FBTUQsR0FNQUksS0FBT0Q7ZUFETDthQU5OO1dBVUosSUFkTFIsY0FDQUU7YUFheUIsR0FmbkIzd0I7ZUFtQlksSUFEQ214QixHQWxCYm54QixLQWtCT294QixHQWxCUHB4QixLQWtCQ3F4QixHQWxCRHJ4QixLQW1CWSxZQURYcXhCO2VBQ0Ysa0JBRGNGLElBRVIscUJBcEJUbHZCLEVBQUVsQyxFQWtCR3N4QixJQUFNRCxHQUFNRDtlQUdaLEdBSEFFO2lCQU82QixJQURUQyxJQU5wQkQsTUFNYUUsSUFOYkYsTUFNTUcsSUFOTkgsTUFPNkIsWUFEVEMsSUFOZEYsR0FBTUQ7aUJBT0oscUJBekJibHZCLEVBQUVsQyxFQXdCU3l4QixLQUFPRDtlQURMO2FBTk47V0FXWCxTQTFCRVosTUFEQUYsY0FDQUU7cUJBRkUxdUIsRUFBRWxDLEVBQUVDLE9BNEI4QztrQkFJbER5eEIsSUFBSWp4QixFQUVSbU07V25DcklULEdtQ3FJU0E7YUFDVSxJQURDM00sRUFBWDJNLEtBQVE1TSxFQUFSNE0sS0FBSzFLLEVBQUwwSyxLQUNVLG9CQUhGbk0sRUFFQVQ7YUFDRSxTQUFKZ0QsRUFDVSxPQUZoQjRKO2FBR0UsUUFGSTVKLEdBTU8sSUFBTG91QixHQUFLLElBVEwzd0IsRUFFR1IsR0FPRSxPQVBGQSxNQU9IbXhCLEdBUFJ4a0IsRUFRMkIsSUFSdEIxSyxFQUFHbEMsRUFPQW94QjthQU5FLElBR0ZKLEdBQUssSUFOTHZ3QixFQUVIeUI7YUFJUSxPQUpSQSxNQUlHOHVCLEdBSlJwa0IsRUFLMkIsSUFEbkJva0IsR0FKQWh4QixFQUFHQztXQURGLFlBRERRO2tCQVlSa3hCLFVBQVVseEIsR0FBSSxZQUFKQSxNQUFvQztrQkFTMUNteEIsZ0JBQWdCbnhCO1duQ3hKN0I7aUJtQzBKcUJSLFdBQUhELFdBQUhrQzthQUNGLDJCQUhnQnpCLEVBRWR5QixHQUFHbEMsRUFBR0M7V0FESCxpQkFEV1E7a0JBS2hCb3hCLGdCQUFnQnB4QjtXbkM3SjdCO2lCbUMrSnFCUixXQUFIRCxXQUFIa0M7YUFDRSxXQURGQSxFQUFHbEMsRUFDRCxnQkFIWVMsRUFFUlI7V0FESCxpQkFEV1E7a0JBUWhCdVQsS0FBSzlSLEVBQUVsQyxFQUFFQztXQUNmLEdBRFdpQztnQkFBSWpDOztnQkFJMkM2eEIsR0FKM0M3eEI7Z0JBSXFDbXhCLEdBSnJDbnhCO2dCQUkrQm94QixHQUovQnB4QjtnQkFJeUJxeEIsR0FKekJyeEI7Z0JBSWE4eEIsR0FKakI3dkI7Z0JBSVc0dUIsR0FKWDV1QjtnQkFJSzZ1QixHQUpMN3VCO2dCQUlEOHVCLEdBSkM5dUI7dUJBSStDNHZCLGNBQTlCQzt3QkFDTSxJQUR4QmYsR0FBTUQsR0FDa0IsS0FEWkQsR0FKVDl3QixFQUFFQzt5QkFJYTh4QixjQUE4QkQsR0FFOUIsU0FOakI1dkIsRUFBRWxDLEVBSTJCc3hCLElBQU1ELEdBQU1ELElBR2hELE9BUE9sdkIsRUFBRWxDLEVBQUVDO2FBR0MsdUJBSEhELEVBQUZrQztXQUVLLHVCQUZIbEMsRUFBRUMsRUFPQztrQkFJVit4QjtXbkNoTGI7V21DZ0x1Qjs7OztlQUVNLElBQU5oeUI7ZUFBTSxPQUFOQTthQURMLGdCQUVXO2tCQUVoQml5QjtXbkNyTGI7V21DcUwyQjs7OztlQUVFLElBQU5qeUI7ZUFBTSxVQUFOQTthQURMLFNBRWU7a0JBRXBCa3lCO1duQzFMYjtXbUMwTHVCOzs4QkFHSCwrQkFBTjFQO2VBRGUsSUFBZnhpQjtlQUFlLE9BQWZBO2FBREksZ0JBRVc7a0JBRWhCbXlCO1duQy9MYjtXbUMrTDJCOzs4QkFHUCwrQkFBTjNQO2VBRGUsSUFBZnhpQjtlQUFlLFVBQWZBO2FBREksU0FFZTtrQkFJcEJveUI7V0FBaUI7OzttQkFHVm55QixXQUFIRCxXQUFhLGdDQUFiQSxFQUFHQzthQURTLElBQU5veUI7YUFBTSxPQUFOQTtXQURMLDBDQUVrQztrQkFnQjNDdGtCLE9BQU9pTSxHQUFHRjtXQUNaLEdBRFNFO2FBSUcsR0FKQUY7ZUFJcUIsd0JBSnJCQSxJQUlRLFlBSlhFLEdBSVcsUUFKUkY7YUFHSSxPQUhQRTtXQUVPLE9BRkpGLEVBSXdDO2tCQVE5Q3dZLE1BQU03eEI7V25Dck9uQjthbUN5T21CLElBRENSLFdBQUhELFdBQUhrQyxXQUNLLG9CQUpBekIsRUFHRlQ7YUFDRSxTQUFKZ0QsRUFDVSxVQUZYZCxJQUFNakM7YUFHSixRQUZEK0M7ZUFLbUIsZ0JBVGZ2QyxFQUdDUixHQU1jO2VBQWMsZUFObENpQyxFQUFHbEMsRUFNQzh3QixJQUFJeUIsS0FBTW5CO2FBTFQ7Y0FHZSxjQVBmM3dCLEVBR0x5QjtjQUlvQjs7O2FBQXdCLFVBQXhDOHVCLEdBQUl3QixPQUFvQyxLQUE5QmxCLEdBSlh0eEIsRUFBR0M7V0FEVDthQVdGa047a0JBRUFxQixnQkFBVyxnQkFBbUM7a0JBRTFDaWtCLElBQUloeUI7V25DdFBqQjs7O2VtQ3lQbUI7Z0JBRENSO2dCQUFIRDtnQkFBSGtDO2dCQUNLLG9CQUhGekIsRUFFQVQ7Z0JBQ0UsV0FBSmdEO2VBQUksUUFGRDtlQUVDLElBREN3ZixhQUNMeGYsRUFESy9DLEVBQU5pQyxVQUFNc2dCOzthQURGO2tCQUtMa1EsT0FBT2p5QixFQUVYbU07V25DOVBULEdtQzhQU0E7YUFDVSxJQURFM00sRUFBWjJNLEtBQVM1TSxFQUFUNE0sS0FBTTFLLEVBQU4wSyxLQUNVLG9CQUhDbk0sRUFFRlQ7YUFDQyxTQUFKZ0Q7ZUEvQ1IsR0E4Q1FkO2lCQTNDSSxHQTJDRWpDO21CQTNDa0Isd0JBMkNsQkEsR0EzQ0ssV0EyQ1hpQyxFQTNDVyxRQTJDTGpDO2lCQTVDRSxPQTRDUmlDO2VBN0NRLE9BNkNGakM7YUFJUixRQUhFK0MsR0FRUyxJQUFMb3VCLEdBQUssT0FYSjN3QixFQUVDUixHQVNHLE9BVEhBLE1BU0ZteEIsR0FUVnhrQixFQVdXLElBWEwxSyxFQUFHbEMsRUFTQ294QjthQVJBLElBSUFKLEdBQUssT0FQSnZ3QixFQUVMeUI7YUFLUyxPQUxUQSxNQUtJOHVCLEdBTFZwa0IsRUFPVyxJQUZEb2tCLEdBTERoeEIsRUFBR0M7V0FESDtrQkFjTDB5QixNQUFNcnhCLEdBQUdDO1dBQ2YsR0FEWUQ7Z0JBQUdDOztnQkFJMkN3WSxHQUozQ3hZO2dCQUlxQ3F4QixHQUpyQ3J4QjtnQkFJK0IrSCxHQUovQi9IO2dCQUl5QkUsR0FKekJGO2dCQUlhMFksR0FKaEIzWTtnQkFJVXdVLEdBSlZ4VTtnQkFJSWtULEdBSkpsVDtnQkFJRkUsR0FKRUY7a0JBSThDeVksTUFBOUJFO2lCQUV0QixTQUZvREYsR0FFckMsV0FGeUJ6USxHQUpsQ2hJO2lCQU9jOzhCQUhWa1QsR0FKRGpUO2tCQU9XOztrQkFDSSxXQUpSdVUsR0FHRitjO2lCQUNQLGtCQUpIcnhCLEdBR0cwWCxNQUhHMUU7ZUFPVixTQVBzQnlGLEdBT1AsV0FQTHpGLEdBSkRqVDtlQVlXOzhCQVJvQitILEdBSmxDaEk7Z0JBWWM7O2dCQUNJLFdBRFZ3eEIsS0FSZ0NGO2VBU3ZDLGtCQURBM1osS0FSMkJ4WCxJQUFNNkg7YUFEN0IsT0FITGhJO1dBRUssT0FGRkMsRUFjTjtrQkFFSHd4QixNQUFNenhCLEdBQUdDO1dBQ2YsR0FEWUQ7Z0JBQUdDO2VBS0wsSUFEWXVVLEdBSlZ4VSxNQUlJa1QsR0FKSmxULE1BSUZFLEdBSkVGLE1BS0YsV0FETWtULEdBSkRqVCxJQUtMOztpQkFJb0IsSUFEYnF4QixXQUNhLFdBTFI5YyxHQUlMOGM7aUJBQ0osa0JBTEhweEIsU0FBTWdUO2VBQ04sSUFFRixhQUFxQixXQUhQc0IsR0FFSitjO2VBQ0gsb0JBSExyeEI7YUFETTtXQURBLFFBTzJCO2tCQVVyQ3d4QixVQUFVdnlCO1duQzlTdkI7YW1Da1RtQixJQURDUixXQUFIRCxXQUFIa0MsV0FDSyxvQkFKSXpCLEVBR05UO2FBQ0UsU0FBSmdELEVBQ1U7YUFDVCxRQUZEQTtlQU9JLG9CQVhJdkMsRUFHSFI7ZUFRRDtxQkFFVW14QixZQUFKTixZQUFxQixlQVZoQzV1QixFQUFHbEMsRUFVUTh3QixJQUFJTTtlQURMO2FBUkwsWUFHQSxVQVBJM3dCLEVBR1R5QjthQUlLO21CQUVVb3ZCLGNBQUpOOzs7dUNBQXlDLHVCQUFyQ00sTUFOWnR4QixFQUFHQyxFQU15RDthQURyRDtXQU5iLDRCQUE0QixRQUFLO2tCQWEvQmd6QixTQUFTM3hCLEdBQUdDO2VBQUh1akIsUUFBR0g7V0FDbEI7Z0JBRGVHLFFBQUdIO21CQUdJN08sR0FIUGdQLFFBR0N0USxHQUhEc1EsUUFHTHRqQixHQUhLc2pCOzJCQUFHSCxLQUlHO2VBQ04sb0JBRkNuUSxHQUhFbVE7ZUFLSDtpQkFDYSxJQUFQaU8sWUFBSm54QixZQUFXLGNBSGxCRCxHQUdPQztpQkFBVzttQkFBOEIsb0JBQXJDbXhCLE1BTk45TixLQUdPaFAsR0FISjZPO2lCQU9EOzthQUxZLFNBS1A7a0JBRWhCdEgsS0FBSy9iLEdBQUdDO1dBQ2QsR0FEV0Q7Z0JBQUdDO2VBS0osSUFEWXVVLEdBSlh4VSxNQUlLa1QsR0FKTGxULE1BSURFLEdBSkNGLE1BS0QsV0FETWtULEdBSkZqVCxJQUtKOztpQkFJa0IsSUFEWHF4QixXQUNXLFVBTE45YyxHQUlMOGM7aUJBQ0YsbUJBTExweEI7ZUFDQSxJQUVGLGFBQXFCLFVBSFBzVSxHQUVKK2M7ZUFDTCxpQkFISHJ4QixTQUFNZ1Q7YUFEQyxPQUhObFQ7V0FFSyxRQU93QjtrQkFJbEM0eEIsVUFBVTV5QixFQUFFd0k7ZUFBRitILE1BQUU2UztXQUNsQjtnQkFEZ0I3Uzs7Z0JBR0g1USxFQUhHNFE7Z0JBR043USxFQUhNNlE7O2dCQUFFdWlCLE9BR1JwekIsRUFBR0MsRUFIS3lqQjtnQkFBRjdTO2dCQUFFNlM7O2FBRVAsT0FGT0EsSUFHNEI7a0JBYTVDbGEsUUFBUWxJLEdBQUdDO1dBQ2tCLG1CQURsQkEsTUFDRCxlQURGRCxNQVhROEgsUUFBR0M7V0FDbkI7Z0JBRGdCRDtrQkFBR0M7aUJBTVQ7a0JBRHNCa3FCLEtBTGJscUI7a0JBS1N1cEIsR0FMVHZwQjtrQkFLS0MsR0FMTEQ7a0JBS0xtcUIsS0FMRXBxQjtrQkFLTjBNLEdBTE0xTTtrQkFLVm9MLEdBTFVwTDtrQkFNTixvQkFESm9MLEdBQWtCbEw7aUJBQ2QsU0FBSnRHO21CQUcrQjttQ0FKVDR2QixHQUFJVztvQkFJYixlQUpUemQsR0FBSTBkO29CQUxFcHFCO29CQUFHQzs7aUJBUVosT0FGRHJHO2VBRk07YUFEQyxPQUhNcUcsUUFZNEI7a0JBRS9DRixNQUFNN0gsR0FBR0MsSUFDWCxxQkFEUUQsR0FBR0MsT0FDTTtrQkFFWG95QixPQUFPcnlCLEdBQUdDO2VBQUh1akIsUUFBR0g7V0FDaEI7Z0JBRGFHO2tCQUFHSDtpQkFPSjtrQkFEb0NpTyxHQU5oQ2pPO2tCQU0wQnJiLEdBTjFCcWI7a0JBTW9CbGpCLEdBTnBCa2pCO2tCQU1NN08sR0FOVGdQO2tCQU1HdFEsR0FOSHNRO2tCQU1IdGpCLEdBTkdzakI7a0JBT0Qsb0JBREl0USxHQUEwQmxMO2lCQUM5QixTQUFKdEc7bUJBRUYsZ0JBSEl4QixHQUEwQkM7bUJBRzlCLGFBVE9xakIsS0FNU2hQLEdBTk42TyxLQU1nQ2lPO21CQUl2Qzt5QkFIRDV2QjttQkFNRixxQkFQVXdSLEdBQU1zQixNQUEwQjhjO21CQU8xQyxhQWJPOU4sS0FNSHRqQjttQkFETjtpQkFFUSxTQUlOLFVBTElBLEdBQU1nVCxRQUFvQi9TO2lCQUs5QixhQVhPcWpCLEtBTVNoUDtpQkFPaEI7ZUFSRjthQUZBLFNBVTZEO2tCQUUzRDFTLEtBQUt0RDtXbkN4WGxCOzs7bUJtQzBYb0JHLGFBQUhELGFBQUhrQztlQUFZLEtBRlJwQyxFQUVKb0M7ZUFBc0IsV0FGbEJwQyxFQUVERTsyQkFBR0M7O2FBREY7a0JBR0xpSixLQUFLcEosRUFBRVEsRUFBRTBFO2VBQUY2TCxNQUFFM0w7V0FDZjtnQkFEYTJMO2VBR2U7Z0JBQWY1USxFQUhBNFE7Z0JBR0g3USxFQUhHNlE7Z0JBR04zTyxFQUhNMk87Z0JBR2Usa0JBSGpCL1EsRUFHREUsRUFBdUIsS0FIdEJGLEVBR0pvQyxFQUhRZ0Q7Z0JBQUYyTCxJQUdBNVE7Z0JBSEVpRjs7YUFFSixPQUZJQSxPQUdrQztrQkFFM0MrSixRQUFRQztXbkNqWXJCOzs7ZW1DbVkwQjtnQkFBTmpQO2dCQUFIRDtnQkFBSGtDO2dCQUFZLGdCQUZMZ04sRUFFSmxQO2VBQVM7aUJBQU8saUJBRlprUCxFQUVQaE47aUJBQW1CLHFCQUFiakM7aUJBQWE7OztlQURmOztrQkFHTGtQLE9BQU9EO1duQ3JZcEI7OztlbUN1WTBCO2dCQUFOalA7Z0JBQUhEO2dCQUFIa0M7Z0JBQVksZ0JBRk5nTixFQUVIbFA7ZUFBUzs7O2lCQUFPLGdCQUZia1AsRUFFTmhOO2lCQUFtQix1QkFBYmpDO2lCQUFhO2VBRGY7O2tCQUdMNk4sT0FBT29CLEVBRVh0QztXbkMzWVQsR21DMllTQTthQUVXO2NBRkMzTSxFQUFaMk07Y0FBUzVNLEVBQVQ0TTtjQUFNMUssRUFBTjBLO2NBRVcsV0FKQXNDLEVBRUxoTjtjQUdLLGNBTEFnTixFQUVGbFA7Y0FJRSxXQU5Ba1AsRUFFQ2pQO2FBSUQsR0FETDJ6QixPQUhBMXhCLE1BRUEyVyxPQUZNNVksTUFJTm95QixJQUVxQixPQU4zQnpsQixFQU1rQyxZQUo1QmlNLElBRkc3WSxFQUlIcXlCO2FBR0MsY0FMRHhaLElBRUF3WjtXQUxHO2tCQVVMM2YsVUFBVXhEO1duQ3BadkI7YW1Dd1owQjtjQUZOalA7Y0FBSEQ7Y0FBSGtDO2NBRVksZ0JBSkhnTixFQUVUaE47Y0FFWTs7Y0FDTixjQUxHZ04sRUFFTmxQO2NBSVMsa0JBTkhrUCxFQUVIalA7Y0FJTTs7Z0JBRFgyekIsSUFHZ0IsZ0JBSlhDLEdBRUFFLElBRUgsZUFKREQsR0FGQzl6QixFQUlEZzBCO2FBRlUsU0FLSyxLQUxYSCxHQUZIN3pCLEVBSUcrekI7YUFHSCxpQkFMREQsR0FFQUU7V0FMRTtrQkFVTEM7V0FBVzthQUVnQixJQUF2QmgwQixXQUFIaUMsV0FBMEIsY0FBdkJqQzthQUFNLGlCQUFUaUM7V0FESSxRQUNnQztrQkFFckNneUI7Ozs7ZUFFZ0M7Z0JBQXpCajBCO2dCQUFIRDtnQkFBSGtDO2dCQUErQixVQUE1QmxDLEVBQTRCLG9CQUF6QkM7O3dCQUFOaUM7O2FBREk7a0JBR1RpeUIsU0FBUzd6QixHQUNYLHNCQURXQSxFQUNNO2tCQU1YOE8sS0FBSzNPO1duQzlhbEI7OztlbUNpYm1CO2dCQURDUjtnQkFBSEQ7Z0JBQUhrQztnQkFDSyxvQkFIRHpCLEVBRURUO2VBQ0UsU0FBSmdELEVBQ1UsT0FGUmhEO2VBQ0UsSUFFSCxhQUZEZ0QsRUFESy9DLEVBQU5pQyxVQUFNc2dCOzthQURGO2tCQWVMNFIsV0FUa0J0MEI7V25DcmIvQjs7O21CbUNpY29CdXlCLGVBQUhwcEIsZUFBSDRQO2VBQ0EsY0FiaUIvWSxFQVlkbUo7a0NBQUg0UDs7O3lCQVRNNVksV0FBSEQsV0FBSGtDO3FCQUNBLGNBSmlCcEMsRUFHZEUsbUJBQUhrQzsrQkFBTWpDOzttQkFEVDsyQkFVU295Qjs7YUFEVDtrQkFnQkVnQyxlQVRzQnYwQjtXbkN2Y25DOzs7bUJtQ21kb0J1eUIsZUFBSHBwQixlQUFINFA7ZUFDQSxjQWJxQi9ZLEVBWWxCbUo7a0NBQUg0UDs7O3lCQVRNNVksV0FBSEQsV0FBSGtDO3FCQUNBLGNBSnFCcEMsRUFHbEJFLG1CQUFIa0M7K0JBQU1qQzs7bUJBRFQ7MkJBVVNveUI7O2FBRFQ7a0JBZ0JFaUMsVUFUaUJ4MEI7V25DemQ5Qjs7O21CbUNxZW9CdXlCLGVBQUhwcEIsZUFBSDRQO2VBQ0EsY0FiZ0IvWSxFQVlibUo7a0NBQUdvcEI7Ozt5QkFUQXB5QixXQUFIRCxXQUFIa0M7cUJBQ0EsY0FKZ0JwQyxFQUdiRSxtQkFBR0M7K0JBQU5pQzs7bUJBREg7MkJBVUcyVzs7YUFESDtrQkFnQkUwYixjQVRxQnowQjtXbkMzZWxDOzs7bUJtQ3Vmb0J1eUIsZUFBSHBwQixlQUFINFA7ZUFDQSxjQWJvQi9ZLEVBWWpCbUo7a0NBQUdvcEI7Ozt5QkFUQXB5QixXQUFIRCxXQUFIa0M7cUJBQ0EsY0FKb0JwQyxFQUdqQkUsbUJBQUdDOytCQUFOaUM7O21CQURIOzJCQVVHMlc7O2FBREg7a0JBT0UyYixTQUFTL3pCO1duQzdmdEI7OztlbUNnZ0JtQjtnQkFEQ1I7Z0JBQUhEO2dCQUFIa0M7Z0JBQ0ssb0JBSEd6QixFQUVMVDtlQUNFLFNBQUpnRCxFQUNVLFVBRlJoRDtlQUNFLElBRUgsYUFGRGdELEVBREsvQyxFQUFOaUMsVUFBTXNnQjs7YUFERjtrQkFNVGlTLFNBQVN2eUIsRUFBRWxDLEVBQUVDO1duQ3BnQnRCO1dtQ3dnQk8sU0FKV2lDO2FBSWtCLGlCQUpsQkE7YUFJTSwrQkFKSmxDO1czQllYOztzQjJCWmFDO2VBS2dCLGlCQUxoQkE7ZUFLRSwwQkFMSkQ7MkJBTVIsWUFOTWtDLEVBQUVsQyxFQUFFQztXQU9GLGFBUEZpQyxFQU9FLElBUEFsQyxFQUFFQyxHQU9PO2tCQUVoQitJLElBQUlsSixFQUVSOE07V25DL2dCVCxHbUMrZ0JTQTthQUVVO2NBRkMzTSxFQUFYMk07Y0FBUTVNLEVBQVI0TTtjQUFLMUssRUFBTDBLO2NBRVUsUUFKRjlNLEVBRUhvQztjQUdLLGVBTEZwQyxFQUVBRTtjQUlFLFFBTkZGLEVBRUdHO2dCQUFOaUMsTUFFQTJXLE9BRkc3WSxNQUdIaUosT0FITWhKLE1BSU5veUIsSUFDa0MsT0FMdkN6bEI7YUFNTSxnQkFKRGlNLElBQ0E1UCxJQUNBb3BCO1dBTEk7a0JBZUx6a0IsV0FBVzlOLEVBRWY4TTtXbkMvaEJULEdtQytoQlNBO2FBRVU7Y0FGQzNNLEVBQVgyTTtjQUFRNU0sRUFBUjRNO2NBQUsxSyxFQUFMMEs7Y0FFVSxjQUpLOU0sRUFFVm9DO2NBR0ssZUFMS3BDLEVBRVBFO2NBSUUsY0FOS0YsRUFFSkc7YUFJRCxHQURMZ0o7ZUFJQyxJQURJeXJCLElBSEx6ckI7a0JBSEEvRyxNQVJNOFgsTUFRSGhhLE1BTUUwMEIsT0FOQ3owQixNQVJHNlosR0FlOEIsT0FQNUNsTjtlQVFXLGdCQWhCQW9OLEdBY0QwYSxJQWRJNWE7YUFDaEIsR0FEYUU7ZUFJRCxHQUpJRjtpQkFJcUIsd0JBSnJCQTtpQkFJUSxnQkFKWEUsR0FJVyxRQUpSRjtlQUdBLE9BSEhFO2FBRUcsT0FGQUY7V0FPTDtrQkFtQ1Q2YSxRQUFRenlCO1dBQ1YsR0FEVUE7Ozs7Ozs7Ozs7dUJBUVk7NkNBUlpBO3dCQXBCVjtrQ0FBWTlCLEVBQUU4QjsyQkFDWixVQURVOUI7O3FDQUVBLFlBRkU4Qjs7eUNBR0QyeUIsSUFIQzN5QixLQUdQNHlCLEdBSE81eUIsb0JBR1A0eUIsUUFBTUQ7OztrQ0FIQzN5Qjs7O3VDQUlLNnlCLFlBQU4zYSxXQUFONGEsS0FKTzl5QjtxREFJUDh5QixVQUFNNWEsUUFBTTJhOzs7a0NBSkw3eUI7Ozs7O3lDQU1XK3lCLFlBQU45YSxXQUFOSyxhQUFOMGEsS0FOT2h6Qjt1REFNUGd6QixVQUFNMWEsVUFBTUwsV0FBTThhOzJCQUlyQixPQVZRNzBCLFVBV00sVUFEViswQixHQVZNanpCLEdBV0k7OEJBQUoyVzs2QkFJTzs4QkFEUkMsSUFIQ0Q7OEJBR1J1YyxJQUhRdmM7OEJBSU8sYUFmVHpZLElBVUorMEIsZ0JBSUtyYzs4QkFDUTs7NkJBQ2YsaUJBTEV2USxLQUdGNnNCLElBQ0k1c0IsT0FBTzZzQjsyQkFGTCw0QkFHa0I7dUJBRTFCLFdBQUssU0FuQlF4Yzt5QkE0QkV5YztxQkFBYyxXQUFkQSxHQUFjLFNBQVEsU0FBUSxTQUFRO21CQUQ1Qix5QkFBUSxTQUFRO2lCQURwQix5QkFBUTtlQURaO2FBRFg7V0FERixPQWpWTm5vQixLQXVWa0Q7a0JBRWxEb29CLFFBQVEzNUIsRUFBRTJ0QjtXQUNaLDBCQUFtQmpwQixFQUFFRyxHQUFLLFdBQUxBLEVBQUZILEVBQWMsRUFEckJpcEIsRUFBRjN0QixFQUM0QjtrQkFFcEM0NUIsT0FBTzU1QixHQUFJLGVBQUpBLEVBNVZQdVIsTUE0VjBCO2tCQUV0QnNvQixZQUFhenlCO1dBQU8sR0FBUEE7YUFFOEIsSUFBbkNsSCxLQUZLa0gsS0FFUjRKLEVBRlE1SixLQUVYdkMsRUFGV3VDLEtBRThCLGVBQXRDNEosRUFBRzlRO2FBQXNCLFVBQTVCMkUsaUJuQ2xsQmYsT21DZ2xCYWcxQjtXQUNHLFFBQzJEO2tCQUVsRTVnQixPQUFPN1I7V0FBaUIsbUJBQWpCQTtXQUFpQixzQm5DcGxCakMsT21DZ2xCYXl5Qix1QkFJcUM7a0JBRXJDQyxVQUFVcDFCLEVBQUV3STtlQUFGK0gsTUFBRTZTO1dBQ2xCO2dCQURnQjdTOzs7Z0JBR043USxFQUhNNlE7Z0JBR1QzTyxFQUhTMk87Z0JBQUV1aUIsT0FHUnB6QixFQUFIa0MsRUFIV3doQjtnQkFBRjdTO2dCQUFFNlM7O2FBRVAsT0FGT0EsSUFHNEI7a0JBRXhDaVMsZ0JBQWlCM3lCO1dBQU8sR0FBUEE7YUFFOEIsSUFBdkNsSCxLQUZTa0gsS0FFWjRKLEVBRlk1SixLQUVmdkMsRUFGZXVDLEtBRThCLGVBQTFDNEosRUFBRzlRO2FBQXNCLFVBQTVCMkUsaUJuQzdsQmYsT21DMmxCYWsxQjtXQUNHLFFBQytEO2tCQUV0RUMsV0FBVzV5QjtXQUFxQixtQkFBckJBO1dBQXFCLHNCbkMvbEJ6QyxPbUMybEJhMnlCLDJCQUk2QztrQkFFakRFLFlBQVlDLElBQUl4MUI7ZUFDRnVRLElBREV2USxFQUNBMEM7V0FBSTtnQkFBTjZOO2VBR0UsSUFETDVRLEVBRkc0USxPQUVBN1EsRUFGQTZRLE9BRU4zTyxFQUZNMk8sT0FHRSxvQkFERjdRLEVBSEY4MUI7ZUFJSSxTQUVSMTFCO2lCQUFPLFFBQVBBLEdBQ0ssV0FKQ0osRUFBSEMsRUFGSytDLEdBQUY2TixJQUVOM08sRUFGUWM7cUJBQUY2TixJQUVINVE7O2VBQ0ssWUFERkQsRUFBSEMsRUFGSytDOzs7bUNuQ2xtQnpCLE9tQ2dsQmF5eUIsd0JBMkJzQjs7aUJBelgxQnRvQjtpQkFFQXFCO2lCQUVJaWtCO2lCQW5IQWY7aUJBWUpDO2lCQTZHSWU7aUJBZUFDO2lCQWdCQUk7aUJBa0NBRTtpQkFTQTVWO2lCQTZCSjdUO2lCQUdBTDtpQkFHSXdxQjtpQkFlQXZ3QjtpQkFxSkE0RjtpQkFqSkFFO2lCQUtBK0Y7aUJBSUFFO2lCQUlBckI7aUJBb0pBRjtpQkF6SUE4RTtpQkFXQXVoQjtpQkFRSkU7aUJBdlBJbkM7aUJBS0FDO2lCQUtBQztpQkFLQUM7aUJBZkFIO2lCQUtBQztpQkFnREFLO2lCQXlNQWxqQjtpQkErRUFvbEI7aUJBL0RBSjtpQkFrQkFDO2lCQWtCQUM7aUJBa0JBQztpQkE2RUpJO2lCQWdDQWtCO2lCQWJBaGhCO2lCQVdBK2dCO2lCQXBCQUw7aUJBR0FDO0lBdGdCRztJRGtCRzs7OztrQkViTi9FLGNBQVMsY0FFSHJKLG9CQURHLFFBQ0k7a0JBRWI3YixPQUFPckosRUFBRXpCLEVBQUV5WCxFQUFFalk7V0FDTixjQURBaUMsR0FDa0IsVUFEWmpDLEdBQ1ksS0FBTDJ3QixNQUFsQkYsY0FBa0JFO3FCQURiMXVCLEVBQUV6QixFQUFFeVgsRUFBRWpZLE9BRTRDO2tCQUV6RDB4QixVQUFVbHhCLEVBQUV5WCxHQUFJLFlBQU56WCxFQUFFeVgsTUFBdUM7a0JBRW5EMlksSUFBSTN1QixFQUFFekIsRUFBRXlYLEVBQUVqWTtXQUNaLEdBRE1pQyxNQUNtQ2tsQixFQURuQ2xsQixLQUNGd3VCLEdBQXFDdEosV0FBckNzSjtXQUNKLEdBRll6d0IsTUFFNkIwd0IsSUFGN0Ixd0IsS0FFUjJ3QixHQUFxQ0QsYUFBckNDO1dBQ0osSUFESUEsY0FEQUY7YUFFZ0IsR0FIZHh1QjtlQU9nQixJQURPNHVCLEdBTnZCNXVCLEtBTWlCNnpCLEdBTmpCN3pCLEtBTVc2dUIsR0FOWDd1QixLQU1LOHVCLEdBTkw5dUIsS0FPZ0IsWUFETzR1QjtlQUNwQixrQkFERUUsSUFFYSxjQUZiQSxHQUFNRCxHQUFNZ0YsR0FFQyxPQUZLakYsR0FOckJyd0IsRUFBRXlYLEVBQUVqWTtlQVNELEdBSGtCNndCO2lCQU9vQjtrQkFEWEcsSUFOVEg7a0JBTUVrRixJQU5GbEY7a0JBTUxJLElBTktKO2tCQU1aSyxJQU5ZTDtrQkFPb0IsWUFEWEcsSUFaOUJ4d0IsRUFBRXlYLEVBQUVqWTtpQkFhTyxxQkFQUit3QixHQUFNRCxHQUFNZ0YsR0FNTjVFLEtBQU9ELElBQU84RTtlQURaO2FBTk47V0FVSixJQWRMdEYsY0FDQUU7YUFheUIsR0FmakIzd0I7ZUFtQlUsSUFET214QixHQWxCakJueEIsS0FrQldnMkIsR0FsQlhoMkIsS0FrQktveEIsR0FsQkxweEIsS0FrQkRxeEIsR0FsQkNyeEIsS0FtQlUsWUFEWHF4QjtlQUNGLGtCQURvQkYsSUFFZCxxQkFwQlRsdkIsRUFBRXpCLEVBQUV5WCxFQWtCQ29aLElBQU1ELEdBQU00RSxHQUFNN0U7ZUFHbEIsR0FIQUU7aUJBT21DO2tCQURSQyxJQU4zQkQ7a0JBTW9CNEUsSUFOcEI1RTtrQkFNYUUsSUFOYkY7a0JBTU1HLElBTk5IO2tCQU9tQyxZQURSQyxJQU5yQkYsR0FBTTRFLEdBQU03RTtpQkFPVixxQkF6QmJsdkIsRUFBRXpCLEVBQUV5WCxFQXdCT3VaLEtBQU9ELElBQU8wRTtlQURaO2FBTk47V0FXWCxTQTFCRXRGLE1BREFGLGNBQ0FFO3FCQUZFMXVCLEVBQUV6QixFQUFFeVgsRUFBRWpZLE9BNEJpRDthQUUzRGtOO2tCQUVBcUIsZ0JBQVcsZ0JBQW1DO2tCQUUxQ2tqQixJQUFJanhCLEVBQUUwMUIsS0FHVjVNO1dwQzVIVCxHb0M0SFNBO2FBQ1UsSUFEUW5DLEVBQWxCbUMsS0FBZXRwQixFQUFmc3BCLEtBQVlyUixFQUFacVIsS0FBU3ZwQixFQUFUdXBCLEtBQU1ybkIsRUFBTnFuQixLQUNVLG9CQUpGOW9CLEVBR0NUO2FBQ0MsU0FBSmdELEVBRUYsT0FIUWtWLE1BSEZpZSxLQUdWNU0sS0FBTXJuQixFQUhFekIsRUFBRTAxQixLQUdLbDJCLEVBQUdtbkI7YUFJWCxRQUhEcGtCLEdBT08sSUFBTG91QixHQUFLLElBWEwzd0IsRUFBRTAxQixLQUdLbDJCLEdBUUYsT0FSRUEsTUFRUG14QixHQVJSN0gsRUFTMkIsSUFUckJybkIsRUFBR2xDLEVBQUdrWSxFQVFKa1o7YUFQRSxJQUlGSixHQUFLLElBUkx2d0IsRUFBRTAxQixLQUdKajBCO2FBS08sT0FMUEEsTUFLRTh1QixHQUxSekgsRUFNMkIsSUFEbkJ5SCxHQUxDaHhCLEVBQUdrWSxFQUFHalk7V0FEYixZQUZNUSxFQUFFMDFCO2tCQWNOL21CLEtBQUszTztXcEN2SWxCOzs7ZW9DMkltQjtnQkFES1I7Z0JBQUhpWTtnQkFBSGxZO2dCQUFIa0M7Z0JBQ0ksb0JBSkR6QixFQUdBVDtlQUNDLFNBQUpnRCxFQUNVLE9BRkprVjtlQUNGLElBRUgsYUFGRGxWLEVBRFMvQyxFQUFUaUMsVUFBU3NnQjs7YUFEYjtrQkFlRTRSLFdBVHFCdDBCO1dwQy9JbEM7Ozs7Z0JvQzJKd0J1eUI7Z0JBQUgzTjtnQkFBSHpiO2dCQUFINFA7ZUFDRCxjQWJvQi9ZLEVBWWhCbUo7K0JBQUd5YixVQUFON0w7Ozt5QkFUUzVZLFdBQUhpWSxXQUFIbFksV0FBSGtDO3FCQUNELGNBSm9CcEMsRUFHaEJFLGdCQUFHa1ksUUFBTmhXOytCQUFTakM7O21CQURiOzJCQVVhb3lCOzthQURiO2tCQWdCRWdDLGVBVHlCdjBCO1dwQ2pLdEM7Ozs7Z0JvQzZLd0J1eUI7Z0JBQUgzTjtnQkFBSHpiO2dCQUFINFA7ZUFDRCxjQWJ3Qi9ZLEVBWXBCbUo7K0JBQUd5YixVQUFON0w7Ozt5QkFUUzVZLFdBQUhpWSxXQUFIbFksV0FBSGtDO3FCQUNELGNBSndCcEMsRUFHcEJFLGdCQUFHa1ksUUFBTmhXOytCQUFTakM7O21CQURiOzJCQVVhb3lCOzthQURiO2tCQWdCRWlDLFVBVG9CeDBCO1dwQ25MakM7Ozs7Z0JvQytMd0J1eUI7Z0JBQUgzTjtnQkFBSHpiO2dCQUFINFA7ZUFDRCxjQWJtQi9ZLEVBWWZtSjsrQkFBR3liLFVBQUcyTjs7O3lCQVRBcHlCLFdBQUhpWSxXQUFIbFksV0FBSGtDO3FCQUNELGNBSm1CcEMsRUFHZkUsZ0JBQUdrWSxRQUFHalk7K0JBQVRpQzs7bUJBREo7MkJBVUkyVzs7YUFESjtrQkFnQkUwYixjQVR3QnowQjtXcENyTXJDOzs7O2dCb0NpTndCdXlCO2dCQUFIM047Z0JBQUh6YjtnQkFBSDRQO2VBQ0QsY0FidUIvWSxFQVluQm1KOytCQUFHeWIsVUFBRzJOOzs7eUJBVEFweUIsV0FBSGlZLFdBQUhsWSxXQUFIa0M7cUJBQ0QsY0FKdUJwQyxFQUduQkUsZ0JBQUdrWSxRQUFHalk7K0JBQVRpQzs7bUJBREo7MkJBVUkyVzs7YUFESjtrQkFPRTJiLFNBQVMvekI7V3BDdk50Qjs7O2VvQzJObUI7Z0JBREtSO2dCQUFIaVk7Z0JBQUhsWTtnQkFBSGtDO2dCQUNJLG9CQUpHekIsRUFHSlQ7ZUFDQyxTQUFKZ0QsRUFDVSxVQUZKa1Y7ZUFDRixJQUVILGFBRkRsVixFQURTL0MsRUFBVGlDLFVBQVNzZ0I7O2FBRGI7a0JBTUVpUSxJQUFJaHlCO1dwQy9OakI7Oztlb0NtT21CO2dCQURFUjtnQkFBSEQ7Z0JBQUhrQztnQkFDSSxvQkFKRnpCLEVBR0NUO2dCQUNDLFdBQUpnRDtlQUFJLFFBRlI7ZUFFUSxJQURFd2YsYUFDTnhmLEVBRE0vQyxFQUFOaUMsVUFBTXNnQjs7YUFEVjtrQkFLRTRUO1dwQ3RPYjtXb0NzTzJCOzs7O21CQUVBbGUsYUFBSGxZOzJCQUFHa1k7YUFEVCxnQkFFZ0I7a0JBRXJCbWU7V3BDM09iO1dvQzJPK0I7Ozs7bUJBRUpuZSxhQUFIbFk7OEJBQUdrWTthQURULFNBRW1CO2tCQUV4Qm9lO1dwQ2hQYjtXb0NnUDJCOzs4QkFHTiwrQkFBTjlUO21CQURHdEssYUFBSGxZOzJCQUFHa1k7YUFEQSxnQkFFZ0I7a0JBRXJCcWU7V3BDclBiO1dvQ3FQK0I7OzhCQUdWLCtCQUFOL1Q7bUJBREd0SyxhQUFIbFk7OEJBQUdrWTthQURBLFNBRW9CO2tCQUV6QnNlO1dBQXFCOzs7bUJBR1Z2MkIsV0FBSGlZLFdBQUhsWTtlQUFnQixvQ0FBaEJBLEVBQUdrWSxFQUFHalk7YUFETSxJQUFOb3lCO2FBQU0sT0FBTkE7V0FETiwwQ0FFNEM7dUJBRS9DclksR0FBR0Y7V0FDWCxHQURRRTthQUtKLEdBTE9GO2VBS00sc0JBTE5BLElBS007ZUFDRixXQU5QRSxHQUtDdlosRUFBR3lYLEVBQ0csbUJBTko0QjthQUdLLE9BSFJFO1dBRVEsT0FGTEYsRUFNMkI7a0JBRWhDNFksT0FBT2p5QixFQUdYOG9CO1dwQzFRVCxHb0MwUVNBO2FBQ1UsSUFETXRwQixFQUFoQnNwQixLQUFhclIsRUFBYnFSLEtBQVV2cEIsRUFBVnVwQixLQUFPcm5CLEVBQVBxbkIsS0FDVSxvQkFKQzlvQixFQUdEVDthQUNBLFNBQUpnRCxFQUNVLFlBRlRkLEVBQVNqQzthQUdULFFBRkQrQyxHQUtPLElBQUxvdUIsR0FBSyxPQVRGM3dCLEVBR0tSLEdBTUgsT0FOR0EsTUFNUm14QixHQU5SN0gsRUFNa0QsSUFOM0NybkIsRUFBR2xDLEVBQUdrWSxFQU1Ma1o7YUFMRSxJQUdGSixHQUFLLE9BUEZ2d0IsRUFHSnlCO2FBSU0sT0FKTkEsTUFJQzh1QixHQUpSekgsRUFJa0QsSUFBMUN5SCxHQUpFaHhCLEVBQUdrWSxFQUFHalk7V0FEZDtrQkFTRXcyQixPQUFPaDJCLEVBQUVYLEVBTWJ5cEI7V3BDeFJULEdvQ3dSU0E7YUFDVSxJQURRbkMsRUFBbEJtQyxLQUFldHBCLEVBQWZzcEIsS0FBWXJSLEVBQVpxUixLQUFTdnBCLEVBQVR1cEIsS0FBTXJuQixFQUFOcW5CLEtBQ1Usb0JBUEM5b0IsRUFNRlQ7YUFDQyxTQUFKZ0Q7ZUFFSSxxQkFUR2xELEtBTURvWTtlQUdGO2lCQUdGLElBREdpZSxjQUNILE9BTklqZSxNQUtEaWUsS0FMWDVNLEtBQU1ybkIsRUFOS3pCLEVBV0EwMUIsS0FMSWwyQixFQUFHbW5CO2VBSUosWUFKUmxsQixFQUFTakM7YUFPSixRQU5MK0MsR0FVTyxJQUFMb3VCLEdBQUssT0FqQkYzd0IsRUFBRVgsRUFNRUcsR0FXRixPQVhFQSxNQVdQbXhCLEdBWFI3SCxFQVkyQixJQVpyQnJuQixFQUFHbEMsRUFBR2tZLEVBV0prWjthQVZFLElBT0ZKLEdBQUssT0FkRnZ3QixFQUFFWCxFQU1Qb0M7YUFRTyxPQVJQQSxNQVFFOHVCLEdBUlJ6SCxFQVMyQixJQURuQnlILEdBUkNoeEIsRUFBR2tZLEVBQUdqWTtXQUpELHVCQUZESDtXQUVDLFlBRUcsSUFBUjQyQixrQkFBUSxZQUpOajJCLEVBSUZpMkI7V0FERztrQkFpQlJ0ekIsS0FBS3REO1dwQ3RTbEI7OzttQm9Dd1N3QkcsYUFBSGlZLGFBQUhsWSxhQUFIa0M7ZUFDSixLQUhPcEMsRUFFSG9DO2VBQ00sV0FISHBDLEVBRUFFLEVBQUdrWTsyQkFBR2pZOzthQUROO2tCQUlMK0ksSUFBSWxKO1dwQzNTakI7YW9DK1NvQjtjQURPc25CO2NBQUhubkI7Y0FBSGlZO2NBQUhsWTtjQUFIa0M7Y0FDSyxRQUpIcEMsRUFHRm9DO2NBRUssZUFMSHBDLEVBR0lvWTtjQUdELFFBTkhwWSxFQUdPRzthQUdKLFVBRkw0WSxJQURHN1ksRUFFSDBrQixJQUNBMk4sSUFIWWpMO1dBRGhCO2tCQU9FelcsS0FBSzdRO1dwQ3BUbEI7YW9Dd1RvQjtjQURPc25CO2NBQUhubkI7Y0FBSGlZO2NBQUhsWTtjQUFIa0M7Y0FDSyxTQUpGcEMsRUFHSG9DO2NBRUssZUFMRnBDLEVBR0FFLEVBQUdrWTtjQUdELFNBTkZwWSxFQUdNRzthQUdKLFVBRkw0WSxJQURHN1ksRUFFSDBrQixJQUNBMk4sSUFIWWpMO1dBRGhCO2tCQU9FbGUsS0FBS3BKLEVBQUV5cEIsRUFBRXZrQjtlQUFGMnhCLE1BQUV6eEI7V0FDZjtnQkFEYXl4QjtlQUlBO2dCQURJMTJCLEVBSEowMkI7Z0JBR0N6ZSxFQUhEeWU7Z0JBR0YzMkIsRUFIRTIyQjtnQkFHTHowQixFQUhLeTBCO2dCQUlBLGtCQUpGNzJCLEVBR0FFLEVBQUdrWSxFQUNNLEtBSlRwWSxFQUdIb0MsRUFIT2dEO2dCQUFGeXhCLElBR0kxMkI7Z0JBSEZpRjs7YUFFSixPQUZJQSxPQUlxQjtrQkFFOUIrSixRQUFRQztXcENuVXJCOzs7ZW9DcVU4QjtnQkFBTmpQO2dCQUFIaVk7Z0JBQUhsWTtnQkFBSGtDO2dCQUFlLGdCQUZUZ04sRUFFSGxQLEVBQUdrWTtlQUFTO2lCQUFTLGlCQUZsQmhKLEVBRU5oTjtpQkFBd0IscUJBQWZqQztpQkFBZTs7O2VBRHJCOztrQkFHTGtQLE9BQU9EO1dwQ3ZVcEI7Oztlb0N5VThCO2dCQUFOalA7Z0JBQUhpWTtnQkFBSGxZO2dCQUFIa0M7Z0JBQWUsZ0JBRlZnTixFQUVGbFAsRUFBR2tZO2VBQVM7OztpQkFBUyxnQkFGbkJoSixFQUVMaE47aUJBQXdCLHVCQUFmakM7aUJBQWU7ZUFEckI7O2tCQVdMMjJCLGdCQUFnQkMsRUFBRXAyQjtXcENuVi9CO2lCb0NxVndCUixXQUFIaVksV0FBSGxZLFdBQUhrQzthQUNGLDJCQUhnQjIwQixFQUFFcDJCLEVBRWhCeUIsR0FBR2xDLEVBQUdrWSxFQUFHalk7V0FETixpQkFEVzQyQixFQUFFcDJCO2tCQUtsQnEyQixnQkFBZ0JELEVBQUVwMkI7V3BDeFYvQjtpQm9DMFZ3QlIsV0FBSGlZLFdBQUhsWSxXQUFIa0M7YUFDSSxXQURKQSxFQUFHbEMsRUFBR2tZLEVBQ0YsZ0JBSFUyZSxFQUFFcDJCLEVBRVBSO1dBRE4saUJBRFc0MkIsRUFBRXAyQjtrQkFRbEJ1VCxLQUFLOVIsRUFBRWxDLEVBQUVrWSxFQUFFalk7V0FDakIsR0FEV2lDO2dCQUFNakM7O2dCQUtpQjZ4QixHQUxqQjd4QjtnQkFLV214QixHQUxYbnhCO2dCQUtLZzJCLEdBTExoMkI7Z0JBS0RveEIsR0FMQ3B4QjtnQkFLUHF4QixHQUxPcnhCO2dCQUlpQjh4QixHQUp2Qjd2QjtnQkFJaUI0dUIsR0FKakI1dUI7Z0JBSVc2ekIsR0FKWDd6QjtnQkFJSzZ1QixHQUpMN3VCO2dCQUlEOHVCLEdBSkM5dUI7dUJBS3VCNHZCLGNBREFDO3dCQUVHLElBRjNCZixHQUFNRCxHQUFNZ0YsR0FFZSxLQUZUakYsR0FKZjl3QixFQUFFa1ksRUFBRWpZO3lCQUlpQjh4QixjQUNBRDswQkFFTixTQVBqQjV2QixFQUFFbEMsRUFBRWtZLEVBS0xvWixJQUFNRCxHQUFNNEUsR0FBTTdFOzBCQUd4QixPQVJPbHZCLEVBQUVsQyxFQUFFa1ksRUFBRWpZO2FBR0QsdUJBSEhELEVBQUVrWSxFQUFKaFc7V0FFSyx1QkFGSGxDLEVBQUVrWSxFQUFFalksRUFRQztrQkFNaEI4TixPQUFPaU0sR0FBR0Y7V0FDWixHQURTRTthQUtMLEdBTFFGO2VBS0ssc0JBTExBLElBS0s7ZUFDRCxZQU5QRSxHQUtBdlosRUFBR3lYLEVBQ0ksbUJBTko0QjthQUdJLE9BSFBFO1dBRU8sT0FGSkYsRUFNMkI7a0JBRXJDaWQsZUFBZS9jLEdBQUdoYSxFQUFFa1ksRUFBRTRCO1dBQ3hCLEdBRHNCNUIsR0FFVixJQUFMd00sSUFGZXhNLEtBRVYsWUFGSzhCLEdBQUdoYSxFQUViMGtCLElBRmlCNUssSUFHZCxjQUhPRSxHQUFPRixHQUdGO2tCQUVoQndZLE1BQU03eEI7V3BDM1huQjthb0MrWG1CO2NBREtSO2NBQUhpWTtjQUFIbFk7Y0FBSGtDO2NBQ0ksb0JBSkF6QixFQUdEVDthQUNDLFNBQUpnRCxFQUNVLFVBRlZkLEtBQU1nVyxHQUFHalk7YUFHUixRQUZEK0M7ZUFLbUIsZ0JBVGZ2QyxFQUdLUixHQU1VO2VBQWMsZUFOakNpQyxFQUFHbEMsRUFBR2tZLEVBTUg0WSxJQUFJeUIsS0FBTW5CO2FBTFQ7Y0FHZSxjQVBmM3dCLEVBR0p5QjtjQUltQjs7O2FBQXdCLFVBQXhDOHVCLEdBQUl3QixPQUFvQyxLQUE5QmxCLEdBSlZ0eEIsRUFBR2tZLEVBQUdqWTtXQURiO2tCQVNFMmpCLE1BQU05akIsRUFBRXdCLEdBQUdDO1dBQ2pCLEdBRGNEO2lCQUdxQjJZLEdBSHJCM1ksTUFHZXdVLEdBSGZ4VSxNQUdTMDFCLEdBSFQxMUIsTUFHR2tULEdBSEhsVCxNQUdIRSxHQUhHRjthQUd3QyxVQUhyQ0MsT0FHa0IwWTtlQUNaOzRCQUROekYsR0FIQWpUO2dCQUlNOzs7Z0JBQ21DLFdBTDlDekIsRUFHaUJnVyxHQUNaOGM7Z0JBQ3FCLGdCQUwxQjl5QixFQUdLMFUsTUFBTXdpQixJQUNWQztlQUNNLDRCQUxQbjNCLEVBR0QwQixHQUNGQyxJQURRK1M7O1lBREcsS0FGSGpULEdBRUc7Y0FGSEE7YUFPTTtjQURTc3hCLEtBTmZ0eEI7Y0FNUzIxQixLQU5UMzFCO2NBTUcrSCxHQU5IL0g7Y0FNSDJYLEtBTkczWDtjQU9NLGNBREgrSCxHQU5OaEk7Y0FPUzs7O2NBQ21DLFdBUjlDeEIsRUFPS2d6QixLQURlRDtjQUVNLGdCQVIxQi95QixFQU1Rd0osR0FDUDZ0QixRQURhRDthQUVQLDRCQVJQcDNCLEVBT0htWixLQURLQyxNQUFNNVA7V0FJaEIsNEJBQVk7a0JBRVZxcEIsTUFBTTd5QixFQUFFd0IsR0FBR0M7V0FDakIsR0FEY0Q7Z0JBQUdDOztnQkFJa0J3WSxHQUpsQnhZO2dCQUlZcXhCLEdBSlpyeEI7Z0JBSU0wMUIsR0FKTjExQjtnQkFJQStILEdBSkEvSDtnQkFJTkUsR0FKTUY7Z0JBR2tCMFksR0FIckIzWTtnQkFHZXdVLEdBSGZ4VTtnQkFHUzAxQixHQUhUMTFCO2dCQUdHa1QsR0FISGxUO2dCQUdIRSxHQUhHRjtrQkFJcUJ5WSxNQURBRTtpQkFHVjs4QkFIUnpGLEdBSEFqVDtrQkFNUTs7O2tCQUNYLFFBUEZ6QixFQUdEMEIsR0FHQTBYO2tCQUN5QixRQVB4QnBaLEVBR2lCZ1csR0FHVitjO2lCQUNpQixHQURyQnFFO21CQUlJLElBQU5FLEtBSkVGO21CQUl3QixzQkFIN0JoMUIsRUFKT3NTLEdBT3NCLFdBVjNCMVUsRUFHSzBVLEdBQU13aUIsR0FPVkksTUFIbUJuM0I7aUJBRWhCLFlBRk5pQyxFQUpPc1MsR0FBTXdpQixHQUlTLzJCO2VBS1A7OEJBUlJxSixHQUpIaEk7Z0JBWVc7OztnQkFDWCxVQWJGeEIsRUFZRG1aLEtBUkF4WDtnQkFTeUIsVUFieEIzQixFQVlPZ3pCLEtBUlVGO2VBU08sR0FEckJ1RTtpQkFJSSxJQUFORSxLQUpFRjtpQkFJd0Isc0JBSDdCdGUsSUFUT3ZQLEdBWXNCLFdBaEIzQnhKLEVBSUt3SixHQVlKK3RCLEtBWlVKLElBU1M1RTtlQUVoQixZQUZOeFosSUFUT3ZQLEdBQU0ydEIsR0FTUzVFO2lCQVh0Qi94QixFQUZJZ0I7O2dCQUVKaEIsRUFGT2lCO1dBRVksT0FBbkJqQixDQWMyQztrQkFFL0N3TixPQUFPb0IsRUFFWHFhO1dwQ3RhVCxHb0NzYVNBO2FBRVc7Y0FGSXRwQixFQUFmc3BCO2NBQVlyUixFQUFacVI7Y0FBU3ZwQixFQUFUdXBCO2NBQU1ybkIsRUFBTnFuQjtjQUVXLFdBSkFyYSxFQUVMaE47Y0FHTSxlQUxEZ04sRUFFRmxQLEVBQUdrWTtjQUlELFdBTkFoSixFQUVJalA7YUFJSixHQURMcTNCO2tCQUhBcDFCLE1BRUEyVyxPQUZTNVksTUFJVG95QixJQUMrQixPQUxyQzlJLEVBSzRDLFlBSHRDMVEsSUFGRzdZLEVBQUdrWSxFQUlObWE7YUFFQyxjQUpEeFosSUFFQXdaO1dBTEc7a0JBU0x6a0IsV0FBVzlOO1dwQzlheEI7YW9Da2JvQjtjQUZJRztjQUFIaVk7Y0FBSGxZO2NBQUhrQztjQUVLLGVBSklwQyxFQUVUb0M7Y0FHTSxlQUxHcEMsRUFFTkUsRUFBR2tZO2NBSUQsZUFOSXBZLEVBRUFHO2FBSUosR0FETHMzQixLQUdXLElBQU43UyxJQUhMNlMsT0FHVyxZQUpYMWUsSUFGRzdZLEVBTUUwa0IsSUFGTDJOO2FBR1EsY0FMUnhaLElBRUF3WjtXQUxHO2tCQVdMM2YsVUFBVXhEO1dwQzFidkI7YW9DOGIwQjtjQUZGalA7Y0FBSGlZO2NBQUhsWTtjQUFIa0M7Y0FFVyxnQkFKSGdOLEVBRVJoTjtjQUVXOztjQUNMLGVBTEVnTixFQUVMbFAsRUFBR2tZO2NBSUssa0JBTkhoSixFQUVDalA7Y0FJRTs7Z0JBRFhxM0IsS0FHa0IsZ0JBSmJ6RCxHQUVBRSxJQUVILGVBSkRELEdBRkU5ekIsRUFBR2tZLEVBSUw4YjthQUZVLFNBS0ssS0FMWEgsR0FGRjd6QixFQUFHa1ksRUFJRDZiO2FBR0gsaUJBTERELEdBRUFFO1dBTEU7a0JBWUxkLFVBQVUzSixFQUFFemdCO2VBQUY2dEIsTUFBRWpUO1dBQ2xCO2dCQURnQmlUOztnQkFHQzEyQixFQUhEMDJCO2dCQUdGemUsRUFIRXllO2dCQUdMMzJCLEVBSEsyMkI7O2dCQUFFdkQsT0FHUHB6QixFQUFHa1ksRUFBR2pZLEVBSEN5akI7Z0JBQUZpVDtnQkFBRWpUOzthQUVQLE9BRk9BLElBR21DO2tCQUVuRGxhLFFBQVF3RyxJQUFJeW5CLEdBQUdDO1dBWWlCLG1CQVpqQkEsTUFZRixlQVpERCxNQUNNcnVCLFFBQUdDO1dBQ25CO2dCQURnQkQ7a0JBQUdDO2lCQU1UO2tCQUQ4QmtxQixLQUxyQmxxQjtrQkFLaUJ1cEIsR0FMakJ2cEI7a0JBS2E0dEIsR0FMYjV0QjtrQkFLU0MsR0FMVEQ7a0JBS0RtcUIsS0FMRnBxQjtrQkFLRjBNLEdBTEUxTTtrQkFLTjR0QixHQUxNNXRCO2tCQUtWb0wsR0FMVXBMO2tCQU1OLG9CQURKb0wsR0FBc0JsTDtpQkFDbEIsU0FBSnRHO21CQUVJLElBQUo2WCxJQUFJLFdBVEo3SyxJQU1JZ25CLEdBQXNCQzttQkFHdEIsU0FBSnBjO3FCQUUwQjtxQ0FMSStYLEdBQUlXO3NCQUsxQixlQUxBemQsR0FBSTBkO3NCQUxGcHFCO3NCQUFHQzs7bUJBU0YsT0FEWHdSO2lCQURXLE9BRFg3WDtlQUZNO2FBREMsT0FITXFHLFFBVzZCO2tCQUVsREYsTUFBTTZHLElBQUl5bkIsR0FBR0M7V0FTaUIsbUJBVGpCQSxNQVNGLGVBVERELE1BQ01ydUIsUUFBR0M7V0FDakI7Z0JBRGNEO2tCQUFHQztpQkFNZjtrQkFEc0NrcUIsS0FMdkJscUI7a0JBS21CdXBCLEdBTG5CdnBCO2tCQUtlNHRCLEdBTGY1dEI7a0JBS1dDLEdBTFhEO2tCQUtDbXFCLEtBTEpwcUI7a0JBS0EwTSxHQUxBMU07a0JBS0o0dEIsR0FMSTV0QjtrQkFLUm9MLEdBTFFwTDtrQkFNWiw2QkFESW9MLEdBQXNCbEw7aUJBQzFCO21CQUF5QixvQkFQdkIwRyxJQU1NZ25CLEdBQXNCQzttQkFDTDtxQkFDRztxQ0FGTXJFLEdBQUlXO3NCQUU1QixlQUZFemQsR0FBSTBkO3NCQUxKcHFCO3NCQUFHQzs7bUJBTVU7OztpQkFGZjs7YUFEQyxPQUhJQSxPQVE2QjtrQkFFNUM0cUI7V0FBVzthQUVpQixJQUF2QmgwQixXQUFIaUMsV0FBMEIsY0FBdkJqQzthQUFNLGlCQUFUaUM7V0FERyxRQUNpQztrQkFFdEN5MUI7Ozs7ZUFFeUM7Z0JBQTlCMTNCO2dCQUFIaVk7Z0JBQUhsWTtnQkFBSGtDO2dCQUF1QyxhQUFwQ2xDLEVBQUdrWSxHQUFpQyxvQkFBOUJqWTs7d0JBQVRpQzs7YUFERztrQkFHVDAxQixTQUFTdDNCLEdBQ1gsc0JBRFdBLEVBQ007a0JBTWZpMUIsUUFBUTM1QixFQUFFMnRCO1dBQ1o7NkJBQW1CQTtzQkFBTCxxQ0FBUXNOLEVBQUU3MkIsRUFBTHVwQixFQUFxQjtvQkFENUJBO29CQUFGM3RCLEVBQ2tDO2tCQUUxQzQ1QixPQUFPNTVCLEdBQUksZUFBSkEsRUFsWVB1UixNQWtZMEI7a0JBRXRCc29CLFlBQWF6eUI7V0FBTyxHQUFQQTthQUVrQyxJQUF2Q2xILEtBRktrSCxLQUVQNEosRUFGTzVKLEtBRVRoRCxFQUZTZ0QsS0FFWDZ6QixFQUZXN3pCLEtBRWtDLGVBQXpDNEosRUFBRTlRO2FBQTBCLGFBQWhDKzZCLEVBQUU3MkIsa0JwQzNmakIsT29DeWZheTFCO1dBQ0csUUFDK0Q7a0JBRXRFNWdCLE9BQU8wVTtXQUNJLG1CQURKQTtXQUNJLHNCcEM5ZnBCLE9vQ3lmYWtNLHVCQUt3QjtrQkFFeEJDLFVBQVVwMUIsRUFBRXdJO2VBQUYrSCxNQUFFNlM7V0FDbEI7Z0JBRGdCN1M7OztnQkFHSHFILEVBSEdySDtnQkFHTjdRLEVBSE02UTtnQkFHVDNPLEVBSFMyTztnQkFBRXVpQixPQUdScHpCLEVBQUdrWSxFQUFOaFcsRUFIV3doQjtnQkFBRjdTO2dCQUFFNlM7O2FBRVAsT0FGT0EsSUFHa0M7a0JBRTlDaVMsZ0JBQWlCM3lCO1dBQU8sR0FBUEE7YUFHZSxJQUR4QmxILEtBRlNrSCxLQUVYNEosRUFGVzVKLEtBRWJoRCxFQUZhZ0QsS0FFZjZ6QixFQUZlN3pCLEtBR2UsZUFEMUI0SixFQUFFOVE7YUFDTzt3QkFEYis2QixFQUFFNzJCO29DcEN2Z0JqQixPb0NxZ0JhMjFCO1dBQ0csUUFFZ0Q7a0JBRXZEQyxXQUFXNXlCO1dBQ0ksbUJBREpBO1dBQ0ksc0JwQzNnQnhCLE9vQ3FnQmEyeUIsMkJBTTRCO2tCQUVoQ0UsWUFBWUMsSUFBSXZNO2VBQ0ZvTixJQURFcE4sRUFDQXZtQjtXQUFJO2dCQUFOMnpCO2VBR0U7Z0JBREMxMkIsRUFGSDAyQjtnQkFFQXplLEVBRkF5ZTtnQkFFSDMyQixFQUZHMjJCO2dCQUVOejBCLEVBRk15MEI7Z0JBR0Usb0JBREwzMkIsRUFIQzgxQjtlQUlJLFNBRVIxMUI7aUJBQU8sUUFBUEEsR0FDSyxXQUpGSixFQUFHa1ksRUFBR2pZLEVBRkQrQyxHQUFGMnpCLElBRU56MEIsRUFGUWM7cUJBQUYyekIsSUFFRzEyQjs7ZUFDRCxZQURMRCxFQUFHa1ksRUFBR2pZLEVBRkQrQzs7O21DcEM5Z0J6QixPb0N5ZmF5eUIsd0JBOEJzQjs7aUJBbGExQnRvQjtpQkFFQXFCO2lCQXdHSWlrQjtpQkF0R0FmO2lCQXlKQStFO2lCQTdMSjlFO2lCQWtMSWU7aUJBK0hBOU87aUJBWUErTztpQkEwREpucEI7aUJBY0FMO2lCQXBMSS9GO2lCQXVCQThGO2lCQU1BK0Y7aUJBSUFFO2lCQTZGQXJCO2lCQVVBRjtpQkFZQThFO2lCQTJDQXVoQjtpQkFRSjJEO2lCQXZRSXhCO2lCQUtBQztpQkFLQUM7aUJBS0FDO2lCQWZBSDtpQkFLQUM7aUJBZ0pBL0Q7aUJBcFBBbGpCO2lCQWdGQW9sQjtpQkEvREFKO2lCQWtCQUM7aUJBa0JBQztpQkFrQkFDO2lCQTZGQXZyQjtpQkFTQTJIO2lCQXlNSmtFO2lCQWFBK2dCO2lCQUdBQztpQkF6QkFOO2lCQUdBQztJQWxiRztJRnFCRzthR3RFVnFDLGdCQUFZLGNBQW9CO2FBRWhDQyxNQUFNeDNCLEdBQUksMEJBQXFCO2FBRS9CeTNCLE9BQUt6M0IsR0FBSSxVQUFKQSxVQUE2QjthQUVsQzAzQixLQUFLdjNCLEVBQUVILEdBQUksVUFBTkcsRUFBRUgsTUFBSSxPQUFKQSxhQUFJLFFBQW1DO2FBRTlDMjNCLElBQUkzM0I7TUFDTixTQURNQTtNQUNOO1lBQ01pQyxXQUFKQyxXQUZJbEMsT0FFQWlDLEdBRkFqQywyQkFFSmtDO01BQ1UsV0FBVzthQUVyQjAxQixRQUFRNTNCO01BQ1YsU0FEVUE7TUFDVjtZQUNNaUMsV0FBSkMsV0FGUWxDLE9BRUppQyxHQUZJakMsOEJBRVJrQztNQUNVLFFBQUk7YUFFZDIxQixJQUFJNzNCO01BQ04sU0FETUEsS0FDTixTQUNXLElBQVRrQyxXQUFTLE9BQVRBLEdBQ1MsV0FBVzthQUVwQjQxQixRQUFROTNCO01BQ1YsU0FEVUEsS0FDVixTQUNXLElBQVRrQyxXQUFTLFVBQVRBLElBQ1MsUUFBSTthQUViNjFCLFdBQVMvM0IsR0FBSSxhQUFKQSxRQUFjO2FBRXZCZzRCLFNBQU9oNEIsR0FBSSxPQUFKQSxJQUFTO2FBRWhCaTRCLE9BQUt6NEIsRUFBRVEsR0FBSSxjQUFOUixFQUFFUSxLQUFtQjthQUUxQms0QixPQUFLMTRCLEVBQUVvTyxJQUFJNU4sR0FBSSxtQkFBVlIsRUFBRW9PLElBQUk1TixLQUE0QjthQUl2Q200QixTQUFPbjRCLEdBQUksZ0JBQUpBLEtBQW1CO2FBRTFCaTFCLFFBQVE1TCxFQUFFL3RCLEdBQUkscUJBQWM2RSxHQUFLLFlBQUxBLEVBQXBCa3BCLEVBQWlDLEVBQS9CL3RCLEVBQWtDO2FBRTVDODhCLFNBQU9wWCxHQUNELElBQUpoaEIsRUFBSSxZQUNSLFFBRElBLEVBREtnaEIsR0FFVCxPQURJaGhCLENBRUg7Ozs7O09BN0NDdTNCO09BTUFHO09BRUFDO09BS0FDO09BS0FDO09BS0FDO09BckJBTjtPQUVBQztPQXdCQU07T0FFQUM7T0FFQUM7T0FFQUM7T0FJQUM7T0FFQWxEO09BRUFtRDs7O2FDakNBQyxnQkFBWSxnQkFJZjthQUVHQyxRQUFNalAsR0FDUixtQ0FFYTthQUVYK0gsSUFBSWp4QixFQUFFa3BCO01BQ1IsWUFETWxwQixLQUNOLEtBRFFrcEI7TUFDUjtnQkFEUUEsOEJBQ0prUCxLQURJbFAsT0FDSmtQO2dCQURJbFAsZ0JBQ0prUCxLQURJbFAsT0FDSmtQLE9BWVk7YUFLZEMsS0FBS25QO01BQ1AsU0FET0EsS0FDUCxTQUVzQixJQUFib1AsZ0JBQWEsT0FBYkEsUUFEQSxhQUNvQjthQUUzQkMsU0FBU3JQO01BQ1gsU0FEV0EsS0FDWCxTQUVzQixJQUFib1AsZ0JBQWEsVUFBYkEsU0FEQSxRQUN5QjthQUtoQ0UsT0FBS3RQO01BQ1AsU0FET0E7TUFDUDs7O2NBS2tCcmMsYUFOWHFjLDJCQU1XcmM7UUFGaEIsUUFKS3FjO1FBSUw7TUFGTyxhQU9BO2FBRVB1UCxTQUFTdlA7TUFDWCxTQURXQTtNQUNYOzs7Y0FLa0JyYyxhQU5QcWMsMkJBTU9yYztRQUZoQixRQUpTcWM7UUFJVDtNQUZPLFFBT0s7YUFLWndQLE9BWUV4UDtNQUFLLGFBQUxBLFVBWGUwUCxPQUFLUixLQVdwQmxQO01BVkY7V0FEc0JrUDtjQUdiRSxRQUhhRixRQUdKdnJCLEtBSEl1ckIsUUFJaEIxekIsT0FERzR6QjthQUhRTSxLQU9ILFVBSFJsMEIsU0FFSyxXQUZMQTtjQUpXazBCLEtBSVhsMEIsSUFKZ0IwekIsS0FHSnZyQjs7UUFEVCxXQUZRK3JCO1FBRVIsT0FGRUQsTUFXMkQ7YUFFdEVFLFdBQVMzUCxHQUNYLGFBRFdBLFFBQ0M7YUFFVjRQLFNBQU81UCxHQUNULE9BRFNBLElBQ0Q7YUFFTjZQLE9BUUUxNUIsRUFBRTZwQjtNdEM1SFQsSXNDcUhrQmtQLEtBT1RsUDtNQU5KO1dBRGFrUDtjQUdKRSxRQUhJRixRQUdLdnJCLEtBSEx1ckI7VUFJWCxXQUdBLzRCLEVBSk9pNUI7Y0FISUYsS0FHS3ZyQjs7UUFEVCxTQUtjO2FBRXZCbXNCLE9BUUUzNUIsRUFBRWtQLE9BQUsyYTtVQVBJM2tCLEtBT1RnSyxPQVBjNnBCLEtBT1RsUDtNQU5UO1dBRGtCa1A7VUFJTDtXQURKRSxRQUhTRjtXQUdBdnJCLEtBSEF1ckI7V0FJTCxrQkFHWC80QixFQVBXa0YsS0FHSit6QjtXQUhJL3pCO1dBQUs2ekIsS0FHQXZyQjs7UUFEVCxPQUZJdEksS0FPb0I7YUFFakMwMEIsU0FBU0MsR0FBR0M7TUFDZCxhQURXRDtNQUNYO1FBQ0UsU0FGWUM7UUFFWjtrQkFGWUE7Ozs7a0JBQUhEOzs7Ozs7a0JBQUdDOztrQkFBSEQ7a0JBU1AsUUFUT0E7a0JBQUdDLFFBQUhELE1BQUdDLFFBQUhELE1BQUdDLFFBQUhELE1BSVAsUUFKT0E7aUJBWUM7YUFJVkUsU0FBT2xRO01BQ1QsU0FBUXRPLElBQUlyWTtRQUFPLEdBQVBBO2NBRU92QyxFQUZQdUMsS0FFVXNLLEtBRlZ0SztVQUVrQyxVQUEzQnZDLGlCdEMzSnRCLE9zQ3lKVzRhLElBRWMvTjtRQURYLFFBQzRDO01BRnZELFNBRFNxYztNQUNULHNCdEN6SkgsT3NDeUpXdE8sZUFJRzthQUVUeWUsVUFBUW5RLEVBQUUvdEIsR0FBSSxxQkFBYzZFLEdBQUssV0FBTEEsRUFBcEJrcEIsRUFBaUMsRUFBL0IvdEIsRUFBa0M7YUFFNUNtK0IsU0FBT3pZLEdBQ0QsSUFBSnFJLEVBQUksWUFDUixVQURJQSxFQURLckksR0FFVCxPQURJcUksQ0FFSDs7Ozs7T0F2SUNnUDtPQVdBakg7O09BK0JBdUg7T0FXQUM7T0FYQUQ7T0FiQUg7T0FLQUU7T0FMQUY7T0F2QkFGO09BNkRBTztPQWNBRztPQUdBQztPQUdBQztPQVVBQztPQVVBQztPQWdCQUc7T0FPQUM7T0FFQUM7Ozs7O2FDaklBQztNQUFRLDZCQUVEQSw0QkFEQyxRQUNlO2FBQ3ZCN0Q7TUFBTyw2QkFFQUEsMEJBREMsUUFDYTthQUVyQjhELFVBQVVyNEI7TUFDSCxhQURHQSxZQUNaLHFCQURZQSxPQUNILGlCQUFxRDthQUd4RHM0QixTQUFpREYsTUFBTTloQjtNdkMzQ2hFLEl1QzJDZ0V3TTtNQUFLO2tCQUFMQTtTQUFLLE9BQUxBOztZQU85QyxJQURKdVMsR0FOa0R2UyxPQU10RHNTLEdBTnNEdFMsT0FPOUMsZUFQd0NzVixNQU1oRGhEO1lBQ1E7a0JBUDhDdFMsSUFNbER1Uzs7Y0FDSTtvQkFDQWtELGFBQUg5MkIsMEJBQUc4MkIsSUFGSmxEO2NBSUQ7O1lBaUJFO2VBM0JpRHZTO2FBMkJqRCxrQkFBTDVrQjthQUFLLGlCQUFMQSxrQm5CM0NMdU0saUJtQjJDS3ZNO2FBM0JzRDRrQjs7Ozs7O3VCQWMxRCxJQURzQjBWLFlBQ3RCLHNCQURzQkEsSUFib0MxVjtjQVlqQztZQUliLCtCQWhCd0NzVjtZQWdCeEMsWUFFQSxJQUFMSyxlQUFLLFVBQUxBLElBbEJtRDNWO1lBaUJoRDs7O1lBS1YsSUFETTlpQixFQXJCb0Q4aUI7WUFzQjFELEdBRE05aUIsYUFDaUIsVUFEakJBO1lBQzRCLFNBRDVCQSxLQUVhO1lBRG5CLElBRU0zQixFQUFKLHNCQUhJMkI7WUFHSixPQUhJQTtZQUdKLFVBQUkzQixFQXhCb0R5a0I7O1FBS25DLE9BTG1DQSxJQTJCcEI7YUFHbkM0VixVQUE2Q2g2QjtNQUVwRDtpQkFGb0RBO1FBRXBEO1NBQ1k7O1NBRFo7a0JBRWtCLElBQVQrQyxVQUFTLFVBQVRBOztZQUVPLElBQ1Y2VSxFQURVLFNBTm9DNVg7WUFNcEMsVUFDVjRYO2FBQ1U7O2NBRkEsU0FDVkEsTUFBb0IsSUFBZGtpQixJQUFObGlCLEtBQW9CLE9BQXBCQSxFQUFvQixVQUFka2lCO2NBRUQ7O1lBRUU7OytCQUFMdDZCO2FBQUssa0JBQUxBLGtCbkJ6REx1TSxpQm1CeURLdk07WUFBZTs7OztxQkFDRyxJQUFOdTZCLFlBQU0sT0FBTkE7WUFDQSxJQUFKNTVCLEVBQUksbUJBYmdDSDtZQWFoQyxhQUFKRztZQUFJLE9BQUpBOztZQUVaLElBRE1tQjtZQUNOLEdBRE1BLGFBQ2lCLFVBRGpCQTtZQUM0QixhQUQ1QkE7c0JBZDBDdEI7d0JBaUIzQyxzQkFIQ3NCLGFBR21DO2FBRzFDMjRCO01BQU8sVUFFRyxJQUFMajZCLFdBQUssaUJBQUxBLEdBREcsUUFDYTthQUdqQms2QixVQUF5Q2w2QjtNQUMvQztpQkFEK0NBO1FBQy9DOztrQkFDa0IsSUFBTjRYLFVBQU0sT0FGNkI1WCxhQUU3QixPQUFONFgsRUFBTTs7O3dCQUNlLE9BSGM1WCxhQUdkOzs7WUFFN0IsSUFETXNCO1lBQ04sR0FETUEsYUFDaUIsVUFEakJBO1lBQzRCLGFBRDVCQTtzQkFKcUN0QjswQ0FJckNzQjs7UUFIVixVQVFVLFVBVHFDdEI7UUFTckM7UUFDSSxTQUNhO2FBR3pCbTZCO01BQU8sVUFFTSxJQUFSdEUsY0FBUSxpQkFBUkEsTUFERyxRQUNtQjthQUV2QnVFLFVBQVV0NkIsRUFBRUU7TUFDbEIsT0FEZ0JGO1FBR1Isb0JBSFVFO1FBR1Y7VUFFRixJQURHK0M7VUFDSCxVQUxZL0M7VUFLWjtXQUNpQixrQkFOUEYsVUFBRUU7V0FNSzs7O3VCQUZkK0MsRUFFRXMzQixPQUZGdDNCLEVBRU02VSxHQUFHMmU7UUFDTixZQVBNdjJCO01BQ0gsWUFER0EsT0FPTzthQVV2QnM2QixNQUFNeDZCO012Q3JJWDtRdUN1SWU7O1NBUk8sZ0JBTVhBLEVBRURza0I7U0FSWTs7O2lCQVFaQSxTQVJLL2dCO1FBQU8sU0FBVnVVO1FBQVUsT0FBZHlpQjtNQU9LO2FBR1JydEIsS0FBS2hOO01BQ0QsaUJBRENBO01BQ0QsVUFDTSxJQUFMK0MsV0FBSyxLQUZML0MsR0FFSyxPQUFMK0M7TUFDRyxlQUFhO2FBR3JCdzNCLFFBQU12NkIsR0FDRixpQkFERUEsR0FDRixTQUNNLGdCQUNGLFFBQUU7YUFHVnc2QixPQUFLaDdCLEVBQUVpN0I7TUFFUDtRQUFNLGlCQUZDQTtRQUVELGNBQ0MxM0IsV0FBSyxLQUhMMDNCLE1BR3NCLFdBSHhCajdCLEVBR0V1RDtRQUNHLFNBRUg7YUFLUDIzQixLQUFLbDdCLEdBQUksdUJBQUpBLEtBQXlEO2FBRTlEbTdCLFVBQVEvNEI7TUFDVjtNQUF3QixtQ0FBcUJ6QixFQUFFeUIsR0FBSyxVQUFQekIsRUFBRXlCLEVBQWlCLEVBRHREQSxTQUNpRTthQUd6RWc1QixVQUFVNTZCO01BQ1osSUFBSTA1QjtNQUFKOztpQkFRRSxJQUFJaDNCLEVBUkZnM0I7aUJBUUYsT0FBSWgzQixJQUFKLHNCQVRVMUM7MkJBQ1IwNUIsY0FVcUIsZ0JBWGIxNUIsRUFTTjBDOzJCQUdLLEVBQUM7YUFHVm00QixXQUFTNzZCO01BQ1gsSUFBSTA1QjtNQUFKOztpQkFFRSxJQUFJaDNCLEVBRkZnM0I7aUJBRUYsT0FBSWgzQixJQUFKLHFCQUhTMUM7MkJBQ1AwNUIsY0FJcUIsZUFMZDE1QixFQUdMMEM7MkJBR0ssRUFBQzthQUdWbzRCLFdBQVcvMkI7TUFFeUIscUJBRnpCQSxHQUV5QiwrQkFBcUM7YUFLekVnM0IsS0FBS3ovQixFQUFFMEUsR0FBMEMsY0FBMUNBLEdBQWtDLHVCQUFwQzFFLFVBQW9EO2FBQ3pEMC9CLE1BQU0xL0IsRUFBRTBFLEdBQXNDLGtCQUF4QzFFLEVBQXdDLEtBQXRDMEUsS0FBOEM7YUFDdERpN0IsTUFBTTMvQixHQUFJLGtCQUFKQSxNQUE4QzthQUVwRDQvQixLQUFLMTdCLEVBQUVRO01BQ1Q7Ozs7OzttQkFBdUQsY0FEOUNBLEdBQ2lDLGVBQUssV0FEeENSLFdBQ3NELEtBQUk7YUFFL0QyN0IsTUFBTTM3QixFQUFFUTtNQUFJOzs7Ozs7bUJBQWlELGNBQXJEQSxHQUErQyxxQkFBakRSLFVBQTZELEtBQUk7YUFDdkU0N0IsTUFBTTU3QjtNQUFJLHNDQUEyQyxxQkFBL0NBLFlBQStEO1FBRXJFNjdCO2FBQ0FDLE1BQU05N0I7TUFBSSxzQ0FBeUMsdUJBQTdDQSxLQUFtRCxLQUFHO2FBVzVEKzdCLFVBQXdELzdCO01BQXhEO09BRVU7O09BRlY7O2NBR1VvWSxXQUFIN1U7VUFDTDtVQUNBLFdBTHNEdkQsRUFHakR1RDtVQUdMO1VBQ0EsVUFQc0R2RCxFQUc5Q29ZO1VBSVI7O2NBRVErZSxZQUFKRDtVQUNKO1VBQ0EsVUFYc0RsM0IsRUFTbERrM0I7VUFHSjtVQUNBLFVBYnNEbDNCLEVBUzlDbTNCO1VBSVI7Z0JBRVM7Z0JBQ0Q7aUJBQ0csaUNBQXNCO2FBeEIvQjZFLEtBQWdEaDhCLEVBQUVRO01BQ3hEO01BQ0EsVUFBVSxNQUY4Q0E7TUFHeEQ7TUFDQSxVQUpzRFIsRUFJMUMsS0FKNENRO01BS3hEOzZCQUNnQjs7Ozs7O09BMURkMDZCO09BRUFDO09BSUFDO09BZUFDO09BU0FDO09BekNBTjtPQVpBeHRCO09BTUF1dEI7T0FsREFOO09BbUJBRTtPQWhGQVQ7T0FxR0FZO09BZ0VBUztPQUNBQztPQUNBQztPQUVBQztPQUdBQztPQUNBQztPQUVBQztPQUNBQztPQUlJRTs7YUNyTEpDLFNBQU8zN0I7TUFDVjtnQkFEVUE7T0FFVix3QkFESThRO09BRUosb0JBRElDO01BQ0osVUFBSTdRLElBREE2USxJQUNBN1EsRUFDc0Q7YUFFdkQwN0IsU0FBU3A2QixHQUFJLGtCQUFKQSxZQUEwQzthQUNuRHE2QixXQUFTcjZCLEdBQUksV0FBSkEsWUFBbUM7YUFFNUNzNkIsTUFBSXQ2QixFQUFFOEIsSUFBSUM7TXhDeENmLFF3Q3dDV0QsWUFBSUMsV0FBTi9CLE9BQU0rQixXQUFKRDtPQUdILGtCQUhDOUIsS0FBRThCLElBQUlDO01BRVAsa0NBQ2lDO2FBR3BDdzRCLE9BQUtwVixJQUFJeEssT0FBT00sSUFBSVAsT0FBTzNZO014QzlDaEM7OztRd0M4Q2dDQTs7OztRQUFsQjRZOzs7VUFBSndLLFNBQXNCcGpCLFdBQWxCNFk7Ozs7UUFBV0Q7OzsrQkFBSk8sT0FBV2xaLFdBQVAyWTtPQUtwQix1QkFMS3lLLE9BQUl4SyxPQUFPTSxJQUFJUCxPQUFPM1k7TUFHeEIsbUNBRStDO2FBR2xEeTRCLE1BQUl4NkIsRUFBRThCO014Q3REWCxRd0NzRFdBLFVBQUY5QixRQUFFOEIsS0FHSCw2QkFIQzlCLEtBQUU4QjtNQUVQLGtDQUNpQzthQUdoQzI0QixTQUFPejZCLEdBQUksT0FBSkEsSUFBYzthQUVyQjA2QixRQUFNMTZCLEdBQUksaUJBQWU7YUFFekIyNkIsTUFBTTM2QjtNQUNSLGdCQURRQSxLQUNSLDRCQURRQSxNQUNSLFFBRWlDO2FBVS9CNDZCLE9BQU81NkIsRUFBRTY2QjtNQUNYLFlBRFM3NkIsS0FDVCxRQURTQSxLQUNULFdBQ0krNkI7O1dBQ0EvZSxjQUZBOGUsVUFET0Q7VUFJd0IsaUJBRC9CN2U7UUFFSix1QkFGSUE7U0FFcUMsSUFKckM4ZSxVQURPRDtVQU9KOztVQUNBO1FBRVUsSUFBYkcsV0FBYSxrQkFQYmhmO1FBVUosS0FiU2hjLE9BVUxnN0IsYUFWS2g3QjtRQWFULE9BSElnN0I7UUFHSixPQVZJaGY7UUFVSixJQWJTaGMsT0FBRTY2QixhQUFGNzZCO1VBaUJULElBaEJJODZCLFVBRE9ELGFBQUY3NkIsS0FrQlQ7O3NDQUFFO2FBb0NBaTdCLFNBQVNqN0IsRUFBRW9CO01BQ2IsSUFBSTg1QixJQURPbDdCO01BQ1gsR0FEV0EsUUFDUGs3QixJQUNvQixPQUZibDdCO01BRXVCLHNCQUZ2QkEsS0FDUGs3QixJQURTOTVCO01BRXFCLE9BRDlCODVCO01BQzhCLFFBRWI7UUFFbkJDLDhCQUNBQzthQUVJQyxnQkFBZ0JyN0IsRUFBRTBNO01BQ3hCO1lBQUl3dUIsSUFEa0JsN0I7UUFDdEIsR0FEc0JBLFFBQ2xCazdCLElBQ29CLE9BRkZsN0IsRUFIcEJtN0I7UUFJRixJQUVJMzhCLEVBQUksZ0JBSGN3QixLQUNsQms3QixJQURvQnh1QjtRQUdoQixTQUFKbE8sR0FFRSxPQUxnQndCLEVBSHBCbTdCO1FBU0csT0FMREQsTUFFQTE4QjtRQUdDLFNBQXVCO2FBRXRCODhCLG1CQUFtQnQ3QixFQUFFME07TUFDM0I7WUFBSXd1QixJQURxQmw3QjtRQUN6QixHQUR5QkEsUUFDckJrN0IsSUFDb0IsT0FGQ2w3QixFQVZ2Qm83QjtRQVdGLElBRUk1OEIsRUFBSSxtQkFIaUJ3QixLQUNyQms3QixJQUR1Qnh1QjtRQUduQixTQUFKbE8sR0FFRSxPQUxtQndCLEVBVnZCbzdCO1FBZ0JHLE9BTERGLE1BRUExOEI7UUFHQyxTQUF1QjthQUV0Qis4QixtQkFBbUJ2N0IsRUFBRTBNO01BQzNCO1lBQUl3dUIsSUFEcUJsN0I7UUFDekIsR0FEeUJBLFFBQ3JCazdCLElBQ29CLE9BRkNsN0IsRUFsQnZCbzdCO1FBbUJGLElBRUk1OEIsRUFBSSxtQkFIaUJ3QixLQUNyQms3QixJQUR1Qnh1QjtRQUduQixTQUFKbE8sR0FFRSxPQUxtQndCLEVBbEJ2Qm83QjtRQXdCRyxPQUxERixNQUVBMThCO1FBR0MsU0FBdUI7YUFFMUJnOUIsY0FBY3g3QixFQUFFdEIsRUFBRSs4QixPQUFPMTVCO01BQzNCLFNBRG9CMDVCO01BQ3BCOzs7O2FBRDJCMTVCOzZDQUFUckQsS0FBU3FELFdBQVAwNUI7TUFFZjtNQURMLElBRUlDLGFBSFkxN0IsT0FBVytCO01BRXlCLEdBRnBDL0IsT0FHWjA3QixhQUM0QixPQUpoQjE3QixFQUFXK0I7TUFLM0IsaUJBTGtCckQsRUFBRSs4QixPQUFKejdCLFVBQVcrQjtNQUszQixPQUZJMjVCO01BRUosUUFDMEI7YUFFeEJDLGFBQWEzN0IsRUFBRXRCLEVBQUUrOEIsT0FBTzE1QjtNQUNWLHFCQUREL0IsRUFDQyxxQkFEQ3RCLEdBQUUrOEIsT0FBTzE1QixJQUMyQjthQUVuRDY1QixXQUFXNTdCLEVBQUV0QjtNQUNmLDhCQURlQSxHQUNmLGFBRGFzQixPQUNUK0I7TUFBSixHQURhL0IsT0FFVDA3QixhQUM0QixPQUhuQjE3QixFQUNUK0I7TUFHSixpQkFKZXJELElBQUZzQixVQUNUK0I7TUFHSixPQUZJMjVCO01BRUosUUFDMEI7YUFFeEJHLFVBQVU3N0IsRUFBRXRCLEdBQWlCLGtCQUFuQnNCLEVBQW1CLHFCQUFqQnRCLEdBQTJDO2FBRXZEbzlCLFdBQVc5N0IsRUFBRSs3QixJQUNmLG9CQURhLzdCLEVBQUUrN0IsY0FDdUI7YUErQnBDQyxZQUFZaDhCLEVBQUV5QyxHQUFHVjtNQUNuQixTQURtQkEsWUFDbkIsa0NBRG1CQTtNQUVqQjtNQWJGLEdBV2MvQixlQUFLK0IsU0FYaUIsT0FXdEIvQixFQUFLK0I7TUFDbkIsSUE1QnFCazZCLGVBQWNuNkIsSUEyQnJCOUIsS0EzQjBCazhCLFFBMkJyQm42QixJQVg2QixLQVdsQy9CO01BMUJaO2lCQURzQ2s4QjtVQUc1QixJQUFKNzlCLEVBQUksTUF3QklvRSxRQTNCbUJYLElBQUtvNkI7VUFHNUIsU0FBSjc5QjtZQUVDOzRCQUxZNDlCLGVBR2I1OUI7YUFFQyxNQUwwQnlELE1BRzNCekQ7YUFFQyxVQUwrQjY5QixVQUdoQzc5QjthQUhhNDlCO2FBQWNuNkI7YUFBS282Qjs7WUEyQjFCbDhCLE9BM0JPaThCLHFCQTJCUGo4QjtVQUhkLE9BR2NBLE9BM0JPaThCOzRCQTJCRmw2QixJQU1IO1VBQ2hCO3NDQUFFO2FBRUFzNkIsY0FBYzE2QixHQUFHM0IsR0FDbkIsY0FEZ0IyQixHQUFHM0IsWUFDWTthQTRDN0JzOEIsZUFBZXQ4QixFQUFFOUIsRUFBRVE7TUFDckIsZ0NBRHFCQSxHQUVQODlCLFlBQVM3ZTtNQUNyQjtXQURxQkEsTUFqQkY0ZTtVQW1CWCxJQWVKRSxRQWZJLGdCQUpXLzlCLEVBRUVpZjtVQUViLFVBZUo4ZTtZQWRvQixVQUhaRDtjQUlQLFNBTlV4OEIsRUFtQlh5OEI7Y0FiQyxRQUpnQjllLFlBQVQ2ZSxZQUFTN2U7O1lBT2hCLElBeEJRb1AsTUFpQlFwUDtZQWhCdkIsR0FEcUI0ZSxTQUFOeFAsTUFDTTtZQXVCZCxJQXRCRCx3QkFhZXJ1QixFQWZOcXVCO3NCQWxCTTJQO2NBNEJsQixRQVZZM1AsY0FSZiw0QkF1QnFCcnVCLEdBdkJMNmY7Y0FDZDttQkFEZ0JvZSxTQUFGcGU7cUJBa0JUcWUsS0FsQldEOztrQkFFViwwQkFxQmFqK0IsRUF2Qkw2ZjtrQkFFUjs7Ozs7Ozs7OzsrQkFDMEMsUUFIbENBO2tCQUVSLElBZ0JEcWUsS0FsQlNyZTsrQkFtQmIsTUFJa0I3ZixFQWZOcXVCLE1BVVI2UCxPQVZRN1AsV0FVUjZQOzs7WWhDdVFEO2NnQzVRSCxRQUxZN1AsY0FLWjtjQWhDUyxVQVNTMlA7OzttQ0FOZDtjQTZCSixJQXRCSCwwQkFnQ3FCaCtCLEdBaENMdTJCLE1BQUVqN0I7Y0FDaEI7bUJBRGtCMmhCLE9BQUYzaEIsRUFDQztnQkFDZCxtQkE4QmdCMEUsRUFoQ0gxRSxPQURHMGlDO2tCQUdLLFFBRlIxaUMsVUFFUSxJQUZWaTdCLGdCQUFFajdCO2dCQUdiLG1CQTZCZ0IwRSxFQWhDSDFFO2tCQUtYLFFBTFdBO2dCQUlkLFNBSllpN0I7a0JBSVMsUUFKUGo3QixVQUlPLElBSlRpN0IsZ0JBQUVqN0I7OztxQkF3QmYsTUFRa0IwRSxFQWhDSHdlLFNBaUJINlAsb0JBakJHL3lCOztZQXlDWCxJQUNXZ2pDLGtCQUFQQztZQUNKLFdBWFVqOUIsRUFXRyxXQVhEOUIsRUFVUisrQjtZQURKLElBUE9ULFlBQVM3ZSxJQVFMcWY7O1VBR0MsVUFYTFI7WUFZUCxTQWRVeDhCO1lBZVYsU0FmVUEsRUFtQlh5OEI7WUFKQyxRQWJnQjllLFlBQVQ2ZSxZQUFTN2U7O29CQWlCakI4ZTtZQURDLFNBaEJnQjllLFlBQVQ2ZSxTQWlCUkMsUUFqQmlCOWU7VUFrQmhCLFNBcEJVM2QsRUFtQlh5OEI7VUFmSSxJQWdCSCxLQWxCZ0I5ZSxZQUFUNmUsU0FpQlJDLFFBakJpQjllOztRQXFCckIsZ0JBckJZNmU7UUFxQlosWUFBd0IsU0F2QlR4OEIsRUFFSHc4QixlQXNCSDthQUVUVSxTQUFTbDlCLEVBQUUrQjtNQUNTLFFBRFRBLFVBQUYvQixPQUFFK0IsTUFJVCxPQUpTQSxJQUlUO01BRkEsdUNBRWlCO2FBSW5CbzdCLFNBQU9uOUI7TUFDVCxTQUFReVosSUFBSXpmO1FBRVYsR0FIT2dHLFFBQ0doRyxFQUVjO1FBRXRCLDRCQUxLZ0csS0FDR2hHLEdBSVIsS0FKUUE7UUFLSyxVQURUNkUsaUJ4Q3JUWCxPd0NpVFc0YSxnQkFLbUI7TUFMM0I7NEJ4Q2pUSCxPd0NpVFdBLGVBT0g7YUFFSDJqQixVQUFRcDlCO01BQ1YsU0FBUXlaLElBQUl6ZjtRQUVWLEdBSFFnRyxRQUNFaEcsRUFFYztRQUV0Qiw0QkFMTWdHLEtBQ0VoRyxHQUlSLEtBSlFBO1FBS1MsYUFMVEEsRUFJSjZFLGtCeEMvVFgsT3dDMlRXNGEsZ0JBS3VCO01BTC9COzRCeEMzVEgsT3dDMlRXQSxlQU9IO2FBRUg0akIsVUFBUXI5QixFQUFFK0w7TUFBZSwyQnhDcFU5QixPd0NtSUtrdkIsU0FpTVFqN0IsU0FBRStMLElBQStCO2FBRXpDdXhCLFNBQU90akMsR0FDRCxJQUFKZ0csRUFBSSxhQUNSLFVBRElBLEVBREtoRyxHQUVULE9BRElnRyxDQUVIO2FBYUN1OUIsU0FBU3Y5QixFQUFFbkI7TUFDYixJQUFJNjhCLGFBRE8xN0I7TUFDWCxHQURXQSxPQUNQMDdCLGFBQzRCLE9BRnJCMTdCO01BRStCLHNCQUYvQkEsVUFBRW5CO01BRTZCLE9BRHRDNjhCO01BQ3NDLFFBRWhCO2FBRXhCOEIsYUFBYXg5QixFQUFFbkI7TUFDakIsSUFBSTY4QixhQURXMTdCO01BQ2YsR0FEZUEsT0FDWDA3QixhQUM0QixPQUZqQjE3QjtNQUdmLGlCQUhlQSxVQUFFbkI7TUFHakIsT0FGSTY4QjtNQUVKLFFBQzBCO2FBRXhCK0IsYUFBYXo5QixFQUFFbkI7TUFDakIsSUFBSTY4QixhQURXMTdCO01BQ2YsR0FEZUEsT0FDWDA3QixhQUM0QixPQUZqQjE3QjtNQUdmLGlCQUhlQSxVQUFFbkI7TUFHakIsT0FGSTY4QjtNQUVKLFFBQzBCO2FBRXhCZ0MsYUFBYTE5QixFQUFFbkI7TUFDakIsSUFBSTY4QixhQURXMTdCO01BQ2YsR0FEZUEsT0FDWDA3QixhQUM0QixPQUZqQjE3QjtNQUdmLGlCQUhlQSxVQUFFbkI7TUFHakIsT0FGSTY4QjtNQUVKLFFBQzBCO2FBRXhCaUMsYUFBYTM5QixFQUFFbkIsR3hDOVdwQixPd0M0VksyK0IsYUFrQmF4OUIsRUFBRW5CLEVBQ3NDO2FBRXJEKytCLGFBQWE1OUIsRUFBRW5CO01BQzZCLElBRDdCa1osSUFDNkIsYUFEN0JsWixVQXJCZjIrQixhQXFCYXg5QixFQUFFK1gsSUFDc0M7YUFFckQ4bEIsYUFBYTc5QixFQUFFbkIsR3hDcFhwQixPd0NrV0s0K0IsYUFrQmF6OUIsRUFBRW5CLEVBQ3NDO2FBRXJEaS9CLGFBQWE5OUIsRUFBRW5CO01BQzZCLElBRDdCa1osSUFDNkIsaUJBRDdCbFosR0FDcUMsb0JBRHZDbUIsRUFBRStYLElBQ3NDO2FBRXJEZ21CLGFBQWEvOUIsRUFBRW5CLEd4QzFYcEIsT3dDd1dLNitCLGFBa0JhMTlCLEVBQUVuQixFQUNzQzthQUVyRG0vQixhQUFhaCtCLEVBQUVuQjtNQUM2QixJQUQ3QmtaLElBQzZCLGlCQUQ3QmxaLEdBQ3FDLG9CQUR2Q21CLEVBQUUrWCxJQUNzQzs7OztPQS9WckRvaUI7T0FNQUM7T0FDQUM7T0FFQUM7T0FNQUM7T0FRQUM7T0FNQUM7T0FFQUM7T0FFQUM7T0FpS0EwQjtPQXVFQWE7T0FyS0FqQztPQVNJSTtPQWdCQUU7T0FSQUQ7T0EyQkpNO09BT0FDO09BbEJBTDtPQVFBRztPQWtHQVc7T0F0RkFSO09BZ0NBRTtPQXdGQW1CO09BVUFDO09BVUFDO09BRUFDO09BZ0JBQzs7T0FNQUM7T0FxQkFJO09BSEFEO09BbEJBSDtPQXFCQUk7T0FIQUQ7T0FaQUY7T0FxQkFLO09BSEFEO09BWkFIO09BcUJBTTtPQUhBRDs7YXBDbFdBRSx1QkFBcUIsbUJBQW9CO2FBR3pDQyxnQkFBZ0J4Z0MsU0FBUzBEO01BQzNCLFlBRDJCQSxZQUMzQixXQUQyQkE7TUFHM0I7ZUFIa0IxRDtlQUVkeWdDO2VBRUYsWUFBMEIsZUFKVnpnQyxTQUVkeWdDLFdBQXdCQyxNQUV1QzthQUVqRUMsZ0JBQWdCM2dDLFVBQ2xCLGdCQURrQkEsU0FDTTthQUd0QjRnQyxhQUFhNWdDO01BQ0Msa0NBQ2hCMUQ7TUFDRTs7VUFGRXVrQyxXQUNKdmtDLEVBRUksWUFBMEIsZ0JBSmYwRCxTQUVmMUQ7UUFDRSxTQURGQTs7UUFJQSw0QkFMSXVrQyxZQUs0QjthQUc5QkMsZUFBZTlnQyxTQUFTMEQ7TUFDMUIsWUFEMEJBLFlBQzFCLFdBRDBCQTtNQUdiLDhCQUhJMUQsU0FFYnlnQyxXQUF3QkMsU0FDOEI7YUFheERLLGVBQWVDO01BQVUsR0FBVkEsU0FFRCxJQUFUQyxNQUZVRCxXQUVELFlBQVRDLE9BREcsUUFDZ0M7YUFTeENDLCtCQUdBNWdDLElBQUk2Z0M7TUFBTyxVQUFYN2dDO09BQVcsT0FBWEE7Z0JBRUEsYUFGSTZnQztnQkFJSixhQUpJQTtnQkFnQ0osY0FoQ0lBO2lCQXNDSixjQXRDSUE7O09BQU8sT0FBWDdnQztnQkFNQSxJQURlMGdDLFFBTGYxZ0MsT0FNMEIsNEJBRFgwZ0MsU0FMWEc7O1VBUUosSUFEb0JDLFVBUHBCOWdDLE9BUStCLDRCQURYOGdDLFdBUGhCRDs7Y0FTZ0JFLFVBVHBCL2dDLE9BU2FsQyxNQVRia0M7VUFVOEIsYUFEakJsQyxNQUNpQixlQURWaWpDLGFBVGhCRjs7Y0FXa0JHLFVBWHRCaGhDLE9BV2UvQixRQVhmK0I7VUFhaUIsYUFGRi9CLFFBRUUsZUFGSytpQyxhQVhsQkg7O2NBY3NCSSxVQWQxQmpoQyxPQWNtQjVCLFFBZG5CNEI7VUFnQnFCLGFBRkY1QixRQUVFLGVBRks2aUMsYUFkdEJKOztjQWlCa0JLLFVBakJ0QmxoQyxPQWlCZXpCLFFBakJmeUI7VUFtQmlCLGFBRkZ6QixRQUVFLGVBRksyaUMsYUFqQmxCTDs7Y0FvQm9CTSxTQXBCeEJuaEMsT0FvQmVvaEMsVUFwQmZwaEM7VUFUNEIsR0E2QkptaEMsU0EzQlgsU0EyQldBLG9CQTNCbkJFO1VBOEJLLGlDQUhLRCxnQkFwQlhQOztVQXlCSixJQURhUyxVQXhCYnRoQyxPQXlCd0IsNEJBRFhzaEMsV0F4QlRUOztjQTBCeUIvaEMsTUExQjdCa0IsT0EwQm9CdWhDLFVBMUJwQnZoQzt3QkEwQm9CdWhDLFVBQVN6aUMsTUExQnpCK2hDOztjQTRCMkI3aEMsUUE1Qi9CZ0IsT0E0QnNCd2hDLFVBNUJ0QnhoQzt3QkE0QnNCd2hDLFVBQVN4aUMsUUE1QjNCNmhDOztjQWlDOEJuaEMsU0FqQ2xDTSxPQWlDdUJMLFVBakN2Qks7d0JBaUN1QkwsVUFBV0QsU0FqQzlCbWhDO2lCQW9DSixJQUR5QmhoQyxRQW5DekJHLE9Bb0NBLGNBRHlCSCxRQW5DckJnaEMsTUFzQ2lDO2FBMEdyQ1ksd0JBQXdCL2lDLE9BQzFCLGFBRDBCQSxjQU9YO2FBNkJiZ2pDLGNBQWNDO01BQStCLDhCQUEvQkEsV0FBdUQ7YUFHckVDLGtCQUFrQno4QixJQUFJMDhCO01BQ3hCO2dDQURvQjE4QjtPQUNwQixRQURvQkEsU0FBSTA4QjtPQUN4QixLQUFJOTlCLE1BQ0ErOUI7TUFESjtRQUdnQjt1QkFIWi85QixZQUNBKzlCO1NBR0YsMEJBREk5akI7UUFFSixLQU5rQjdZLFNBS2Q0OEIsVUFKRmgrQjtRQUtGLFNBRElnK0I7UUFEVTs7O01BUFksV0FXM0I7YUFHQ0MsZ0JBQWdCNzhCLElBQUkvQjtNQUN0QixrQkFEa0IrQjtNQUVsQixlQUZrQkEsY0FBSS9CO01BRXRCLFNBRmtCK0I7TUFFbEIsUUFDc0I7YUFHcEI4OEIsa0JBQWtCOThCLElBQUl6RTtNQUN4QixJQUFJd2hDLFFBQUosc0JBRHdCeGhDO01BRXhCLGtCQUZvQnlFLElBQ2hCKzhCO01BRUosT0FId0J4aEMsSUFBSnlFLGNBQ2hCKzhCO01BRUosU0FIb0IvOEIsU0FDaEIrOEI7TUFFSixRQUM0QjthQUcxQkMsZ0JBQWdCaDlCLEtBQ2xCLGtCQURrQkEsZ0JBQ2tCO2FBS2xDaTlCLGNBQWN0a0M7TUFBUSxPQUFSQTs7ZUFFb0I7O2VBQXdCOztnQkFDaEQ7O2dCQUF3Qjs7OztnQkFGRTtnQkFDMUIsV0FDMkI7YUFJckN1a0MsY0FBZ0I3VixJQUFROXRCO01BQVEsR0FBaEI4dEIsSUFBRyxRQUFIQSxVQUFHQyxhQUFINlY7TUFBZ0IsT0FBUjVqQztlQUNiO2VBQWlCO2VBQ2pCO2VBQWlCO2VBQ2pCO2VBQWlCLE9BSFo0akM7ZUFJTDtlQUFpQjtnQkFDaEIsVUFBRzthQXlFZkMsYUFBYXA5QixJQUFJcTlCO01BQVEsT0FBUkE7ZUFDUix1QkFESXI5QjtlQUVKO2dCQUNBLHVCQUhJQSxRQUdtQjthQUdoQ3M5QixvQkFBb0J0OUIsSUFBSXU5QjtNQUMxQixPQUQwQkEsU0FDVCxnQkFES3Y5QixRQUFJdTlCLFFBQ2M7YUFJdENDLGVBQWV4OUIsSUFBSXU3QjtNQUFVLEdBQVZBO1FBRUwsSUFBVEMsTUFGY0Q7UUFFaUIseUJBRnJCdjdCLElBRXFCLDRCQUEvQnc3QjtNQURHLFFBQ2lEO2FBS3pEaUMsZUFDQXo5QixJQUFJekg7TUFBTyxVQUFQQTtPQUNVOztRQURILFNBQVBBO2NBRWdCOEMsRUFGaEI5QyxPQUVTOGtDLE1BRlQ5a0M7VUFHSixhQUhBeUgsSUFFYXE5QjtVQUVTLHlCQUp0QnI5QixJQUlzQiw0QkFGRjNFO1FBSXBCLElBRFlxaUMsUUFMUm5sQztRQU1KLGFBTkF5SCxJQUtZMDlCO1FBQ1osdUJBTkExOUIsUUFPdUI7YUFHdkIyOUIsaUJBQ0UzOUIsSUFBSXZIO01BQVEsVUFBUkEsa0JBTU4sT0FOTUEsS0FNTixrQkFORXVIO1VBRVkzRSxFQUZSNUM7TUFHTixnQkFIRXVIO01BSW9CLHlCQUpwQkEsSUFJb0IsNEJBRlIzRSxHQUlZO2FBSzFCdWlDLGtCQUFrQjU5QixJQUFJckg7TUFBUSxPQUFSQTs7ZUFDSCx1QkFERHFIOztlQUVDLHVCQUZEQTs7Ozs7O2dCQUloQix1QkFKZ0JBO2dCQUsrQixTQUFFO2FBWW5ENjlCLGtCQUFrQjc5QixJQUFJdTlCLFNBQVM1a0MsTUFBTUosSUFBSUUsS0FBS3dGO01BQ2hELGdCQURvQitCO01BRXBCLG9CQUZvQkEsSUFBSXU5QjtNQUd4QixrQkFIb0J2OUIsSUFBYXJIO01BSWpDLGVBSm9CcUgsSUFBbUJ6SDtNQUt2QyxpQkFMb0J5SCxJQUF1QnZIO01BTTNDLGdCQU5vQnVILElBQTRCL0I7TUFPNUIsdUJBUEErQixJQU9BLGNBUGFySCxPQU9RO2FBS3ZDbWxDLGtCQUFrQjk5QixJQUFJekc7TUFDeEIsT0FEd0JBOztlQUVOLGdCQUZFeUc7Z0JBR0YsZ0JBSEVBO01BS3BCLFlBTHdCekcsU0FNVixnQkFOTXlHLFNBUWU7YUFhakMrOUIseUJBQXlCbm9DO01BQWlCLFVBQWpCQTtPQUFpQixPQUFqQkE7Z0JBQ0Q7Z0JBQ0E7Z0JBRUE7Z0JBQ0E7Z0JBQ0E7Z0JBRUE7aUJBQ0E7O09BVGtCLE9BQWpCQTtnQkFHRCxJQUFqQjZELElBSGtCN0Qsa0JBR0QsT0FBakI2RDtnQkFJaUIsSUFBWnVrQyxNQVBhcG9DLGtCQU9ELE9BQVpvb0M7aUJBR0ksSUFBTC8vQixFQVZjckksa0JBVUgsMkJBQVhxSSxJQUE0QjthQUt2Q2dnQyxvQkFBb0JqK0IsSUFBSXRHO01BQU0sY0FBTkEsSUFDakIsa0JBRGFzRyxZQUVmLGdCQUZlQSxJQUFJdEcsSUFFSTthQUc1QndrQyxzQkFBc0JsK0IsSUFBSXZHO01BQzVCLCtCQUQ0QkEsYUFDNUI7OztRQUNFOzhCQUZzQnVHLElBRUUsZ0JBRkV2RyxJQUM1QjVDO1VBQ0UsU0FERkE7OztjQUVJO2FBTUVzbkMsYUFFSm4rQixJQUFJckc7TUpoZlQsSUlnZlNFO01BQVM7aUJBQVRBO1FBeUJZOztRQXpCSCxPQUFUQTs7ZUFDSTlDLEtBREo4QztXQUNpQixrQkFEckJtRztlQUFJbkcsUUFDSTlDOzs7ZUFDRUMsT0FGTjZDO1dBRWlCLGtCQUZyQm1HO2VBQUluRyxRQUVNN0M7OztlQUNIQyxPQUhINEM7V0FHaUIsa0JBSHJCbUc7ZUFBSW5HLFFBR0c1Qzs7O2VBQ0VDLE9BSkwyQztXQUlpQixrQkFKckJtRztlQUFJbkcsUUFJSzNDOzs7ZUFDSUMsT0FMVDBDO1dBS2lCLGtCQUxyQm1HO2VBQUluRyxRQUtTMUM7OztlQUNKQyxPQU5MeUM7V0FNaUIsa0JBTnJCbUc7ZUFBSW5HLFFBTUt6Qzs7O2VBQ0FDLE9BUEx3QztXQU9pQixrQkFQckJtRztlQUFJbkcsUUFPS3hDOzs7ZUFDREMsT0FSSnVDO1dBUWlCLGtCQVJyQm1HO2VBQUluRyxRQVFJdkM7OztlQVVrQkMsT0FsQnRCc0MsV0FrQld1a0MsVUFsQlh2a0M7V0FtQkosa0JBbkJBbUc7V0FtQjRCLGFBbkI1QkEsSUFrQmVvK0I7V0FFZixrQkFwQkFwK0I7ZUFBSW5HLFFBa0JzQnRDOzs7ZUFHS0UsT0FyQjNCb0MsV0FxQmF3a0MsWUFyQmJ4a0M7V0FzQkosa0JBdEJBbUc7V0FzQjRCLGFBdEI1QkEsSUFxQmlCcStCO1dBRWpCLGtCQXZCQXIrQjtlQUFJbkcsUUFxQjJCcEM7OztlQVp0QkUsT0FUTGtDO1dBU2lCLGtCQVRyQm1HO2VBQUluRyxRQVNLbEM7OztlQUNBQyxRQVZMaUM7V0FVaUIsa0JBVnJCbUc7ZUFBSW5HLFFBVUtqQzs7O2VBQ0ZDLFFBWEhnQztXQVdpQixrQkFYckJtRztlQUFJbkcsUUFXR2hDOzs7ZUFDR0MsUUFaTitCO1dBWWlCLGtCQVpyQm1HO2VBQUluRyxRQVlNL0I7OztlQUVRQyxRQWRkOEI7V0FlSixrQkFmQW1HO2VBQUluRyxRQWNjOUI7b0JBV0E7YUFJZHVtQztnQkFJYSxJQUFMNWlDLFdBQVMsK0JBQVRBLE9BREcsUUFDMkI7YUFrSDFDNmlDLGNBQWM3QztNQUNOLElBaEhHMTdCLElBZ0hIO01BL0dWLFNBQVF3K0IsUUFFSjlDLElBQUk2QjtZQUFKa0IsVUFBSUM7O1FBQVk7bUJBQWhCRDtVQXFHaUI7O1VBckdELE9BQWhCQTs7aUJBMEJLMW5DLEtBMUJMMG5DO2FBMkJBLGdCQTlCU3orQjthQThCZ0Isb0JBOUJoQkEsSUFHTDArQjthQTRCSixnQkEvQlMxK0I7aUJBR1R5K0IsTUEwQksxbkMsS0ExQkQybkM7OztpQkE2Qk0xbkMsT0E3QlZ5bkM7YUE4QkEsZ0JBakNTeitCO2FBaUNnQixvQkFqQ2hCQSxJQUdMMCtCO2FBK0JKLGdCQWxDUzErQjtpQkFHVHkrQixNQTZCVXpuQyxPQTdCTjBuQzs7O2lCQUNTem5DLE9BRGJ3bkMsU0FDUWxtQyxJQURSa21DO2FBRUEsZ0JBTFN6K0I7YUFLZ0Isb0JBTGhCQSxJQUdMMCtCO2FBR0osZUFOUzErQixJQUlEekg7YUFFZ0IsZ0JBTmZ5SDtpQkFHVHkrQixNQUNheG5DLE9BRFR5bkM7OztpQkFLY3huQyxPQUxsQnVuQyxTQUtham1DLE1BTGJpbUM7YUFNQSxnQkFUU3orQjthQVNnQixvQkFUaEJBLElBR0wwK0I7YUFPSixlQVZTMStCLElBUUl4SDthQUVXLGdCQVZmd0g7aUJBR1R5K0IsTUFLa0J2bkMsT0FMZHduQzs7O2lCQVVtQnZuQyxPQVZ2QnNuQyxTQVVpQmhtQyxLQVZqQmdtQyxTQVVZL2xDLE1BVlorbEMsU0FVSzlsQyxNQVZMOGxDO2FBL0dKLGdCQTRHYXorQjthQTNHYixvQkEyR2FBLElBR0wwK0I7YUE3R1Isa0JBMEdhMStCLElBYUpySDthQXRIVCxlQXlHYXFILElBYUd0SDthQXJIaEIsaUJBd0dhc0gsSUFhUXZIO2FBcEhELGdCQXVHUHVILElBdkdPLGNBb0hYckg7aUJBVkw4bEMsTUFVdUJ0bkMsT0FWbkJ1bkM7Ozs7Y0FhcUJ0bkMsT0FiekJxbkM7Y0FhbUI3bEMsT0FibkI2bEM7Y0FhYzVsQyxNQWJkNGxDO2NBYU8zbEMsUUFiUDJsQzthQWNBLGtCQWpCU3orQixJQUdMMCtCLFdBYUc1bEMsUUFBT0QsTUFBS0Q7aUJBYm5CNmxDLE1BYXlCcm5DLE9BYnJCc25DOzs7O2NBZ0J5QnJuQyxPQWhCN0JvbkM7Y0FnQnVCMWxDLE9BaEJ2QjBsQztjQWdCa0J6bEMsTUFoQmxCeWxDO2NBZ0JXeGxDLFFBaEJYd2xDO2FBaUJBLGtCQXBCU3orQixJQUdMMCtCLFdBZ0JPemxDLFFBQU9ELE1BQUtEO2lCQWhCdkIwbEMsTUFnQjZCcG5DLE9BaEJ6QnFuQzs7OztjQW1CcUJwbkMsT0FuQnpCbW5DO2NBbUJtQnZsQyxPQW5CbkJ1bEM7Y0FtQmN0bEMsTUFuQmRzbEM7Y0FtQk9ybEMsUUFuQlBxbEM7YUFvQkEsa0JBdkJTeitCLElBR0wwK0IsV0FtQkd0bEMsUUFBT0QsTUFBS0Q7aUJBbkJuQnVsQyxNQW1CeUJubkMsT0FuQnJCb25DOzs7O2NBc0JxQm5uQyxPQXRCekJrbkM7Y0FzQm1CcGxDLE9BdEJuQm9sQztjQXNCY25sQyxNQXRCZG1sQztjQXNCT2xsQyxNQXRCUGtsQzthQS9FSixnQkE0RWF6K0I7YUEzRWIsb0JBMkVhQSxJQUdMMCtCO2FBN0VSLGtCQTBFYTErQixJQXlCRnpHO2FBbEdYLGVBeUVheUcsSUF5QksxRzthQWpHbEIsaUJBd0VhMEcsSUF5QlUzRzthQWhHSCxnQkF1RVAyRyxJQXZFTyxnQkFnR1R6RztpQkF0QlBrbEMsTUFzQnlCbG5DLE9BdEJyQm1uQzs7O2lCQWdDT2puQyxPQWhDWGduQyxTQWdDTWpsQyxNQWhDTmlsQzthQWlDQSxnQkFwQ1N6K0I7YUFvQ2dCLG9CQXBDaEJBLElBR0wwK0I7YUFrQ0osZUFyQ1MxK0IsSUFtQ0h4RzthQUVrQixnQkFyQ2Z3RztpQkFHVHkrQixNQWdDV2huQyxPQWhDUGluQzs7O2lCQW1ERS9tQyxPQW5ETjhtQzthQW9EQSxrQkF2RFN6K0I7aUJBR1R5K0IsTUFtRE05bUM7OztpQkFJZUMsUUF2RHJCNm1DLFNBdURnQmhsQyxJQXZEaEJnbEM7YUF3REEsc0JBM0RTeitCLElBMERPdkc7aUJBdkRoQmdsQyxNQXVEcUI3bUM7OztpQkFHRkMsUUExRG5CNG1DLFNBMERjRSxNQTFEZEY7YUEyREEsb0JBOURTeitCLElBNkRLMitCO2lCQTFEZEYsTUEwRG1CNW1DOzs7aUJBSVNDLFFBOUQ1QjJtQyxTQThEcUI5a0MsTUE5RHJCOGtDLFNBOERZbEQsUUE5RFprRDthQStEQSxnQkFsRVN6K0I7YUFrRWdCLG9CQWxFaEJBLElBR0wwK0I7YUFnRUosZUFuRVMxK0IsSUFpRUd1N0I7YUFFZ0IsZ0JBbkVuQnY3QjthQW9FVCxhQXBFU0EsSUFpRVlyRzthQUdHLGdCQXBFZnFHO2FBb0V3QyxnQkFwRXhDQTtpQkFHVHkrQixNQThENEIzbUMsUUE5RHhCNG1DOzs7aUJBbUUwQjNtQyxRQW5FOUIwbUMsU0FtRXVCNWtDLFFBbkV2QjRrQyxTQW1FYzlDLFVBbkVkOEM7YUFvRUEsZ0JBdkVTeitCO2FBdUVnQixvQkF2RWhCQSxJQUdMMCtCO2FBcUVKLGVBeEVTMStCLElBc0VLMjdCO2FBRWMsZ0JBeEVuQjM3QjthQXlFVCxhQXpFU0EsSUFzRWNuRzthQUdDLGdCQXpFZm1HO2FBeUV3QyxnQkF6RXhDQTtpQkFHVHkrQixNQW1FOEIxbUMsUUFuRTFCMm1DOzs7aUJBb0NFM2tDLFFBcENOMGtDO2FBcUNBLGdCQXhDU3orQjthQXdDZ0Isb0JBeENoQkEsSUFHTDArQjthQXNDSixnQkF6Q1MxK0I7aUJBR1R5K0IsTUFvQ00xa0MsUUFwQ0Yya0M7OztpQkF1Q0Uxa0MsUUF2Q055a0M7YUF3Q0EsZ0JBM0NTeitCO2FBMkNnQixvQkEzQ2hCQSxJQUdMMCtCO2FBeUNKLGdCQTVDUzErQjtpQkFHVHkrQixNQXVDTXprQyxRQXZDRjBrQzs7O2lCQXlGd0J6a0MsUUF6RjVCd2tDLFNBeUZnQnZrQyxXQXpGaEJ1a0M7YUEwRkEsc0JBN0ZTeitCLElBNkZpQix5QkFEVjlGO2lCQXpGaEJ1a0MsTUF5RjRCeGtDOzs7aUJBR0FFLFFBNUY1QnNrQyxTQTRGZ0Jya0MsV0E1RmhCcWtDO3NCQTRGZ0Jya0M7eUNBRU80akM7ZUFDckIsa0JBbEdPaCtCO2VBa0dxQixrQkFsR3JCQSxJQWlHY2crQjs7MkJBRlA1akMsY0FJT3drQztlQUNyQixrQkFwR081K0I7ZUFvR3FCLGtCQXBHckJBLElBbUdjNCtCO2lCQWhHdkJILE1BNEY0QnRrQzs7O2lCQTVDckJFLFFBaERQb2tDO2FBaURBLGdCQXBEU3orQjthQW9EZ0Isb0JBcERoQkEsSUFHTDArQjthQWtESixnQkFyRFMxK0I7aUJBR1R5K0IsTUFnRE9wa0MsUUFoREhxa0M7OztpQkF5RWdDcGtDLFFBekVwQ21rQyxTQXlFMEJsa0MsU0F6RTFCa2tDLFNBeUVlamtDLFVBekVmaWtDO2FBMEVBLGdCQTdFU3orQjthQTZFZ0Isb0JBN0VoQkEsSUFHTDArQjthQTJFSixlQTlFUzErQixJQTRFTXhGO2FBdFNuQjtjQTRDSThGO3dCQUFXTixJQUFJbko7aUJBQVUsSUFHekJvSCxFQUh5QixZQUFWcEg7aUJBQVUsY0FHekJvSDsyQkFGTyxnQkFESStCLFFBQ0osZ0JBRElBO2lDQUdYL0I7NkJBRE8sZ0JBRkkrQixRQUVKLGdCQUZJQTs0QkFHSixnQkFISUEsSUFHWC9CLEVBQTZCO2FBRWpDLGdCQXlLYStCO2FBMU5iO2NBbURLOzhCQW1QeUJ6RjtrQkFsUHJCLGdCQXNLSXlGLFFBdEtxQixhQWtQSnpGOztjQXJTNUI7OzBCQUFJdWtDLFNBQVM3Z0M7bUJBQ2lDOzhCQURqQ0E7b0JBQ2UsV0FEZkE7b0JBRVgseUJBRldBO21CQUVYO29CQUNROzhDQUZKK2dDO3FCQUVJLFVBQTZCLG9CQUZ6QkQ7Ozs7bUJBRGQsV0FHZ0U7d0JBSDVERDtjQUFKO2FBSUcsZ0JBQWtCLGdCQXFOVjkrQjthQTFOYixJQVFrQm5KOzthQUNoQjtrQkFEZ0JBO2lCQUVYLHlCQUFtQixZQUZSQTttQkFHVCxRQUhTQTtpQkFLVixzQkFMVUEsR0FLVjs7cUNBQ00sV0E0TURtSjs7O3FCQTNNSSxRQVBDbko7O2lCSThNWjttQkp0TUcsSUFDWTRoQixJQVRINWhCO21CQVViLHlCQUFtQixZQURINGhCO3FCQWdCakIsV0F5TFN6WSxJQXpNUXlZO3FCQWdCakIsUUFoQmlCQSxZQVRINWhCOzttQkFRVDtvQkFHQyxvQkFGVzRoQjtvQkFFWDs7OztzQkFFSixXQXFNT3pZLFNBck1QLFdBcU1PQTs7Ozs7c0JBbk1ZLHlCQUFvQixZQU54QnlZO3dCQU9mLFdBa01PelksSUF6TVF5WTt3QkFPZixRQVBlQSxZQVRINWhCOzs7Ozs7cUJBa0JELHlCQUFvQixZQVRoQjRoQjt1QkFVZixXQStMT3pZLElBek1ReVk7dUJBV2YsV0E4TE96WSxJQXpNUXlZO3VCQVdmLFFBWGVBLFlBVEg1aEI7O3FCQXVCWixNQWRlNGhCLFlBY2YsSUFkZUEsWUFtQkZ3bUI7cUJBQ2pCO3VCQUFrQixXQUREQSxPQUNDLG9CQUFvQixZQURyQkE7eUJBT2YsUUFQZUE7dUJBRWYsV0FvTFNqL0IsSUF0TElvYjt1QkFHYixXQW1MU3BiO3VCQWxMVCxXQWtMU0EsSUF0TE1pL0I7dUJBSWYsR0FKZUEsV0FLQyxRQUxEQSxZQTVCRHBvQzs7ZUFEYixnQkFBa0IsZ0JBbU5WbUo7ZUF0UVg2OEIsZ0JBc1FXNzhCO21CQUdUeStCLE1BeUVvQ25rQyxRQXpFaENva0M7OztpQkE2RXVCamtDLFFBN0UzQmdrQyxTQTZFa0IvakMsUUE3RWxCK2pDO2FBOEVBLGdCQWpGU3orQjthQWlGZ0Isb0JBakZoQkEsSUFHTDArQjthQXRPb0IsT0FtVE5oa0M7Ozs7YUFFbEIsZ0JBbEZTc0Y7aUJBR1R5K0IsTUE2RTJCaGtDLFFBN0V2QmlrQzs7O2lCQWlGVy9qQyxRQWpGZjhqQzthQWtGQSxnQkFyRlN6K0I7YUFxRmdCLG9CQXJGaEJBLElBR0wwK0I7YUFtRkosc0JBdEZTMStCO2lCQUdUeStCLE1BaUZlOWpDLFFBakZYK2pDOzs7YUFzRndCO2NBRFI5akMsUUFyRnBCNmpDO2NBcUZlNWpDLElBckZmNGpDO2NBc0Y0Qix1Q0FEYjVqQyxJQUFLRDtjQUNRO2NBdEY1QjZqQztjQUFJQzs7O2FBMkNVO2NBREk1akMsUUExQ2xCMmpDO2NBMENRempDLE1BMUNSeWpDO2NBMkNjLHlCQUROempDOzthQUNNO21CQUFkMGY7ZUFDRTtpQ0EvQ08xYTtpQkErQ2tCLG9CQS9DbEJBLElBR0wwK0I7aUJBNkNGLGdCQWhETzErQjtpQkFnRFAsU0FGRjBhOzs7YUFBYyxJQTNDZCtqQixNQTBDa0IzakMsUUExQ2Q0akM7c0JBcUdlO01Bdkd2QixRQThHZ0JoRDthQXhXZHNCLGdCQXlQV2g5QixJQWtITTthQVdiby9COztPQXVCWTs7T0F2Qlo7Z0JBTVksSUFBUnJvQyxjQUFnQixlQUFoQkE7Z0JBT1UsSUFBUkMsZ0JBQWtCLGVBQWxCQTtnQkFOSyxJQUFSQyxnQkFBZSxlQUFmQTtnQkFDVSxJQUFSQyxnQkFBaUIsZUFBakJBO2dCQUVZLElBQVJDLGdCQUFxQixlQUFyQkE7Z0JBREksSUFBUkMsZ0JBQWlCLGVBQWpCQTtnQkFFUSxJQUFSQyxnQkFBaUIsZUFBakJBO2dCQUNPLElBQVJDLGdCQUFnQixlQUFoQkE7b0JBT1dDLGdCQUFKQyxZQUNJLFVBREpBLEdBQ0ksS0FEQUQ7O2NBRVFFLGdCQUFMVSxhQUFMVDtVQUNVLFVBRExTLElBQUxULElBQ1UsS0FEQUQ7aUJBTlYsSUFBUkUsZ0JBQWlCLGdCQUFqQkE7aUJBRFEsSUFBUkMsaUJBQWlCLGdCQUFqQkE7aUJBRU0sSUFBUkMsaUJBQWUsZ0JBQWZBO2lCQUNXLElBQVJDLGlCQUFrQixnQkFBbEJBO2lCQUNnQixJQUFSQyxpQkFBMEIsZ0JBQTFCQSxVQUtVO2FBZ0g1QnNuQyxNQVdFM25DLElBQUlTO01KbnlCWDtNSW15QmtCLFVBQVhUO2lCQUFJUztRQThDd0I7O2VBOUN4QkE7Ozs7Ozs7O2tCQStDYTs7T0EvQ04sT0FBWFQ7OztvQkFBSVM7O29CQUMwQixJQUFUbW5DLE1BRGpCbm5DLE9BQ2tDLHFCQUFqQm1uQzs7Ozs7Ozs7Ozs7OzhCQURyQjVuQztvQkFBSVM7O29CQUU4QixJQUFUb25DLFFBRnJCcG5DLE9BRXdDLHFCQUFuQm9uQzs7Ozs7Ozs7Ozs7OzhCQUZ6QjduQztvQkFBSVM7Ozs7b0JBSXdCLElBQVRxbkMsUUFKZnJuQyxPQUkrQixxQkFBaEJxbkM7Ozs7Ozs7Ozs7Ozs4QkFKbkI5bkM7b0JBQUlTOzs7O29CQUs0QixJQUFUc25DLFFBTG5CdG5DLE9BS3FDLHFCQUFsQnNuQzs7Ozs7Ozs7Ozs7OzhCQUx2Qi9uQztvQkFBSVM7Ozs7b0JBT29DLElBQVR1bkMsUUFQM0J2bkMsT0FPaUQscUJBQXRCdW5DOzs7Ozs7Ozs7Ozs7OEJBUC9CaG9DO29CQUFJUzs7OztvQkFNNEIsSUFBVHduQyxRQU5uQnhuQyxPQU1xQyxxQkFBbEJ3bkM7Ozs7Ozs7Ozs7Ozs4QkFOdkJqb0M7b0JBQUlTOzs7O29CQVE0QixJQUFUeW5DLFFBUm5Cem5DLE9BUXFDLHFCQUFsQnluQzs7Ozs7Ozs7Ozs7OzhCQVJ2QmxvQztvQkFBSVM7Ozs7b0JBRzBCLElBQVQwbkMsUUFIakIxbkMsT0FHa0MscUJBQWpCMG5DOzs7Ozs7Ozs7Ozs7OEJBSHJCbm9DO29CQUFJUzs7Ozs7Y0FnQ3dCLElBRGtCMm5DLFFBL0IxQzNuQyxPQStCcUM0bkMsTUEvQnJDNW5DLE9BZ0N3QixnQkFEa0IybkM7Y0FDakMscUJBRDRCQzs7Ozs7OztzQkFFckI7OzsrQkFqQ3BCcm9DO29CQUFJUzs7Ozs7O2NBc0NHO2VBRG9CNm5DLFFBckN2QjduQztlQXFDaUI4bkMsS0FyQ2pCOW5DO2VBcUNXK25DLEtBckNYL25DO2VBc0NHLFNBQU0sV0FERStuQztlQUVFLG9CQURmMW9DO2VBQ2U7O2NBQ1IsV0FESjZvQztjQUVJLFdBRkdEO2NBR2UsZUFMTkgsS0FLTSxXQUxBRDs7Ozs7Ozt1QkFNTDs7O21CQTNDdEJ0b0M7b0JBQUlTO1lBVTRCLElBQVRtb0MsUUFWbkJub0MsT0FVcUMsc0JBQWxCbW9DO1VBQ1I7OytCQVhmNW9DO29CQUFJUzs7Ozs7cUJBYzRCLElBQVRvb0MsU0FkbkJwb0MsT0FjcUMsc0JBQWxCb29DOzt1QkFDUjs7OytCQWZmN29DO29CQUFJUzs7Ozs7O3FCQWtCd0IsSUFBVHFvQyxTQWxCZnJvQyxPQWtCK0Isc0JBQWhCcW9DOzt1QkFDTjs7OytCQW5CYjlvQztvQkFBSVM7Ozs7Ozs7cUJBc0I4QixJQUFUc29DLFNBdEJyQnRvQyxPQXNCd0Msc0JBQW5Cc29DOzt1QkFDVDs7OytCQXZCaEIvb0M7b0JBQUlTOzs7Ozs7OztxQkEyQk4sSUFEMkN1b0MsU0ExQnJDdm9DLE9BMkJZLHNCQUR5QnVvQzs7dUJBRWpCO01JL1N0QjtlSitSYTtlQUlBO2VBSUY7ZUFJRztlQUtRO2VBS0o7ZUFVRTtnQkFJTCw4QkFBWTthQXpLM0JQOztRQVNKOzhCQUdhLFFBQUk7U0FIakIscUJBRWEsUUFBSTtTQUZqQixxQkFDYSxRQUFJO1FBRGpCLDBCQUFhLFFBQUk7O09BVGI7O1VBY0o7O1dBQXFCLG9CQURicHBDO1dBQ2E7Ozs7Z0NBRUcsV0FGaEI4cEMsTUFFZ0IsUUFBZTtVQUZsQiwwQkFDRyxXQURwQkMsTUFDb0IsUUFBZSxPQUQzQkYsR0FBSUQ7O1VBS2hCOztXQUFxQixzQkFEWDNwQztXQUNXOzs7O2dDQUVHLFdBRmhCaXFDLFFBRWdCLFFBQWU7VUFGbEI7a0NBQ0csV0FEcEJDLFFBQ29CLFFBQWU7O2tCQUQzQkY7a0JBQUlEOztVQUtoQjs7V0FBcUIsc0JBRGQ5cEM7V0FDYzs7OztnQ0FFRyxXQUZoQm9xQyxRQUVnQixRQUFlO1VBRmxCO2tDQUNHLFdBRHBCQyxRQUNvQixRQUFlOztrQkFEM0JGO2tCQUFJRDs7VUFLaEI7O1dBQXFCLHNCQURaanFDO1dBQ1k7Ozs7Z0NBRUcsV0FGaEJ1cUMsUUFFZ0IsUUFBZTtVQUZsQjtrQ0FDRyxXQURwQkMsUUFDb0IsUUFBZTs7a0JBRDNCRjtrQkFBSUQ7O1VBVWhCOztXQUFxQixzQkFEUnBxQztXQUNROzs7O2dDQUVHLFdBRmhCMHFDLFFBRWdCLFFBQWU7VUFGbEI7a0NBQ0csV0FEcEJDLFFBQ29CLFFBQWU7O2tCQUQzQkY7a0JBQUlEOztVQUxoQjs7V0FBcUIsc0JBRFp2cUM7V0FDWTs7OztnQ0FFRyxXQUZoQjZxQyxRQUVnQixRQUFlO1VBRmxCO2tDQUNHLFdBRHBCQyxRQUNvQixRQUFlOztrQkFEM0JGO2tCQUFJRDs7VUFVaEI7O1dBQXFCLHNCQURaMXFDO1dBQ1k7Ozs7Z0NBRUcsV0FGaEJnckMsUUFFZ0IsUUFBZTtVQUZsQjtrQ0FDRyxXQURwQkMsUUFDb0IsUUFBZTs7a0JBRDNCRjtrQkFBSUQ7O1VBS2hCOztXQUFxQixzQkFEYjdxQztXQUNhOzs7O2dDQUVHLFdBRmhCbXJDLFFBRWdCLFFBQWU7VUFGbEI7a0NBQ0csV0FEcEJDLFFBQ29CLFFBQWU7O2tCQUQzQkY7a0JBQUlEOztVQWlDaEI7O1dBQXFCLHNCQUREaHJDO1dBQ0M7Ozs7Z0NBRUcsV0FGaEJzckMsUUFFZ0IsUUFBZTtVQUZsQjtrQ0FDRyxXQURwQkMsUUFDb0IsUUFBZTs7a0JBRDNCRjtrQkFBSUQ7O1VBS0s7V0FETWxyQztXQUFMVTtXQUFMVDtXQUNJLHNCQURNRDtXQUNOOzs7O1dBQ1osU0FBTSxLQUZFQyxLQUFLUztXQUdELHNCQURqQlg7V0FDaUI7Ozs7Z0NBSUcsV0FKUjJyQyxNQUk4QixXQU45QkosUUFNOEIsUUFBZTtXQUp4QyxxQkFHRyxXQUxaQyxRQUtrQyxXQUhsQ0ksTUFHa0MsUUFBZTtXQUh4QyxxQkFFRyxXQUZoQkMsTUFFc0MsV0FKdENKLFFBSXNDLFFBQWU7VUFGeEM7O29CQUNHLFdBSHBCQyxRQUcwQyxXQUQxQ0ksTUFDMEMsUUFBZTs7Ozs7VUE5QjdEOztXQUFxQix1QkFEWjNyQztXQUNZOzs7O2dDQUVHLFdBRmhCOHJDLFFBRWdCLFFBQWU7VUFGbEI7a0NBQ0csV0FEcEJDLFFBQ29CLFFBQWU7O2tCQUQzQkY7a0JBQUlEOztVQUxoQjs7V0FBcUIsdUJBRFozckM7V0FDWTs7OztnQ0FFRyxXQUZoQmlzQyxTQUVnQixRQUFlO1VBRmxCO2tDQUNHLFdBRHBCQyxTQUNvQixRQUFlOztrQkFEM0JGO2tCQUFJRDs7VUFVaEI7O1dBQXFCLHVCQURkOXJDO1dBQ2M7Ozs7Z0NBRUcsV0FGaEJvc0MsU0FFZ0IsUUFBZTtVQUZsQjtrQ0FDRyxXQURwQkMsU0FDb0IsUUFBZTs7a0JBRDNCRjtrQkFBSUQ7O1VBS2hCOztXQUFxQix1QkFEWGpzQztXQUNXOzs7O2dDQUlHLFdBSlJxc0MsU0FJUSxRQUFlO1dBSmxCLHFCQUdHLFdBSFpDLFNBR1ksUUFBZTtXQUhsQixxQkFFRyxXQUZoQkMsU0FFZ0IsUUFBZTtVQUZsQjtrQ0FDRyxXQURwQkMsU0FDb0IsUUFBZTs7Ozs7VUFLdkM7O1dBQXFCLHVCQURIdnNDO1dBQ0c7Ozs7Z0NBSUcsV0FKUndzQyxTQUlRLFFBQWU7V0FKbEIscUJBR0csV0FIWkMsU0FHWSxRQUFlO1dBSGxCLHFCQUVHLFdBRmhCQyxTQUVnQixRQUFlO1VBRmxCO2tDQUNHLFdBRHBCQyxTQUNvQixRQUFlOzs7d0JBZ0J1QjthQXVMOURDLHlCQUVFbHNDLEtBQUtrQjtNQUFTLGNBQWRsQiwwQkFBS2tCLGtCQUcwQjthQWJqQ2lyQyx1QkFFRXJzQyxJQUFJb0I7TUFBUyxjQUFicEIsaUJBQUlvQixZQUFKcEIsT0FBSW9CLGVBR3lCO2FBckMvQmtyQyxnQkFHQTdwQyxNQUFNckI7TUFBUyxHQUFmcUI7UUFFcUIsSUFBVDhwQyxRQUZaOXBDLFNBRTRCLDJCQUFoQjhwQyxRQUZObnJDO01BQ1MsT0FEVEEsS0FFbUQ7YUE5RHpEb3JDLGFBRUFwckM7TUovMUJMLElJKzFCS0U7TUFBUztpQkFBVEE7UUFxRDhCOztRQXJEckIsT0FBVEE7aUJBMkI4QixJQUF6QjlDLEtBM0JMOEMsV0EyQnNDLHVCQUFqQzlDO2lCQUN5QixJQUFwQkMsT0E1QlY2QyxXQTRCc0MsdUJBQTVCN0M7O2VBM0JHQyxPQURiNEMsV0FDUXRCLElBRFJzQjtXQUVzQyw4QkFEOUJ0QixPQUM4QixhQUR6QnRCOztlQUVLQyxPQUhsQjJDLFdBR2FyQixNQUhicUI7V0FJc0MsOEJBRHpCckIsU0FDeUIsYUFEcEJ0Qjs7V0FJSjtZQURLQyxPQU5uQjBDO1lBTWFwQixLQU5ib0I7WUFNUW5CLE1BTlJtQjtZQU9jLHFCQURLMUM7WUFFTCxpQ0FGRHNCLFFBQ1R1c0M7V0FDVSw4QkFGTnRzQyxNQUVKdXNDOztXQUdVO1lBRE83dEMsT0FWckJ5QztZQVVlakIsT0FWZmlCO1lBVVVoQixNQVZWZ0I7WUFXYyx1QkFET3pDO1lBRVAsbUNBRkN3QixVQUNYc3NDO1dBQ1UsOEJBRkpyc0MsTUFFTnNzQzs7V0FHVTtZQURXOXRDLE9BZHpCd0M7WUFjbUJkLE9BZG5CYztZQWNjYixNQWRkYTtZQWVjLHVCQURXeEM7WUFFWCxtQ0FGSzBCLFVBQ2Zxc0M7V0FDVSw4QkFGQXBzQyxNQUVWcXNDOztXQUdVO1lBRE8vdEMsT0FsQnJCdUM7WUFrQmVYLE9BbEJmVztZQWtCVVYsTUFsQlZVO1lBbUJjLHVCQURPdkM7WUFFUCxtQ0FGQzRCLFVBQ1hvc0M7V0FDVSw4QkFGSm5zQyxNQUVOb3NDOztXQUdVO1lBRE9odUMsT0F0QnJCc0M7WUFzQmVSLE9BdEJmUTtZQXNCVVAsTUF0QlZPO1lBdUJjLHVCQURPdEM7WUFFUCxtQ0FGQzhCLFVBQ1htc0M7V0FDVSw4QkFGSmxzQyxNQUVObXNDOztlQUtPaHVDLE9BN0JYb0MsV0E2Qk1MLE1BN0JOSztXQThCc0MsOEJBRGhDTCxTQUNnQyxhQUQzQi9CO2tCQVltQixZQXpDOUJvQztrQkEwQzhCLFlBMUM5QkE7a0JBMkM4QixZQTNDOUJBOztlQW9DbUJsQyxPQXBDbkJrQyxXQW9DZXJDLEdBcENmcUM7V0FxQ21CLFVBREpyQyxHQUNJLGFBREFHOztlQUVFQyxRQXRDckJpQyxXQXNDaUJnc0MsS0F0Q2pCaHNDO1dBdUN5QixVQURSZ3NDLFVBQ1EsYUFESmp1QztrQkFQUyxJQUF4QkMsUUEvQk5nQyxXQStCdUMsd0JBQWpDaEM7a0JBQ3dCLElBQXhCQyxRQWhDTitCLFdBZ0N1Qyx3QkFBakMvQjtrQkFpQndCLFlBakQ5QitCOztXQW1Ea0Q7WUFEdEI5QixRQWxENUI4QjtZQWtEZ0JPLFdBbERoQlA7WUFtRGtELGtCQUR0QjlCO1dBekRWLFNBeURGcUM7b0NBeERFc2hDLGtCQUlsQnFKLGFBSmtCcko7OztxQkF3REZ0aEM7YUF2REVxa0M7a0JBR2xCc0csYUFIa0J0RztrQkl2UmR6bUM7a0JKOFQwQixJQUF2QitCLFFBbENQRixXQWtDd0Msd0JBQWpDRTtrQkFXdUIsSUFBVEMsUUE3Q3JCSCxXQTZDd0MsdUJBQW5CRztrQkFDUyxJQUFUQyxRQTlDckJKLFdBOENxQyx1QkFBaEJJO2tCQUNTLElBQWZFLFFBL0NmTixXQStDc0MsdUJBQXZCTTs7ZUFDS0UsUUFoRHBCUixXQWdEZWdCLElBaERmaEI7V0FvRVcsVUFwQklnQjtZQW9CSixPQXBCSUE7eUJBaERmaEIsUUFnRG9CUTt5QkFoRHBCUixRQWdEb0JRO3FCQWlDaUMsd0JBakNqQ0E7MEJBaERwQlIsUUFnRG9CUTs7WUFvQlQsT0FwQklRO3lCQWhEZmhCLFFBZ0RvQlE7eUJBaERwQlIsUUFnRG9CUTt5QkFoRHBCUixRQWdEb0JRO3lCQWhEcEJSLFFBZ0RvQlE7eUJBaERwQlIsUUFnRG9CUTt5QkFoRHBCUixRQWdEb0JRO3lCQWhEcEJSLFFBZ0RvQlE7eUJBaERwQlIsUUFnRG9CUTt5QkFoRHBCUixRQWdEb0JROztlQWdDZSxJQUFWMHJDLFFBaENWbHJDO2VBZ0N1QyxvQkFBN0JrckMsUUFBNkIsYUFoQ2xDMXJDOzBCQWhEcEJSLFFBZ0RvQlE7MEJBaERwQlIsUUFnRG9CUTs7ZUFmRkMsUUFqQ2xCVCxXQWlDUW1CLE1BakNSbkI7V0FpQ29ELHVCQUE1Q21CLE1BQTRDLGFBQWxDVixVQW9Cd0I7Ozs7YUEwRDFDMHJDLGFBR0F6dEMsSUFBSW9CO01BQVMsVUFBYnBCO09BQ2lCLFlBRGJvQjs7UUFBUyxTQUFicEI7Y0FFb0IwdEMsRUFGcEIxdEMsT0FFYThrQyxNQUZiOWtDLG9CQUVhOGtDLE1BQU80SSxHQUZoQnRzQzs7Y0FHc0I1QyxLQUh0QjRDLFNBR1ErakMsUUFIWm5sQyxvQkFHWW1sQyxTQUFjM21DO1FBQ3JCLG9CQUFtQjthQUt4Qm12QyxhQUdBM3RDLElBQUlFLEtBQUtrQjtNQUFxQix1QkFBOUJwQixJQUFTb0I7TUFBcUIsVUFBMUJsQjs7OztnQkFLMEMxQixhQUFaeUIsaUNBQVl6QjtVQUVmO1lBTk9DLGdCQUFMMEI7MEJBQUsxQjtNQURSLElBR1dDLGdCQUFMNEIsZUFBdEJzUixFQUhWMVI7Z0JBR2dDSSxTQUF0QnNSLEdBQTJCbFQsT0FJUzthQTBNbERrdkMsK0JBSUEvSCxVQUFVMUMsSUFBSS9oQztNQUFTLFVBQXZCeWtDO09BMEU2Qiw0QkExRW5CMUMsSUFBSS9oQzs7T0FBUyxPQUF2QnlrQzs7b0JBQWN6a0M7WUFHWjthQUY4QjBzQyxXQURsQjFzQzthQUNOMnNDLGVBRFJsSTthQUdFOzZDQUZNa0ksZUFERTVLLElBQ3NCMks7YUFFOUI7O3lCQURpQkUsa0JBQWlCOUg7OztvQkFGdEI5a0M7WUFPWjthQUZrQzZzQyxhQUx0QjdzQzthQUtKOHNDLGlCQUxWckk7YUFPRTs7Z0JBRlFxSSxpQkFMQS9LLElBSzBCOEs7YUFFbEM7O3lCQURpQkUsa0JBQWlCdkg7OztvQkFOdEJ4bEM7WUFXWjthQUY0Qmd0QyxhQVRoQmh0QzthQVNQaXRDLGlCQVRQeEk7YUFXRTs7Z0JBRkt3SSxpQkFUR2xMLElBU29CaUw7YUFFNUI7O3lCQURpQkcsa0JBQWlCRDs7O29CQVZ0Qmx0QztZQWVaO2FBRmdDb3RDLGFBYnBCcHRDO2FBYUxxdEMsaUJBYlQ1STthQWVFOztnQkFGTzRJLGlCQWJDdEwsSUFhd0JxTDthQUVoQzs7eUJBRGlCRyxrQkFBaUJEOzs7b0JBZHRCdHRDO1lBbUJaO2FBRndDd3RDLGFBakI1Qnh0QzthQWlCRHl0QyxpQkFqQmJoSjthQW1CRTs7Z0JBRldnSixpQkFqQkgxTCxJQWlCZ0N5TDthQUV4Qzs7eUJBRGlCRyxrQkFBaUJEOzs7b0JBbEJ0QjF0QztZQXVCWjthQUZnQzR0QyxhQXJCcEI1dEM7YUFxQkw2dEMsaUJBckJUcEo7YUF1QkU7O2dCQUZPb0osaUJBckJDOUwsSUFxQndCNkw7YUFFaEM7O3lCQURpQkcsbUJBQWlCRDs7O29CQXRCdEI5dEM7WUEyQlo7YUFGZ0NndUMsYUF6QnBCaHVDO2FBeUJMaXVDLGtCQXpCVHhKO2FBMkJFOztnQkFGT3dKLGtCQXpCQ2xNLElBeUJ3QmlNO2FBRWhDOzt5QkFEaUJHLG1CQUFpQkQ7OztvQkExQnRCbHVDO1lBK0JaO2FBRjhCb3VDLGFBN0JsQnB1QzthQTZCTnF1QyxrQkE3QlI1SjthQStCRTs7Z0JBRk00SixrQkE3QkV0TSxJQTZCc0JxTTthQUU5Qjs7eUJBRGlCRyxtQkFBaUJEOzs7b0JBOUJ0QnR1Qzs7YUFtRGN3dUMsYUFuRGR4dUM7YUFtREN5dUMsV0FuRER6dUM7YUFrRGEwdUMsa0JBbEQzQmpLO2FBa0Rla0ssYUFsRGZsSztZQW9ERyxvQkFGWWtLLGlCQUNBRjthQUN1QztZQUVwRDs7O2dCQUp5QkMsa0JBbERqQjNNLElBbURrQnlNO2FBRzFCOzt5QkFIYUMsV0FFSUksbUJBQWlCRDs7O29CQXJEdEI1dUM7WUEyRG1DO2FBRk44dUMsYUF6RDdCOXVDO2FBeURnQit1QyxhQXpEaEIvdUM7YUF5REdndkMsV0F6REhodkM7YUF3RDZCaXZDLGtCQXhEM0N4SzthQXdEOEJ5SyxhQXhEOUJ6SzthQXdEaUIwSyxhQXhEakIxSzthQTJEaUQsa0JBRmhDdUs7WUFFZCxvQkFBVSxVQUhJRzthQUlaO1lBRDRDLFlBRUEsVUFKbkJKO1lBSTNCLG9CQUFVLFVBTGlCRzthQU16QjtZQUg0QzthQUloQyxrQkFBTSxLQU5ORixZQUFhRDthQU9YLHNCQURmcks7YUFDZTs7WUFDUixXQURKZ0M7WUFFSSxXQUZHRDtZQUxtQzthQVMvQzs7Z0JBQWlDLFVBWlF3SSxtQkF4RGpDbE4sSUF5RGlDK007YUFXekM7O1lBRzhCO3VCQWRmRSxXQUFhRCxhQWNFLEtBSmJNO29CQUFpQkQ7OztvQkFuRXRCcHZDO1lBbUNaO2FBRmdDc3ZDLGFBakNwQnR2QzthQWlDTHV2QyxrQkFqQ1Q5SzthQW1DRTs7Z0JBRk84SyxrQkFqQ0N4TixJQWlDd0J1TjthQUVoQzs7MEJBRGlCRyxtQkFBaUJEOzs7b0JBbEN0Qnh2QztZQXVDWjthQUZnQzB2QyxjQXJDcEIxdkM7YUFxQ0wydkMsa0JBckNUbEw7YUF1Q0U7O2dCQUZPa0wsa0JBckNDNU4sSUFxQ3dCMk47YUFFaEM7OzBCQURpQkcsbUJBQWlCRDs7O29CQXRDdEI1dkM7WUEyQ1o7YUFGa0M4dkMsY0F6Q3RCOXZDO2FBeUNKK3ZDLGtCQXpDVnRMO2FBMkNFOztnQkFGUXNMLGtCQXpDQWhPLElBeUMwQitOO2FBRWxDOzswQkFEaUJHLG1CQUFpQkQ7OztvQkExQ3RCaHdDO1lBK0NaO2FBRmtEa3dDLGNBN0N0Q2x3QzthQTZDSW13QyxrQkE3Q2xCMUw7YUErQ0U7O2dCQUZnQjBMLGtCQTdDUnBPLElBNkMwQ21PO2FBRWxEOzswQkFEaUJHLG1CQUFpQkQ7OztNQTZCL0IsbUJBQW1CO2FBelF4QjNELGdCQU1FMUssSUE0SU0vaEM7TUE1SU8sVUFBYitoQztPQW1IMkIsWUF5QnJCL2hDOztPQTVJTyxPQUFiK2hDOztvQkE0SU0vaEM7WUExSTJCO2FBRFowc0MsV0EySWYxc0M7YUEzSUhzd0MsU0FESHZPO2FBRWlDLHNCQUQ5QnVPLFNBQWtCNUQ7YUFDWTs7eUJBQWhCNUgsT0FBTTVrQzs7O29CQTBJakJGO1lBdkkyQjthQURQNnNDLGFBd0lwQjdzQzthQXhJRXV3QyxXQUpSeE87YUFLaUMsd0JBRHpCd08sV0FBa0IxRDthQUNPOzt5QkFBaEJySCxPQUFNdUc7OztVQUduQjtXQURPeUUsV0FQWHpPO1dBT01uakMsSUFQTm1qQztXQVFJLHFCQURFbmpDLElBcUlBb0I7V0FwSUY7OztZQUVKOzthQUFtQyx3QkFIeEJ3d0MsV0FFdUJ4RDthQUNDOzs4QkFBaEJFLE9BQU1sQjtVQUVHOztVQUd4QjtXQURZeUUsV0FkaEIxTztXQWNXbGpDLE1BZFhrakM7V0FlSSxxQkFET2xqQyxNQThITG1CO1dBN0hGOzs7WUFFSjs7YUFBbUMsd0JBSG5CeXdDLFdBRWtCckQ7YUFDQzs7OEJBQWhCRSxPQUFNckI7VUFFRzs7VUFHeEI7V0FEaUJ5RSxXQXJCckIzTztXQXFCZWpqQyxLQXJCZmlqQztXQXFCVWhqQyxNQXJCVmdqQztXQXFCRy9pQyxNQXJCSCtpQztXQXNCSSxxQkFETWhqQyxNQUFLRCxLQXVIVGtCO1dBdEhGOzs7WUFFK0I7YUFERXd0QzthQUFidnVDO2FBQ1csd0JBSGR5eEMsV0FFZ0JsRDthQUNGOzt5QkFIaEN4dUMsV0FFcUJDLE9BQ0x5dUMsT0FBTXZCO1VBRU07O1VBRzNCO1dBRG1Cd0UsV0E1QnZCNU87V0E0QmlCM2lDLE9BNUJqQjJpQztXQTRCWTdpQyxNQTVCWjZpQztXQTRCSzVpQyxRQTVCTDRpQztXQTZCSSxxQkFEUTdpQyxNQUFLRSxPQWdIWFk7V0EvR0Y7OztZQUUrQjthQURJNHRDO2FBQWZydUM7YUFDVyx3QkFIWm94QyxXQUVnQi9DO2FBQ0o7O3lCQUg5Qnp1QyxhQUVtQkksT0FDTHV1QyxPQUFNMUI7VUFFTTs7VUFHM0I7V0FEdUJ3RSxXQW5DM0I3TztXQW1DcUJyaUMsT0FuQ3JCcWlDO1dBbUNnQjFpQyxNQW5DaEIwaUM7V0FtQ1N6aUMsUUFuQ1R5aUM7V0FvQ0kscUJBRFkxaUMsTUFBS0ssT0F5R2ZNO1dBeEdGOzs7WUFFK0I7YUFEUWd1QzthQUFuQjZDO2FBQ1cseUJBSFJELFdBRWdCNUM7YUFDUjs7eUJBSDFCMXVDLGFBRWV1eEMsT0FDTDNDLE9BQU00QztVQUVNOztVQUczQjtXQURtQkMsV0ExQ3ZCaFA7V0EwQ2lCaVAsT0ExQ2pCalA7V0EwQ1l2aUMsTUExQ1p1aUM7V0EwQ0t0aUMsUUExQ0xzaUM7V0EyQ0ksc0JBRFF2aUMsTUFBS3d4QyxPQWtHWGh4QztXQWpHRjs7O1lBRStCO2FBRElvdUM7YUFBZjZDO2FBQ1cseUJBSFpGLFdBRWdCM0M7YUFDSjs7eUJBSDlCM3VDLGFBRW1Cd3hDLE9BQ0wzQyxPQUFNNEM7VUFFTTs7VUFHM0I7V0FEbUJDLFdBakR2QnBQO1dBaURpQnFQLE9BakRqQnJQO1dBaURZcGlDLE1BakRab2lDO1dBaURLbmlDLE1BakRMbWlDO1dBa0RJLHNCQURRcGlDLE1BQUt5eEMsT0EyRlhweEM7V0ExRkY7OztZQUUrQjthQURJd3VDO2FBQWY2QzthQUNXLHlCQUhaRixXQUVnQjNDO2FBQ0o7O3lCQUg5QjV1QyxXQUVtQnl4QyxPQUNMekMsT0FBTTBDO1VBRU07O1VBRzNCO1dBREtDLFdBeERUeFA7V0F3RElsaUMsTUF4REpraUM7V0F5REksc0JBREFsaUMsTUFvRkVHO1dBbkZGOzs7WUFFSjs7YUFBbUMseUJBSDFCdXhDLFdBRXVCekM7YUFDRzs7OEJBQWhCTSxPQUFNb0M7VUFFRzs7VUFHSztXQUQ3QkMsV0EvREoxUDtXQWdFaUMseUJBRDdCMFAsV0E2RUV6eEM7V0E1RTJCOzt3QkFBaEJ3dkMsUUFBTWtDOztVQUlVO1dBRGRDLFlBbkVuQjVQO1dBbUVjamlDLElBbkVkaWlDO1dBb0VpQyx5QkFEZDRQLFlBeUViM3hDO1dBeEUyQjs7d0JBRG5CRixJQUNHOHZDLFFBQU1nQzs7VUFHVTtXQURoQkMsWUF0RWpCOVA7V0FzRVloaUMsSUF0RVpnaUM7V0F1RWlDLHlCQURoQjhQLFlBc0VYN3hDO1dBckUyQjs7d0JBRHJCRCxJQUNLaXdDLFFBQU04Qjs7b0JBcUVqQjl4Qzs7YUFqRW1Cc3ZDLGFBaUVuQnR2QzthQWpFT3lrQyxVQWlFUHprQzthQWxFd0IreEMsWUExRTlCaFE7YUEwRW1CMkMsWUExRW5CM0M7YUEwRVVILFFBMUVWRztZQTRFQyxvQkFGa0IyQyxnQkFDTkQ7YUFDcUM7WUFDakI7c0NBSEhzTixZQUNMekM7YUFFUTs7MEJBSHZCMU4sUUFDRzZDLFVBRUkyTCxRQUFNNEI7OztvQkErRGpCaHlDO1lBM0R3QzthQUROMHZDLGNBNERsQzF2QzthQTVEU2l5QyxXQTREVGp5QzthQTdEMEJreUMsWUEvRWhDblE7YUErRXFCb1EsWUEvRXJCcFE7YUErRVlDLFVBL0VaRDthQWlGOEMsa0JBRC9Ca1E7WUFDZCxvQkFBVSxVQUZVRTthQUdyQjtZQUQ4QzthQUc5Qyx5QkFMZ0NELFlBS1AsVUFKZXhDO2FBSXhDOzswQkFMWTFOLFVBQ0dpUSxXQUdFSSxRQUFNRDs7O29CQXlEakJweUM7WUFuRDJCO2FBRFY4dkMsY0FvRGpCOXZDO2FBcERGc3lDLFlBeEZKdlE7YUF5RmlDLHlCQUQ3QnVRLFlBQW1CeEM7YUFDVTs7MEJBQWhCMEMsUUFBTUQ7OztvQkFtRGpCdnlDO1lBaEQyQjthQURWa3dDLGNBaURqQmx3QzthQWpERnl5QyxZQTNGSjFRO2FBNEZpQyx5QkFEN0IwUSxZQUFtQnZDO2FBQ1U7OzBCQUFoQnlDLFFBQU1EOzs7VUFLVTtXQURIRSxZQWhHOUI3UTtXQWdHYzlsQyxlQWhHZDhsQztXQWlHaUMseUJBREg2USxZQTRDeEI1eUM7V0EzQzJCOzt3QkFEbkIvRCxlQUNHNjJDLFFBQU1EOztjQUVPRSxZQW5HOUJoUixPQW1HY2lSLGVBbkdkalI7VUE0SDRCLFNBekJkaVI7WUEyQm1CO3NCQTNCbkJBO2FBMEJRM087YUFBTjNsQzthQUNpQix5QkFEakJBLEtBZVZzQjthQWQyQjs7YUFDQSx5QkE1QkgreUMsWUEyQlB4MEM7YUFDVTs7Z0NBRGhCSSxLQURLMGxDLFFBRUw2TyxNQUFNRDtVQUdVO29CQS9CbkJEO1dBOEJRL047V0FBTmtPO1dBQ2lCLHlCQURqQkEsT0FXVm56QztXQVYyQjs7V0FDQSx5QkFoQ0greUMsWUErQlBLO1dBQ1U7OzhCQURoQkMsT0FES3BPLFFBRUxzTyxRQUFNRDs7b0JBU2pCdHpDO1lBcEMyQjthQURSd3pDLGNBcUNuQnh6QzthQXJDRHl6QyxZQXZHTDFSO2FBd0dpQyx5QkFENUIwUixZQUFvQkQ7YUFDUTs7MEJBQWhCRyxRQUFNRDs7O29CQW9DakIxekM7WUFqQzJCO2FBRHNCNHpDLGNBa0NqRDV6QzthQWxDNEI2ekMsWUExR2xDOVI7YUEwR3dCbmhDLFNBMUd4Qm1oQzthQTBHYWxoQyxVQTFHYmtoQzthQTJHaUMseUJBREM4UixZQUFxQkQ7YUFDdEI7OzBCQURwQi95QyxVQUFXRCxTQUNQbXpDLFFBQU1EOzs7b0JBaUNqQjl6QztZQTlCMkI7YUFEVWcwQyxjQStCckNoMEM7YUEvQm1CaTBDLFlBN0d6QmxTO2FBNkdnQmhoQyxRQTdHaEJnaEM7YUE4R2lDLHlCQURSa1MsWUFBa0JEO2FBQ1Y7OzBCQURqQmp6QyxRQUNDb3pDLFFBQU1EOzs7Y0FFTDkyQyxLQWhIbEIya0MsT0FnSGE3Z0MsSUFoSGI2Z0M7VUE0SWUsVUE1QkY3Z0M7V0E0QkUsT0E1QkZBO29CQTZCdUIsOEJBN0J2QkEsSUFBSzlELEtBNEJaNEM7b0JBRThCLDhCQTlCdkJrQixJQUFLOUQsS0E0Qlo0Qzs7Y0FzQlUsVUF0QlZBO2dCQXlCTjsrQkF6Qk1BO2lCQXlCNkIseUJBckRqQjVDLEtBb0RBaTNDO2lCQUNpQjs7Z0NBQWhCRSxRQUFNRDtjQUVwQjtxQkFkK0IsOEJBekN2QnB6QyxJQUFLOUQsS0E0Qlo0Qzs7V0FBUyxPQTVCRmtCO29CQStCdUIsOEJBL0J2QkEsSUFBSzlELEtBNEJaNEM7b0JBSThCLDhCQWhDdkJrQixJQUFLOUQsS0E0Qlo0QztvQkFLOEIsOEJBakN2QmtCLElBQUs5RCxLQTRCWjRDO29CQU04Qiw4QkFsQ3ZCa0IsSUFBSzlELEtBNEJaNEM7b0JBTzhCLDhCQW5DdkJrQixJQUFLOUQsS0E0Qlo0QztvQkFROEIsOEJBcEN2QmtCLElBQUs5RCxLQTRCWjRDO29CQVM4Qiw4QkFyQ3ZCa0IsSUFBSzlELEtBNEJaNEM7b0JBVThCLDhCQXRDdkJrQixJQUFLOUQsS0E0Qlo0Qzs7a0JBY3FCdzBDLFlBMUNkdHpDLE9BMENLK2dDLFVBMUNML2dDO3FCQTBEZmt6QzswQkFoQm9CblMsVUFBU3VTLGFBMUNUcDNDLEtBNEJaNEM7O2NBa0JOO2VBRjZCeTBDLFlBNUNoQnZ6QztlQTRDT2doQyxVQTVDUGhoQztlQThDYixvQ0FGNkJ1ekMsWUE1Q1hyM0MsS0E0Qlo0QztlQWtCTjs7OzsrQkFGb0JraUMsVUFDSDBTLGFBQTJCRCxRQUFNRDtxQkFOZCw4QkF2Q3ZCeHpDLElBQUs5RCxLQTRCWjRDO3FCQVk4Qiw4QkF4Q3ZCa0IsSUFBSzlELEtBNEJaNEM7O01BdkJILG1CQUFtQjthQXFEeEJvMEMsdUJBS0VsekMsSUFBSTZnQyxJQUFJL2hDO01BQ3VCLDBCQUQzQitoQyxJQUFJL2hDLE9BQ3VCO29CQUQvQmtCLElBQ2U0akMsT0FBTTVrQyxRQUN3QjthQWpNM0MyMEMsWUFNRjlTLElBQUkvaEM7TUFBZSx5QkFBbkIraEMsSUFBSS9oQztNQUFlLGdDQUNpQixJQUF2QjhrQyxjQUF1QixPQUF2QkE7TUFDVixtQkFBbUI7YUFxU3hCZ1EsT0FRRS9TLElBQUkvaEMsT0FDUSxtQkFEWitoQyxJQUNZLFVBQVcsS0FEbkIvaEMsUUFDZ0M7YUFNdEMrMEMsWUFBWXJSLE1BQU03QixNQUFNL2hDO01BQzFCO2lDQUQwQkE7T0FDMUIsYUFEb0IraEMsTUFBTjZCO09BR1osWUFIa0I3QjtNQUdsQixHQURFbVQsV0FEQS92QyxJQWFpQixPQWRLbkY7TUFDMUIsSUFjRSxXQWZZaWtDLGNBZUYsV0FiUmlSO01BYVEsT0FmRWpSO2VBaUJELE9BakJhamtDLE1BZXBCMkcsTUFkRnhCO2VBaUJTLE9BbEJhbkYsTUFlcEIyRyxJQWJGdXVDLFVBREEvdkM7OztTQWtCVyxPQWxCWEE7O1dBa0J5RDs7O2FBQWxDLGdCQW5CRG5GOzs7O2FBbUJrQixnQkFuQmxCQTs7OzthQW1CbUMsZ0JBbkJuQ0E7OzthQW9CdEIsZUFMRTJHLE1BS2MsZ0JBcEJNM0c7YUFxQnRCLE9BckJzQkEsTUFlcEIyRyxLQWJGdXVDLFVBREEvdkM7OztTSXZ4QkU7O1dKNHlCb0IsT0FyQnRCQSxjQXFCc0IsZ0JBdEJBbkY7O2FBc0JtQzs7O2VBQWpCLGdCQXRCbEJBOzs7O2VBc0JtQyxnQkF0Qm5DQTs7O2VBdUJ0QixlQVJFMkcsTUFRYyxnQkF2Qk0zRztlQXdCdEIsT0F4QnNCQSxNQWVwQjJHLEtBYkZ1dUMsVUFEQS92Qzs7O3VCQXlCQSxPQTFCc0JuRixNQWVwQjJHLElBYkZ1dUMsVUFEQS92QztNQTJCRiw0QkFiSXdCLElBYXNCO2FBRzFCd3VDLGtCQUFrQm4yQyxLQUFLZ0I7TUFDZDtrQkFEU2hCO09BQ1QsMEJBRGNnQjtPQUduQixrQkFIbUJBOztNQUduQixTQUNKd0U7Ozs7Ozs7Ozs7O2dCQUZFVyxPQURBaEcsdUJBQ0FnRzs7ZUFPc0Q7OztpQkFBakIsZ0JBVGhCbkY7Ozs7aUJBU2lDLGdCQVRqQ0E7OztpQkFVYixJQUFObzFDLE1BQU0sT0FUUmoyQztpQkFVRixlQURJaTJDLFFBQ1ksZ0JBWE9wMUM7aUJBWXZCLE9BWnVCQSxNQVVuQm8xQyxPQVRGajJDLFNBQ0FnRztpQkFVRiw0QkFGSWl3Qzs7Ozs7Ozs7Ozs7O1FBTndCLGlCQUYxQmp3QyxPQURBaEc7VUFJUSxJQUFOMmtCLE1BQU0sT0FKUjNrQjtVQUtGLGVBREkya0IsUUFESnRmO1VBR0EsT0FQdUJ4RSxNQUtuQjhqQixPQUpGM2tCLFNBQ0FnRztVQUtGLDRCQUZJMmU7TUFTc0MsZUFaeEMzZSxNQURBaEc7UUFjUSxJQUFOd0gsSUFBTSxPQWRSeEg7UUFlRixPQWhCdUJhLE1BZW5CMkcsSUFkRnhILFNBQ0FnRztRQWNGLDRCQURJd0I7TUFJSixPQW5CdUIzRyxHQW1CcEI7YUFHSHExQyxzQkFBc0JyMUM7TUFDZDt1QkFEY0E7T0FDZCx3QkFBTnVrQztPQUVNLFdBRE43Z0M7TUFFSixpQkFISTZnQyxRQUVBNTlCLE1BREFqRDtNQUVKLDRCQURJaUQsSUFFc0I7YUFxQ3hCMnVDLGdCQUFnQngxQyxNQUFNZDtNQUNYO2tCQURXQTtPQUVYLHdCQUZLYztPQUdOO01BQ1YsZ0JBREl5RztNQUVKLGtCQUZJQSxJQUhZekc7TUFNaEIsZ0JBSEl5RztNQUlKLGtCQUpJQSxJQUlrQiw0QkFObEJwSDtNQU9KLGdCQUxJb0gsSUFEQWd2QztNQU1KLHVCQUxJaHZDLElBTWU7YUFFbkJpdkMsa0JBQWtCdDJDLE1BQU00QztNQUMxQixTQURvQjVDO1FBR2xCLHVDQUh3QjRDLFdBR3hCOztjQUVFNkI7VUFDRTs2Q0FOb0I3QixFQUt0QjZCO1lBQ0UsNEJBQ2M7WUFEZCxTQURGQTs7O1FBRkY7U0FPRSxPQU5JL0I7U0FRSTs7WUFGUixzQkFWc0JFLE9BR3BCMnpDO1NBU007c0JBRUZqeEMsR0FBSSxlQUZSK0IsSUFDQSszQixPQUNJOTVCLEdBQUksaUJBQThCO1NBRmhDLFVBVE5peEM7U0FTTSwyQkFaYzN6QztTQVlkOztjQUlWMUU7VUFDRTtnQkFDRW9ILEVBREYsdUJBakJzQjFDLEVBZ0J4QjFFO1lBQ0UsT0FDRW9IO2FBRUssSUFGTEE7O2NBQ0UsU0FKRnVGLFNBSXFCLG9CQUFxQixjQUFXLElBRHJEdkY7WUFERixTQURGcEg7OztRQU1BLDRCQVZJbUo7TUFXQyxPQXZCbUJ6RSxDQXVCbEI7YUFHTjZ6QyxZQUFZejJDLE1BQU0wQztNQXRFQSxPQXNFTjFDOzs7Ozs7Ozs7Ozs7Ozs7O01BQzZDLHlCQUQ3Q0EsTUFDNkMscUJBRHZDMEMsR0FDMEM7YUFDNURnMEMsY0FBYzEyQyxNQUFNMEM7TUF4REQsT0F3REwxQzs7Ozs7Ozs7Ozs7Ozs7OztNQUM4Qyx5QkFEOUNBLE1BQzhDLHFCQUR4QzBDLEdBQzJDO2FBQy9EaTBDLGtCQUFrQjMyQyxNQUFNMEM7TUFsREwsT0FrREQxQzs7Ozs7Ozs7Ozs7Ozs7OztNQUM4Qyx5QkFEOUNBLE1BQzhDLHFCQUR4QzBDLEdBQzJDO2FBQ25FazBDLGNBQWM1MkMsTUFBTTBDO01BcEVELE9Bb0VMMUM7Ozs7Ozs7Ozs7Ozs7Ozs7TUFDOEMseUJBRDlDQSxNQUM4Qyx1QkFEeEMwQyxHQUMyQzthQUkvRG0wQyxjQUFjajJDLE1BQU1kLEtBQUtpRDtNQUMzQixTQUFJK3pDO1FBQ0YsT0FGY2wyQztxQkFFVm0yQzs7O1FBS0osdUNBUHlCaDBDLEVBQUxqRCxLQUVoQmkzQyxLQUswQjtNQU5oQyxTQWVJQyxpQkFBaUJsMkM7UUFBWSxzQ0FoQk5pQztRQWdCTTtpQkFoQk5BO29DQWdCTmpDLEdBR0Y7TUFsQm5CLE9BRGdCRjs7U0F5QnFDO2dDQUE1QixnQkF6QlRBLE1BQU1kLE1BQUtpRDtVQVN6QiwwQkFEb0JqQztVQUVINUM7U0FDZjtjQURlQSxNQURiK0g7OzthQUdNLDBCQUpVbkYsSUFFSDVDLEdBRVA7Ozs7O2FJajdCTixlSm03Qk8sUUFKTUE7YUFFUDt5QkFKVTRDLElBT1EsSUFQUkE7a0JBUWxCazJDO2VBS1M7ZUFDdUI7ZUFDTDtnQkFLWSx5QkFBNUIsZ0JBNUJDcDJDLE1BQU1kLE1BQUtpRCxHQTRCa0I7YUFXM0NrMEMsZ0JBQWdCajJDO01BQ1IsSUFBTnFHLElBQU07TUFDVixhQURJQSxJQURjckc7TUFFbEIsdUJBRElxRyxJQUVlO2FBWWI2dkMsc0JBR0ovZCxFQUFFM29CLElBQUl1eUI7VUFBTi9CLE1BQUV2d0IsVUFBSXExQjtNQUFPO2lCQUFQQTtRQXVGTixrQkF2RkE5RSxJQUFFdndCOztRQUFXLE9BQVBxMUI7O1dBRU4sSUFESzFuQyxLQURDMG5DO1dBRU4sZ0JBQUl4Z0M7YUFDRixJQUFJNnhDLFdBSEoxbUMsTUFFRW5MLEdBQ0YsbUJBSEYwN0IsSUFHTW1XLFFBRkQvNEMsS0FHdUI7O1dBRTVCLElBRFVDLE9BTEp5bkM7V0FNTixnQkFBSXhnQzthQS9CSTswQkErQkpBO2NBL0JJLHdCQUFOeEU7Y0FFTSxXQUROMEQ7YUFFSixpQkFISTFELE1BRUEyRyxNQURBakQ7YUFETSxJQWdDRjJ5QyxXQVBKMW1DLE1BdEJKLHFCQURJaEo7b0JBb0JFMnZDLFlBR0pwVyxJQU9NbVcsUUFGSTk0QyxPQUdrQjs7ZUFDZkMsT0FUUHduQyxTQVNFbG1DLElBVEZrbUM7a0JBb0pOdVIsYUFwSkFyVyxJQUFFdndCLE1BU1duUyxPQUFMc0IsYUFDeUJrQixLQUFPLE9BQVBBLEdBQVU7O2VBQ3pCdkMsT0FYWnVuQyxTQVdPam1DLE1BWFBpbUM7a0JBb0pOdVIsYUFwSkFyVyxJQUFFdndCLE1BV2dCbFMsT0FBTHNCLE1BOUpiczJDOztlQWdLdUIzM0MsT0FiakJzbkMsU0FhV2htQyxLQWJYZ21DLFNBYU0vbEMsTUFiTitsQyxTQWFEOWxDLE1BYkM4bEM7a0JBd0tOd1I7b0JBeEtBdFcsSUFBRXZ3QixNQWFxQmpTLE9BQVh1QixNQUFLRCxLQWpGakIyMkMsWUFpRkt6MkM7OztZQUVvQnZCLE9BZm5CcW5DO1lBZWE3bEMsT0FmYjZsQztZQWVRNWxDLE1BZlI0bEM7WUFlQzNsQyxRQWZEMmxDO2tCQXdLTndSO29CQXhLQXRXLElBQUV2d0IsTUFldUJoUyxPQUFYeUIsTUFBS0QsT0FqRm5CeTJDLGNBaUZPdjJDOzs7WUFFc0J6QixPQWpCdkJvbkM7WUFpQmlCMWxDLE9BakJqQjBsQztZQWlCWXpsQyxNQWpCWnlsQztZQWlCS3hsQyxRQWpCTHdsQztrQkF3S053UjtvQkF4S0F0VyxJQUFFdndCLE1BaUIyQi9SLE9BQVgyQixNQUFLRCxPQWpGdkJ1MkMsa0JBaUZXcjJDOzs7WUFFYzNCLE9BbkJuQm1uQztZQW1CYXZsQyxPQW5CYnVsQztZQW1CUXRsQyxNQW5CUnNsQztZQW1CQ3JsQyxRQW5CRHFsQztrQkF3S053UjtvQkF4S0F0VyxJQUFFdndCLE1BbUJ1QjlSLE9BQVg2QixNQUFLRCxPQWpGbkJxMkMsY0FpRk9uMkM7O2VBRWtCN0IsT0FyQm5Ca25DLFNBcUJhcGxDLE9BckJib2xDLFNBcUJRbmxDLE1BckJSbWxDLFNBcUJDbGxDLE1BckJEa2xDO1dBeU53QixVQXBNaEJubEM7dUJBQUtEO2NBOE1uQixPQTlNbUJBO2dDQThNZjhRLEVBQUV6Tzt5QkFDTSxJQUFOakMsSUFBTSxjQS9NTEYsTUE4TUg0USxFQUFFek87eUJBQ00sbUJBcE9aaStCLE9BQUV2d0IsTUFvT0kzUCxLQS9NbUJsQyxPQWdOdUI7Z0NBVjVDbUU7eUJBQ1E7MEJBQU5qQzsyQkFBTSxjQXZNTEYsTUF1TXlCLHdCQXZNekJBLE9Bc01IbUM7eUJBQ1EsbUJBNU5aaStCLE9BQUV2d0IsTUE0TkkzUCxLQXZNbUJsQyxPQXdNdUI7YUFFaEQsSUFEMEI0UyxFQXpNUDlRO2FBME1uQixnQkFBSXFDO2VBQ1EsSUFBTmpDLElBQU0sY0EzTUxGLE1BeU1tQjRRLEVBQ3RCek87ZUFDUSxtQkFoT1ppK0IsT0FBRXZ3QixNQWdPSTNQLEtBM01tQmxDLE9BNE11Qjs7YUFSbEIsU0FwTWhCK0I7O3lCQUFLRDs7a0NBMk5mOFEsRUFBRXpPOzJCQUNNLElBQU5qQyxJQUFNLHNCQUFvQixjQTVOekJGLE1BMk5INFEsRUFBRXpPOzJCQUNNLG1CQWpQWmkrQixPQUFFdndCLE1BaVBJM1AsS0E1Tm1CbEMsT0E2TnVCO2tDQVg1Q21FOzJCQUNROzhDQW5OTG5DLE1BbU55Qix3QkFuTnpCQSxPQWtOSG1DOzRCQUVTLDRCQURQakM7MkJBQ08sbUJBek9ia2dDLE9BQUV2d0IsTUF5T0k0MEIsT0FwTm1Cem1DLE9BcU53QjttQkFDWDI0QyxJQXRObkI3MkM7K0JBdU5mcUM7aUJBQ1EsSUFBTmpDLElBQU0sc0JBQW9CLGNBeE56QkYsTUFzTitCMjJDLElBQ2xDeDBDO2lCQUNRLG1CQTdPWmkrQixPQUFFdndCLE1BNk9JM1AsS0F4Tm1CbEMsT0F5TnVCO3NCQXpObEMrQjt1QkFBS0Q7O2dDQXdPZjRzQyxFQUFFOTdCLEVBQUV6Tzt5QkFDSSxJQUFOakMsSUFBTSxpQkFEUndzQyxFQUM0QixjQXpPekIxc0MsTUF3T0Q0USxFQUFFek87eUJBQ0ksbUJBOVBaaStCLE9BQUV2d0IsTUE4UEkzUCxLQXpPbUJsQyxPQTBPdUI7Z0NBWDVDMHVDLEVBQUV2cUM7eUJBQ007NENBaE9MbkMsTUFnT3lCLHdCQWhPekJBLE9BK05EbUM7MEJBRU8sdUJBRlR1cUMsRUFDRXhzQzt5QkFDTyxtQkF0UGJrZ0MsT0FBRXZ3QixNQXNQSTQwQixPQWpPbUJ6bUMsT0FrT3dCO2lCQUNoQjQ0QyxJQW5PZDkyQzs2QkFvT2Y0c0MsRUFBRXZxQztlQUNNLElBQU5qQyxJQUFNLGlCQURSd3NDLEVBQzRCLGNBck96QjFzQyxNQW1PMEI0MkMsSUFDM0J6MEM7ZUFDTSxtQkExUFppK0IsT0FBRXZ3QixNQTBQSTNQLEtBck9tQmxDLE9Bc091Qjs7ZUFwT3JDRSxPQXZCTGduQyxTQXVCQWpsQyxNQXZCQWlsQztrQkFvSk51UixhQXBKQXJXLElBQUV2d0IsTUF1QlMzUixPQUFMK0IsTU92M0NOb0Q7O1dQMDRDQSxVQTFDTTZoQyxTQTBDTixTQTFDRXIxQixtQkFBSXExQjs7Ozs7WUE0Q1VobEMsSUE1Q1ZnbEM7WUFBSjFnQixlQTRDY3RrQjtZQTVDZDJQO1lBQUlxMUI7Ozs7O1lBOENRL2tDLElBOUNSK2tDO1lBQUoyUixlQThDWTEyQztZQTlDWjBQO1lBQUlxMUI7OztXQWtERztZQURpQjltQyxPQWpEcEI4bUM7WUFpRFNMLFVBakRUSztZQWtERyxtQkFETUw7V0FDTixnQkFDSjNrQyxLQUNILG1CQXBERmtnQyxPQUFFdndCLE1Ba0RFNVIsSUFEc0JHLE9BSXNCOztlQUN4QkMsUUF0RGxCNm1DLFNBc0RXOWtDLE1BdERYOGtDOzthQXVETixJQUFhL0M7YUFDWDtzQkF4REYvQixJQUFFdndCLE1Bd0RBLFdBQVksT0FERHN5QixJQURJL2hDLE9BQU8vQixTQUVjOztXQTlCdEMsSUFETUMsUUF6QkE0bUM7V0EwQk4sZ0JBQUkxakMsRUFBRVc7YUFBSztzQkExQlhpK0I7eUJBQUV2d0IsZUEwQjRDekMsR0FBSyxrQkFBL0M1TCxFQUEwQzRMLEVBQXhDakwsRUFBa0Q7c0JBRGxEN0QsUUFDeUQ7O1dBRS9ELElBRE1DLFFBM0JBMm1DO1dBNEJOLGdCQUFJMWpDLEdBQUssbUJBNUJUNCtCLE9BQUV2d0IsTUE0QkVyTyxHQURFakQsUUFDMEM7OztZQTVCMUN1dkM7WUEyRVVudEMsV0EzRVZ1a0M7WUFBSjRSLGVBMkVjbjJDO1lBM0Vka1A7WUFBSXExQjs7Ozs7O2NBNkV1QzFtQyxRQTdFdkMwbUM7OztjQUFONlI7d0JBQUVubkMsSUFBRjJvQixFQTZFNkMvNkI7MEJBN0U3QzRpQyxJQThFTzRXO21CQUNMLG1CQS9FRnplLEtBQUUzb0IsT0E4RUtvbkMsT0FEc0N4NUMsS0FFcUI7d0JBL0VsRTRpQztzQkFBRXZ3QixNQUFGdXdCLElBNkU2QzVoQztjQTdFN0M0aEM7Y0FBRXZ3QjtjQUFJcTFCOzs7WUFpRnVDMWtDLFFBakZ2QzBrQzs7O1lBQU4rUjtzQkFBRXJuQyxJQUFGMm9CLEVBaUY2Qy82Qjt3QkFqRjdDNGlDLElBa0ZPNFcsTUFDTCxtQkFuRkZ6ZSxLQUFFM29CLE9Ba0ZLb25DLE9BRHNDeDVDLEtBRXFCO3NCQW5GbEU0aUM7b0JBQUV2d0IsTUFBRnV3QixJQWlGNkM1L0I7WUFqRjdDNC9CO1lBQUV2d0I7WUFBSXExQjs7a0JBd0NOOztlQWtCcUJ6a0MsUUExRGZ5a0MsU0EyREZxUixXQTNERjFtQztrQ0E0RE8sbUJBNURUdXdCLElBMkRJbVcsUUFEaUI5MUMsUUFFYzs7V0FLbkMsSUFKcUJDLFFBN0Rmd2tDO1dBaUVOLGdCQUFJcGpDO2FBQ2tDLElBQWhDeTBDLFdBbEVKMW1DLE1Ba0VvQyx3QkFEbEMvTjthQUNrQyxtQkFsRXRDcytCLElBa0VNbVcsUUFMZTcxQyxRQU1POztXQUU1QixJQURlRSxRQXBFVHNrQztXQXFFTixnQkFBSXhnQzthQUNGLElBQUk2eEMsV0F0RUoxbUMsTUFxRUVuTCxHQUNGLG1CQXRFRjA3QixJQXNFTW1XLFFBRlMzMUMsUUFHYTs7ZUFDUkUsUUF4RWRva0MsU0F3RVM1akMsSUF4RVQ0akM7OztvQkEyRk5nUywrQkEzRkE5VyxJQUFFdndCLE1Bd0Vhdk8sSUFBS1I7O29CQW1CcEJvMkMsd0JBM0ZBOVcsSUFBRXZ3QixNQXdFYXZPLElBQUtSOztXQTFDUztZQURYQyxRQTdCWm1rQztZQTZCUzFqQyxFQTdCVDBqQztZQTZCRXpqQyxNQTdCRnlqQztZQThCdUIsZ0JBRGQxakM7V0FDYzs7b0JBa083QjIxQyx3QkFoUUEvVyxJQUFFdndCLE1BNkJnQjlPLFFBQVZVOztvQkFtT1IwMUMsaUJBaFFBL1csSUFBRXZ3QixNQTZCZ0I5TyxRQUFWVSxhQTBESDthQUlMeTFDLDZCQUlBM2UsRUFBRTNvQixJQUFJdE8sSUFBSTZnQztNQUFPLFVBQVg3Z0M7T0FBVyxPQUFYQTs7VUFDNkI7O21CQTZDbkM4MUMsMkJBOUNBN2UsRUFBRTNvQixJQUFRdXlCO3dDQThDVmlWLG9CQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjs7VUFFeUI7O21CQTRDbkNpViwyQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7d0NBOENWaVYsb0JBOUNBN2UsRUFBRTNvQixJQUFRdXlCO2dCQWF5Qjs7VUFHQTs7bUJBOEJuQ2lWLDJCQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjt3Q0E4Q1ZpVixvQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7O09BQU8sT0FBWDdnQzs7VUFHNkI7O21CQTJDbkM4MUMsMkJBOUNBN2UsRUFBRTNvQixJQUFRdXlCO3dDQThDVmlWLG9CQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjs7VUFJeUI7O21CQTBDbkNpViwyQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7d0NBOENWaVYsb0JBOUNBN2UsRUFBRTNvQixJQUFRdXlCOztVQUt5Qjs7bUJBeUNuQ2lWLDJCQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjt3Q0E4Q1ZpVixvQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7O1VBTXlCOzttQkF3Q25DaVYsMkJBOUNBN2UsRUFBRTNvQixJQUFRdXlCO3dDQThDVmlWLG9CQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjs7VUFPeUI7O21CQXVDbkNpViwyQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7d0NBOENWaVYsb0JBOUNBN2UsRUFBRTNvQixJQUFRdXlCOztVQVF5Qjs7bUJBc0NuQ2lWLDJCQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjt3Q0E4Q1ZpVixvQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7O1VBU3lCOzttQkFxQ25DaVYsMkJBOUNBN2UsRUFBRTNvQixJQUFRdXlCO3dDQThDVmlWLG9CQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjs7VUFVeUI7O21CQW9DbkNpViw0QkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7d0NBOENWaVYsb0JBOUNBN2UsRUFBRTNvQixJQUFRdXlCOztVQVd5Qjs7bUJBbUNuQ2lWLDRCQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjt3Q0E4Q1ZpVixvQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7O1VBWXlCLElBQVYvaEMsTUFabkJrQjtVQVk2Qjs7bUJBUW5DKzFDLDZCQXBCQTllLEVBQUUzb0IsSUFZdUJ4UCxNQVpmK2hDO3dDQW9CVmtWLHFCQXBCQTllLEVBQUUzb0IsSUFZdUJ4UCxNQVpmK2hDOztVQWN5Qjs7bUJBZ0NuQ2lWLDRCQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjt3Q0E4Q1ZpVixvQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7O1VBZXlCOzttQkErQm5DaVYsNEJBOUNBN2UsRUFBRTNvQixJQUFRdXlCO3dDQThDVmlWLG9CQTlDQTdlLEVBQUUzb0IsSUFBUXV5QixNQWdCbUQ7YUFJN0RrViwwQkFJQTllLEVBQUUzb0IsSUFBSXhQLE1BQU0raEM7TUFBTyxVQUFiL2hDO1FBZXFCOztpQkFPM0JnM0MsMkJBdEJBN2UsRUFBRTNvQixJQUFVdXlCO3NDQXNCWmlWLG9CQXRCQTdlLEVBQUUzb0IsSUFBVXV5Qjs7T0FBTyxPQUFiL2hDOztVQUNxQixJQUFuQjVDLEtBREY0QztVQUNxQix1QkFBUyx1QkFEcENtNEIsRUFBRTNvQixJQUNNcFMsS0FESTJrQyxJQUNzRDs7VUFDdkMsSUFBakIxa0MsT0FGSjJDO1VBRXFCLHVCQUFTLHVCQUZwQ200QixFQUFFM29CLElBRVFuUyxPQUZFMGtDLElBRXNEOztVQUN2QyxJQUFwQnprQyxPQUhEMEM7VUFHcUIsdUJBQVMsdUJBSHBDbTRCLEVBQUUzb0IsSUFHS2xTLE9BSEt5a0MsSUFHc0Q7O1VBQ3ZDLElBQWxCeGtDLE9BSkh5QztVQUlxQix1QkFBUyx1QkFKcENtNEIsRUFBRTNvQixJQUlPalMsT0FKR3drQyxJQUlzRDs7VUFDdkMsSUFBZHZrQyxPQUxQd0M7VUFLcUIsdUJBQVMsdUJBTHBDbTRCLEVBQUUzb0IsSUFLV2hTLE9BTER1a0MsSUFLc0Q7O1VBQ3ZDLElBQWxCdGtDLE9BTkh1QztVQU1xQix1QkFBUyx1QkFOcENtNEIsRUFBRTNvQixJQU1PL1IsT0FOR3NrQyxJQU1zRDs7VUFDdkMsSUFBbEJya0MsT0FQSHNDO1VBT3FCLHVCQUFTLHVCQVBwQ200QixFQUFFM29CLElBT085UixPQVBHcWtDLElBT3NEOztVQUN2QyxJQUFuQnBrQyxPQVJGcUM7VUFRcUIsdUJBQVMsdUJBUnBDbTRCLEVBQUUzb0IsSUFRTTdSLE9BUklva0MsSUFRc0Q7O1VBTXZDLElBQVRua0MsT0FkWm9DO1VBY3FCLHVCQUFTLHVCQWRwQ200QixFQUFFM29CLElBY2dCNVIsT0FkTm1rQyxJQWNzRDs7VUFHekQ7V0FEa0Jqa0MsT0FoQnJCa0M7V0FnQmdCeEIsSUFoQmhCd0I7V0FnQldqQyxJQWhCWGlDO1dBaUJHLFNBQU0sS0FERWpDLEtBQUtTO1VBQ2I7WUFDc0IsdUJBbEIvQjI1QixFQUFFM29CLElBa0I2QixhQUQzQjNSLEdBRHVCQyxRQWhCZmlrQyxJQWtCNkM7O1VBVDlCLElBQWxCL2pDLE9BVEhnQztVQVNxQjtZQUFXLHVCQVR0Q200QixFQUFFM29CLElBU094UixPQVRHK2pDLElBU3dEOztVQUN6QyxJQUFsQjlqQyxRQVZIK0I7VUFVcUIsdUJBQVMsdUJBVnBDbTRCLEVBQUUzb0IsSUFVT3ZSLFFBVkc4akMsSUFVc0Q7O1VBQ3ZDLElBQXBCN2pDLFFBWEQ4QjtVQVdxQix1QkFBUyx1QkFYcENtNEIsRUFBRTNvQixJQVdLdFIsUUFYSzZqQyxJQVdzRDtpQkFDdkM7aUJBQ0EsOEJBSzhCO2FBSXpEaVYseUJBR0E3ZSxFQUFFM29CLElBQUl1eUI7TUFDUixZQURJdnlCO01BQ0o7O2VBcEpNMG1DLHdCQW1KSi9kLE9BQU00SjtvQ0FuSkZtVSxpQkFtSkovZCxPQUFNNEosS0FDOEQ7YUErR3BFZ1Ysc0JBSUU1ZSxFQUFFM29CLElBQUlwUyxLQUFLaUUsTUFBTUQ7TUFBSyxHQUFYQztRQUdiLElBRFk4cEMsUUFGQzlwQztRQUdiLGdCQUFJVTtVQUMyQixtQkFKN0JvMkIsRUFBRTNvQixJQUFJcFMsS0FFSSt0QyxRQUVtQixXQUpaL3BDLEVBR2ZXLEdBQ2dDO01BSHJCLFlBRFh5TixJQUFlcE87TUFDSjs7ZUF4UVg4MEMsd0JBdVFGL2QsT0FBTS82QjtvQ0F2UUo4NEMsaUJBdVFGL2QsT0FBTS82QixNQUk0QjthQTNRaENnNUMsWUFHSmplLEVBQUUzb0IsSUFBSXV5QjtNSjkrQ1gsdUJJMitDU21VLGdCQUdKL2QsRUFBRTNvQixJQUFJdXlCO2FBMkZOcVYsbUJBSUFqZixFQUFFM29CLElBQUl0TyxJQUFJNmdDO01KN2tEZix1Qkl5a0RLK1UsdUJBSUEzZSxFQUFFM29CLElBQUl0TyxJQUFJNmdDO2FBb0JWbVYsZ0JBSUEvZSxFQUFFM29CLElBQUl4UCxNQUFNK2hDO01Kcm1EakIsdUJJaW1ES2tWLG9CQUlBOWUsRUFBRTNvQixJQUFJeFAsTUFBTStoQzthQXlJWm9WLFlBSUVoZixFQUFFM29CLElBQUlwUyxLQUFLaUUsTUFBTUQ7TUpsdkR4Qix1Qkk4dURLMjFDLGdCQUlFNWUsRUFBRTNvQixJQUFJcFMsS0FBS2lFLE1BQU1EO2FBaEhuQmkxQyxhQUlFbGUsRUFBRTNvQixJQUFJdXlCLElBQUluakMsSUFBSThtQztNQUFTLFVBQWI5bUM7T0FFWixnQkFBSW1EO1NBQ2tDLElBQWhDbzBDLFdBSEYzbUMsSUFHa0MsV0FIdEJrMkIsTUFFWjNqQztTQUNrQyxtQkFIcENvMkIsRUFHSWdlLFFBSEVwVSxJQUltQjs7UUFKRixTQUFibmpDO2NBS1FpakMsTUFMUmpqQyxPQUtDOGtDLE1BTEQ5a0M7MEJBTVJtRDtZQUNrQyxJQUFoQ28wQyxXQVBGM21DLElBT2tDLFlBRnpCazBCLE1BQU83QixNQUUwQyxXQVA5QzZELE1BTVozakM7WUFDa0MsbUJBUHBDbzJCLEVBT0lnZSxRQVBFcFUsSUFRbUI7UUFFM0IsSUFEWWdDLFFBVEFubEM7UUFVWixnQkFBSTB0QyxFQUFFdnFDO1VBQ2dDLElBQWhDbzBDLFdBWEYzbUMsSUFXa0MsWUFGMUJ1MEIsUUFDUnVJLEVBQ3NELFdBWDFDNUcsTUFVVjNqQztVQUNnQyxtQkFYcENvMkIsRUFXSWdlLFFBWEVwVSxJQVltQjthQUkzQnVVLDJCQUtFbmUsRUFBRTNvQixJQUFJdXlCLElBQUluakMsSUFBSUUsS0FBSzRtQyxNQUFNMW1DO01BQVMsVUFBeEJKO2tCQUFJRTtTQVVoQixPQVZnQkE7MkJBVVowUixFQUFFek87b0JBQ00sSUFBTmpDLElBQU0sa0JBRFIwUSxFQUM0QixXQVhYazFCLE1BQU0xbUMsTUFVckIrQztvQkFDTSxtQkFYVm8yQixLQUFFM29CLElBV0UxUCxLQVhFaWlDLElBWXdDOzJCQVY1Q2hnQztvQkFDUSxJQUFOakMsSUFBTSxXQUhTNGxDLE1BQU0xbUMsTUFFdkIrQztvQkFDUSxtQkFIVm8yQixLQUFFM29CLElBR0UxUCxLQUhFaWlDLElBSXdDO1FBRWhELElBRDBCdnhCLEVBTFYxUjtRQU1oQixnQkFBSWlEO1VBQ1EsSUFBTmpDLElBQU0sa0JBRmMwUSxFQUVNLFdBUFhrMUIsTUFBTTFtQyxNQU12QitDO1VBQ1EsbUJBUFZvMkIsS0FBRTNvQixJQU9FMVAsS0FQRWlpQyxJQVF3Qzs7UUFSWixTQUF4Qm5qQzs7b0JBQUlFOzs2QkFzQlowUixFQUFFek87c0JBQ007dUJBQU5qQzt3QkFBTTtvQ0FBb0Isa0JBRDVCMFEsRUFDaUQsV0F2QmhDazFCLE1BQU0xbUMsTUFzQnJCK0M7c0JBQ00sbUJBdkJWbzJCLEtBQUUzb0IsSUF1QkUxUCxLQXZCRWlpQyxJQXdCd0M7NkJBVjVDaGdDO3NCQUNRLElBQU5qQyxJQUFNLHNCQUFvQixXQWZYNGxDLE1BQU0xbUMsTUFjdkIrQztzQkFDUSxtQkFmVm8yQixLQUFFM29CLElBZUUxUCxLQWZFaWlDLElBZ0J3QztjQUNWd1UsSUFqQnRCejNDOzBCQWtCWmlEO1lBQ1E7YUFBTmpDO2NBQU07MEJBQW9CLGtCQUZNeTJDLElBRWUsV0FuQmhDN1EsTUFBTTFtQyxNQWtCdkIrQztZQUNRLG1CQW5CVm8yQixLQUFFM29CLElBbUJFMVAsS0FuQkVpaUMsSUFvQndDO2lCQXBCcENuakM7a0JBQUlFOzsyQkFrQ1p3dEMsRUFBRTk3QixFQUFFek87b0JBQ0k7cUJBQU5qQztzQkFBTTs2QkFEUndzQyxFQUM0QixrQkFEMUI5N0IsRUFDK0MsV0FuQ2hDazFCLE1BQU0xbUMsTUFrQ25CK0M7b0JBQ0ksbUJBbkNWbzJCLEtBQUUzb0IsSUFtQ0UxUCxLQW5DRWlpQyxJQW9Dd0M7MkJBVjVDdUssRUFBRXZxQztvQkFDTSxJQUFOakMsSUFBTSxpQkFEUndzQyxFQUM0QixXQTNCWDVHLE1BQU0xbUMsTUEwQnJCK0M7b0JBQ00sbUJBM0JWbzJCLEtBQUUzb0IsSUEyQkUxUCxLQTNCRWlpQyxJQTRCd0M7WUFDZnlVLElBN0JqQjEzQzt3QkE4Qlp3dEMsRUFBRXZxQztVQUNNO1dBQU5qQztZQUFNO21CQURSd3NDLEVBQzRCLGtCQUZDa0ssSUFFb0IsV0EvQmhDOVEsTUFBTTFtQyxNQThCckIrQztVQUNNLG1CQS9CVm8yQixLQUFFM29CLElBK0JFMVAsS0EvQkVpaUMsSUFnQ3dDLEVBSUE7YUEyRDVDc1YsdUJBRUZsZixFQUFFbnJCLEVBQUUrMEI7VUFBSi9CLE1BQUk4RTtNQUFPO2lCQUFQQTtRQXNFRixrQkF0RUY5RSxJQUFFaHpCOztRQUFTLE9BQVA4M0I7O1dBRUYsU0FGRUEsU0FFSSxrQkFGUjlFLElBQUVoekIsRUFDRzVQO1dBQ0csc0JKOXZEZjs7V0lnd0RTLFdBSkUwbkMsU0FJSSxrQkFKUjlFLElBQUVoekIsRUFHUTNQO1dBQ0Ysc0JKaHdEZjs7b0JJNHZEV3luQzs7YUFNRixXQU5FQSxTQU1JLGtCQU5SOUUsSUFBRWh6QixFQUtrQjFQO2FBQ1osc0JKbHdEZjs7O2VJb3dEUyxXQVJFd25DLFNBUUksa0JBUlI5RSxJQUFFaHpCLEVBT3FCelA7ZUFDZixzQkpwd0RmO2FJc3dEUztxQkFWRXVuQztjQVVXLGtCQVZmOUUsSUFBRWh6QixFQVNxQnhQO2NBQ2Ysb0JKdHdEZjthSXN3RGUsc0JKdHdEZjs7b0JJNHZEV3NuQzs7YUFZRixXQVpFQSxTQVlJLGtCQVpSOUUsSUFBRWh6QixFQVd1QnZQO2FBQ2pCLHNCSnh3RGY7OztlSTB3RFMsV0FkRXFuQyxTQWNJLGtCQWRSOUUsSUFBRWh6QixFQWEwQnRQO2VBQ3BCLHNCSjF3RGY7YUk0d0RTO3FCQWhCRW9uQztjQWdCVyxrQkFoQmY5RSxJQUFFaHpCLEVBZTBCclA7Y0FDcEIsb0JKNXdEZjthSTR3RGUsc0JKNXdEZjs7ZUk2d0QwQkMsT0FqQmZrbkMsU0FpQlNobUMsS0FqQlRnbUMsU0FpQklsbUMsSUFqQkprbUM7a0JBdUVOeVMsd0JBdkVFdlgsSUFBRWh6QixFQWlCaUJwUCxPQUFYZ0IsSUFBS0U7O2VBRVFoQixPQW5CakJnbkMsU0FtQlc3bEMsT0FuQlg2bEMsU0FtQk1qbUMsTUFuQk5pbUM7a0JBdUVOeVMsd0JBdkVFdlgsSUFBRWh6QixFQW1CbUJsUCxPQUFYZSxNQUFLSTs7ZUFFVWpCLE9BckJyQjhtQyxTQXFCZTFsQyxPQXJCZjBsQyxTQXFCVS9sQyxNQXJCVitsQztrQkF1RU55Uyx3QkF2RUV2WCxJQUFFaHpCLEVBcUJ1QmhQLE9BQVhlLE1BQUtLOztlQUVFbkIsUUF2QmpCNm1DLFNBdUJXdmxDLE9BdkJYdWxDLFNBdUJNNWxDLE1BdkJONGxDO2tCQXVFTnlTLHdCQXZFRXZYLElBQUVoekIsRUF1Qm1CL08sUUFBWGlCLE1BQUtLOztlQUVNckIsUUF6QmpCNG1DLFNBeUJXcGxDLE9BekJYb2xDLFNBeUJNemxDLE1BekJOeWxDO2tCQXVFTnlTLHdCQXZFRXZYLElBQUVoekIsRUF5Qm1COU8sUUFBWG1CLE1BQUtLOztvQkF6QlhvbEM7O2FBNEJGLFlBNUJFQSxTQTRCSSxrQkE1QlI5RSxJQUFFaHpCLEVBMkJnQjdPO2FBQ1Ysc0JKeHhEZjs7O2VJMHhEUyxZQTlCRTJtQyxTQThCSSxrQkE5QlI5RSxJQUFFaHpCLEVBNkJtQjVPO2VBQ2Isc0JKMXhEZjthSTR4RFM7c0JBaENFMG1DO2NBZ0NXLGtCQWhDZjlFLElBQUVoekIsRUErQm1CNU07Y0FDYixvQko1eERmO2FJNHhEZSxzQko1eERmO2tCSXd5RFMsVUE1Q0Uwa0M7a0JBOENGLFVBOUNFQTtrQkFnREYsVUFoREVBOztXQWtERixZQWxERUEsU0FrREksa0JBbERSOUUsSUFBRWh6QixFQWlEZ0IzTTtXQUNWLHNCSjl5RGY7O2VJK3lEK0JDLFFBbkRwQndrQyxTQW1EYTlrQyxNQW5EYjhrQzs7YUFvREYsSUFBYS9DO2FBRVQsb0JBdEROL0IsSUFBRWh6QixFQXNESSxXQUFZLE9BRkgrMEIsSUFERS9oQyxPQUFPTSxTQUdrQjs7V0FwQnhDO29CQWxDRXdrQztZQWtDVyxrQkFsQ2Y5RSxJQUFFaHpCLEVBaUNJeE07WUFDRSxvQko5eERmO1dJOHhEZSxzQko5eERmOztXSWd5RFMsWUFwQ0Vza0MsU0FvQ0ksa0JBcENSOUUsSUFBRWh6QixFQW1DSXRNO1dBQ0Usc0JKaHlEZjtrQkk0ekRTLFVBaEVFb2tDOzs7OztjQWlFeUNua0MsUUFqRXpDbWtDOzs7Y0FBSjZSOzBCQWlFNkN2NUM7MEJBakU3QzRpQyxJQWtFb0J3WCxLQUFPLG9CQWxFM0JyZixFQWtFb0JxZixJQUR5QnA2QyxLQUNLLFFBbEVsRDRpQzswQkFpRTZDci9CO2NBakU3Q3EvQjtjQUFJOEU7OztZQW1FeUNoa0MsUUFuRXpDZ2tDOzs7WUFBSitSO3dCQW1FNkN6NUM7d0JBbkU3QzRpQyxJQW9Fb0J3WCxLQUFPLG9CQXBFM0JyZixFQW9Fb0JxZixJQUR5QnA2QyxLQUNLLFFBcEVsRDRpQzt3QkFtRTZDbC9CO1lBbkU3Q2svQjtZQUFJOEU7O2tCQTBDRjs7V0FjQSxZQXhERUEsU0F3REksa0JBeERSOUUsSUFBRWh6QixFQXVEbUJoTTtXQUNiLHNCSnB6RGY7O1dJc3pEUyxZQTFERThqQyxTQTBESSxrQkExRFI5RSxJQUFFaHpCLEVBeURtQi9MO1dBQ2Isc0JKdHpEZjs7V0l3ekRTLFlBNURFNmpDLFNBNERJLGtCQTVEUjlFLElBQUVoekIsRUEyRGE3TDtXQUNQLHNCSnh6RGY7O2VJeXpEMkJzMkMsUUE3RGhCM1MsU0E2RFc1akMsSUE3RFg0akM7a0JBbkxOc1M7b0NBaVBpQyxrQkE5RC9CcFgsSUFBRWh6QixFQThEZ0MsT0FEbkI5TCxJQUFLdTJDOztlQXhCRkMsUUFyQ2Q1UyxTQXFDSXpqQyxNQXJDSnlqQzs7O29CQThGTjZTLCtCQTlGRTNYLElBQUVoekIsRUFxQ2dCMHFDLFFBQVZyMkM7O29CQXlEVnMyQyx3QkE5RkUzWCxJQUFFaHpCLEVBcUNnQjBxQyxRQUFWcjJDLFFBaUNIO2FBd0JQczJDLDZCQUdFeGYsRUFBRW5yQixFQUFFKzBCO01BSE47UUFPSSxtQkFBTSx3QkFKUjVKLEVBQUVuckIsRUFBRSswQixJQUdRMWdDO1FBQ0osc0JKajJEZjtNSSsxRFM7O2VBckdBZzJDLHlCQW1HRmxmLEVBQUVuckIsRUFBRSswQjtvQ0FuR0ZzVixrQkFtR0ZsZixFQUFFbnJCLEVBQUUrMEIsS0FJc0M7YUF2R3hDdVYsYUFFRm5mLEVBQUVuckIsRUFBRSswQjtNSjV2RFgsdUJJMHZEU3NWLGlCQUVGbGYsRUFBRW5yQixFQUFFKzBCO2FBOEZONlYsbUJBR0V6ZixFQUFFbnJCLEVBQUUrMEI7TUo3MURYLHVCSTAxREs0Vix1QkFHRXhmLEVBQUVuckIsRUFBRSswQjthQTFCTndWLHdCQUlFcGYsRUFBRW5yQixFQUFFKzBCLElBQUluakMsSUFBSUU7TUFBUSxVQUFaRjtrQkFBSUU7VUFNVixHQU5VQTtZQU1HLHNCQU5mcTVCLEVBQUVuckIsRUFBRSswQixLQU1JLG9CSjcwRGY7WUk2MERlLHNCSjcwRGY7VUl5MERlLHNCQUZSNUosRUFBRW5yQixFQUFFKzBCO1VBRUksc0JKejBEZjtRSTIwRGUsc0JBSlI1SixFQUFFbnJCLEVBQUUrMEI7UUFJSSxzQkozMERmOztRSXUwRDJCLFNBQVpuakM7b0JBQUlFO1lBWVYsR0FaVUE7Y0FZRyxzQkFaZnE1QixFQUFFbnJCLEVBQUUrMEIsS0FZSSxvQkpuMURmO2NJbTFEZSxzQkpuMURmO1lJKzBEZSxzQkFSUjVKLEVBQUVuckIsRUFBRSswQjtZQVFJLHNCSi8wRGY7VUlpMURlLHNCQVZSNUosRUFBRW5yQixFQUFFKzBCO1VBVUksc0JKajFEZjtrQkl1MERtQmpqQztVQWtCVixHQWxCVUE7WUFrQlU7K0JBbEJ0QnE1QixFQUFFbnJCLEVBQUUrMEI7YUFrQlcsb0JKejFEdEI7YUl5MURlLG9CSnoxRGY7WUl5MURlLHNCSnoxRGY7VUlxMURzQixzQkFkZjVKLEVBQUVuckIsRUFBRSswQixLQWNJLG9CSnIxRGY7VUlxMURlLHNCSnIxRGY7UUl1MURzQixzQkFoQmY1SixFQUFFbnJCLEVBQUUrMEIsS0FnQkksb0JKdjFEZjtRSXUxRGUsc0JKdjFEZixhSXkxRHFEO2FBZ0I1QzhWLFdBQVc3cUMsRUFBRXdDO01KejJEdEIsSUl5MkRzQkM7TUFBTTtpQkFBTkE7UUFlVzs7UUFmTCxPQUFOQTs7V0FFVDtZQURlbFAsV0FETmtQO1lBQ0dlLEVBREhmO1lBRVQsMkJBRGVsUDtXQUV2QixXQUhleU0sRUFDS3dEO1dBRXBCLHFCQUhleEQsRUFFWHBMOztvQkFGYTZOOzthQUtqQixJQURvQ0M7YUFDcEMsV0FMZTFDO2FBS0MsY0FMREE7YUFLZixJQUxpQnlDLE1BSW1CQzs7ZUFFQTBVO1dBQ3BDLFdBUGVwWDtXQU9DLGNBUERBO2VBQUV5QyxNQU1tQjJVOzs7ZUFNdEJoakIsRUFaR3FPLFNBWU5xb0MsSUFaTXJvQztXQVlXLFdBWmJ6QyxFQVlKOHFDO1dBQWlCLGtCQUFkMTJDLEVBWkM0TDtpQkFhYSxJQUFsQitxQyxJQWJPdG9DLFNBYVcsV0FiYnpDLEVBYUwrcUMsS0FBa0IscUJBYmIvcUM7O2VBY0tDLElBZEh3QyxTQWNBdW9DLElBZEF2b0M7V0FjVyxXQWRiekMsRUFjRWdyQztXQUFXLG1CQUFSL3FDOzs7ZUFOR2tGLElBUk4xQyxTQVFHOG1DLElBUkg5bUM7V0FTVyxXQVRiekMsRUFRS3VwQztXQUNRLHFCQVRidnBDLEVBUVFtRjs7ZUFFRjdOLEVBVkptTCxTQVVDK21DLElBVkQvbUM7V0FXVyxXQVhiekMsRUFVR3dwQztXQUNVLDJCQVhieHBDLEVBVU0xSSxHQUtTO2FBSzFCMnpDLFdBQVcvMEMsRUFBRXNNO01KNzNEdEIsSUk2M0RzQkM7TUFBTTtpQkFBTkE7UUFlVzs7UUFmTCxPQUFOQTs7V0FFVDtZQURlbFAsV0FETmtQO1lBQ0dlLEVBREhmO1lBRVQsMkJBRGVsUDtXQUV2QixXQUhlMkMsRUFDS3NOO1dBRXBCLGtCQUhldE4sRUFFWHRCOztvQkFGYTZOOzthQUtqQixJQURvQ0M7YUFDcEMsV0FMZXhNO2FBS0MsV0FMREE7YUFLZixJQUxpQnVNLE1BSW1CQzs7ZUFFQTBVO1dBQ3BDLFdBUGVsaEI7V0FPQyxXQVBEQTtlQUFFdU0sTUFNbUIyVTs7O2VBTXRCaGpCLEVBWkdxTyxTQVlOcW9DLElBWk1yb0M7V0FZVyxXQVpidk0sRUFZSjQwQztXQUFpQixrQkFBZDEyQyxFQVpDOEI7aUJBYWEsVUFiWHVNOztlQWNHeEMsSUFkSHdDLFNBY0Fzb0MsSUFkQXRvQztXQWNXLFdBZGJ2TSxFQWNFNjBDO1dBQVcsbUJBQVI5cUM7OztlQU5Ha0YsSUFSTjFDLFNBUUc4bUMsSUFSSDltQztXQVNXLFdBVGJ2TSxFQVFLcXpDO1dBQ1Esa0JBVGJyekMsRUFRUWlQOztlQUVGN04sRUFWSm1MLFNBVUMrbUMsSUFWRC9tQyxTQVdXLFdBWGJ2TSxFQVVHc3pDLEtBQ1UsZ0JBWGJ0ekMsRUFVTW9CLEdBS1M7YUFNMUI0ekMsV0FBV2gxQyxFQUFFc007TUpsNUR0QixJSWs1RHNCQztNQUFNO2lCQUFOQTtRQWVXOztRQWZMLE9BQU5BOztXQUVUO1lBRGVsUCxXQUROa1A7WUFDR2UsRUFESGY7WUFFVCwyQkFEZWxQO1dBRXZCLFdBSGUyQyxFQUNLc047V0FFcEIsa0JBSGV0TixFQUVYdEI7O29CQUZhNk47O2FBS2pCLElBRG9DQzthQUNwQyxXQUxleE07YUFLQyxXQUxEQTthQUtmLElBTGlCdU0sTUFJbUJDOztlQUVBMFU7V0FDcEMsV0FQZWxoQjtXQU9DLFdBUERBO2VBQUV1TSxNQU1tQjJVOzs7ZUFNdEJoakIsRUFaR3FPLFNBWU5xb0MsSUFaTXJvQztXQVlXLFdBWmJ2TSxFQVlKNDBDO1dBQXFELGtCQVpqRDUwQyxFQVlpRCxXQUFsRDlCO2lCQUNjLFVBYlhxTzs7ZUFjR3hDLElBZEh3QyxTQWNBc29DLElBZEF0b0M7V0FjVyxXQWRidk0sRUFjRTYwQztXQUFXLG1CQUFSOXFDOzs7ZUFOR2tGLElBUk4xQyxTQVFHOG1DLElBUkg5bUM7V0FTVyxXQVRidk0sRUFRS3F6QztXQUNRLGtCQVRicnpDLEVBUVFpUDs7ZUFFRjdOLEVBVkptTCxTQVVDK21DLElBVkQvbUMsU0FXVyxXQVhidk0sRUFVR3N6QyxLQUNVLGdCQVhidHpDLEVBVU1vQixHQUtTO2FBTTlCNnpDO01BQ1EsSUFEa0JwVyxhQUNsQjtlQUNONUosRUFBRTNvQixLQUFNLFdBRFJuSixJQUNFbUosS0FBbUMseUJBRHJDbkosS0FDMEQ7TUFEcEQsbUJBQ044eEIsSUFGd0I0SjthQVMxQnFXLG1CQUFtQnQ0QztNQUNsQixxQkFEa0JBLFlBQ0o7TUFDZixJQUFJbUYsSUFBSixzQkFGbUJuRjtNQUVuQixTQUNJdTRDO1FBQWlCLHlDQUhGdjRDLElBR21EO01BRHRFLFNBRVF3NEMsYUFBYXA3QztRSnA3RDFCLElJbzdEMEJ1RztRQUNuQjthQURtQkEsUUFGakJ3QixJQUdjLE9BREd4QjtVQUVYLDBCQU5TM0QsSUFJRTJEO3lDQUlWLE9BSlVBO1VBRVgsSUFDVSxJQUhDQTttQkFJVDtNQU5aLFNBT0k4MEMsWUFBWXI3QyxFQUFFc1U7UUp6N0R2QixJSXk3RHVCOHpCO1FBQ2hCO2FBRGdCQSxRQVBkcmdDLElBUWMsT0FEQXFnQztVQUVSLDBCQVhTeGxDLElBU0R3bEM7VUFFUix5QkFFQyxPQUpPQTtVQUVSLElBQ1UsSUFIRkE7bUJBSU47TUFYWixTQVlJa1QsVUFBVXQ3QyxFQUFFc1U7UUo5N0RyQixJSTg3RHFCOHpCO1FBQ2Q7YUFEY0EsUUFaWnJnQyxJQWFjLE9BREZxZ0M7VUFFTiwwQkFoQlN4bEMsSUFjSHdsQztVQUVOOzs7O1VJaDdDTixhSmk3Q3NCLFFBSFZBO1VBSUwsT0FKS0EsSUFJSjtNQUNDOztPQUNGLGlCQURQbVQ7T0FFVyxlQXJCSTM0QyxJQW1CZjI0QyxPQUNBQyxPQURBRDtPQUdTLG9CQUZUQztPQUdPLGVBRFBFO01BQ08sR0FEUEEsV0FDQUM7V0FDQUM7O09BRUE7U0FBeUQ7a0NBQXZDLE1BMUJIaDVDLElBc0JmODRDLE9BQ0FDLE9BREFEO1VBRUFFOzs7O29CQUdrQjtNQVJULElBU1RDLFFBQVUsYUFMVkY7TUFLVSxHQUFWRSxZQTFCQTl6QyxJQTJCbUI7TUFWVjs7UUFVd0IscUJBUmpDMHpDOzs7O1FBU0FLOzhCQVRBTDs7O29EQWVZOzs7Ozs7TUlwOENaLGdCSjg3Q0FLO01BT0osVUFiSUYsT0FNQUUsU0FPYzthQU9sQkMscUJBR0FyNkMsSUFBSW1qQztNQUFPLFVBQVhuakM7T0FDc0IsWUFEbEJtakM7O1FBQU8sU0FBWG5qQyxZQUVnQjB0QyxFQUZoQjF0QyxPQUVhZ0QsRUFGYmhELG9CQUVhZ0QsRUFBRzBxQyxHQUZadks7UUFHa0IsSUFBVjV2QixJQUhadlQ7UUFHc0IsYUFBVnVULEtBSFI0dkIsS0FHc0Q7YUFlMURtWCxxQkFJQXQ2QyxJQUFJRSxLQUN1QmlqQztNQWJmLFVBWVJqakM7T0FUZSxVQVNmQSxVQUN1QmlqQzs7T0FYUixNQVVmampDLG9CQVZVMFIsR0FXYXV4QjtVQUFOOWlDO2dCQURyQkw7T0FHc0IsWUFGREssT0FBTThpQzs7aUJBRDNCbmpDLFlBSWdCMHRDLEVBSmhCMXRDLE9BSWFnRCxFQUpiaEQsb0JBSWFnRCxFQUFHMHFDLEdBSEtydEMsT0FBTThpQztRQUlMLElBQVY1dkIsSUFMWnZUO1FBS3NCLGFBQVZ1VCxLQUpTbFQsT0FBTThpQyxLQUlzQzthQU9qRW9YLGtCQUFtQkMsZ0JBQWdCdDVDO01BaUJyQyxHQWpCcUJzNUM7T0FrQkosU0FsQklBLG1CQWlCakJFLGtCQUNLRDs7V0FETEM7TUFpQkosU0FBSUMsdUJBQXVCbFksUUFBUXAwQjtRQUNqQyx5Q0FuQ21Dbk4sSUFrQ1Z1aEMsUUFBUXAwQixJQUdoQjtNQUhuQixTQVFJdXNDLHlCQUF5QkM7UUFDM0IsOEJBRDJCQSxxQ0FFQztNQVY5QixTQW9CSUMsdUJBQXVCclksUUFBUS84QixFQUFFMUM7UUFDbkMseUNBdkRtQzlCLElBc0RWdWhDLFFBQVEvOEIsRUFBRTFDLEVBR2xCO01BdkJuQixTQTRCSSszQyxtQkFBbUJ0WSxRQUFRdVksU0FBUzdyQjtRQUN0Qyx5Q0EvRG1DanVCLElBOERkdWhDLFFBQVF1WSxTQUFTN3JCLEtBR1g7TUEvQjdCLFNBcXZCSThyQixZQUdBQyxVQUFVelksUUFBUVU7UUFBTyxJQUd6QmdZLEtBSFUxWSxVQUFWeVk7UUFBeUIsYUFHekJDO29CQUhrQmhZO3VCQUdsQmdZOzBCQUQrQixnQkE1eEJFajZDLElBMHhCakNnNkMsV0FBa0IvWDswQkFHZSxNQTd4QkFqaUMsSUEweEJqQ2c2QyxVQUdBQyxNQUhrQmhZLEtBR21EO01BM3ZCekUsU0FzdEJJaVksZUFBZTNZLFFBQVFvWSxRQUFRanFDO1lBQWhCeXFDLGtCQUFnQnhxQztRQUNqQzthQURpQndxQyxjQUFRUixRQUNDLHlCQUREQTtVQUVuQixJQUNKbjFDLEVBREksZ0JBMXZCNkJ4RSxJQXd2QmxCbTZDO1VBRVgsT0FDSjMxQyxhQVFLLFVBWFUyMUMsVUFBZ0J4cUM7VUFFM0IsSUFGMkJDLDBCQUcvQnBMO1VBQ0EsdUJBSitCb0w7V0FNN0I7MkNBOXZCK0I1UCxJQXd2QkY0UDtVQUUzQixJQVFGLFVBVmF1cUMsc0NBQWdCeHFDO21CQVdkO01BanVCckIsU0FxdUJJMHFDLGNBQWM5WSxRQUFRb1k7UUFDeEIsR0FEZ0JwWSxZQUFRb1ksUUFDRSx5QkFERkE7UUFFbEIsMEJBendCNkIzNUMsSUF1d0JuQnVoQztRQUVWOzZCQUNVLHNCQUhBQSxRQUFRb1k7OztXQUlmLElBSk9wWSxxQkFBUW9ZLFFBS1EseUJBTFJBO1dBTWhCLElBSUpuMUMsRUFKSSxnQkE3d0IyQnhFLElBdXdCbkJ1aEM7V0FNUixPQUlKLzhCO1lBQ0EsMEJBWFkrOEIsMEJBVVovOEI7V0FKSTtZQUVjLHVCQVJOKzhCLGdCQUFRb1k7WUFRRjs7cUJBQWRXLFdBQVUxNEM7UUFLWCw2QkFBWTtNQWx2QnJCLFNBZ3RCSTQyQyxhQUFhalgsUUFBUW9ZO1FKbnZGNUIsSUltdkZvQlE7UUFDZjthQURlQSxjQUFRUixRQUNHLHlCQURIQTtVQUVwQiwwQkFwdkJnQzM1QyxJQWt2QnBCbTZDO1lBRWEsY0FGYkE7VUFFcUQsT0FGckRBLFVBRTREO01BbHRCN0UsU0E4MkJJSSxrQkFDRUMsUUFBUWpaLFFBQVFnVSxLQUFLa0Y7UUFDVixJQUFUQyxPQUFTLE1BbDVCb0IxNkMsSUFpNUIvQnc2QyxRQUFRalosVUFBUmlaO1FBQ1c7d0NBbDVCb0J4NkMsSUFpNUIvQnc2QyxRQUFxQkMsT0FBTGxGLEtBQ2RtRixPQUk0QjtNQXAzQnBDLFNBbXpCSUMsaUJBQWlCSCxRQUFRalosUUFBUXFaLEtBQUtwaEMsS0FBS3FoQyxNQUFNdEY7WUFBaEJ1RixZQUFLbnpCLFlBQUtvekI7UUFDN0M7O2FBRG1DRDtlQUFLbnpCOzs7a0JBQUtvekIsb0JBQU14RixLQUlyQixvQkFKcUJBLEtBSWdCOztjQUozQjV0QjtlQUFLb3pCOzs7NkJBQU14Rjs7Ozs7d0JBTWdCO3lCQUlyQzt5QkFDQTt5QkFIQTt5QkFJQTt5QkFOQTs7O2VBTmV3Rjt5QkFBTXhGLEtBR3JCLG9CQUhxQkEsS0FHZ0I7OzZCQUhoQkE7Ozt3QkFLZ0I7eUJBSHJDO3lCQUFxQzt5QkFLckM7eUJBRUE7eUJBSkE7O1VJMzBFMUI7eUJKczBFK0NBOzs7c0JBYzVCLEdBbDFCckJpRSxrQkFrMUJ3Qzt1QkFDbkIsR0FuMUJyQkEsa0JBbTFCd0M7dUJBRm5CLEdBajFCckJBLGtCQWkxQndDOzs7O2dCQUl4QyxHQXIxQkFBLHVCQW8wQnNDN3hCO2dCQW1CakMseUJBbkJZNnlCLFFBQVFqWixRQUF3QmdVOzthQUFoQnVGO1lBcUJqQyxHQXJCMkNDO2NBcUIzQyxHQXoxQkF2Qix1QkFvMEIyQ3VCO2NBd0J0Qyx5QkF4QllQLFFBQVFqWjtZQThCekIsR0FsMkJBaVksdUJBbzBCaUNzQjtZQWdDNUIseUJBaENZTixRQUFRalosUUFBd0JnVTtVQTBCakQsR0ExQjJDd0Y7WUEwQjNDLEdBOTFCQXZCLHVCQW8wQjJDdUI7WUE0QnRDLHlCQTVCWVAsUUFBUWpaLFFBQXdCZ1U7VUFpQzNCLDhCQUFZO01BcDFCdEMsU0ErdkJJeUYscUJBQXFCelosUUFBUW9ZLFFBQVFuMUM7UUpseUY1QyxJSWt5RjRCMjFDO1FBQ3ZCO2FBRHVCQSxjQUFRUjtXQUU3QixrQ0FueUJpQzM1QyxJQWl5Qkl3RSxFQUFSbTFDO1VBS3pCLDBCQXR5QjZCMzVDLElBaXlCWm02QztVQUtqQjtZQUVKLElBUHFCQSx1QkFBUVI7YUFPQyx5QkFQREE7WUFRMUIsbUJBenlCOEIzNUMsSUFpeUJabTZDLHVCQUFnQjMxQyxFQVFtQixPQVJuQzIxQztZQVNQLDRCQTF5Qm1CbjZDLElBaXlCWm02QztZQVNQOzs7OztvQkFlSTtrREF4QkdBLGtCQUFRUjtxQkF3QlgsVUFBVnNCO3FCQXhCYWQ7Ozs7b0JBZ0NqQjs2QkFoQ2lCQTs7O2lCQVlqQixJQVppQkEsdUJBQVFSO2tCQVlLLHlCQVpMQTtpQkFhYiw0QkE5eUJpQjM1QyxJQWl5QlptNkM7aUJBYUw7bUJBS0k7bURBbEJDQSxrQkFBUVI7b0JBa0JULFVBQVZ3QjtvQkFsQldoQjs7O21CQWVEOzswQ0FmQ0Esa0JBQVFSO29CQWVULFVBQVYwQjtvQkFmV2xCOztpQkFhTCxJQU9MLFVBcEJVQTs7OztnQkE0Qkg7Z0RBNUJHQSxrQkFBUVI7aUJBNEJYLFVBQVY2QjtpQkE1QmFyQjs7O2VBbUNqQiwwQkFuQ2lCQTtZQVNQLElBNEJWLFVBckNpQkE7O1VBS2pCLElBa0NDLFVBdkNnQkE7bUJBdUM0QjtNQXR5QnJELFNBaW1CSXdCLGlCQUNBcGEsUUFBUW9ZO1FBQ1Y7VUFFb0I7a0NBSGxCcFksUUFBUW9ZO1dBSUEsd0JBeG9CeUIzNUMsSUF1b0IzQjQ3Qzs7VUFDRTs7OztVSXpuRU47WUoybkV3QjttQ0FIcEJBLFVBSEVqQzthQU1rQjs7YUFDTix1QkFEWmtDLFVBTkFsQztZQVFELDBCQTVvQjBCMzVDLElBMm9CekI4N0MsV0FDMkI7WUFGVDthQUdkLFFBN29CcUI5N0MsSUFvb0JqQ3VoQyxpQkFPUXVhLFlBUFJ2YTt3QkFPUXVhLHFCQUVBaDZDLEVBSFdtNEM7OztVQUhEOzs7Ozs7VUFhSzs7V0FEUDk5QztXQUFWbStDO1dBQ2lCLGNBRGpCQSxTQWZFWDtXQWdCZTt3QkFEUHg5QyxlQUNKcTBDO1FBR1csa0JBbkJ2QmpQLFFBQVFvWSxTQW1CZTsyQkFBWGxKLFlBQ3VDO01BdG5CdkQsU0Fta0JJdUwsaUJBQ0F6YSxRQUFRb1k7UUFDVjs7Z0JBREVwWSxZQUFRb1k7Z0NBR2tCLGdCQXptQk8zNUMsSUFzbUJqQ3VoQztVQUdvRDtVQUNsQztrQ0FKbEJBLGdCQUFRb1k7V0FLQSx3QkEzbUJ5QjM1QyxJQTBtQjNCNDdDOztVQUNFOzs7O1VJNWxFTixjSjRtRU87VUFqQlM7V0FHUyxzQkFIckJBLFVBSkVqQztXQU9tQjs7V0FDTCx1QkFEZGtDLFVBUEFsQztXQVNJLHdCQS9tQnFCMzVDLElBOG1CdkI4N0M7V0FDRTs7OztZQUVNO3FCQWpuQmU5N0MsSUFzbUJqQ3VoQyxpQkFRVXVhLFlBUlZ2YTthQVdrQixRQUFKei9CLEVBSktpZ0M7YUFJRCxLQUhSK1o7YUFQRUc7YUFBVjNCOzs7OzthQWFnQztvQ0FOeEJ3QixVQVJGbkM7Y0FjMEI7O2NBQ1IsdUJBRFp1QyxVQWROdkM7YUFnQkssMEJBdG5Cb0IzNUMsSUFxbkJuQm04QyxXQUMyQjthQUZQO2NBR2hCLFVBdm5CZW44QyxJQXNtQmpDdWhDLGlCQWVjNGEsWUFmZDVhO2NBaUJrQixRQUFKbHZCLElBVkswdkIsTUFPTWxEO2NBR1AsS0FGSnNkO2NBZEZGO2NBQVYzQjs7O3NCQWtCYTs7O3VEQUliO2NBdEJVMkIsZ0NBQVYzQixTQURGL1k7UUF5QnFCLGdCQXhCbkIrWSxTQURNWCxTQXlCYTtzQkF4QlRzQyxpQkF3QkZ6TCxVQUN1QztNQTlsQnJELFNBMGlCSTRMLFVBQ0FDLFlBQVk5YSxRQUFRb1k7UUFDdEI7YUFEY3BZLFlBQVFvWSxRQUVNO1VBQ3BCLDRCQWhsQjJCMzVDLElBNmtCckJ1aEM7VUFHTjtZQUVNLElBQU4rYSxJQUFNLGFBbGxCcUJ0OEMsSUE2a0JyQnVoQztZQUtBLEdBTFFvWSxXQUtkMkMsSUFDbUI7WUFEYjthQUVJLGNBcGxCaUJ0OEMsSUE2a0JyQnVoQyxTQUtOK2EsTUFMTS9hO2FBUWEsY0FIbkIrYSxZQUxjM0M7YUFRSzthQUNELGNBVFpwWSxRQUtOK2E7YUFJa0I7NkJBQVZFLFFBRlJEO2FBRWtCLGFBVHhCRixlQVVNSTthQUUyQyxZQUQzQ0MsYUFIUWpNOztVQU9aOzs7O1lBRXFCO3lCQWpCWGxQLFFBQVFvWTthQWlCRzt3QkFqQnZCMEMsZUFrQkluZ0Q7WUFFMkMsY0FEM0N5Z0QsV0FGUW5NO3FCQUltQztNQWhrQm5ELFNBK0RJb00sWUFpQ0FwQyxRQW5CaUJqWixRQW1CRG9ZLFFBQW1DdjRDO1FBOUJyRDtpQkFHSTA3QyxTQUFTdmIsUUFBUWdZO1VBRW5CLFNBRm1CQSxRQUVuQixjQXhGQUM7VUF5RkU7WUFFYyx5QkE1R2lCeDVDLElBdUd0QnVoQztZQUdULGtDQTFHK0J2aEMsSUF1R3RCdWhDO1VBS2tCO2tCQUNoQjtZQUVJNFk7UUFDakI7YUFEaUJBLGNBbUJEUixRQWxCVSx5QkFrQlZBO1VBakJKLDBCQWpIcUIzNUMsSUErR2hCbTZDLFdBRUw7Ozs7Y0FLSCxTQVBRQSxVQVZNVTtjQWlCZCxjQVBRVjs7O2NBTVIsU0FOUUEsVUFUZjNnQztjQWVPLGNBTlEyZ0M7OztjQUtSLFNBTFFBLFVBVmZTO2NBZU8sY0FMUVQ7OztjQUlSLFNBSlFBLFVBWE0wQztjQWVkLGNBSlExQzs7O2NBR1IsU0FIUUEsVUFYZmw5QjtjQWNPLGNBSFFrOUI7OztVQUVMO1dBT1YsS0FuQnFCVTtXQW1CckIsS0FsQkFyaEM7V0FrQkEsS0FuQkFvaEM7V0FtQkEsS0FwQnFCaUM7V0FvQnJCLEtBcEJBNS9CO1VBK0JKLEdBcEJtQms5QixjQW1CRFIsUUFDUSx5QkFEUkE7VUFqQko7V0FrQjRDOzs7Z0JBbEh4REg7O2tCQXlITyxrQkFSUGdCLFFBbkJpQkw7OztXQTRCYix3QkEzSTZCbjZDLElBK0doQm02QztVQTRCYjs7Y0FFaUI7c0NBOUJKQSxVQW1CRFI7ZUFXSzs7O3VCQVhyQmE7dUJBV0l1Qzt1QkFYWXBEOzs7Ozt1QkFBbUN2NEM7MEJBRWpEd2lDLE1BU1c3Qjs7O1lBSWI7cUJBZkF5WTtxQkFuQmlCTDtxQkFtQkRSOzs7OztxQkFBbUN2NEM7d0JBRWpEd2lDO1VBZ0JGLE9BaEJFQTs7YUFrQkEsT0FySUY0VjtjQXNJSSx1QkF4Q2FXO2FBd0NxQztzQkFyQnRESyxRQW5CaUJMLFVBbUJEUiw0QkFBbUN2NEM7O2FBK0JqRDtzQkEvQkZvNUMsUUFuQmlCTCxVQW1CRFIsNEJBQW1DdjRDOzthQTRCakQ7c0JBNUJGbzVDLFFBbkJpQkwsVUFtQkRSLDRCQUFtQ3Y0QyxXQU5uQztNQTFGcEIsU0FvSUk0N0M7UUFpQkF4QyxRQWRRalosUUFjUW9ZLFFBQVFrRCxNQUFNakMsS0FBS3BoQyxLQUFLcWhDLE1BQU16NUMsSUFBSXRDO1FBYnBELEdBRFV5aUMsWUFjUW9ZLFFBYlEseUJBYVJBO1FBWlosSUFJSnBFLEtBSkksZ0JBM0s2QnYxQyxJQXlLekJ1aEM7UUFFSixVQUlKZ1U7VUFGQSxJQVVRNEUsVUFkQTVZO1VBZVYsR0FEVTRZLGNBQVFSLFFBQ1EseUJBRFJBO1VBVmhCO1dBV3dEO3FCQUN4Q2tELE1BQU10YjtjQUNGO29DQURFQSxRQUZOb1k7ZUFHSTs7O3VCQUhwQmE7dUJBR0l1Qzt1QkFIWXBEO3VCQUVBa0Q7dUJBRmNqQzt1QkFBS3BoQzt1QkFBS3FoQzt1QkFBTXo1Qzt1QkFBSXRDOzBCQUdyQ0UsTUFFYTtXQUN0Qix1QkE3TDZCZ0IsSUF1THpCbTZDO1VBTUosU0FFSmdEO2dDQURjLHFCQVBVTixNQUFoQjFDOztvQkFRUmdEOzs7ZUFXQTt3QkFuQkEzQzt3QkFBUUw7d0JBQVFSO3dCQUFRa0Q7d0JBQU1qQzt3QkFBS3BoQzt3QkFBS3FoQzt3QkFBTXo1Qzt3QkFBSXRDOzs7O2VBUXpCLEdBOUt6QjA2QztpQkF1TEE7dUJBakJRVztrQkFpQlIsUUFqQndCMEMsaUJBUXhCTTtpQkFjQSxxQkF0QndCQzs7O1VBc0J4QixPQTVMQTVEO21CQWdNRTtxQkExQkZnQjtxQkFBUUw7cUJBQVFSO3FCQUFRa0Q7cUJBQU1qQztxQkFBS3BoQztxQkFBS3FoQztxQkFBTXo1QztxQkFBSXRDOzttQkE2QmhELHVCQTdCTXE3QztRQVBSO2lCQU9BSztpQkFkUWpaO2lCQWNRb1k7aUJBQWNpQjtpQkFBS3BoQztpQkFBS3FoQztpQkFBTXo1QztpQkFBSXRDOzs7aUJBUmxEeTJDLEtBRXVCO01BL0kzQixTQXFMSTJIO1FBR0ExQyxRQUFRalosUUFBUW9ZLFFBQVFrRCxNQUFNakMsS0FBS3BoQyxLQUFLcWhDLE1BQU16NUMsSUFvQjlDdEMsSUFwQnNERTtRQUN4RCxHQURVdWlDLFlBQVFvWSxRQUNRLHlCQURSQTtRQUN3QyxTQUN0RDJELFdBQThCQztVQUVqQjttQkFKZi9DO21CQUFRalo7bUJBQVFvWTttQkFBY2lCO21CQUFLcGhDO21CQUFLcWhDO21CQUFNejVDO21CQW9COUN0QzttQkFwQnNERTttQkFFdEJ1K0M7bUJBRWpCLGdCQTlOa0J2OUMsSUEwTnpCdWhDLFNBSW9CO1FBSDRCLFVBbUJ4RHppQztvQkFwQnNERSw0QkFjL0I7YUFkQzY5QztzQkFBOEI3OUMsa0JBa0IzQjtnQkFGSDRDLEVBaEI4QjVDO21CQUVwRHMrQyxnQkFjc0IxN0M7b0JBaEI4QjVDLGtCQWlCMUI7Y0FGSDBULElBZjZCMVQ7aUJBRXBEcytDLGdCQWF1QjVxQztRQUtsQixrQkFBUDVULElBQXFCO01BNU16QixTQStNSXUrQztRQXdvQm1CN0MsUUFBUWpaLFFBOU5Kb1ksUUF2YUNpQixLQUFLcGhDLEtBQUtxaEMsTUFBTXo1QyxJQUFJdEMsSUFBSUUsS0FBS3UrQyxRQXFvQkZoSTtRQW5vQnJEOzs7Ozs7O2lCQUtJdUksZ0JBQWlCLHdCQVBLbEQsSUFPbUI7UUFMN0MsU0FNSW1ELGdCQUFnQix3QkFSV3ZrQyxJQVFZO1FBTjNDLFNBT0l3a0MsaUJBQWlCLHlCQVRlbkQsS0FTVTtRQVA5QyxTQVFJb0QsZUFBaUIsdUJBVnFCNzhDLEdBVUU7UUFSNUMsU0FTSTg4QyxlQUFpQix1QkFYeUJwL0MsR0FXRjtRQVQ1QyxTQVVJcS9DLGdCQUFpQix3QkFaNkJuL0MsSUFZTDtRQVY3QyxTQVdJby9DLG1CQUFpQix1QkFia0NiLE9BYVA7UUFYaEQsU0FhSWM7VUFZSyxtQkFBWTtrREFDTyxPQUFyQnYvQzs7V0FDcUI7O3FCQURyQkE7O2dCQUdBLElBRG9COEMsRUFGcEI5QztnQkFHQSxPQWxRTDA2Qzs4QkFpUXlCNTNDO3lCQUVmLGtCQXFtQlM0NEMsUUFBUWpaO2NBam1CSyxPQVIzQnppQzs7cUJBL1BMMDZDOzt1QkFzUVUsa0JBa21CU2dCLFFBQVFqWjtxQkF6bUJ0QnppQyxJQVM4QjtRQW5DckMsU0FzQ0l3L0MsV0FBVy9JLEtBQWlCejJDO1VBQzlCLFVBRDhCQTtXQUVkLE9BRmNBOztZQUM5QixTQUQ4QkE7O2dCQU01QixJQURvQmlqQyxNQUxRampDO2dCQU01QixPQWpSRjA2Qzs4QkFnUnNCelg7eUJBRWYsa0JBc2xCWXlZLFFBQVFqWixRQTdsQmRnVTtjQUd3QixPQUhQejJDOztxQkEzUTlCMDZDOzt1QkFxUk8sa0JBbWxCWWdCLFFBQVFqWixRQTdsQmRnVTtxQkFBaUJ6MkMsSUFVbUI7UUFoRG5ELFNBc0RJeS9DLFdBQVcvNUMsRUFBcUIxRjtVQUF3QixVQUF4QkE7V0FDbEI7O1lBRDBDLFNBQXhCQTs7O2dCQU9oQyxJQURtQmlqQyxNQU5hampDO2dCQU9oQyxPQWxTRjA2Qzs0QkFpU3FCelg7eUJBRWQsa0JBcWtCWXlZLFFBQVFqWixRQTdrQmQvOEI7c0JBRW1CLElBQVYwd0MsUUFGWXAyQyxPQUVGLFVBQVZvMkM7O2dCQUVwQixJQURvQnNKLFFBSFkxL0M7Z0JBSWhDLE9BL1JGMDZDOzRCQThSc0JnRjt5QkFFZixrQkF3a0JZaEUsUUFBUWpaLFFBN2tCZC84QjtZQVNNLHlCQW9rQkFnMkMsUUFBUWpaLFFBN2tCZC84QixVQVMrQztRQS9EOUQsU0FpRUlpNkMsWUFBWWo2QyxHQUFpQixrQkFBakJBLEVBQWlCLFdBQVk7UUFqRTdDLFNBa0VJazZDLGdCQUFnQmw2QyxHQUFpQixrQkFBakJBLEVBQWlCLGVBQWdCOztRQWxFckQsVUFtb0JxRCt3Qzs7Ozs7WUF2YTVCOzJCQXVhSWhVLFFBOU5Kb1k7YUF6TUE7YUEvSXJCZ0Ysa0JBK0lVN047OztZQWdCRTswQ0F1WmF2UCxRQTlOSm9ZO2FBeExBLGNBRG5Cc0IsZ0JBeUxtQnRCO2FBeExBO2FBQ0QsY0FxWktwWSxRQXZadkIwWjthQUVrQjthQUNOLHVCQURKdUI7WUFFVDthQUNtQzsyQ0FGbEM3WDswQkFFRWlhLFVBSk12Tjs7NkJBT2EsZ0JBTHJCMU0sVUFGUTBNO1lBREUsSUEvSlpzTjs7a0NBRUYsTUFvakIyQnBkLFFBOU5Kb1k7O1lBaFVBOzRCQThoQklwWSxRQTlOSm9ZO2FBaFVBO2FBQ3BCLHlCQURTOUg7YUF4QlY4TTs7O1lBMkRxQjs0QkEyZklwZCxRQTlOSm9ZO2FBN1JBOztZQUVwQjthQUNELGtCQUZFa0YsdUJBRUVDLFVBSE10TTs7NkJBQ1JxTSxVQURRck07WUFBVyxJQTNEckJtTTs7O1lBc0NROzhCQWdoQnlDcEosS0FoaEJ6QjthQUNILGVBK2dCSWhVLFFBOU5Kb1k7YUFqVEE7WUFDcEI7YUFDaUM7OzBCQUE5Qm9GLFVBRk1wTTs7YUFNUjs0Q0FQQTV5QyxNQUNRNHlDO2NBTVI7O3lCQURtQnh5QyxNQUFNMnlDO1lBTm5CLElBdENSNkw7OztZQXlWSixHQTZONkJwZCxZQTlOSm9ZLFFBQ0MseUJBRERBO1lBR1Y7OytCQUNGbjFDLEdBQ1gsdUJBRkUxRCxTQUNTMEQsRUFDZTthQUZiO3VCQUlENlgsSUFBRTdYO2dCQUNkLE1BRGNBLElBQUY2WDtzQkFDWmpmLEVBRFlpZjtrQkFFVjtvQ0FOQXZiLFNBTXlCLFlBRDNCMUQ7b0JBQ0UsU0FERkE7dUJBRGNvSCxNQUNkcEg7O2dCQUhBLFFBS0k7YUFQUzt1QkFVU21rQztnQkFDdEIseUNBenFCaUN2aEMsSUF3cUJYdWhDLFFBRzBCO2FBYm5DOytCQXVCWUEsUUFBUW9ZO2dCSnRyRnhDLElJc3JGZ0NRO2dCQUN6QjtxQkFEeUJBLGNBQVFSLFFBQ1AseUJBRE9BO2tCQUUzQixJQU1KbjFDLEVBTkksZ0JBdnJCMkJ4RSxJQXFyQlJtNkM7a0JBRW5CLFVBTUozMUM7b0JBRkE7a0NBTnVCMjFDOzs0QkFRdkIzMUMsRUFKQSxPQUp1QjIxQztrQkFFbkIsU0FGbUJBO2tCQVN2Qjs7MkJBR0FnRiwyQ0FaK0J4RixRQVEvQm4xQzs7MkJBSUEyNkMsb0NBWitCeEYsUUFRL0JuMUMsSUFDaUQ7YUFoQ3RDOytCQW1DZSs4QixRQW9CU29ZLFFBcEJPbjFDO29CQUFoQjIxQyxrQkFBZ0I5OUI7Z0JBQzVDO3FCQUQ0Qjg5QixjQW9CU1IsUUFuQlgseUJBbUJXQTtrQkFsQi9CLHdCQW5zQjJCMzVDLElBaXNCTG02QztrQkFFdEIsU0FGc0M3OUI7Ozs7b0NBSTFDLFNBSjBDRCxLQUkxQyxPQUowQjg5Qjs7NkJBQWdCNzlCOzs7O3NCQU8xQyxJQWEyQjQrQixVQXBCRGY7c0JBcUI1QixHQUQ2QmUsY0FBUXZCLFFBQ1gseUJBRFdBO3NCQWJuQyxJQTRCQXA5QixJQWJJLGdCQXZ0QjJCdmMsSUFxdEJKazdDO3NCQUV2QixVQWFKMytCO3dCQVBBLElBUjJCMitCLHVCQUFRdkI7eUJBUUwseUJBUktBO3dCQVN2QixJQUNSbjlCLElBRFEsZ0JBOXRCbUJ4YyxJQXF0QkprN0M7a0NBVXZCMStCO3lCQUdLLDJCQWJrQjArQjt3QkFXdkIsVUEvQnNDNytCLElBOEJ0Q0c7d0JBRFEsU0FUZTArQjt3QkFXdkI7O2lDQTNDSmdFLHNDQWdDbUN2Rjs7aUNBaENuQ3VGLCtCQWdDbUN2RjtnQ0FlbkNwOUI7d0JBWEEsU0F4QjBDRixLQXlCMUMsb0JBTDJCNitCO3NCQWdCM0IsVUFwQzBDNytCLElBbUMxQ0U7c0JBNUJBLFNBYTJCMitCO3NCQWdCM0I7OytCQWhEQWdFLHNDQWdDbUN2Rjs7K0JBaENuQ3VGLCtCQWdDbUN2RjtrQkFaWixzQkFSbUJ0OUI7b0JBUzFDLFNBVDBDQztvQkFTMUMsU0FUMEI2OUI7b0JBUzFCOzs2QkFyQkErRSxzQ0FnQ21DdkY7OzZCQWhDbkN1RiwrQkFnQ21DdkY7a0JBUm5DLFVBWjBDdDlCLElBWTFCLG9CQVpVODlCO2tCQWdCMUIsU0FoQjBDOTlCO2tCQUV0QyxJQWNKLFVBaEIwQjg5QixzQ0FBZ0I5OUI7MkJBaUJRO2FBcER2Qzt1QkFtQ2VrbEIsUUFvQlNvWSxRQXBCT24xQztnQkpsc0ZuRDt5Qklrc0ZTMjZDLDhCQUEwQjVkLFFBb0JTb1ksUUFwQk9uMUM7WUFuQy9CLEdBMk5jKzhCLFlBOU5Kb1ksUUE4RUcseUJBOUVIQTtZQUdWLGFBNEVQLGdCQTF1QjJCMzVDLElBeTNCTnVoQztZQS9JckI7YUFDSyxjQThJZ0JBLGdCQWpKaEI4ZCxVQUFUakY7O2lCQUFTaUYsVUFBVGpGLFVBaUp5QjdZO1lBek0zQixHQXdERTZZLGNBN0VxQlQsUUFxQkcseUJBckJIQTtZQUdWO2FBbUJMLGtCQWpyQnlCMzVDLElBd3VCL0JvNkM7YUF2RE0sbUNBdUROQSxrQkE3RXFCVCxRQXNCbkJuMUM7YUE2RFMsMkJBaEZYMUQ7YUFnRlcsV0FORnUrQyxRQU9jLGFBRHZCMWQ7YUFqUXFCLGVBZ1FyQjJZLFNBbEZxQlg7YUE5S0E7WUFDcEI7YUFDb0M7NENBSHpCMkY7MEJBR1JDLFVBRk14TDs7NkJBS2MsZ0JBTlp1TCxXQUNGdkw7WUFpTEMsSUEzVlg0Szs7O1lBcUlxQjs0QkFpYklwZCxRQTlOSm9ZO2FBbk5BO2FBcklyQmdGLGtCQXFJVXhLOzs7WUFqSVo7O3VCQUFnQjNEO2dCQUNYLDJCQURXQSwyQkFHYzthQU9QLGVBd2lCSWpQLFFBOU5Kb1k7YUExVUE7YUFDWDs7O2VBTFA7eUNBSU84Rjs7O2VBS1A7O2lCQXJVTGpHO21CQXVVeUMsWUFQN0JpRzttQkFoU2Q7cUJBdzBCNkJsZTs7O3NCQXRpQmYsWUFGQWtlO1lBVlosSUFKRWQ7OztZQTJJcUI7NEJBMmFJcGQsUUE5TkpvWTthQTdNQTthQUNwQix5QkFEUytGO2FBM0lWZjs7O1lBNEJROzhCQTBoQnlDcEosS0ExaEJ6QjthQUNILGVBeWhCSWhVLFFBOU5Kb1k7YUEzVEE7WUFDcEI7YUFDNEI7OzBCQUF6QmtHLFdBRk1EOzthQU1SOzRDQVBBRCxNQUNRQztjQU1SOzt5QkFEbUJHLE9BQU1EO1lBTm5CLElBNUJSbkI7OztZQXdJcUI7NEJBOGFJcGQsUUE5TkpvWTthQWhOQTthQXhJckJnRixrQkF3SVVxQjs7O1lBYUU7NENBaWFhemUsUUE5TkpvWTthQWxNRCxlQWdhS3BZLFFBamF2QjRaO2FBQ2tCO2FBQ0MsZUFGbkJBLGtCQW1NbUJ4QjthQWpNQTthQUNQLHlCQUZKc0c7WUFHVDthQUNpQzs0Q0FGaENyYjswQkFFRXViLFdBSE1EOzs2QkFNVyxpQkFMbkJ0YixZQURRc2I7WUFGRSxJQXJKWnZCOzs7O1lBMkhROzhCQTJieUNwSixLQTNiekI7YUFDSCxlQTBiSWhVLFFBOU5Kb1k7YUE1TkE7WUFDcEI7YUFDMEI7OzBCQUF2QnlHLFVBRk0zTzs7YUFNUjs0Q0FQQWx5QyxNQUNRa3lDO2NBTVI7O3lCQURtQi94QyxNQUFNaXlDO1lBTm5CLElBM0hSZ047Ozs7WUFrSnFCOzJCQW9hSXBkLFFBOU5Kb1k7YUF0TUE7YUFsSnJCZ0Ysa0JBc2pCaURwSixLQXBhdkN0RTs7Ozs7O1lBaEZTLEdBb2ZNMVAsWUE5TkpvWTtjQXRSa0M7c0NBcll4QjM1QyxJQXkzQk51aEM7ZUE5Q1IsS0FBUDRiOztjQUFPOzs7Ozs7Ozs7Ozs7Y0FyY0k7OEJBbWZJNWIsUUE5TkpvWTtlQXJSQTs7Y0EwY0EsVUF5QzRCcEU7Ozs4QkFsZi9DdDBDOzs7O3lCQWtmK0NzMEMsVUFsZi9DdDBDOzRCQTJjd0I7Y0ExY3pCO2VBQ0Qsa0JBRkVBLHFCQUVFby9DLFVBSE1qTzs7K0JBQ1JueEMsUUFEUW14QztjQUFXLElBbkVyQnVNOzs7Ozs7Ozs7Y0FpTEYsa0NBcGZpQzMrQyxJQXkzQmR3NkMsUUFBZ0NqRjs7Ozs7Ozs7WUFyZ0JqRDs7YUFEeUQ7YUFBL0M7K0JBc2dCT2lGLFFBQVFqWixRQXRnQmtCLHNCQXNnQk1nVTthQXBnQjVCLGVBb2dCSWhVLFFBOU5Kb1k7YUF0U0E7WUFDcEI7YUFDaUM7MkJBSmhDaDZDLFFBSWdDOzBCQUE5QjJnRCxVQUZNck47O2FBTThCOztjQUF0Qyw4QkFBcUIsb0JBTmJBO2NBTVI7Ozt5QkFSQXR6QyxRQU9tQlUsTUFBTTB3QyxPQUFPNEM7WUFObEMsSUFqREFnTDs7Ozs7Ozs7OztZQWlIOEI7O2FBQWQ7YUFBZDthQXNjTjtjQURxQzhCO2dCQUFVRjtrQkF4MkI3Qy9HOztvQkFnM0JLLGtCQVJjZ0IsUUFBUWpaOztnQkFBa0JnZjs7WUFTL0MsU0FUcURoTDs7Ozs7Ozs7OztvQkFTakRtTDs7c0JBVGlEbkw7Ozs7Ozs7aUNBU2pEbUw7Ozs7O2lCQVRzQ0Y7eUJBQVdqTCxTQVNqRG1MOzt5QkFUaURuTCxTQVNqRG1MOzBCQVVHO1lBeGQyQjthQXlkbEMsU0FuQkluSCxLQVFBbUg7YUE3Y3FCLGVBb2NJbmYsUUE5TkpvWTthQXRPQTtZQUNwQjtjQXpIdUI7O2VBR0YsaUNBeWpCTGEsUUFBUWpaOztlQTFqQkgsMEJBQVJrQjtjQUZVO2VBMEhLOzJCQUF6QmtlLFVBRk01Tzs7YUFNMEI7O2NBQWxDLDhCQUFxQixnQkFOYkE7Y0FNUjs7O3lCQVRBanlDLE1BUW1CRCxNQUFNRCxPQUFPcXlDO1lBTkosSUFqSDlCME07OztRSXB6REE7O29CSjAyRWlEcEo7Ozs7Ozs7Z0JBemVoQztzQ0FoWmN2MUMsSUF5M0JOdWhDO2lCQXpldkI7aUJBRG1EO2lCQUFyRDs7b0JBMGVpQmlaLFFBQVFqWixnQkExZWM7aUJBRWxCLGNBd2VJQSxnQkE5TkpvWTtpQkExUUE7Z0JBQ3BCO2lCQUNtQzs2QkFMbEN6NkMsTUFLa0M7OEJBQWhDMGhELFFBRk1wUTs7aUJBTThCOztrQkFBdEMsNkJBQXFCLG9CQU5iQTtrQkFNUjs7OzZCQVRBdHhDLE1BUW1CSCxNQUFNSSxPQUFPc3hDO2dCQU5qQjs7OztnQkFZYztzQ0E1WkF6d0MsSUF5M0JOdWhDO2lCQTdkVDtpQkFBZDtpQkFERjs7b0JBOGRpQmlaLFFBQVFqWixnQkE5ZGM7aUJBRWxCLGNBNGRJQSxnQkE5TkpvWTtpQkE5UEE7Z0JBQ3BCO2lCQUN1QzsrQkFMdEN0NkMsUUFLc0M7OEJBQXBDd2hELFVBRk1uUTs7aUJBTThCOztrQkFBdEMsNkJBQXFCLG9CQU5iQTtrQkFNUjs7OzZCQVRBcnhDLFFBUW1CSixNQUFNSyxPQUFPcXhDO2dCQU5IOytCQXpGL0JnTzs7cUJBc2pCaURwSjthQWpkaEM7bUNBeGFjdjFDLElBeTNCTnVoQztjQWpkdkI7Y0FEbUQ7Y0FBckQ7O2lCQWtkaUJpWixRQUFRalosZ0JBbGRjO2NBRWxCLGNBZ2RJQSxnQkE5TkpvWTtjQWxQQTthQUNwQjtjQUNtQzs0QkFMbENuNkMsUUFLa0M7MkJBQWhDc2hELFVBRk1sUTs7Y0FNOEI7O2VBQXRDLDZCQUFxQixvQkFOYkE7ZUFNUjs7OzBCQVRBcHhDLFFBUW1CSixNQUFNSyxPQUFPb3hDO2FBTmpCLElBckdqQjhOOzs7Ozs7YUFzTEYsa0NBemZpQzMrQyxJQXkzQk51aEMsZ0JBQXdCZ1U7UUE5WEcsT0ExZXREaUU7VUFnZjBCLGFBM1F4QmdFLGFBMlF3QixZQTdRRjVDO1VBK1F4QixHQS9Rd0JFLE9BK1F4QixrQkFzWG1CTixRQUFRalosUUFBd0JnVTtVQXhYekIsSUFFa0IsU0E3UWZrSSxhQTZRZSxZQS9RZmprQztVQWlSN0IsR0FqUjZCbU8sT0FpUjdCLGtCQW9YbUI2eUIsUUFBUWpaLFFBQXdCZ1U7VUF4WHpCLElBSWtCLFNBOVExQ21JLGNBOFEwQyxhQWpSVjdDO1VBbVJsQyxHQW5Sa0NFLFFBbVJsQyxrQkFrWG1CUCxRQUFRalosUUFBd0JnVTtVQXhYekIsSUFNa0IsU0EvUTFDcUksWUErUTBDLFVBQ3pCLGlCQXBSeUI5K0M7VUFvUmdCLFFBQzVELGtCQWdYbUIwN0MsUUFBUWpaLFFBQXdCZ1U7VUF4WHpCO1dBUXdCLFNBalJyQnNJO1dBaVJxQixVQUMvQixpQkF0UjZCNytDO1VBc1JtQjtZQUNuRSxTQXZSd0NvQyxPQXFvQldtMEM7WUE5V25ELGtCQThXbUJpRixRQUFRalo7VUF4WEQsSUE3UUZ3ZixPQUFnQjMvQyxJQUFoQnc1QyxLQUFnQng1QztVQXlSdEIsR0F6Uk0yL0MsT0F5Uk4sa0JBNFdDdkcsUUFBUWpaO1FBNVdrQyxhQXRSaENvYyxZQXNSZ0MsV0F6UnJCdjhDO1FBK1J4QyxHQS9Sd0M0L0M7O1VBK1J4QyxTQXNXbUR6TDs7Ozs7VUFwV2xCLGlCQXBnQmpDaUU7dUJBc2dCSSxrQkFrV2VnQixRQUFRalosUUFBd0JnVTtRQWxXSCxPQXBOOUNvSixVQXNOTTtNQXZmWixTQW1DUTVDLE1BS0ovQixVQW1kUUw7UUo5aEZmLElJMmtFaUJwWSxRQUFWeVk7UUFDRjthQURZelksWUFtZEZvWSxRQWxkZ0IsbUJBRHhCSyxVQUFVelk7VUFFSiwwQkE1RTJCdmhDLElBMEV2QnVoQztVQUVKO1lBWWEsSUFHWDJaLFVBakJFM1o7WUFrQlosR0FEVTJaLGNBa2NBdkIsUUFqY2dCLHlCQWljaEJBO1lBcmNXO2FBS2Ysd0JBN0Y2QjM1QyxJQTJGekJrN0M7YUFFSjs7Z0JBQ0ssWUFwQkMzWixRQWlCRjJaLGtCQWtjQXZCO2dCQTliRCxZQXJCR3BZLFFBaUJGMlosVUFrY0F2QjthQS9jTW5KO21CQXlzQmR1SixZQTdzQkFDLFVBQVV6WSxRQUlJaVA7O1lBR1osSUE0Y0YySixVQW5kVTVZO1lBb2RaLEdBREU0WSxjQUFRUjs7O2NBR0Ysc0JBaGlCMkIzNUMsSUE2aEJqQ202QztjQUdNLFNBdUNKMzFDOzs7Ozs7OztpQ0FoQ0EsWUFWRjIxQyxrQkFBUVI7OztxQkFZaUI7b0NBWnpCUSxrQkFBUVI7c0JBWWlCO3VDQUFYaEo7O3lCQThCWm5zQzs7O2dDQXJDQSxZQUxGMjFDLGtCQUFRUjs7O29CQU9pQjttQ0FQekJRLGtCQUFRUjtxQkFPaUI7c0NBQVgvSTs7Ozt5QkFtQ1pwc0M7Z0JBaEJ1QjsrQkExQnpCMjFDLGtCQUFRUjtpQkEwQmlCO2tDQUFYOUk7O3lCQWdCWnJzQzs7O29CQXhCdUI7bUNBbEJ6QjIxQyxrQkFBUVI7cUJBa0JpQjt5Q0FBWDdJOzs7O29CQWtCc0I7dUJBcENwQ3FKOztzQkFBUVI7Ozs7c0JBb0M0QixnQkFqa0JIMzVDLElBNmhCakNtNkM7c0JBcUN5QjtxQ0FyQ3pCQSxrQkFBUVI7dUJBcUNpQjt3Q0FBWDFJOzs7cUJBR1c7b0NBeEN6QmtKLFVBQVFSO3NCQXdDaUI7d0NBQVh0STs7O29CQXpCVzttQ0FmekI4SSxrQkFBUVI7cUJBZWlCO3lDQUFYbEk7OztvQkFjVztvQ0E3QnpCMEksa0JBQVFSO3FCQTZCaUI7c0NBQVhoSTs7O2dDQVJaLGlCQXJCRndJLGtCQUFRUjs7O2dDQWdDTixpQkFoQ0ZRLGtCQUFRUjs7O29CQXVCaUI7b0NBdkJ6QlEsa0JBQVFSO3FCQXVCaUI7c0NBQVg5SDs7O29CQVdXO29DQWxDekJzSSxrQkFBUVI7cUJBa0NpQjtzQ0FBWDVIOzs7OztjSWhqRVo7ZUp5akV1Qjs4QkEzQ3pCb0ksa0JBQVFSO2dCQTJDaUI7a0NBRHZCbjFDLEdBQ1lrc0M7WUF2ZlosSUFBWUQ7bUJBc3NCZHNKLFlBN3NCQUMsVUFBVXpZLFFBT0lrUDtVQUxSLElBUUosVUFWUWxQO21CQUo4QztNQXBDNUQscUNBbENxQ3ZoQyxLQXc1QlA7YUFPNUJpaEQsdUJBQXVCamhELElBQUlFO01BQ1gsOEJBRE9GLEtBQ1A7O1FBQ04sd0JBREFpaUMsSUFEaUIvaEMsT0FBSkY7Ozs7VUFNakIseUJBTnFCRTtVQU1yQix5Q0FOaUJGO21CQU1NO2FBSTdCa2hELHdCQUF3QmxoRDtNQUNSO09BRDJCdWtDO09BQU50QztPQUNyQiwwQkFEUWppQztPQUNSOztRQUNOLHdCQURBZ2xDLE1BQ2dCLGFBRlcvQyxNQUFiamlDOzs7O1NBSXhCLHlDQUp3QkEsSUFBbUJ1a0M7Ozs7O09BNTNGM0MzQztPQVRBRjtPQWJBTDtPQUdBQztPQU1BRztPQXdDQU87T0FrNkNJc1U7T0ErUUFrQjtPQStHQU87T0FvQkFJO09BcUJBQztPQXg2QkFyRDtPQXVoQ0pzRTtPQSs1QkE0SDtPQVVBQztPQXpvRkExZDtPQWdMQWM7T0EyZ0NBNlI7T0F6MUJBclI7T0E2eUNBd1Q7T0EveENJM1M7T0F1SUpDO09BK2ZBb1A7O2FxQ3B3Q0FtTSxTQUFTOW9CLEVBQUVuckI7VUFBVyswQjthckN3OUNsQnFVO3dCcUN2OUNXNW1DLEtBQU8sV0FEWHhDLEVBQ0l3QyxLQUFPLGtCQURiMm9CLEVBQUVuckIsRUFDZ0M7O2VBRHJCKzBCO2FBRXRCbWYsU0FBUy9vQixFQUFFajFCO1VBQVc2K0I7YXJDczlDbEJxVTt3QnFDcjlDVzVtQyxLQUFPLFdBRFh0TSxFQUNJc00sS0FBTyxrQkFEYjJvQixFQUFFajFCLEVBQ2dDOztlQURyQjYrQjthQUV0Qm9mLFVBQVVocEIsRUFBRXR6QjtNekN2QmpCLEl5Q3VCNkJrOUIsb0JyQ211RHBCdVYsYXFDbnVETW5mLEVBQUV0ekIsR0FBWWs5QjthQUl4QnFmLFFBQVF2OEMsR0FBR2s5QixLQUFNLCtCekMzQnRCLFV5QzJCYWw5QixHQUFHazlCLElBQTRCO2FBQ3ZDc2YsUUFBUW4rQyxFQUFFNitCLEtBQU0sK0J6QzVCckIsVXlDNEJhNytCLEVBQUU2K0IsSUFBMkI7YUFDckN1ZixTQUFTejhDLEdBQUdrOUI7TUFBTSxnQ3pDN0J2QixVeUM2QmNsOUIsR0FBR2s5QixJQUE2QjthQUN6Q3dmLFNBQVNyK0MsRUFBRTYrQixLQUFNLGdDekM5QnRCLFV5QzhCYzcrQixFQUFFNitCLElBQTRCO2FBQ3ZDeWYsT0FBT3pmLEtBQU0sZXpCRmIvOUIsT3lCRU8rOUIsSUFBd0I7YUFDL0IwZixRQUFRMWYsS0FBTSxlekJGZDk5QixPeUJFUTg5QixJQUF3QjthQUVoQzJmLFNBQVN2cEI7TXpDbENkLEl5Q2tDeUI0SjtlQUNsQi9CLElBQUd4d0I7UUFDSyxJQUFObkosSUFBTTtRQUNWLFdBRElBLElBRENtSjtRQUdILGtCQUpPMm9CLEVBSVAsU0FGRTl4QixLQUVtQjthckNxOENuQit2QyxZcUN4OENGcFcsTUFEa0IrQjthQU9wQjRmLFFBQVE1ZixLQUFNLHlCQUFjbmdDLEdBQUssT0FBTEEsQ0FBTSxFQUExQm1nQyxJQUErQjs7OztPQWR2Q3FmO09BSUFJO09BQ0FDO09BU0FFO09BYkFOO09BQ0FDO09BQ0FDO09BWEFOO09BSUFFO09BV0FPO09BYkFSO09BRUFDO09BV0FPOzs7Ozs7YUM2QklFLE9BQU83L0MsRUFBRXlCO00xQy9EbEIsSTBDK0RrQjJXO01BQ2Y7V0FEZUE7MkJBR1IwbkMsWUFBSkM7VUFBcUIsY0FBckJBLEdBSFUvL0MsR0FHcUIsT0FBM0I4L0M7VUFDSyxRQUpHMW5DOztRQUVQLGdCQUVjO2FBR3BCNG5DLFFBQU1uZ0Q7TUFDQTtpQkFEQUE7T0FDQSwwQkFEQUE7T0FHVSxXQUhWQSxFQUNKMUUsVUFDQStILE9BREEvSDtNQUVKLGdCQUhRMEUsSUFDSjFFLFFBRTRDO2FBRzlDOGtELGFBQWExakMsT0FBT0wsSUFBSVEsT0FBT2piO01BQ2pDLEdBRGlDQTtRQUdrQixJQUE5QzBLLEVBSDRCMUssS0FHL0JrbEIsRUFIK0JsbEIsS0FHa0IsU0FIcEM4YSxPQUdib0s7UUFBUTtzQ0FBcUIzbUIsRUFBRUMsR0FBUyxXQUFYRCxFQUFXLElBSHBCa2MsSUFHV2pjLEdBQWdCLE9BQTVDa007aUJBSHFCdVE7TUFFbEIsZUFDbUU7YUFZekV3akMsbUJBQWlCLG1CQUE4QjthQUUvQ0MsU0FBU0M7TUFDWDtRQUNhLGtCQUZGQSxVQUVFOzs7Ozs7NEJBSlhGOztRQVFXLGtCQU5GRSxVQU1FLFdBRFRDOzs7Ozs7OzRCQVBGSDs7TUFZUyxjQVZBRSxTQVVBLFlBTFBDLE1BS29CO2FBR3RCQyxRQUFRaDhDLElBQUk4N0MsU0FBU0c7TUFDdkIsbUJBRFVqOEMsVUFBYWk4QztNQUVJLGtCQUZiSDtNQUVKOzs7a0JBMUJtQkk7a0JBQU5DO2tCQUFMQztpREFBV0Y7O21CQUUzQixVQUZxQkM7cUJBSWpCLE1BSmlCQSxRQUlhLHVDQUR4QmgvQztxQkFDd0IsMEJBb0IxQjZDLFVBeEJRbzhDLFNBQVdGO21CQU12QiwwQkFrQklsOEMsVUF4QlFvOEMsSUFBV0Y7O29CQTBCaUI7YUFHNUNHLGFBQWFQLFNBQVNHO01BQ2hCLElBQUpwL0MsRUFBSSxjQUNSLFFBRElBLEVBRFdpL0MsU0FBU0csUUFFeEIsZ0JBRElwL0MsRUFFYTthQUdmeS9DLE1BQU1SLFNBQVNHO01BQ0osc0JBRExILFNBQVNHO01BQ0oscUNBQThCO1FBR3pDM2lCO2FBRUFpakIscUJBQW1CN2dEO01BQ3JCO1FBQVMsMkJBRFlBOzs7d0NBRU07bUJBQUk7YUFFN0I4Z0Qsb0JBQWtCOWdEO01BQ3BCO1FBQVMsK0JBRFdBOzs7K0JBRUY7UUFMbEIsV0FLc0I7YUFFcEIrZ0Qsb0JBQW9CL2dEO01BQ3RCO1FBQVMsaUNBRGFBOzs7K0JBRUo7UUFMbEIsV0FLc0I7YUFFcEJnaEQ7TUFBa0NDLGFBQWFyakIsUUFBUXNqQixLQUFLZCxTQUFTZSxRQUNuQ1o7TUFDcEMsSUFBSWEsUUFGNkN4akI7TUFFakQsU0FDSXlqQixjQUFjL3NDO1FBS1I7OztVQU5OOHNDLFVBRnFERjtZQVVkLGlCQVZjQSxRQUVyREU7O1FBU0YsT0FSZ0I5c0M7Ozs7Ozs7WUFZVixtQkFQRm5ULFFBQ0FtZ0Q7OztlQVNpQnpKLFNBZkx2akMsU0FlQXNhLElBZkF0YSxTQWVMcVgsSUFmS3JYO1dBZ0JWLG1CQVhGblQsUUFDQW1nRCxTQVNZMXlCLElBQUxqRCxJQUFVa3NCOztpQkFEZixJQURNaDRDLEVBYkl5VSxTQWNWLG1CQVRGblQsUUFDQW1nRCxTQU9RemhEO2tCQU1OLElBRE11USxJQWxCSWtFLFNBbUJWLG1CQWRGblQsUUFDQW1nRCxTQVlRbHhDO1FBR1osUUFoQklqUCxFQVJ3RGkvQyxZQUMxQkc7UUF3QkosS0FBM0IsV0F0QmFqc0MsaUJBc0JjLFdBdEJkQTtTQXdCUCx1QkFuQkxuVDtRQWtCTSx3QkFsQk5BLEdBbUJ3QjtNQXpCOUI7O1dBRmlEeThCLGFBQVFzakI7VUErQnZEO1lBQ1U7a0JBaENxQ3RqQjthQWdDckMsbUJBaEM2Q3NqQjs7WUFpQzFCLFFBRG5CLHNCQUFKcmhELGFBQ3VCLGdCQUR2QkE7Y0FDd0M7Z0JBRXBDOzs2QkFISkEsRUFoQ3NEdWdEO2lCQWtDNUNtQjtpQkFBUnJ3Qzs7OztnQkFHRjtrQkFDcUI7aUNBTnJCclI7bUJBTXFCOzs2QkFBTit1QjttQkFDYixZQURJNHlCLFFBdENnRHBCOzs7d0NBd0NwQyxpQkFSbEJ2Z0Q7OztvQkFFVTBoRCxnQkFBUnJ3QztjQVFKOzt5QkFWRXJSLEVBRVU2aEQ7MkJBUVJDO29CQUNGLEdBVFVEOzBCQVdIOXlCLElBWEc4eUIsMkJBRlY3aEQsRUFhTyt1QjtvQkFERyxRQUNnRDt5QkFIeEQreUI7ZUFBSixnQkFWRTloRCxFQUVVMGhEO2VBUVo7eUJBVkUxaEQsRUFFVTZoRDsyQkFZUkc7b0JBQ0YsR0FiVUgsWUFpQkg5eUIsSUFqQkc4eUIsaUJBaUJIOXlCO29CQUZILElBakRxQ2dQLHNCQUFRc2pCO3NCQWlERCxTQWpEUHRqQjtzQkFpRE8sd0JBakRDc2pCO29CQWtEeEMsaUJBbEJUcmhELEdBbUJpQjt5QkFMZmdpRDtlQUpKLGtCQVZFaGlELEVBRVUwaEQ7ZUFRWjt5QkFSWUc7MkJBbUJSSztvQkFDRixPQXBCVUwsVUFsQytCOWpCLGVBd0QzQjt5QkFIWm1rQjtlQVhKLDBCQVJZUjtlQVFaO3lCQVZFMWhELEVBVUU4aEQsT0FJQUUsUUFPQUU7MkJBS0lFO29CQUFlOzZCQUNYLElBQUw1aUQsV0FBSyw0QkFBTEE7O3VCQUVIOzt3QkFBVTt3QkFDRSwyQkFEUnV2Qjt1QkFDUTt5QkFFQSxJQUFMeGUsYUFBSyxXQUpUOHhDLElBSUk5eEMsS0FFUDt1QkFIVSxpQkEvQlp2USxFQTZCTSt1Qjs2QkFNRyxJQUFMcHZCLFdBQUs7NkJBQ0UsSUFBTG95QixhQUFLOzt1QkFFVCxpQkFBVTt1QkFDVixXQUZLdXdCLElBQ0R0ekI7dUJBQ0o7O3VCQVlBLElBRFN1ekIsYUFDSjs7dUJBR0w7O3dCQUFVO3dCQUNFLDRCQURSdHpCO3VCQUNRO3lCQUVBLElBQUw5dUIsYUFBSyxXQUpWcWlELElBSUtyaUQsR0FFUDt1QkFIVSxpQkF4RFpILEVBc0RNaXZCOzt1QkFPSjs7d0JBQVU7d0JBQ0UsNEJBRFJ5ekI7dUJBQ1E7eUJBRUEsSUFBTHJwQyxlQUFLLFNBQUxBLElBRVA7dUJBSFUsaUJBL0RaclosRUE2RE0waUQ7O3VCQU9KOzt3QkFBVTt3QkFDRSw0QkFEUkU7dUJBQ1E7eUJBRUEsSUFBTEM7eUJBQUssV0FKUkYsSUFJR0U7eUJBRVA7dUJBSFUsaUJBdEVaN2lELEVBb0VNNGlEOzt1QkFPSjs7d0JBQVU7d0JBQ0UsNEJBRFJHO3VCQUNRO3lCQUVBLElBQUxDLGVBQUssU0FBTEEsSUFFUDt1QkFIVSxpQkE3RVpoakQsRUEyRU0raUQ7O3VCQU9KLElBRElFO3VCQUNKO3FDQXhESWIsYUF1REFhOzt1QkF2Q00sSUFERUMsYUFBTnpQLGNBQ0k7dUJBQ1AsT0FEQzBQLE1BREUxUDt5QkFHSixXQUhVeVAsSUFDUkMsT0FFRjt1QkFHNEI7OzsrQkEvQ2hDbmpEOytCQTBDTW1qRDsrQkFLMEIsZUFDRSxrQ0FQMUIxUDs7dUJBNENOLElBREcyUDt1QkFDSDt1QkFHZ0I7NEJBeEh1QnJsQixjQUFRc2pCOzJCQXVIN0MsU0F2SHFDdGpCOzJCQXVIckMsV0FIQ3FsQixJQUdDLGlCQXZIMkMvQjsyQkF3SDdDOzs7O3VCQUdGLElBRE9nQzt1QkFDUDsyQkFDSXoxQzt1QkFHWTs0QkEvSHVCbXdCLGNBQVFzakI7MkJBOEg3QyxTQTlIcUN0akIsbUJBOEhyQyxLQUZFbndCOzJCQUVLLDZCQTlIc0N5ekM7MkJBK0g3Qzs7eUJBRUEsa0JBUEtnQyxJQU9MLElBTEV6MUM7OzJCQU1DMDFDOzhCQWxJcUJsQzt3QkFvSXhCO3VCQUVRLHFCQUNHLGtCQUxSa0MsSUFJREM7dUJBRUo7dUJBRlU7d0JBR0csYUF6SWtDbEMsVUFBUnRqQjt3QkEySXJDOzsyQkEzSTZDc2pCOzJCQUFSdGpCOzRCQUFRc2pCLHFCQUFSdGpCO3VCQTZJaEM7OzRDQUpIMEYsVUFGQStmLFVBR0FoZ0I7dUJBR0csU0FBbUM7eUJBbkZ0QzRlO2VBaEJSLDRCQVZFcGlELEVBVUU4aEQsT0FJQUUsUUFPQUU7Y0EwRkosYUE3R0k3d0M7O1lsQ3VXSixja0N6UEcsV0FoSjhEaXdDLFFBZ0MvRHRoRDs7O2lDQWlIVSxJQUFMaXBCLFdBQVcsdUJBQVhBO2tDQUNNLElBQUx6Z0IsV0FBVyxvQkFBWEE7OztVQUVaOztRQXZKRixTQXdKSTthQUVGaTdDO01BQThCMWxCLFFBQVFzakIsS0FBS2QsU0FBU2UsUUFBUVo7TUFDOUQ7aUJBRGdDM2lCLFFBQVFzakIsS0FBS2QsU0FBU2UsUUFBUVosT0FDYTthQUV6RWdELG1CQUFxQjUzQixJQUFpQnUxQixLQUFLZCxTQUFTZSxRQUFRWjtNQUM5RCxHQUR1QjUwQixJQUFRLFFBQVJBLGlCQUFRQyxhQUFSNDNCLFVBeEtyQjVsQjtNQXlLRjtpQkFEdUI0bEIsYUFBaUJ0QyxNQUFLZCxTQUFTZSxRQUFRWixPQUV0RDthQUdOa0QsV0FBYTkzQixJQUFpQnUxQixLQUFLZCxTQUFTZSxRQUFRWjtNQUN0RCxHQURlNTBCLElBQVEsUUFBUkEsaUJBQVFDLGFBQVI0M0IsVUE3S2I1bEI7TUE4S0Y7a0JBRGU0bEIsV0FBaUJ0QyxRQUFLZCxVQUFTZSxRQUFRWixPQUNnQjthQUdwRXpHLE1BQU1yNEMsRUFBRXBDLEVBQUU2TDtNQUNaO1FBQ0UsdUNBRk16SixFQUFFcEMsRUFBRTZMOzs7O1VBSUMsSUFBUHc0QyxhQUFPLHlCQUFQQSxPQUFPOztVQUNDLElBQVBDLGFBQU8sd0JBQVBBLE9BQU87a0JBQXVCO2FBR25DQyxjQUFjbmlELEVBQUVwQyxFQUFFNkw7TUFDcEI7UUFDRSwrQ0FGY3pKLEVBQUVwQyxFQUFFNkw7Ozs7VUFJUCxJQUFQdzRDLGFBQU8seUJBQVBBLE9BQU87O1VBQ0MsSUFBUEMsYUFBTyx3QkFBUEEsT0FBTztrQkFBdUI7YUFFbkNFLGFBQWFwaUQsRUFBRXBDLEVBQUU2TDtNQUNuQjtRQUlFO1NBSElnMkM7U0FDQVQsUUFIU2gvQztTQUlUK2hELGFBcE1KNWxCO1NBcU1BLG1DQURJNGxCLFVBRkF0QyxLQUNBVCxLQUhXcGhELEVBQUU2TDs7Ozs7VUFPTixJQUFQdzRDLGFBQU8seUJBQVBBLE9BQU87O1VBQ0MsSUFBUEMsYUFBTyx3QkFBUEEsT0FBTztrQkFBdUI7YUFHbkNHLFlBQVlqa0Q7TUFDZCxJQUFJcUQsSUFBSixzQkFEY3JEO01BQ2QsU0FDUWtrRCxLQUFLcGtEO1ExQ3RVaEIsSTBDc1VnQjhRO1FBQ1g7YUFGRXZOLE9BQ1N1TixJQUNNLE9BRmZ2TjtVQUdNLDBCQUpJckQsRUFFRDRRO1lBRWMsUUFGZEE7VUFHTixPQUhNQSxJQUdMO01BSlI7UUFNTSxJQUNKQSxJQURJLFFBUFE1UTs7OztVQVVWO1lBQVksSUFDVkYsRUFEVSxRQVZGRTs7O2tDQVllLE9BWHpCcUQ7WUFVTztzQkFBTHZEO1FBSEM7a0JBQUw4USxZQUtLO2FBR0x1ekMsWUFBWXZrRDtVQUFnQitnRCxhQUFOQyxjQUFMd0Q7b0JBQUt4RDtlQUVWLE1BRkFoaEQsSUFFQSxzQkFGS3drRDtlQUdxQixNQUgxQnhrRCxJQUcwQixzQkFIckJ3a0QsT0FHcUIsWUFIVnpEO2FBTTVCMEQsb0JBQW9CcmtEO01BQ3RCLElBQUlIO01BQUo7d0JBQ2dFNkM7aUJBQWpDLFNBQWlDQSxPQUQ1RDdDLFNBQ3dDLHNCQUF5QixPQUFMNkMsQ0FBTztlQUZqRDFDLEVBRW1EO2FBeUJ2RXNrRCxNQUFReDRCLElBQWV5MEI7TUFDekIsR0FEVXowQixJQUFNLFFBQU5BLGFBQU1DLGFBQU53NEIsTTdCalJBempEO002QmtSTTswQkFEU3kvQztPQUVmLGdCQW5DUjRELGNBa0NFSztPQUVNLFlBRE5uaEQsSUFGTWtoRDtNQUlEO3dCQTNCU0U7aUJBQ2xCLFNBRGtCQSxPQUNsQixLQURrQkE7aUJBQ2xCLHdCQURrQkE7O3FCQU9kOzRCQVBjQTtzQkFPRCxxQkFEV1o7c0JBRVgsZ0JBQWEsUUFSaEIzL0MsUUFPTndnRDtxQkFFUTs7O3dDQUFPLElBRGZDLFNBQ3dCLG9CQUhKZDttQkFLWDtvQkFESHg0QyxJQVZJbzVDO29CQVVWN0QsS0FWVTZEO29CQVdELG1CQURIcDVDO29CQUNHOzBCQVhIbkgsUUFZTjJnRCxlQURBRDttQkFBUyxPQUVUN25DO3FCQUlXO29DQUpYQTtzQkFLVyxhQUFXLG9CQVJoQjFSLE9BQ051NUM7c0JBUVc7NkJBVEx2NUMsSUFDTnU1QyxPQU9XLHNCQVJMdjVDLE9BQ051NUM7cUJBU1UsZUFWVmhFLEtBVVUsSUFGUmxrQyxPQUVpQixJQUhqQm9vQyxPQUVBam9DO21CQUpRLGVBTFYrakMsS0FLVSxvQkFMSnYxQztpQkFMVixPQUxjbzVDO2VBd0JkRCxVQUdnQzthQVNsQ08sU0FBU0MsS0FBSzNvQyxJQUFJNG9DO01BQ1gsa0JBRFdBLE1BRVY7ZUFFTkU7UUFDUyxJQVpIbmxELEVBWUcsU0FIVHlFO1FBR1MsR0FMRnVnRDtVQU5YLDhCQURVaGxEO1VBRUksT0FEVnFELGNBQ1UsZ0JBRkpyRCxFQUNOcUQ7cUJBRUYsTUFIUXJELElBQ05xRDtVbENvSkUsdUJrQ3JKSXJEO1VBQ1YsSUFZTW9sRDs7a0JBYklwbEQ7UUFjUixjQURJb2xELEtBSEZGO1FBSUYsZUFMRXpnRCxJQU1jO01BTlI7O1VBVUksSUFBSi9CLEVBQUksbUJBWFZxQjtVQVdVLEdBQUpyQixNQVpNMlosSUFhTSxjQUFjLFNBWGhDNVgsSUFVTS9COzs7OztVQUtQLE9BZkMrQixPQWUwQjtVQUM5QixzQkFqQklWO1VBa0JVLG1CQWhCVm1oRDttQkFnQjJCOztJQUVsQixTQUFYRyxlMUN2WkwsTzBDa1lLTjtJQXFCVztJQUVDLFNBQVpPLGdCMUN6WkwsTzBDa1lLUDtJQXVCWSxTQUVaUSxVQUFVbHBDLElBQUk0b0MsS0FBS087TUFDWixJQUFMdmlELEdBQUssU0FET2dpRDtNQUVoQixnQkFBZ0JqbEQsR0FBSywwQkFEakJpRCxTQUNZakQsRUFGSnFjLElBRWdDLEVBRnZCbXBDO01BRXJCLGFBREl2aUQsR0FFUTtJQUxFO0lBT0EsU0FBWndpRCxxQjFDaGFMLE8wQzJaS0Y7SUFLWTtJQUVDLFNBQWJHLHNCMUNsYUwsTzBDMlpLSDtJQU9hOzs7T0F4SGJ0TDtPQVFBOEo7T0FaQUg7T0FMQUY7T0FIQUQ7T0EyQkFPOzs7T0FwTUFqRDtPQU5BRDtPQXNRQXdEO09BNVBBdm1CO09BOFJBc25CO09BRUFDO09BT0FHO09BRUFDO0lBQWE7Ozs7O1FyQzlZYkM7SUFBVyxTQUlYQyxNQUFNemxELEVBQUU3RTtNQUNGLElBQUprRSxFQURJVyxNQUFFN0U7TUFFSCxnQkFESGtFO2VBR0ksYUFISkE7aUJBSUYseUJBSkVBO2lCQUtJLGFBTEpBLFdBTUYsVUFORUE7ZUFFRix5QkFGRUEsRUFRQztJQWJRLFNBZVBxbUQsYUFBYTFsRCxFQUFFN0U7TUFDckIsR0FEbUI2RSxnQkFBRTdFLEVBQ0c7TUFDVSxzQkFGZjZFLEVBQUU3RSxXQUVDLFdBRkg2RSxFQUFFN0U7TUFFQywwQ0FBa0M7SUFqQjNDLFNBMEJYd3FELGFBQWEzbEQ7TUFDZixTQUFRNGxEO1FML0NYO1FLK0NrQjs7Z0JBQ0w5akQsY0FBTkM7O2NBQ1MsOEJBRFRBLEdBRlcvQjs7Z0NBS0ksSUFBTEgsU0FBSyxVQUFMQTt3QkFISmlDOztVQUlBLFNBQUk7TUFDVCxZQWpDSDBqRCxZQWlDd0I7SUFqQ2IsU0FtQ1hLLGtCQVVNN2xEO01BVmMsR0FVZEEsb0JBVFc7U0FTWEEscUJBUlk7U0FRWkE7eUJBUG9COGxELGtCQUFOQyxnQkFBTmpCOztpQm9DakJkbEYsUXBDbkJBemxEO2lCQW9DYzJxRDtpQkFBTWlCO2lCQUFNRDs7O1NBT3BCOWxEOzs7U0FMcUJnbUQ7U0FBTkM7U0FBTkM7O2lCb0NuQmZ0RyxRcENuQkF6bEQ7aUJBc0NlK3JEO2lCQUFNRDtpQkFBTUQ7OztTQUtyQmhtRDs7O1NBSGlDbW1EO1NBQU5DO1NBQU5DOztpQm9DckIzQnpHLFFwQ25CQXpsRDtpQkF3QzJCa3NEO2lCQUFNRDtpQkFBTUQ7OztNQUlyQyxzQkFESW5tRDtRQUtxQyxnQkFMckNBLFFBekJSLE1BeUJRQTtRQXpCUjtTQUlvQzs0QkFxQjVCQTtVQXJCZ0IsV0FxQmhCQTtlQXJCZ0I7Ozs7O21CQURGLGVBc0JkQSxVQXRCYzttQkEwQlpzbUQ7TUFGTyxPQUZUdG1ELElBTXNCO0lBbkRqQixTQXFEWHVtRCxZQUFVbCtDO01BQ04sdUJBRE1BO01BQ04sVUFDTSxJQUFMeEksV0FBSyxPQUFMQTtNQUNHLHlCQUhFd0ksRUFHaUI7SUF4RGhCLFNBMERYbStDLE1BQU1DLElBQUk3M0I7TUFDWjtRQUNFLG9CQUZNNjNCLElBQUk3M0IsS0FJVjtZQURHNXVCOztRQUNnQyxxQkFEaENBO1FBQ0g7UUFDQSxjV3JEQWtDO1FYcURBLE1BRkdsQyxFQUdJO0lBaEVJLFNBa0VYMG1ELFFBQU1ELElBQUk3M0I7TUFDWjtRQUNFLG9CQUZNNjNCLElBQUk3M0I7WUFHUDV1Qjs7UUFDSCxjVzdEQWlDO1FYOERtQyxxQkFGaENqQztRQUVIO3VCQUNNO0lBeEVLLFNBOEVYMm1ELHNCQUFzQkMsSUFBSyxPQUFMQSxFQUFPO0lBOUVsQixTQWdIWEMsc0JBQXNCRDtNTHBJM0IsVUtxSVksbUNBRGVBLElBRUY7SUFsSFQsU0FvSFhFLHNCQUFzQnpxQixJQUFJN3hCO01BQzVCLFNBQUlKLEtBQUsyOEM7UUFDUCxPQURPQTt1QkFEZTFxQjt5RUFLaUQ7TUFKekUsU0FENEI3eEI7UUFjeEI7Y0Fkd0JBO1NBY3hCLEtBZHdCQTtTQWN4QixLQWR3QkE7U0FjeEIsS0Fkd0JBOzs7U0FlaEIsVUFmZ0JBO1FBY25COztNQUxMLEdBVHdCQSxRQVVvQjtNQUVOO01BQS9CLHlDQUt1QztJQXJJckMsU0FtSlh3OEMsb0JBQW9CQyxRQUFRQztNQUNJLElBYkVDLFVBYUYsc0JBREpEO01BWDlCLEdBRG9DQztRQU1oQyxNQU5nQ0EsYUFNaEMsS0FER3ZrRCxxQkFDSDs7O1VBQ0U7WUFBTSxnQ0FEUnpILEVBQ2dDLGlCQUY3QnlILEVBQ0h6SDtZQUNRLFVBRVUsSUFBUDRDLGFBQU8sbUJBR0FrcEQsY0FIUGxwRDtZQUZILFNBRFI1Qzs7O1FBSEE7cUJBU2tCOHJELGFBQ2lEO0lBcEoxRCxTQXVKWEcsZ0JBQWdCSDtNQUNVLDJCQURWQSxRQUNVLGtDQUFzQjtJQXhKckMsU0F1S1hJLHdCQUF3Qkg7TUFDTixJQWRFQyxVQWNGLHNCQURNRDtNQVoxQixHQURzQkM7UUFLVixJQURMdmtELEVBSmV1a0QsYUFLVixzQkFETHZrRCxxQkFDSzs7Y0FDUnpIO1VBQ0U7WUFBTSxnQ0FEUkEsRUFDZ0MsaUJBSDdCeUgsRUFFSHpIO1lBQ1EsVUFFVSxJQUFQNEMsYUFBTyxtQkFKZG9ELFFBSU9wRDtZQUZILFNBRFI1Qzs7O1FBS0EsZ0JBTklnRztNQUZMLHFDQVdzRDtJQXhLNUMsU0EwS1htbUQsd0JBRWlCeHVDO01BRlMsYUFFVEEsMEJBQWU7SUE1S3JCLFNBOEtYeXVDLHlCQUNlenVDLE9BRFksYUFDWkEsbUJBQ1k7SUFoTGhCLFNBeUxYMHVDLHdCQUVlMXVDO01BRlcsYUFFWEEsc0RBTWQ7SUFqTVUsU0FtTVgydUMsdUJBR2UzdUM7TUwxTnBCLFNLME5vQkE7T0FBSyxVQUFMQTtNQURvQixRQUNEO0lBdE12QixTQXdNWDR1QyxnQkFBZ0JSO01BT1osZ0NBUFlBO01BT1o7UUFHRiwyQkFES0M7UUFJbUI7Ozs7WUFFSDtvQ0FOaEJBO2FBQ2E7O1lBS0c7eUJBTmhCQTtNQURHLFFBVUM7SUExTkEsU0E0TlhRLDZCQUE2QkM7TUFDL0IsMEJBRCtCQSxPQUNKO0lBN05kLFNBd09YQyxxQkFBcUJqQixJQUFLLE9BQUxBLGFBQW9CO0lBeE85QixTQW1QWGtCO01BQTJDLGlFQUFzQjtJQW5QdEQsU0F3UFBDLGlCQUFpQkM7TUFDdkI7UUFBbUI7c0JBelBqQnhDO1NBeVBpQixnQkFESXdDLEdBQ25CQztTQUVVLHdCQTNQWnpDLFNBeVBFeUMsYUFDQUM7U0FDVSxTQUFWemhEO1FBQVU7b0JBQ3lCO0lBNVAxQixTQWdRWDBoRCxTQUNFbm9ELEdBQ0osMEJBRElBLFNBQ3NDO0lBbFE3QixTQW9RWG9vRCxZQUFZcG9ELEdBQ0gsSUFBUHdLLEtBQU8sU0FER3hLLEdBRUwsT0FETHdLLE9BQzhCO0lBdFFyQixTQXdRWDY5QyxjQUFjcm9ELEdBQ0wsSUFBUHdLLEtBQU8sU0FES3hLLEdBRVAsT0FETHdLLE9BQ2lDO0lBMVF4QixJQStRWDg5QyxPQS9RVzthQStSWEMsK0JBQW1DdjVCLElBQUlrNEI7TUFDSCxxQkFERGw0QjtNQUNyQztNQUNBLG9CV3ZSRTlzQixPWHFSdUNnbEQ7TUFDSCxJQUVsQ3NCLE9BQVM7U0FBVEE7UUFFb0IsYUFGcEJBO1FBRUYsY0FBYyxpQkFyQmRGO01BcUJpQyxxQlcxUmpDcG1ELE9YMlJVO0lBclNDLElBdVNYdW1ELDhCQVJBRjtJQS9SVyxTQXlTWEcsK0JBQStCVjtNQUFLLGdDQUFMQSxHQUFLLFFBQWdDO0lBelN6RCxJQTJTWFc7SUEzU1csU0ErVVhDLDBCQUEwQjU1QixJQUFJNjVCO01BQ2hDO1FBNUJBO1VBS007V0FGQTNCO1lBd0IwQjJCLGdCQXBDOUJGLGdCQWdCSTtVQUF3QixLQUV2QjtVQUNMO1lBQ0U7NkJBeEJGRiw4QkF3QzBCejVCLElBeEJ0Qms0Qjs7Z0JBU0M0Qjs7WUFDa0I7O2FBQ2lCLGlCQWFkOTVCO1lBYnhCO1lBQ0Esb0JXelRGOXNCLE9YNlNJZ2xEO1lBVW1CLFNBSW5CLFlBTEM0QjtZQUlIO1lBRUEsb0JXNVRGNW1ELE9YdVRNNm1EO1lBQWlCLFNBTXJCLGNXN1RGN21EO1VYK1NJOzs7b0NBWE47bUJBNEJNO1FBVUo7MkJBQUU7SUFNSjs7TUFYRTBtRDtJQVdGLG9CTDlXSDtJSzhXRyxvQkw5V0g7SUs4V0c7TUw5V0g7SUs4V0c7OztPQWhMRXRCO09BSUFDO09BV0FDO09BVUFDO09BL0VBWDtJQXNPRixvQkw5V0g7SUs4V0csb0JMOVdIO0lLOFdHOzs7T0FyU0VQO09BbEJBVjtPQXVCQVc7T0FRQUU7T0FxRkFVO09BNEZBVTtzQkx2UUw7O09LNFFTQztPQTlOSnBDO09Bb0RBZ0I7O09BcUVBSztPQW9CQUs7T0F3SEFrQjtPQVVBRztPQWpHQWhCO09Bb0JBQzs7T0FZQUU7Ozs7T0E0QkFPO09BSUFDO0lBa0ZGO2FzQzdWRVcsUUFBTXptRCxTQUFNLE9BQU5BLENBQU87YUFDYjBtRCxLQUFLNXBELEVBQUVXLEVBQUVDLEdBQUksa0JBQVJaLEVBQUlZLEVBQUZELEVBQVc7YUFDbEJrcEQsT0FBT3o2QyxFQUFFbFAsR0FBUSxzQkFBVmtQLEVBQUVsUCxFQUFhOzs7O0lBSWpCOztRQUE2QjtVQUNkLElBQVB5dkI7VUFBWSxxQ0FBMEIsWUFBdENBO1FBQ1YsUUFBSTtJQUZGLFNBSUxtNkIsUUFBVUMsVUFBd0JDO01BQ3BDLFNBQUlDO1FBQ0Y7VUFBSSxvQkFGTUYsYUFHUjtjQURrQi9nRDs7VUFDVCwrREFEU0E7VUFDVCwrQkFBTHUrQztVQUFLLFVBQzBDO01BSHZEO1FBS00sSUFDSjc2QyxPQURJLFdBTjhCczlDO1lBUXhCRTs7UUFDTSxJQUFWQyxRQUFVO1FBQ2Q7bUNBRlFELFNBQ0pDO1FBQ0osTUFGUUQ7TUFEQTthQUFWeDlDLE1BSWdEO0lBZjNDLGtCQU5MaTlDLFFBQ0FDLEtBQ0FDLE9BUUFDO0lBSks7YUNpRExNLFdBQVdsbkQ7TUFDSixvQ0FBTDhzQjtNQUNKLG1CQUZhOXNCO01BQ0osU0FBTDhzQjtNQUVKLG1CQUhhOXNCO01BQ0osU0FBTDhzQjtNQUdKLG1CQUphOXNCO01BQ0osU0FBTDhzQjtNQUlKLG1CQUxhOXNCO01BTWIsUUFOYUE7TUFDSjtPQUtULEtBTEk4c0I7T0FNbUI7WUFObkJBO01BT0osbUJBUmE5c0IsUUFPVHhCO01BTkssU0FBTHN1QjtNQVFKLG1CQVRhOXNCLFFBT1R4QjtNQU5LLFNBQUxzdUI7TUFTSixtQkFWYTlzQixRQU9UeEI7TUFJSixRQVhhd0I7TUFDSjtPQVVULEtBVkk4c0I7T0FXbUI7WUFYbkJBO01BWUosbUJBYmE5c0IsUUFZVHZCO01BWEssU0FBTHF1QjtNQWFKLG1CQWRhOXNCLFFBWVR2QjtNQVhLLFNBQUxxdUI7TUFjSixtQkFmYTlzQixRQVlUdkI7TUFYSyxTQUFMcXVCO01BZUosbUJBaEJhOXNCLFFBWVR2QjtNQVhLLFNBQUxxdUI7TUFnQkosbUJBakJhOXNCLFFBWVR2QjtNQVhLLFNBQUxxdUI7TUFpQkosbUJBbEJhOXNCLFFBWVR2QjtNQU9KLFFBbkJhdUI7TUFDSixTQUFMOHNCO01BbUJKLG1CQXBCYTlzQjtNQUNKLFNBQUw4c0I7TUFvQkosbUJBckJhOXNCO01BQ0osU0FBTDhzQjtNQW9CSiwwQkFyQmE5c0IsYUFzQitCO2FBRzFDbW5EO01BQ2tCOzs7OztNQUNILFFBRFpHLEtBQVNGLEtBQUxDLFFBQzRDO2FBbUJuREUsYUFBYXpxRCxHQUVmLFlBQ1c7YUFHVDBxRCxhQUFhbm5ELEdBQUksaUJBQVU7eUJBd0JDLFFBQUU7eUJBREYsUUFBRTt5QkFEUixRQUFJO3lCQURBLFFBQUk7UUFGMUJvbkQsZ0NBQ3NCLFFBQUk7YUFXMUI5N0IsTUFDRCs3QixjQUNDdCtCLElBQ0Z1K0I7TUFDQSxHQUZFditCO09BQWlCLFFBQWpCQSxzQkFBaUJDOztXQUFqQnUrQixlL0J6REl4cEQ7TStCMkROLGtDQUhDc3BELGNBQ0NFLGVBQ0ZELFFBQzRDO2dCQWhCMUNGLGFBWUE5N0I7d0I1QzNKVDs7Ozs7O080Q3dFS3U3QjtPQXlCQUM7MkI1Q2pHTDs7O080Q3NIS0k7T0FNQUM7OzthQ2xHQUssT0FBT3JzRDtNQUNULHVCQURTQSxNQUNULHNCQURTQSxLQUM4QjthQUVyQ3NzRCxNQUFNbHBELEdBQVcsbUNBQVhBLEdBQXFDO2FBRTNDbXBELFVBQVV2c0QsSUFBSWtGLElBQUlDO003Qy9CdkI7OztRNkMrQm1CRDs7OztRQUFJQzs7O2dDQUFSbkYsT0FBUW1GLFdBQUpEO09BR1gsdUJBSE9sRixJQUFJa0YsSUFBSUM7TUFFZix3Q0FDeUI7YUFFNUJxbkQsU0FBU3BwRCxFQUFFOEIsSUFBSUM7TUFBZ0Isc0NBQXRCL0IsR0FBRThCLElBQUlDLElBQWtEO2FBRWpFNGhELEtBQUswRjtNQUNFLElBQUw1bUQsR0FBSyxXQURGNG1EO01BQ0U7UUFDSCxJQUNGL3lDLEVBREUsc0JBREY3VDtZQUdVeUUsOEJBQUssc0JBSGZ6RSxJQUdlLE1BQUx5RTtNQURMLHNCQUZMekU7TUFFSyxPQUFMNlQsQ0FDbUM7YUFFckNnekMsU0FBT3BuRCxLQUFLcW5ELFFBQ2QscUJBRFNybkQsS0FBS3FuRCxPQUNXO2FBRXZCQyxRQUFNdG5ELE1BQU8sMkJBQVBBLFFBQWtDO2FBRXhDdW5ELFNBQVNqckQsR0FDWCxlQURXQSwyQkFDaUU7YUFFMUVrckQsT0FBT3B6QztNQUNULGdDQURTQSxHQUNxQjtNQUNqQixpQ0FDYnRjO01BQ0U7UUFBa0IsSUFBZDZFLEVBQWMsZ0JBSlh5WCxFQUdUdGM7UUFFZ0Msc0JBSDVCNFEsT0FDSjVRLFVBRWdDLFNBRDFCNkU7UUFFNEIsc0JBSjlCK0wsUUFDSjVRLG1CQUdrQyxTQUY1QjZFO1FBQWMsU0FEcEI3RTs7UUFLQSw0QkFOSTRRLFFBTXlCO2FBRTNCKytDLFNBQVNqckQ7TUFDWCxnQ0FEV0EsR0FDbUI7TUFBNkIsU0FDdkRrckQsTUFBTXhvRDtRQUNSLFNBRFFBOzs0QkFJTSxRQUpOQTs7MEJBR00sUUFITkE7O2lDQUVNLE9BRk5BO1FBS0QsZ0RBQTBDO01BR25ELGlDQUNBcEg7TUFDRTtvQkFERkEsTUFGaUMsV0FBTSxnQkFUNUIwRSxFQVNGNkI7UUFHUDtVQUZFcUssT0FDSjVRLEVBQ3FCLEtBSFIsTUFBTSxnQkFUUjBFLEVBU0Y2QjtRQUdQLFNBREZ2Rzs7UUFHQSw0QkFKSTRRLFFBSXlCOzs7Ozs7T0FsRDNCcStDO09BR0FDO09BRUFDO09BS0FDO09BRUF6RjtPQU1BMkY7T0FHQUU7T0FLQUU7T0FVQUM7O2FoQzVCRUUsaUJBQXNCLGlDQUEwQjthQUNoREMsT0FBT0MsSUFBSUM7TUFDYixPQURhQSxTQUFKRCxhQUNULFNBRGFDLE9BQ2IsUUFDa0I7YUFHaEJDLFVBQVV2ckQsRUFBRXdyRDtNQUNkLGlCQURjQSwyQkFPZCxFQURJQyxrQkFFSjVwRDtNQUNFO3lCQVRVN0IsS0FRWjZCO1FBQ0UsU0FERkE7O1FBQ0UsSUFFRixpQkFDa0IsbUJBTGRELE9BSUo7UUFDa0I7Y0FBbEJ0RztVQUNFOztlQURGQTthQUNFLFdBREZBLEVBTElzRzthQVFvQixtQkFUcEI2cEQsT0FRRWwxQjtZQUhGN3hCLFVBVitCLFdBVS9CQSxRQVZ1Qyw0QkFBMUJ2RTtZQVlmO2tCQUZFdUU7YUFQVzthQUQwQzthQUExQjthQUFuQjthQWFHLHVCQWhCSDFFLEtBYU40UDtZQUdKLGlCQWhCVTVQLEtBYU40UDtZQUFKLFNBREZ0VTs7O1FBTUE7aUJBQVU7YUFHUm93RCxPQUFLRjtNQUNNLElBQVR0L0MsT0FBUyxhQUNiLFVBRElBLE9BREdzL0MsTUFFUCxPQURJdC9DLE1BRUU7YUFHSnkvQyxzQkFBeUIsc0NBQWdCO2FBRXpDQyxPQUFLNXJELEdBQ00sSUFBVGtNLE9BQVMsYUFDYixPQURJQSxPQURHbE0sR0FFUCxPQURJa00sTUFFRTthQUlKMi9DLEtBQUs3ckQ7TUFDUCxRQURPQTtNQUNQO1lBRE9BO09BRU0sd0JBRk5BO09BRU0sTUFGTkE7T0FHTTt5QkFITkE7O1NBRUg4ckQ7OztPQUNTLFNBQVRDO09BQVMsS0FITi9yRDtNQU1QLGlCQU5PQSx1QkFLSGdzRDtNQUNKLE9BRElBLFFBRUk7YUFHRkMsT0FBT2pzRCxFQUFFRjtNQUNmO1FBQVEsV0FES0UsR0FDTCxXQUFKTCxFQURXRztRQUNQLGtCQURPQSxtQkFDWEgsSUFDQUQ7UUFDK0MsT0FEL0NBLEVBQ2dEO2FBRWxEd3NELE1BQUlsc0QsRUFBRW1zRDtNYjNGYixtQmEyRmFBLG9CQUdILGNBSENuc0QsRUFBRW1zRDtNQUVILGtDQUNjO2FBMkJqQkMsU0FBU3BzRCxFQUFFbXNEO01BQ2IsT0FEYUE7UUFHUixnQkFIUUE7U0F4QmI7V0FDUyxZQXVCRW5zRCxHQXRCRixRQXNCRUE7V0F0QkYsR0FzQkltc0Q7WUFqQlQsVUFMQWh1Qyx3QkFEQUQsY0FFQ3ZlLEVBSUcwc0Q7O1lBS0s7cUJBWUZyc0Q7YUFaRTtnQkFBTHFlLHlCQVZKRjs7OztjQURBRDs7Ozs7YUFFQ3ZlLEVBWUcyc0Q7V0FkQyxJQW9CTDVzRCxFQUFKLFNBbEJLQyxFQXFCUXdzRDtXQUhiLGtCQUdhQSx1QkFyQlJ4c0QsSUFrQkREO1dBQzhDLE9BRDlDQTtRQVNGLGNBTlNNLEVBQUVtc0Q7TUFFWCx1Q0FJYzthQVlkSSxNQUFNdnNELEVBQUVtc0Q7TUFDUCxrQkFET0EsU0FFTDtNQVZMO1FBQXNCLFlBUWRuc0QsR0FQZ0QsSUFBZixLQU9qQ0EsY0FOQSxFQUZKa2UsS0FDQUMsR0FFSSxXQURKeGUsRUFNTXdzRDtRQUpNLG9CQUZaeHNELElBQ0FELG9CQUtNeXNEOztRQUZMLE9BSER6c0QsRUFRaUI7YUFhbkI4c0QsTUFBTXhzRCxFQUFFbXNEO01BQ1Asa0JBRE9BLFlBRUw7TUFYTDtRQUE4QjtnQ0FBUixLQVNkbnNEO1NBUnlDLHlCQUFELG9CQUFSLEtBUWhDQTtTQVBnRCx5QkFBOUIsb0JBQWUsS0FPakNBO1NBTkEsZ0JBSEprZSxHQUdtQixjQUZuQkMsR0FDQUU7U0FFSSx5QkFESjFlLEVBTU13c0Q7UUFKTTs7WUFBYixlQUZDeHNELEVBQ0FEO1lBQ29ELGVBQTNCLGVYckc3QnpGLFVXeUdVa3lEOztRQUZMLE9BSER6c0QsRUFRaUI7SUFLaEIsU0FGSCtzRCxVQUVPenNELEVBQUVtc0QsT0FBZ0UsT0FBcEMsTUFBOUJuc0QsRUFBRW1zRCxNQUFnRTtJQUN0RSxTQVdITyxRQUFNMXNELEVBQUVtc0Q7TUFMWSxZQUtkbnNELEdBSmMsUUFJZEE7TUFBb0IsUUFMeEJ3VixtQkFDQThjLG9CQUlNNjVCLEtBQTJCO0lBWGhDLFNBYUhRLEtBQUszc0QsR0FBSyxtQkFBTEEsV0FBdUI7SUFiekIsU0FlSDRzRCxPQUFPNXNEO01BQzRDLE9BQVQsS0FEbkNBLGNBRTRDLEdBQVQsS0FGbkNBLGNBR0YsT0FGSGtlLEtBQ0FDLFFBQytCO0lBbEI5QixTQW9CSDB1QyxPQUFPN3NEO01BQzRDO3lDQUFELG9CQUFSLEtBRG5DQTtPQUU0QyxrQ0FBRCxvQkFBUixLQUZuQ0E7T0FHNEMsa0NBQUQsb0JBQVIsS0FIbkNBO01BSUY7ZUFISGtlO2VBR3FDO2lCQUFsQixzQkFGbkJDLE9BRXNDLHNCQUR0Q0UsUUFDMEQ7SUFJekQsU0FGSHl1QyxXQUVPOXNELEdBQWtDLE9BQVYsT0FBeEJBLEVBQWtDO0lBQ3RDLElBTUx1VCxhQU5LO2FBc0JMdzVDLGNBQVUsWUFoQlZ4NUMsVUFnQjRCO0lBdEJ2QixTQXVCTHk1QyxNQUFJYixPQUFRLGFBakJaNTRDLFVBaUJJNDRDLE1BQStCO0lBdkI5QixTQXdCTGMsV0FBU2QsT0FBUSxnQkFsQmpCNTRDLFVBa0JTNDRDLE1BQW9DO0lBeEJ4QyxTQXlCTGUsUUFBTWYsT0FBUSxhQW5CZDU0QyxVQW1CTTQ0QyxNQUFpQztJQXpCbEMsU0EwQkxnQixZQUFVaEIsT0FBUSxpQkFwQmxCNTRDLFVBb0JVNDRDLE1BQXFDO0lBMUIxQyxTQTJCTGlCLFFBQU1qQixPQUFRLGFBckJkNTRDLFVBcUJNNDRDLE1BQWlDO0lBM0JsQyxTQTRCTGtCLFFBQU1DLE9BQVEsZUF0QmQvNUMsVUFzQk0rNUMsTUFBaUM7SUE1QmxDLFNBNkJMQyxjQUFVLFlBdkJWaDZDLFVBdUI0QjtJQTdCdkIsU0E4QkxpNkMsZ0JBQVksY0F4QlpqNkMsVUF3QmdDO0lBOUIzQixTQStCTGs2QyxnQkFBWSxjQXpCWmw2QyxVQXlCZ0M7SUEvQjNCLFNBZ0NMbTZDLG9CQUFnQixrQkExQmhCbjZDLFVBMEJ3QztJQWhDbkMsU0FrQ0xvNkMsWUFBVW5DLE1BQU8saUJBNUJqQmo0QyxVQTRCVWk0QyxLQUFtQztJQWxDeEMsU0FtQ0xvQyxPQUFLcEMsTUFBTyxpQkE3QlpqNEMsYUE2QktpNEMsTUFBeUM7SUFuQ3pDLFNBb0NMcUMsaUJBQXlCLDJDQUFlO0lBcENuQyxTQXdDTEMsaUJBQWUsY0FsQ2Z2NkMsVUFrQ2lDO0lBeEM1QixTQXlDTHc2QyxVQUFVL3RELEdBQUksY0FuQ2R1VCxVQW1DVXZULEVBQTBCO0lBekMvQjs7O09BcElIMHJEO09BTUFDO09BRUFDO09BT0FDO09BZUFLO09BOEJBRTtPQWtCQUc7T0FzQkFFO09BTkFEO09Bb0JBRTtPQUVBQztPQUVBQztPQUtBQztPQU1BQztLQUdHOztPQW1DTGM7T0FEQUQ7T0FFQUU7T0FkQWQ7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUU7T0FDQUM7T0FDQUM7T0FDQUM7O09BUUFJO09BQ0FDO0lBekNLO2FpQ3pKTEMsa0JBQWtCbG5DO01BQ3BCLFNBRG9CQSxxQkFDcEIsY0FEb0JBLHlCQUVDO2FBRW5CbW5DLHVCQUF1Qm5uQyxHQUN6QixTQUR5QkEsU0FDekIsUUFBa0M7O01BTTVCLDRDQURGb25DOzs7O01BRUY7UUFBSTs7Ozs7VUFGRkE7SUFHSjttQ0FISUE7S0FHSixjQUpFQztJQUlGLFNBSUVFLGlCQUFlLDBCQUFrQjtJQUpuQyxTQUtFQyxxQkFBbUIsT0FIbkJGLGFBRzhCO0lBTGhDLElBT0VHLHlCOUM1REw7SThDcURHLFNBZU1DLGNBQWNydUQsRUFBRUw7TTlDcEV6QixJOENvRXVCdVo7TUFDcEI7V0FEc0J2WixLQUFGdVosSUFDTCxPQURLQTtRQUVmLHVCQUZlQSxhQUVzQixPQUZ0QkE7UUFHZixRQUhlQTtpQkFHUTtJQWxCNUIsU0F3U01vMUMsU0FwUkszaUMsSUFBc0I0aUM7TUFDakMsR0FEVzVpQyxJQUFTLFFBQVRBLGNBQVNDLGFBQVQ0aUMsT0FsQlRQO01BbUJNLElBQUpwdUQsRUFBSSxpQkFEeUIwdUQ7TUFDekIsR0FER0M7T0FFZTswQkFmeEJKO1FBZXdCLGtCQWZ4QkEscUIxQmpDQXhpRCxpQjBCaUNBd2lEO1FBZUUvQyxLQUFzQjs7V0FBdEJBO01BQzhDLDJCQUY5Q3hyRCxLQUNBd3JELEtBREF4ckQsRUFFa0U7SUF2QnRFLFNBeUJFNHVELFFBQU05bkM7TUFDUixhQURRQTtNQUNSLGFBRFFBLFNBQ1csT0FEWEEsK0JBSUw7SUE3QkgsU0ErQkUrbkMsUUFBTS9uQztNQUNSLElBQUl6akIsSUFESXlqQjtNQUdHLFFBSEhBLGdCQUNKempCLFFBRU8sSUFISHlqQjtRQUtILFNBRXNDLHNCQUFwQixJQVBmQSxTQU9tQztNQUh6QyxlQUpNQSxFQVFMO0lBdkNILFNBeUNFZ29DO01BQWtCOztTQUVaak87U0FBS2hyQjtTQUFNN29CO1NBV1gzUCxVQVhBd2pELElBQUtockIsS0FBTTdvQjtjQVdYM1A7aUJBWFcyUDs7OzthQUdMK2hEO2FBQUszNEI7YUFBTTQ0QjthQUNYcnZELEtBREFvdkQsTUFBSzM0QixPQUFNNDRCO1lBSUMsVUFIWnJ2RDsrQkFEV3F2RDs7aUJBUWpCM3hEO01BWkcsUUFjTjtJQXhETCxTQTBERTR4RCxPQUFLcC9DO01BQUksU0FBSkEsUUFBSSxLQUFKQSxRQUFvQixXQWpCekJpL0MsZ0JBaUJLai9DO01BQW9CLFVBQXBCQSx1QkFBc0Q7SUExRDdELFNBNERFcS9DLFNBQU9wb0MsR0FBSSxPQUFKQSxJQUFVO0lBNURuQixTQThERXFvQyxtQkFBbUJDLFNBQVNDLFFBQVFDLE1BQU1DO01BQzVDO2FBRDRDQTtPQUUzQiwwQkFEYkM7T0FDYSxLQUZxQkY7T0FFckI7O1lBZ0JqQnp0RDs7UUFDRTtVQUFjLDRCQW5Cc0J5dEQsTUFrQnRDenREO1VBZndCOztjQU9QO2VBTFBnL0M7ZUFBS2hyQjtlQUFNN29CO2VBQ1gwaUQsT0FOb0JMLGdCQUtwQnhPLElBQUtockI7ZUFLRSxnQkFWSXU1QixTQUtYdk87ZUFNUSx1QkFUZDRPLFdBUU1FO2NBQ1EsR0FFTEM7ZUFBUSxXQVBYRjs7ZUFNTyxpQkFaMkJILE1BVWxDSSxrQkFKQUQ7Y0FTSixpQkFiRkQsV0FRTUUsa0JBSkFEO2NBSU8sU0FMSTFpRDs7cUJBYXJCbkw7Ozs7TUFHQSxHQXJCOEJ3dEQ7UUFzQjVCLFNBckJFRyxjQXFCRjs7O1VBQ0U7WUFBTSxJQUVDSyxRQUZELGlCQXJCTkosV0FvQkZuMEQ7WUFDUSxHQUVDdTBELFFBQVE7WUFGVCxTQURSdjBEOzs7OztnQkF0QjRCK3pEO01BRmpCLFdBNEJQO0lBeEZOLFNBMEZFUyxTQUFPVixTQUFTdG9DO01BQ2xCO2FBRGtCQTtPQUNsQixNQUFJd29DO09BQUosTUFDSVM7T0FESixLQUVJUDtNQUZKO1FBSWMseUJBRlZBLFNBR2dCLDhCQU5GMW9DO1FBTUUsT0FEZHlvQztRQUdlLHFDQVJaSCxTQUFTdG9DLEdBTVp1b0MsUUFMRkMsTUFJRUM7TUE5QmtCLFdBa0NyQjtJQW5HSCxTQXFHRVMsUUFBS3h3RCxFQUFFc25CO01BQ1QsU0FBUW1wQztROUMzSlg7UThDMkp1Qjs7Z0JBR1hwUCxlQUFLaHJCLGdCQUFNN29CO1lBQ2QsV0FMQ3hOLEVBSUVxaEQsSUFBS2hyQjt3QkFBTTdvQjs7VUFEZCxTQUUwQjtNQUNqQixJQUFYa2pELFNBQVcsa0JBTk5wcEM7TUFNTSxPQUFYb3BDLFNBQ2lCLHVCQVBacHBDO01BT29DO1FBRzNDLE1BVk9BLEtBVVAsS0FESWxQLHFCQUNKOzs7VUFDRTtzQkFBVSxpQkFGUkEsRUFDSnRjO1lBQ0UsU0FERkE7OztZQUdBLFNBUEU0MEQsU0FPRixVQUFxQix1QkFiZHBwQztRQWNLO1lBQVRxSTs7UUFBUyxHQVJWK2dDLGVBUUMvZ0M7UUFDSCx1QkFmT3JJO1FBZVAsTUFER3FJLElBRU07SUFySFgsU0F1SE1naEMsMEJBQTBCM3dELEVBQUVzbkIsRUFBRXhyQjs7OztVQU9wQjtXQUROdWxEO1dBQUtockI7V0FBTTdvQjtXQUNMLGlCQVBnQnhOLEVBTXRCcWhELElBQUtockI7VUFDQztnQkFJTE87Ozs7YUFFUSxpQkFiZXRQLEtBQUV4ckI7WUFhQyxZQUYxQjg2QjtxQ0FMVXBwQjs7VUFHYixPQVQwQjhaO1VBT2xCLFdBREs5Wjs7UUFKakI7O2tCQUNXLGlCQUhtQjhaLEtBQUV4ckI7SUF2SHBDLFNBMklFODBELG1CQUFtQjV3RCxFQUFFc25CO01BQ3ZCLE1BRHVCQSxLQUVSLDJCQUZRQTtNQUVSLE9BQVhvcEMsU0FDaUIsdUJBSEVwcEM7TUFHc0I7aUJBRnpDbFA7O2NBSUZ0YztVQUNFO3NDQU5pQmtFLEVBQUVzbkIsRUFLckJ4ckIsSUFDd0MsaUJBTm5Cd3JCLEtBS3JCeHJCO1lBQ0UsU0FERkE7OztRQUdBLGFBTkU0MEQsU0FNRixVQUFxQix1QkFSQXBwQztRQVNUO1lBQVRxSTs7UUFBUyxHQVBWK2dDLFNBdkNnQixNQThDZi9nQztRQUNILHVCQVZxQnJJO1FBVXJCLE1BREdxSSxJQUVNO0lBdEpYLFNBd0pFa2hDLE9BQUs3d0QsRUFBRXNuQixFQUFFalg7TUFDWCxTQUFRb2dELFVBQVUzdUQsRUFBRW9EO1lBQUY0ckQsTUFBRTFyRDtRQUNsQjthQURnQjByRDtZQUtHO2FBRFp6UCxJQUpTeVA7YUFJSno2QixLQUpJeTZCO2FBSUV0akQsS0FKRnNqRDthQUtHLGtCQU5kOXdELEVBS0VxaEQsSUFBS2hyQixLQUpNanhCO2FBQUYwckQsSUFJRXRqRDthQUpBcEk7O1VBR2QsT0FIY0EsT0FLa0I7TUFDdkIsSUFBWHNyRCxTQUFXLGtCQVBOcHBDO01BT00sT0FBWG9wQyxTQUNpQix1QkFSWnBwQztNQVFvQztZQUV2Q2xQLEVBVkdrUCxLQVdIcGlCLFFBWEttTCxXQVVMK0g7O2NBRUp0YztVQUNFO3FCQUZFb0o7WUFFTSxvQkFBVSxpQkFIaEJrVCxFQUVKdGM7WUFDRSxTQURGQTs7O1FBR0EsT0FSRTQwRCxTQVFtQix1QkFmZHBwQztRQWVzQyxTQUp6Q3BpQjtRQU1RO1lBQVR5cUI7O1FBQVMsR0FWVitnQyxlQVVDL2dDO1FBQ0gsdUJBbEJPckk7UUFrQlAsTUFER3FJLElBRU07SUEzS1gsU0FvTE1vaEM7Ozs7VUFFVTs7OzttQkFBVHJ1Qzs7UUFESTtJQXJMWCxTQXdMRXN1QyxNQUFNMXBDO01BQ1I7WUFEUUE7T0FDUjtPQUNFOzttQkFBcUJtQyxFQUFFM25CLEdBQWUsYUFBakIybkIsRUFBaUIsZ0JBQWYzbkIsR0FBa0M7T0FDL0MscUJBRlJtdkQ7T0FFUSxLQUhKM3BDO01BSVI7aUJBQ094bEI7VUFDSzs2QkFETEE7V0FFVSxzQkFKYm92RCxNQUdJOXVEO1VBQ0osaUJBSkE4dUQsTUFHSTl1RDtVQUNKLFFBQTBCOztNQUg5QixVQUpRa2xCLHFCQUNKMnBDLElBRUFDLE1BU3dCO0lBcE01QixTQXdNRUMsU0FBT2psQztNQUdULElBQUlrbEMsU0FIS2xsQztNQUdULFNBRVEzUSxJQUFJemYsRUFBRXUxRDtZQUFGaHZELE1BQUVpdkQ7UUFBVTthQUFWQTtnQkFLSmpRLElBTElpUSxVQUtDajdCLEtBTERpN0IsVUFLTzlqRCxLQUxQOGpEO1lBTWUsYUFEbkJqUSxJQUFLaHJCLHFCOUN2UWxCLE84Q2tRVzlhLElBQUlsWixJQUtTbUw7VUFIZixHQUZNbkwsUUFGUit1RCxvQkFLTztVQUNTO21DQU5oQkEsU0FFUS91RDtXQUlRLElBSlJBOztXQUFFaXZEO21CQU0wQjtNQVJ4Qzs0QjlDaFFILE84Q2tRVy8xQyxvQkFRRztJQXJOWCxTQXVORWkyQyxZQUFZL25DO01BQWdCLGtCQUFoQkE7TUFBZ0Isb0I5QzVRakM7TThDNFFpQyxzQjlDNVFqQyxPc0JtQ1M3YixzQndCeU9rQztJQXZOeEMsU0F5TkU2akQsY0FBY2hvQztNQUFnQixrQkFBaEJBO01BQWdCLG9COUM5UW5DO004QzhRbUMsc0I5QzlRbkMsT3NCbUNTN2Isc0J3QjJPb0M7SUF6TjFDO2VBNlNNOGpELFVBQVVwcUMsRUFBRSs1QjtRQUNkLFNBRFkvNUI7UUFDWix1QkFEWUEsS0FBRSs1QixXQUNvQztlQUVoRHp2QixJQUFJdEssRUFBRSs1QixJQUFJaHJCO1FBQ0o7cUJBREYvTyxFQUFFKzVCO1NBRTBCLFVBRjFCQSxJQUFJaHJCLEtBRXNCLGlCQUY1Qi9PLEtBQ0Z4ckI7UUFFSixpQkFITXdyQixLQUNGeHJCLFlBQ0E2MUQ7UUFDSixPQUhNcnFDO1FBQ0UsU0FERkE7UUFHTixZQUUyQyxTQVJ6Q29xQyxVQUdJcHFDLE9BS3VEO2VBZTNEc0wsT0FBT3RMLEVBQUUrNUI7UUFDSDtxQkFEQy81QixFQUFFKzVCO1NBRWlCLHFCQUZuQi81QixLQWJheHJCOzs7OztnQkFHVGk3QixPQUFHdnBCO1lBQ1QsbUJBRE11cEIsRUFVRnNxQjtjQVJGLE9BUUEvNUI7Y0FSQTtrQ0FGTzlaO3dCQUtDLGlCQUtSOFosS0FiYXhyQixZQUdOMFI7OztVQURaLFNBYWtDO2VBUXBDOEIsS0FBS2dZLEVBQUUrNUI7UUFDSyxtQkFEUC81QixFQUFFKzVCLEtBQ0gsdUJBREMvNUI7UUFDRDtjQUVLc3FDLFlBQVMxNkIsWUFBUzI2QjtVQUN0QixtQkFKRXhRLElBR0V1USxJQUNnQixPQURQMTZCO1VBRWhCLEdBRnlCMjZCO2dCQUlkQyxHQUpjRCxTQUlMMTZCLEdBSkswNkIsU0FJSUUsTUFKSkY7WUFLbEIsbUJBUkZ4USxJQU9NeVEsSUFDZ0IsT0FEUDM2QjtZQUVoQixHQUZ5QjQ2QjtrQkFJZEMsR0FKY0QsU0FJTEUsR0FKS0YsU0FJSUcsTUFKSkg7Y0FLbEIsbUJBWk4xUSxJQVdVMlEsSUFDZ0IsT0FEUEM7d0JBQVNDOzs7c0JBZDFCbjdCLFdBQUdWLGNBQU03b0I7a0JBQ2IsbUJBRUU2ekMsSUFIRXRxQixHQUNlLE9BRFpWOzRCQUFNN29COztnQkFEaEI7WUFjZTtVQUpKO1FBSkosZUFVa0Q7ZUFRM0RrbkIsU0FBU3BOLEVBQUUrNUI7UUFDQyxtQkFESC81QixFQUFFKzVCLEtBQ1AsdUJBREsvNUI7UUFDTDtjQUVLc3FDLFlBQVMxNkIsWUFBUzI2QjtVQUN0QixtQkFKTXhRLElBR0Z1USxJQUNnQixVQURQMTZCO1VBRWhCLEdBRnlCMjZCO2dCQUlkQyxHQUpjRCxTQUlMMTZCLEdBSkswNkIsU0FJSUUsTUFKSkY7WUFLbEIsbUJBUkV4USxJQU9FeVEsSUFDZ0IsVUFEUDM2QjtZQUVoQixHQUZ5QjQ2QjtrQkFJZEMsR0FKY0QsU0FJTEUsR0FKS0YsU0FJSUcsTUFKSkg7Y0FLbEIsbUJBWkYxUSxJQVdNMlEsSUFDZ0IsVUFEUEM7d0JBQVNDOzs7c0JBZDFCbjdCLFdBQUdWLGNBQU03b0I7a0JBQ2IsbUJBRU02ekMsSUFIRnRxQixHQUNlLFVBRFpWOzRCQUFNN29COztnQkFEaEI7WUFjZTtVQUpKO1FBSkosUUFVMkQ7ZUFFcEUya0QsU0FBUzdxQyxFQUFFKzVCO1FBQ2IsU0FBUStRO1U5Q3RhZjtVOENzYWdDOztrQkFHZHI3QixhQUFRM2UsYUFBRzVLO2NBQ2YsbUJBREl1cEIsRUFKRXNxQixLQU1DLFVBRktqcEMsRUFFTCxlQUZRNUs7OztZQURsQixTQUl3QjtRQUNMLG1CQVJaOFosRUFBRSs1QjtRQVFFLHVDQVJKLzVCLHFCQVE0QjtlQVVyQytxQyxRQUFRL3FDLEVBQUUrNUIsSUFBSWhyQjtRQUNSO3FCQURFL08sRUFBRSs1QjtTQUVKLHlCQUZFLzVCLEtBQ054ckI7ZUFDQThjOzs7Z0JBUFNtZSxXQUFHdnBCO1lBQ1QscUJBRE11cEIsRUFLRHNxQixnQkFMSTd6QztZQUVQLFdBR0c2ekM7WUFISCxXQUdPaHJCOzs7OztZQUlkLGlCQUpRL08sS0FDTnhyQixlQURRdWxELElBQUlockIsS0FFWnpkO1lBRUYsT0FKUTBPO1lBSVIsU0FKUUE7WUFJUixRQUUyQyxnQkEzRjNDb3FDLFVBcUZRcHFDO1lBSVI7OztVQXJCdUIsWUF3QnRCO2VBRURxTCxJQUFJckwsRUFBRSs1QjtRQU1jO3dCQU5oQi81QixFQUFFKzVCO1NBTU0seUJBTlIvNUI7O1FBQ2tCOztZQUlwQixJQURPeVAsV0FBR3ZwQixjQUNWLHFCQURPdXBCLEVBSkhzcUI7WUFLSixRQUZBO1lBRUEsVUFEVTd6Qzs7VUFEVixTQUdrQztlQUVwQ2lvQixRQUFRdkosSUFBSXB3QjtRQUNkOzttQkFBUyxxQ0FEQ293QixJQUNLNkssRUFBRTcyQixFQUFrQjtpQkFEckJwRSxFQUN1QjtlQUVuQ3cyRCxZQUFZcG1DLElBQUlwd0I7UUFDbEI7O21CQUFTLHlDQURLb3dCLElBQ0M2SyxFQUFFNzJCLEVBQXNCO2lCQURyQnBFLEVBQ3VCO2VBRXZDNDVCLE9BQU81NUIsR0FDQyxJQUFOb3dCLElBQU0sZUFDVixZQURJQSxJQURLcHdCLEdBRVQsT0FESW93QixHQUVEOztjQXBIRCtpQztjQS9RSkc7Y0FNQUM7Y0EyQkFJO2NBc1BJNzlCO2NBb0JBZ0I7Y0FVQXRqQjtjQW9CQW9sQjtjQWNBeTlCO2NBa0JBRTtjQVNBMS9CO2NBdFNKNjlCO2NBc0NBSTtjQWFBQztjQTVGQW5CO2NBNEhBc0I7Y0FnQkFHO2NBZUFLO2NBRUFDO2NBMExJaDhCO2NBR0E2OEI7Y0FHQTU4QjtJQXpaTjtNOUNyREgsSThDaWVhcnNCO2VBQ0E2TyxLQUFNOHpDLEtBQVlyckQsR0FBSSx1QkFBSkEsRUFBWTs7NkJBRDlCMEksTUFDQTZPO09BaktSOGY7T0FDQXlFO09BQ0E4MUI7T0FDQTNnQztPQUNBZ0I7T0FDQXRqQjtPQUNBb2xCO09BQ0F5OUI7T0FDQUU7T0FDQTEvQjtPQUNBcnZCO09BQ0FzdEQ7T0FDQXhuRDtPQUNBc0M7T0FDQXNsRDtPQUNBajhDO09BQ0F5OEM7T0FDQUM7T0FDQWg4QjtPQUNBNjhCOztlQWdKSTdtRCxPQUFPK21ELElBQUssNEJBQUxBLEdBQTRCO2VBQ25DOThCLE9BQU81NUI7UUFDQyxJQUFOb3dCLElBQU0sV0FDVixXQW5KRm9tQyxZQWtKTXBtQyxJQURLcHdCLEdBRVQsT0FESW93QixHQUVEOztjQUpEemdCO2NBbktKdXNCO2NBQ0F5RTtjQUNBODFCO2NBQ0EzZ0M7Y0FDQWdCO2NBQ0F0akI7Y0FDQW9sQjtjQUNBeTlCO2NBQ0FFO2NBQ0ExL0I7Y0FDQXJ2QjtjQUNBc3REO2NBQ0F4bkQ7Y0FDQXNDO2NBQ0FzbEQ7Y0FDQWo4QztjQUNBeThDO2NBQ0FDO2NBQ0FoOEI7Y0FDQTY4QjtjQWlKSTU4QjtJQWhiTixTQTZiRXdwQixPQUFLditDLEdBQUksMEJBQUpBLEVBQWdDO0lBN2J2QyxTQThiRTh4RCxXQUFXOTNDLEdBQUdDLEdBQUdqYSxHQUFJLGlCQUFWZ2EsR0FBR0MsS0FBR2phLEVBQStCO0lBOWJsRCxTQStiRSt4RCxZQUFZMUcsS0FBS3JyRCxHQUFJLHdCQUFUcXJELEtBQUtyckQsRUFBbUM7SUEvYnRELFNBaWNFK3dELFVBQVVwcUMsRUFBRSs1QjtNQUNkLFlBRFkvNUI7ZUFFUCxpQkFGT0EsS0FBRSs1QixRQUFGLzVCO2VBR1AsMkNBQW9EO0lBcGN6RCxTQXNjRXFyQyxNQUFJcnJDLEVBQUUrNUIsSUFBSWhyQjtNQUNKO21CQURGL08sRUFBRSs1QjtPQUUwQixVQUYxQkEsSUFBSWhyQixLQUVzQixpQkFGNUIvTyxLQUNGeHJCO01BRUosaUJBSE13ckIsS0FDRnhyQixZQUNBNjFEO01BQ0osT0FITXJxQztNQUNFLFNBREZBO01BR04sWUFFMkMsU0FWekNvcUMsVUFLSXBxQyxPQUt1RDtJQTNjN0QsU0EwZEVzTCxPQUFPdEwsRUFBRSs1QjtNQUNILGdCQURDLzVCLEVBQUUrNUIsS0FFaUIscUJBRm5CLzVCLEtBYmF4ckI7OztjQUdUaTdCLE9BQUd2cEI7VUFDVCxzQkFETXVwQixFQVVGc3FCO1lBUkYsT0FRQS81QjtZQVJBO2dDQUZPOVo7c0JBS0MsaUJBS1I4WixLQWJheHJCLFlBR04wUjs7O1FBRFosU0Fha0M7SUE1ZHRDLFNBb2VFb2xELE9BQUt0ckMsRUFBRSs1QjtNQUNLLG1CQURQLzVCLEVBQUUrNUIsS0FDSCx1QkFEQy81QjtNQUNEO1lBRUtzcUMsWUFBUzE2QixZQUFTMjZCO1FBQ3RCLHNCQUpFeFEsSUFHRXVRLElBQ29CLE9BRFgxNkI7UUFFaEIsR0FGeUIyNkI7Y0FJZEMsR0FKY0QsU0FJTDE2QixHQUpLMDZCLFNBSUlFLE1BSkpGO1VBS2xCLHNCQVJGeFEsSUFPTXlRLElBQ29CLE9BRFgzNkI7VUFFaEIsR0FGeUI0NkI7Z0JBSWRDLEdBSmNELFNBSUxFLEdBSktGLFNBSUlHLE1BSkpIO1lBS2xCLHNCQVpOMVEsSUFXVTJRLElBQ29CLE9BRFhDO3NCQUFTQzs7O29CQWQxQm43QixXQUFHVixjQUFNN29CO2dCQUNiLHNCQUVFNnpDLElBSEV0cUIsR0FDbUIsT0FEaEJWOzBCQUFNN29COztjQURoQjtVQWNlO1FBSko7TUFKSixlQVVzRDtJQWhmakUsU0F3ZkVxbEQsV0FBU3ZyQyxFQUFFKzVCO01BQ0MsbUJBREgvNUIsRUFBRSs1QixLQUNQLHVCQURLLzVCO01BQ0w7WUFFS3NxQyxZQUFTMTZCLFlBQVMyNkI7UUFDdEIsc0JBSk14USxJQUdGdVEsSUFDb0IsVUFEWDE2QjtRQUVoQixHQUZ5QjI2QjtjQUlkQyxHQUpjRCxTQUlMMTZCLEdBSkswNkIsU0FJSUUsTUFKSkY7VUFLbEIsc0JBUkV4USxJQU9FeVEsSUFDb0IsVUFEWDM2QjtVQUVoQixHQUZ5QjQ2QjtnQkFJZEMsR0FKY0QsU0FJTEUsR0FKS0YsU0FJSUcsTUFKSkg7WUFLbEIsc0JBWkYxUSxJQVdNMlEsSUFDb0IsVUFEWEM7c0JBQVNDOzs7b0JBZDFCbjdCLFdBQUdWLGNBQU03b0I7Z0JBQ2Isc0JBRU02ekMsSUFIRnRxQixHQUNtQixVQURoQlY7MEJBQU03b0I7O2NBRGhCO1VBY2U7UUFKSjtNQUpKLFFBVStEO0lBcGdCMUUsU0FzZ0JFc2xELFdBQVN4ckMsRUFBRSs1QjtNQUNiLFNBQVErUTtROUM1akJYO1E4QzRqQjRCOztnQkFHZHI3QixhQUFHVixnQkFBTTdvQjtZQUNiLHNCQURJdXBCLEVBSkVzcUIsS0FNSSxVQUZIaHJCLEtBRUcsZUFGRzdvQjs7O1VBRGhCLFNBSXdCO01BQ0wsbUJBUlo4WixFQUFFKzVCO01BUUUsdUNBUkovNUIscUJBUTRCO0lBOWdCdkMsU0F3aEJFK3FDLFFBQVEvcUMsRUFBRSs1QixJQUFJaHJCO01BQ1I7bUJBREUvTyxFQUFFKzVCO09BRUoseUJBRkUvNUIsS0FDTnhyQjthQUNBOGM7OztjQVBTbWUsV0FBR3ZwQjtVQUNULHNCQURNdXBCLEVBS0RzcUIsZ0JBTEk3ekM7VUFFUCxXQUdHNnpDO1VBSEgsV0FHT2hyQjs7Ozs7VUFJZCxpQkFKUS9PLEtBQ054ckIsZUFEUXVsRCxJQUFJaHJCLEtBRVp6ZDtVQUVGLE9BSlEwTztVQUlSLFNBSlFBO1VBSVIsUUFFMkMsZ0JBN0YzQ29xQyxVQXVGUXBxQztVQUlSOzs7UUFyQnVCLFlBd0J0QjtJQS9oQkgsU0FpaUJFeXJDLE1BQUl6ckMsRUFBRSs1QjtNQU1jO3NCQU5oQi81QixFQUFFKzVCO09BTU0seUJBTlIvNUI7O01BQ2tCOztVQUlwQixJQURPeVAsV0FBR3ZwQixjQUNWLHdCQURPdXBCLEVBSkhzcUI7VUFLSixRQUZBO1VBRUEsVUFEVTd6Qzs7UUFEVixTQUdrQztJQXZpQnRDLFNBeWlCRXdsRCxVQUFROW1DLElBQUlwd0I7TUFDZDs7aUJBQVMsdUNBRENvd0IsSUFDSzZLLEVBQUU3MkIsRUFBa0I7ZUFEckJwRSxFQUN1QjtJQTFpQnJDLFNBNGlCRXcyRCxZQUFZcG1DLElBQUlwd0I7TUFDbEI7O2lCQUFTLHlDQURLb3dCLElBQ0M2SyxFQUFFNzJCLEVBQXNCO2VBRHJCcEUsRUFDdUI7SUE3aUJ6QyxTQStpQkVtM0QsU0FBT24zRCxHQUNDLElBQU5vd0IsSUFBTSxlQUNWLFlBRElBLElBREtwd0IsR0FFVCxPQURJb3dCLEdBRUQ7SUFsakJILFNBb2pCRWduQyxRQUFVNW1DLElBQXNCaEY7TUFDbEMsR0FEWWdGLElBQVMsUUFBVEEsY0FBU0MsYUFBVDRpQyxPQWxqQlZQO01BbWpCTSxJQUFKcHVELEVBQUksaUJBRDBCOG1CO01BQzFCLEdBREk2bkM7T0FHSzswQkFoakJmSjtRQWdqQmUsa0JBaGpCZkEscUIxQmpDQXhpRCxpQjBCaUNBd2lEO1FBK2lCRS9DLEtBQ2E7O09BQ1YsSUFGSEEsVUFGOEIxa0M7TUFDMUI7T0FLUixVQU5rQ0Esa0JBQzlCOW1CO09BT0ssT0FSeUI4bUIsS0FRekIsZUFQTDltQixLQUNBd3JEO09BTUssS0FGTG43QjtPQUVLLEtBUnlCdko7T0FRekI7TUFJVDt1QjlDcm5CSCxPOENzZktvcUMsVUF5SEU3Z0M7TUFNSixPQU5JQSxHQU9GO0lBamtCRjs7O09Bd1NNbytCO09BL1FKRztPQU1BQztPQTJCQUk7T0E0WUFrRDtPQThCQUM7T0FvQkFDO09BY0FDO09BMkJBQztPQXZFQW5nQztPQThEQXkvQjtPQW5iQTdCO09Bc0NBSTtPQWFBQztPQTVGQW5CO09BeERBYjtPQUNBQztPQStpQkFvRTtPQTVYQWxDO09BZ0JBRztPQWVBSztPQUVBQztPQWdWQXVCO09BR0FWO09BR0FXOzs7T0FsSEEvVDtPQUVBd1Q7T0FEQUQ7O0lBOWJGO2FDZ0RJVSxZQS9FSy93RDtNQUNULGNBRFNBLE1BQ1QsVUFEU0E7TUFFUDtNQUNGLGdDQUhTQSxFQUdEO2FBS05neEQsU0FBT3p5RCxHQUFJLE9BQUpBLG9CQUE0QzthQUVuRDB5RCwwQkFBd0JycUQsRUFBRTRDLEVBQUVDO01BQzlCLGNBRDRCRCxNQUM1QixVQUQ0QkEsSUFDTixTQURJNUMsWUFFeEI7OEJBRjRCNkMsU0FFWjthQUloQnluRCxNQUFJdHFELEVBQUU0QyxFQUFFakw7TUFDViwwQkFETXFJLEVBQUU0QztNQUNSLEdBRFVqTCxHQUlFLElBQUxrWixJQUpHbFosS0FJRSx5QkFKTnFJLEVBQUU0QyxFQUlEaU87TUFERywyQkFISjdRLEVBQUU0QyxFQUljO2FBR3BCMm5ELE1BQUl2cUQsRUFBRTRDO01BQ1IsMEJBRE01QyxFQUFFNEM7TUFFUiw2QkFGTTVDLEVBQUU0QyxFQUVEO2FBR0w0bkQsU0FBU3hxRCxFQUFFNEM7TUFDYiwwQkFEVzVDLEVBQUU0QztNQUViLGtDQUZXNUMsRUFBRTRDLEVBRUQ7YUFHVjZuRCxRQUFNenFELEVBQUU0QztNQUNWLDBCQURRNUMsRUFBRTRDO01BRVYsK0JBRlE1QyxFQUFFNEMsRUFFRDthQUtQOG5ELE9BQUtwcUQsR0FBRzhDLEdBQUc3QyxHQUFHOEMsR0FBR2pLO01BRUU7OztRQUZGQTs7OztRQUFUZ0s7OztVQUNpQixTQURwQjlDLE1BQVlsSCxTQUFUZ0s7Ozs7UUFBTUM7OztVQUVLLFNBRlI5QyxNQUFNbkgsU0FBSGlLO1FBSVg7b0JBSmNqSztTQUlkLFVBQWUsdUJBSmJrSCxHQUFHOEMsR0FBRzdDLEdBQUc4QyxHQUFHaks7UUFJbUI7TUFEakMsaUNBQ2lDO2FBRXBDdXhELE9BQUtDLEdBQUdod0QsSUFBSUMsSUFBSWxEO01BQ2EsUUFEckJpRCxZQUFJQyxXQUNpQixTQUR4Qit2RCxNQUFPL3ZELFdBQUpEO1FBR0wsVUFIS0EsTUFBSUM7UUFHVCxhQUhLRDtjQUdMOUgsRUFISzhIO1VBS047a0JBTEdnd0QsR0FHRjkzRCxFQUhhNkU7WUFLZCxTQUZDN0U7Ozs7TUFEQSx3Q0FLRjs7TUEyQmUsSUFBZCszRCxZQUFjO2VBWWRDLFVBQVVobkQsRUFBRXdhLEdBQUksZ0JBQUpBLGVBQUZ4YSxnQkFBaUQ7TUFaN0MsSUFjZGk0QztNQWRjLFNBaUJkdDVDLE9BQU8rbUQ7UUFDVDttQkFEU0E7U0FFVCx3QkFESXVCO1FBR007K0JBRk5DLEtBbkJGSDtnQkFzQlMsZUFIUEc7Z0JBTEZqUDs7a0JBWUQ7TUExQmUsU0E0QmQvc0IsTUFBTWxyQjtRQUNSLFNBRFFBLHdCQUNSOzs7VUFDRTs2QkFGTUEsS0FDUmhSLFlBN0JFKzNEO1lBK0JBLGlCQUhNL21ELEtBQ1JoUjtZQUVFLFNBRkZBOzs7UUFJQSxPQW5CRWlwRDtRQW1CRjtnQkFDZTtNQWxDQyxTQXFDZDM3QyxLQUFLcEosRUFBRThNLEVBQUV1RDtRQUNYLFNBRFN2RCxLQUNUO1FBTWlCOzBCQU5LaEwsRUFBRW9OO3VCQUFKN00sTUFBSTZDO21CQUN0QjtxQkFBUSxZQURZcEQsTUFBRk8sSUFDSSxPQURBNkM7cUJBRWhCLGdCQUZjcEQsRUFBRk87cUJBRVo7dUJBQ007O3dCQUFvQixrQkFKM0JyQyxFQUlFRSxFQUhlZ0Y7d0JBR1UsSUFIZDdDOzt3QkFBSTZDOztxQkFFaEIsSUFFSSxJQUpRN0M7OztpQkFEVGdPLEtBT2tDO01BNUM3QixTQStDZC9NLEtBQUt0RCxFQUFFOE07UUFDVCxTQURTQSxLQUNUO1FBTVc7MEJBTldoTDttQi9DdEozQixJK0NzSnlCTzttQkFDbEI7cUJBQVEsWUFEWVAsTUFBRk8sSUFDSTtxQkFDaEIsZ0JBRmNQLEVBQUZPO3FCQUVaO3VCQUNNLElBQUxuQzt1QkFBSyxXQUpQRixFQUlFRTt1QkFBSyxRQUhNbUM7O3FCQUVaLElBRUksSUFKUUE7O3NCQU1jO01BdERsQixTQW1FVjR4RCxhQUFhbjRELEVBQUVnRyxFQUFFb0Q7WUFBSjdDLE1BQUkrQztRQUN2QjtVQUFRLFlBRGF0RCxNQUFGTyxJQUNHLE9BREMrQztVQUVVO3dCQUZadEQsRUFBRk87V0FBSTZNO1dBQUp3Tzs7V0FBSXRZO21CQUVtQztNQXJFMUMsU0F3RWQ4MEIsTUFBTXB0QjtRQUNSLGdCQURRQSxLQUNSO1FBQWlCO3FDL0MvS3RCLE8rQ3lLV21uRDs7c0JBTXFDO01BekUzQixTQW9JZEMsUUFBUXBuRCxFQUFFcW5ELE9BQU8vN0MsRUFBRWtQLEVBQUU4c0M7UUFDVjttQ0FESHRuRCxLQUFhc25EO1NBRVYsd0JBRkh0bkQsS0FBYXNuRDtTQUdkLFlBRkxDO1NBR1NoMEM7UUFDWDthQUZFbXlDLE1BQ1NueUM7WUFHUDthQURFazBDO2NBQ0YsWUFKRi9CO1lBSUUsR0FERStCLFNBSEovQixHQU1vQjtZQUZsQjthQUdjLHdCQUpaK0I7YUFLWSx5QkFMWkE7WUFNSixPQVhBRixXQVNJRyxjQVBKaEM7WUFVQSxPQVhBOEIsU0FTSUcsWUFSSmpDO1lBV0EsV0FkUTJCLE9BVUpLLFlBUEpoQyxHQUhlcDZDO1lBZWYsaUJBSklxOEMsVUFSSmpDLGNBSGlCbHJDO1lBZ0JqQixpQkFoQk14YSxLQUFhc25ELG9CQVVmSTtZQU9KLGlCQWpCTTFuRCxLQUFhc25ELG9CQVdmSztZQUpGLElBVUYsS0FkQWpDLE1BSE0xbEQsU0FpQk4sVUFqQk1BLE9BTUZ5bkQ7WUFZcUM7cUJBbEJuQ3puRDtrQkFvQkpnUztjQUE0QjtnQkF4RWxDO3NCQW9EVWhTO2lCQXBERyx3QkFvREhBO2lCQXBERyxLQW9ESEE7aUJBbkRJLHlCQW1ESkE7aUJBbERBLFdBRk42a0Q7aUJBSFUsWUFBSnJ4RDtpQkFPQyxvQkFKUHF4RDtnQkFJTyxHQUFQaUQsUUFEQUQ7a0JBYU0saUJBaEJOaEQsZ0JBTVd0dkQsTUFBRStOO2tCQUNiO3VCQUpBdWtELFlBR2F2a0Q7c0JBRVIsV0FSTHVoRCxPQU1XdHZEO3dCQUVjLFFBRmRBO3NCQUdELFdBVFZzdkQsT0FNYXZoRDt3QkFJVCxPQVZKdWhELE9BTWF2aEQsRUFOYnVoRCxPQU1XdHZEO3dCQUtRLDBCQVZuQnF5RCxRQUthdGtEO3dCQUtULGlCQVZKc2tELFFBS1dyeUQ7d0JBS1EsSUFBZixJQUxTK04sVUFLVCxJQUxPL04sb0JBQUUrTjs7c0JBT0YsUUFQRUE7OzZCQUhidWtEO3NCQWNtQixTQW1DYjduRDtzQkFsQ04saUJBa0NNQSx1QkFwSVIrbUQ7c0JBaUdxQixTQW1DYi9tRDtzQkFqQ04saUJBaUNNQTs7c0JBL0JVLElBQVpnb0QsVUFBWSxZQWxCaEJIO3NCQW1CQSxPQXRCQWhELFNBcUJJbUQsWUFsQkpIO3NCQWtCZ0IsU0ErQlY3bkQ7c0JBN0JOLGlCQTZCTUEsdUJBL0JGZ29EO3NCQUFZLElBR00sV0F2QnRCSixVQUVBQyxVQXFCc0IsS0E0QmhCN25EO3NCQTVCTixpQkE0Qk1BO29CQTFCUixTQTBCUUEsT0F2REF4TSxNQTZCUixVQXZCRXEwRCxZQWlETTduRDtvQkExQnFDLGVBMEJyQ0E7O2dCQXhCVixnQkF3QlVBO2dCQXBEVixTQXdFTWdTOzs7WUFiQSxXQVBJaFM7WUFzQk47Y0ExQ0o7bUJBb0JVQTtlQXhESSxtQkFBSnNFO3VCQXFDTndiO2dCQUVTLGdCQUZUQSxRQXZESixLQTBFVTlmLEtBMUVWO2dCQU1ZOzJCQU5Vc0QsRUEwRFA0a0Q7b0IvQzFOcEIsSStDZ0t5QjN5RDtvQkFDbEI7c0JBQVEsWUF5REsyeUQsT0ExREszeUQsSUFDSTtzQkFDaEIsa0JBd0RPMnlELEdBMURLM3lEO3NCQUVaO3dCQUNROzZDQXVFTnlLLEtBMUVZc0Q7eUJBMkRsQjttQ0EzRGdCdFU7cUNBMkRacTRELE9BQU85d0MsR0FBRzh4QyxVQUFPLGNBRFZILEdBMURLbDVELEVBMkRMdW5CLEdBQUc4eEMsS0FBeUI7bUNBQW5DaEI7eUJBQUosZ0JBM0RnQjl4RDt5QkE0RFIsbUJBRk00eUQsR0ExREU1eUQ7d0JBNkRXLFFBSnpCMHlELEtBRUVaLFNBQ0E3c0MsRUFDdUIsVUFKekJ5dEMsS0FHRXp0Qzt3QkF6RFEsSUFISTVKOztzQkFFWixJQUVLLElBSk9yYjs7O2dCQTBFVnlLLE9BakJKaW9EO2dCQWlCSWpvRCxPQWpCSmlvRDtnQkFpQklqb0QsT0FqQkppb0Q7Z0JBaUJJam9ELE9BakJKaW9EO2dCQWlCSWpvRCxxQkFqQkppb0Q7O2NBWUcsT2xDaklEenpEO2NrQ2lJQzs7WUE0QkU7VUFBRyxXQXRCVit5RCxTQUdTaDBDLE1BbUJxQixRQW5CckJBO1VBc0JULFdBMUJROHpDLE9BQ1JFLFNBR1NoMEMsSUFKTWpJO1VBMkJmLGlCQXpCQWs4QyxPQUVTajBDLGdCQUpRaUg7VUEyQmpCLFNBR0U7TUFsS1UsU0FxS2RzSyxJQUFJOWtCLEVBQUVzTDtRQUNBLElBQUprUCxFQUFJLGdCQURBbFA7UUFFaUIsZUFGbkJ0TCxFQXJPTndtRCxTQXFPUWw3QyxHQUNKa1AsRUFDcUIsVUFGbkJ4YSxFQUNGd2EsR0FDb0M7TUF2S3hCLFNBMEtkOHRDLFFBQVF0b0QsRUFBRXNMLEVBQUVpOUM7UUFDTjsyQkFESWo5QztTQUVBLGdCQUZGdEwsRUFDTndhO1NBRVMsd0JBSEh4YSxLQUVOc25EO1NBRVMsd0JBSkh0bkQsS0FFTnNuRDtTQUdLLFlBRkx6QztTQUdTNzFEO1FBQ1g7YUFGRTAyRCxNQUNTMTJELEVBQ0ssa0JBUEp1NUQsV0FDVi90QyxFQUNBOHNDO1VBTVUsR0FQVjlzQyxNQU9VLGlCQUpWZ3RDLE9BRVN4NEQ7WUFHSCxtQkFOTjYxRCxPQUdTNzFEO1lBR0g7a0JBQ0NvRTtjQUFPLG1CQUFQQSxFQVZDa1k7Z0JBV1Usa0JBUmxCdTVDLE9BR1M3MUQ7Z0JBS1MsWUFDQSxJQUFMcU4sZUFBSyxPQUFMQTtnQkFESyxJQUVGLElBUFByTjs7WUFHSCxJQU1DLElBVEVBOztVQVVGLFFBVkVBO21CQVlQO01BNUxVLFNBK0xkZ29CLE1BQU1oWCxFQUFFc0w7UUFDVjtpQkFEUXRMO2lCQUFFc0w7MEJBQ09rUCxFQUFFOHNDLE9BQVMsUUFEcEJ0bkQsRUEvUFJ3bUQsU0ErUFVsN0MsR0FDT2tQLEVBQUU4c0MsT0FBUyxPQURsQmg4QyxDQUNtRCxFQUFDO01BaE05QyxTQW1NZDlJLEtBQUt4QyxFQUFFc0w7UUFBSSxlQUFOdEwsRUFBRXNMLFdBQXFCa1AsRUFBRzhzQyxPQUFVLGVBQWUsRUFBQztNQW5NM0MsU0FxTWQxL0IsU0FBUzVuQixFQUFFc0w7UUFDTDsyQkFES0E7U0FFRCxnQkFGRHRMLEVBQ1B3YTtTQUVTLHdCQUhGeGEsS0FFUHNuRDtTQUVTLHdCQUpGdG5ELEtBRVBzbkQ7U0FHSyxZQUZMekM7U0FHUzcxRDtRQUNYO2FBRkUwMkQsTUFDUzEyRCxFQUNLO1VBQ0osR0FQVndyQixNQU9VLGlCQUpWZ3RDLE9BRVN4NEQ7WUFHSCxtQkFOTjYxRCxPQUdTNzFEO1lBR0g7a0JBQ0NvRTtjQUFPLG1CQUFQQSxFQVZFa1k7Z0JBV1MsSUFDVmpQLElBRFUsTUFSbEJ3b0QsT0FHUzcxRDtnQkFLUyxHQUNWcU4sSUFBZSxPQUFmQTtnQkFEVSxJQUVGLElBUFByTjs7WUFHSCxJQU1DLElBVEVBOztVQVVGLFFBVkVBO21CQVlQO01Bdk5VLFNBME5kdzVELFlBQVl4b0QsRUFBRXNMLEVBQUVtOUMsUUFBUUY7UUFDbEI7MkJBRFFqOUM7U0FFSixnQkFGRXRMLEVBQ1Z3YTtTQUVTLHdCQUhDeGEsS0FFVnNuRDtTQUVTLHdCQUpDdG5ELEtBRVZzbkQ7U0FHSyxZQUZMekM7U0FHUzcxRDtRQUNYO2FBRkUwMkQsTUFDUzEyRCxFQUNLLE9BUFF1NUQ7VUFRWixHQVBWL3RDLE1BT1UsaUJBSlZndEMsT0FFU3g0RDtZQUdILG1CQU5ONjFELE9BR1M3MUQ7WUFHSDtrQkFDQ29FO2NBQU8sbUJBQVBBLEVBVktrWSxHQVVpQixrQkFWZm05QyxRQUdkNUQsT0FHUzcxRDtZQUdILElBRUMsSUFMRUE7O1VBTUYsUUFORUE7bUJBUVA7TUF4T1UsU0EyT2Q4MkIsT0FBTzlsQixFQUFFc0w7UUFBSTsyQkFBTnRMLEVBQUVzTCxXQUF5Qjh5QixFQUFFcHZDLEdBQUssYUFBUG92QyxFQUFFcHZDLElBQWlCLE9BQUk7TUEzTzNDLFNBOE9kNjJCLElBQUk3bEIsRUFBRXNMO1FBQUksOEJBQU50TCxFQUFFc0wsV0FBeUI4eUIsRUFBR3B2QyxHQUFNLFFBQUksT0FBTztNQTlPckMsU0FpUGRxMkQsU0FBU3JsRCxFQUFFc0w7UUFDTDsyQkFES0E7U0FFRCxnQkFGRHRMLEVBQ1B3YTtTQUVTLHdCQUhGeGEsS0FFUHNuRDtTQUVTLHdCQUpGdG5ELEtBRVBzbkQ7U0FHSyxZQUZMekM7U0FHUzcxRDtTQUFFb0o7UUFDYjthQUZFc3RELE1BQ1MxMkQsRUFDSyxPQURIb0o7VUFFRCxHQVBWb2lCLE1BT1UsaUJBSlZndEMsT0FFU3g0RDtZQUdILG1CQU5ONjFELE9BR1M3MUQ7WUFHSDtrQkFDQ29FO2NBQU8sbUJBQVBBLEVBVkVrWTtnQkFXUyxrQkFSbEJ1NUMsT0FHUzcxRDtnQkFLUztrQkFDQTs7NkJBQUxxTixJQU5GakU7bUJBTU8sSUFOVHBKOzttQkFBRW9KOztnQkFLTyxJQUVGLElBUFBwSjs7WUFHSCxJQU1DLElBVEVBOztVQVVGLFFBVkVBO21CQVlKO01BblFPLFNBc1FkazFELE1BQU1sa0Q7UUFDUixRQURRQSxnQkFFRyxXQWhWWHNtRCxTQThVUXRtRDtRQUdSLHNCQURJMG9EO1FBREo7U0FFQTtTQUNhOzBDL0NoWGxCLDZCK0M4V1NBO1NBRVMsS0FIVDN4RDtTQUkyQyxLQUozQ0E7U0FJMkMsc0JBSDNDMnhEO1NBRzZCLHNCQUg3QkE7U0FHbUIsc0JBSG5CQTtRQUdFLFVBSkYzeEQsSUFJRSxNQUxFaUosR0FJSjJvRCxzQkFDd0Q7TUEzUTVDO2NBaUJkaHFEO2NBV0F1c0I7Y0FtS0FsVTtjQTFCQThOO2NBc0VBZ0I7Y0F4Q0F0akI7Y0FFQW9sQjtjQTRDQXk5QjtjQUhBeC9CO2NBL0xBcnZCO2NBVkE4RjtjQW1DQTh3QjtjQThMQTgyQjs7OztPQXZRQW1DO09BdkVGQztPQVFBRTtPQU9BQztPQUtBQztPQUtBQztPQWFBRTtPQU5BRDs7O2FDdkNBZ0MsS0FBRy8wRCxHQUFJLE9BQUpBLENBQUs7OztLQThyQkpnNEM7S0E1cUJGZ2Q7YUFpTEZDLFdBQVd6cEMsTUFBTTBwQztNQUNuQixZQURhMXBDLFlBQU0wcEMsYUFDbkIsV0FEbUJBLE1BQU4xcEMsVUFFaUI7UUE0QjVCMnBDO2FBR0FDLGlCQUFpQjVwQyxNQUFNM3JCO01BQUksa0JBQVYyckIsVUFBTTNyQixJQUFJLHNCQUFKQSxHQUE2QzthQUNwRXcxRCxrQkFBa0I3cEMsT0FBUSxrQkFBUkEsWUFBK0I7YUFLakQ4cEMsZUFBZTlwQyxNQUFNd3NCLEtBQUt1ZDtNQUM1QixXQURpQi9wQyxXQUFNd3NCO01BRXZCLGlCQUZpQnhzQixNQUFXK3BDO01BRTVCO2NBQzZCO2FBRzNCQyxjQUFjaHFDLE1BQU0zckI7TUFDbkIsOEJBRG1CQTtNQUNuQixZQUFhLGVBREEyckIsTUFDQSxzQkFETTNyQixVQUNrQzthQUd0RDQxRCxlQUFlanFDLFlBQThCc1U7VUFBUHVELGVBQVJ6RyxnQkFBUjBHO01BQ3hCLGNBRGlCOVgsTUFBTzhYO01BRXhCLGtCQUZpQjlYO01BRWpCOztlQUZpQkEsV0FBOEJzVSxhQUFmbEQ7T0FNZCxrQkFORHBSLFNBSWJ1ckI7TUFFYyxZQUFkMmU7TUFBYyxXQU5EbHFDO01BYlksV0FhWkE7YUFKZmdxQyxjQUllaHFDLE1BQXVCNlg7YUFjdENzeUIsV0FBV25xQyxNQUFNc1UsT0FBUSxzQkFBZHRVLFdBQU1zVSxNQUE4QzthQUcvRDgxQixnQkFBZ0JwcUM7VUFBc0I2WCxlQUFQdkQsZUFBUndEO01BQ3pCLGNBRGtCOVgsTUFBTzhYO01BQ3pCLFdBRGtCOVgsV0FBZXNVO01BL0JKLFdBK0JYdFUsVUFBZXNVO2FBckIvQjAxQixjQXFCZ0JocUMsTUFBc0I2WDthQW9DdEN3eUIsZ0JBQWdCcnFDLE1BQU1zcUM7TWhEaFUzQjs7O1VnRDRWaUIsb0JBNUJJdHFDO1VBNEJKOzs7YUFFSXVxQzthQUNOQzt1QkFBUXIyRCxFQUVaczJEO2dCaERqV1gsR2dEaVdXQTtzQkFBS3gwRCxFQUFMdzBEO2tCQUFtQixxQkFGUHQyRCxFQUVaSyxNQUZZTCxFQUVaczJELFNBQWdELFFBRnBDdDJELEVBRVA4QjtnQkFEQyxVQURNOUI7WUFHUixrQkFsQ002ckIsd0JBOEJBdXFDO1lBSU47VUFMQTtnQkFWVixRQW5CZ0J2cUMsVUFtQmhCO2dCQU1BLFFBekJnQkEsVUF5QmhCOztVQWlDWSxvQkExRElBO1VBMERKO21DQUVIeW5CO21CQW5HVDBpQixXQXVDZ0JucUMsTUE0RFB5bkI7VUFEQyx5QkEzRE16bkI7O1VBZ0VoQixTQWhFZ0JBO1VBZ0VoQjtZQTlFSSxxQkFjWUE7WUFkWjtxQ0FFR3dzQixnQkFBTWp0QztjQVlHeWdCLHdCQVpIemdCO2NBWUd5Z0Isc0JBWlR3c0I7O1lBREM7VUFnSFA7O1VBQVksb0JBbkdHeHNCO1VBbUdIO1lBR1Ysd0JBQWEsa0JBdEdBQSxVQXFHUjBxQztZQUNRLHdCQXRHQTFxQyxNQXNHVDJxQztVQUZJOzs7Z0JBakdYLElBRFF0MkQsV0FDUixzQkFIZ0IyckIsTUFBTXNxQyxPQUVkajJEOztVQW1FSTtXQUZLdTJEO1dBQU5DO1dBQ0NDLElBREtGO1dBQ2I5eUIsT0FEYTh5QjtXQUVMLGdCQXJFSTVxQztVQXFFSjttQ0FFTyt3QixtQkFBVmdhOztxQkFrQk0sdUJBekZDL3FDLE1BbUVMNnFDO3FCQXFCSSxzQkF4RkM3cUMsTUFtRUM0cUMsT0FJRTdaO3FCQWVILHNCQXRGQS93QixNQW1FQzRxQyxPQUlFN1o7O2VBR2YsT0ExRVkvd0IsWUFBTXNxQyxTQTBFbEIsc0JBTkF4eUI7d0JBT0ssZUEzRU85WCxNQW1FQzRxQyxPQUlFN1o7d0JBS1YsZ0JBNUVPL3dCLE1BbUVMNnFDOztlQVlQLE9BL0VZN3FDO3dCQStFaUIsZ0JBL0VqQkEsTUFtRUw2cUM7d0JBbkVLN3FDLFlBQU1zcUMsU0FnRmxCLHNCQVpBeHlCOzBCQWFPLGVBakZLOVgsTUFtRUM0cUMsT0FJRTdaOzRCQXZFSC93QixXQXVFRyt3QixlQUhQK1osV0FwRUk5cUM7NEJBb0ZQLGVBcEZPQSxNQW1FQzRxQyxPQUlFN1o7NEJBY1YsZ0JBckZPL3dCLE1BbUVMNnFDO3NCQW9CSSx1QkF2RkM3cUMsTUFtRUw2cUM7VUFHRDs7VUEvQkU7V0FGRUc7V0FBSDcyRDtXQUNQODJELGdCQXRDWWpyQztXQXVDSixpQkF2Q0lBO1VBdUNKO3FDQUVJa3JDOztjQUtWLDBCQUxVQTtjQUtLOztzQkFDSDc3QyxnQkFBUis3Qzt3QkFUTkgsbUJBU01HLG1CQUFRLzdDOzJCQUFSKzdDOzswQkFGSkQ7b0JBSEFFOzs7cUJBSkZKO1lBYUYsSUFBSTc1QixPQVRBaTZCLE1BSkZKO1lBYUYsWUFBSTc1QjtxQkFFQyxnQkFyRFNwUixnQkFtRFZvUixTQWRLajlCO3FCQWlCSjt1QkF0RFM2ckIsZ0JBMENWcXJDLE1BTFFMLGtCQXJDRWhyQztVQXdDTjs7O1dBbkNLMXZCO1dBQUxnN0Q7V0FDTkMsa0JBTll2ckM7d0JBTVp1ckM7WUEvQkEsa0JBeUJZdnJDO1lBekJaO21DQUVhc1UsaUJBQVZtWDtjQUVMLEdBcUJjenJCLFdBdkJDc1UsZ0JBQVZtWDtlQUl3QyxXQW1CL0J6ckIsTUF2QkNzVTs7YUFEVCxrQkF3QlF0VTtVQVNxQjttQkFUckJBLFdBS05zckM7V0FJMkIsaUJBSnRCaDdELEtBTEMwdkIsV0FBTXNxQyxPQUtQaDZEO1VBV2YsZUFMSW03RCxXQURBRCxTQVZZeHJDO2dCQXNCaEIsSUFEVTByQyxjQUNWLFlBRFVBLEtBckJNMXJDOztVQThGZix3QkFBYSxvQkE5RkVBLFVBNkZIMnJDO1VBRVosaUJBL0ZlM3JDLE1BOEZYNHJDO1VBQ0osWUFGWUQsV0E3RkczckM7YUE4R1o2ckMsYUFBYTdyQztNQUNuQjtRQUFNLG1CQURhQTtRQUNiO1VBSUQ7O1dBRkl3c0I7V0FBYWp0QztXQUFQbXFEO1dBQ1RvQyxjQUphOXJDO1dBS2QsVUFGSXdzQjtXQUVKLGNBTGN4c0IsWUFJYjhyQztVQUMrRDtZQUNqRSxPQU5lOXJDO1lBT0QsSUFBVnNxQyxZQUpDOWQsVUF6TFBtZDtZQThMRSxnQkFSZTNwQyxNQU9Yc3FDLE9BSk9aO1lBS1gsWUFMa0JucUQsU0FISHlnQjs7VUFFVDtpQkFTTDthQUlIK3JDLGdCQUFnQi9yQyxNQUFNMEQ7TUFBTSxXQUFaMUQsTUFBTTBELEtBQU0sb0JBQVoxRCxNQUFvRDthQUlwRWdzQyxrQkFBa0Joc0MsTUFBTXdzQixLQUFLbjRDO01oRGpjbEMsT2dENmJLMDNELGdCQUlrQi9yQyxTQUFNd3NCLFFBQUtuNEMsR0FBTG00QyxNQUNrRDthQVcxRXlmLHNCQUFzQkM7TUFDeEIsTUFEd0JBO01BQ3hCLElBQ0lDLGNBdGFBM0M7TUFxYUosa0JBQ0kyQyxZQUZvQkQsTUFHd0I7YUFXOUNFLFNBQVNwc0MsTUFBTTF2QjtNQUNYLGtCQURLMHZCO01BQ0w7OztTQUVlbXNDO1NBQVpFO2NBQVlGO1dBQVpFLGFBSEVyc0MsVUFPUCw2QkFQT0E7UUFTUCxTQU5pQm1zQztRQU1qQjs7O1lBT0U7c0JBaEJXNzdEO2FBZ0JYOztpQkFiZTY3RCxnQkFIVm5zQyxxQkFrQkgsUUFsQkdBOztZQVdMOzs7OztjQVhXMXZCLElBR0k2N0QsZ0JBSFZuc0MscUJBYUgsUUFiR0EsYUFBTTF2QjtZQXNCWDs7O01BcEJJLFFBb0JGO2FBS05nOEQsVUFBVXRzQyxNQUFNcnFCLEVBQUUrekQ7TUFDcEIsV0FEWTFwQyxNQUFRMHBDO01BQ3BCLEdBRGtCL3pELEVBRVIsU0FGRXFxQjtNQUVpQixJQUN6QnVzQyxRQUhRdnNDLFVBQVEwcEM7TUFFUyxZQUN6QjZDLEtBSFF2c0MsU0FJdUI7YUFNakN3c0MsZ0JBQWdCeHNDLE1BQU11ckIsT0FBT2toQjtNQUMvQixZQURrQnpzQztNQUNsQixHQURrQkE7UUFHaEIsV0FIZ0JBLGNBSVp1c0MsUUFEQS9mLFFBSGtCakIsT0FBT2toQjtlQVY3QkgsVUFVZ0J0c0MsUUFJWnVzQztNQUVOLFNBTmtCdnNDO01BTWxCO1FBQ0ssU0FQYUE7ZUEvRGhCZ3NDLGtCQStEZ0Joc0MsTUExRGxCO2lCQWlFMkM7YUFPekMwc0MsYUFBYTFzQztNQUNmLGFBRGVBO01BQ2Y7UUFDQSxHQUZlQTtVQUtYLFdBTFdBLFNBdU1Ud3NCLFdBak1GLFNBTld4c0IsU0FNVSxTQU5WQTtRQU04QixZQU45QkE7Ozs7TUFIVyxXQVl2QjthQUlEMnNDLGFBQWEzc0MsTUFBTTBxQztNQUNyQixHQURlMXFDLFdBR2IsS0FIbUIwcUMsU0FBTjFxQyxVQUliLFdBSmFBLFVBQU0wcUM7TUFJYSxTQUpuQjFxQztNQUltQjtRQUdoQyxJQUFJMHBDLFNBUGVnQixVQU9uQixrQkFQYTFxQyxTQTBMVHdzQixLQW5MQWtkO2lCQUNvRDthQUl4RGtELGNBQWM1c0M7TUFDaEIsR0FEZ0JBLFVBRWQsV0FGY0EsU0E4S1Z3c0I7TUE1S21FLFNBRnpEeHNCO01BRXlEO1FBRWpFLGtCQUpRQTtRQUlSLFVBR0osSUFESzBxQyxrQkFDTCxrQkFQWTFxQyxVQU1QMHFDO1FBRkQ7OztpQkFHNkI7YUFFbkNtQyxZQUFZN3NDLE1BQU0zckIsR0FBSSxvQkFBVjJyQixvQkFBTTNyQixHQUFxQzthQUN2RHk0RCxhQUFhOXNDLGFBQVcscUJBQVhBLFFBQWlDO2FBRTlDK3NDLGtCQUFrQi9zQyxNQUFNcnFCLEdBQUksWUFBSkEsRUFBSSxRQUF3QjthQUNwRHEzRCxpQkFBaUJodEMsTUFBTXJxQixHQUFJLFlBQUpBLEVBQUksUUFBdUI7YUFDbERzM0Qsa0JBQWtCanRDLGFBQVcsT0FBWEEsU0FBOEI7YUFDaERrdEMsaUJBQWlCbHRDLGFBQVcsT0FBWEEsU0FBNkI7YUFDOUNtdEMsWUFBWW50QyxNQUFNcnFCO01BQ3BCLGtCQURjcXFCLE1BQU1ycUIsR0FDcEIsd0JBRGNxcUIsTUFBTXJxQixFQUMrQjthQUlqRHkzRCwrQkFBZ0NwdEM7TUFBVyxVQUFYQSx3Q0FLbkM7YUFHR3F0QywrQkFBZ0NydEM7VUFJWnN0QyxhQUREQyxhQURBQyxhQUREQztNQURjenRDLFlBQ2R5dEM7TUFEY3p0QyxZQUVid3RDO01BRmF4dEMsWUFHYnV0QztNQUhhdnRDLFlBSVpzdEM7O2FBU3BCSSxTQUFTMXRDO01BalhYOztjQWlYV0E7TUFFWCxzQkFGV0E7TUFHWCxNQUhXQTtNQUlYLE1BSldBO01BS1gsTUFMV0E7TUFNWCxNQU5XQTtNQU1YOztpQkFOV0E7TUF0RWUsdUJBc0VmQSxVQVVVO2FBT25CMnRDLGVBQWUzdEMsTUFBTXJxQjtNQUp2QixTQUlpQnFxQjtNQUpqQix1QkFBcUIsb0JBSUpBLFFBSnlCO01BT25CO2VBSE5BLFdBR2YsYUFIZUE7UUFLakIsWUEvV0UycEM7UUFnWEYsYUFOaUIzcEM7UUFNakIsR0FOdUJycUIsRUFPYixrQkFQT3FxQjtRQU9nQixnQkFQaEJBLE9BUUg7YUFTWjR0QyxpQkFBaUI1dEMsTUFBTXdzQixLQUFLbjRDO01BQzlCLFNBRG1CMnJCO01BQ25CLFlBQ0ssa0JBRmNBLE1BQU13c0IsS0FBS240QyxPQUVLO2FBR2pDdzVELFlBQVk3dEMsTUFBTTh0QyxNQUFNejVEO01oRHhuQjdCLE9nRG1uQkt1NUQsaUJBS1k1dEMsTUFBTTh0QyxNQUFNejVELEVBQ2tCO2FBRzFDMDVELGdCQUFnQi90QyxNQUFNM3JCO01BQ3hCLG1CQURrQjJyQixNQUNsQixzQkFEd0IzckIsS0FDYTthQUVuQzI1RCxlQUFlaHVDLE1BQU0zckI7TUFDWSxtQkFEbEIyckIsTUFDa0IscUJBRFozckIsR0FDWSxTQURaQSxHQUMrQjthQUdwRDQ1RCxhQUFhanVDLE1BQU1yd0I7TUFBMEIsdUJBQWhDcXdCLE1BQWdDLDRCQUExQnJ3QixHQUEyQzthQUc5RHUrRCxlQUFlbHVDLE1BQU1uc0I7TUFBMEIsdUJBQWhDbXNCLE1BQWdDLFVBQTFCbnNCLEdBQTZDO2FBR2xFczZELGNBQWNudUMsTUFBTXJxQjtNQUEwQix1QkFBaENxcUIsTUFBZ0MsZUFBMUJycUIsR0FBNEM7YUFHaEV5NEQsY0FBY3B1QyxNQUFNanBCLEdBQ0YsbUJBREppcEIsUUFDSSxTQURFanBCLEdBQ2U7YUFJbkNzM0QsYUFBYXJ1QyxhQUFXLHVCQUFYQSxVQUEwQzthQUN2RHN1QyxhQUFhdHVDLE1BQU11ckI7TUFBUyx1QkFBZnZyQixNQUFNdXJCLFNBQTZDO2FBRWhFZ2pCLGNBQWN2dUMsTUFBTXVyQjtNQUFTLHVCQUFmdnJCLE1BQU11ckIsU0FBOEM7YUFDbEVpakIsZUFBZXh1QyxNQUFNdXJCO01BQVMsdUJBQWZ2ckIsTUFBTXVyQixTQUErQzthQUNwRWtqQixZQUFZenVDLE1BQU11ckIsUUFBUyx1QkFBZnZyQixNQUFNdXJCLFNBQTRDO2FBVzlEbWpCLGlCQUFpQjF1QztNQUNuQixlQURtQkEsU0FDbkIsa0JBRG1CQSxZQUM2QjthQUM5QzJ1QyxlQUFlM3VDO01BQ2pCLGVBRGlCQSxTQUNqQixrQkFEaUJBLFlBQ2dDO2FBSS9DNHVDLGlCQUFpQjV1QztNQUNuQixTQURtQkE7TUFDbkIsWUFDRSxnQkFGaUJBLFNBNkNid3NCLGVBM0NzRTthQUkxRXFpQixvQkFBb0I3dUM7TUFDdEIsU0FEc0JBO01BQ3RCLFlBQ0UsZ0JBRm9CQSxTQXVDaEJ3c0IsZUFwQ3FEO2FBS3pEc2lCLHNCQUFzQjl1QyxNQUFPNnFDLEtBQU1EO01BQ3JDO2FBRCtCQztPQUMvQixNQUQrQkE7T0FDL0IsT0FEK0JBO09BQy9CLEtBRHdCN3FDO01BQ3hCO1FBRUU7Z0JBSHNCQTtTQUlsQjBwQyxTQUp5Qm1CLEtBQU1EO1NBSy9CcnJEO2lDQUpGdTRCLFVBQVF4RDs7Z0NBQU91RDs7O1NBS2IwMEIsUUFIQS9mLEtBQ0FrZCxNQUNBbnFEO2VBck1KK3NELFVBZ01zQnRzQyxRQU1sQnVzQztpQkFDcUI7YUFNekJ3QyxlQUFlL3VDLE1BQU1zVSxNQUFNbEQ7TUFDN0I7ZUFEaUJwUixnQkFBTXNVLHdCQUFNbEQsZUFFbUI7YUFROUM0OUIsZUFBZWh2QyxhQUFXLHNCQUFYQSxVQUFtQzthQUNsRGl2QyxhQUFhanZDLGFBQVcsc0JBQVhBLFVBQW1DO2FBSWhEa3ZDLGFBQWFsdkM7TUFDZixZQURlQTtNQUNmLFNBRGVBO01BQ2Y7UUFFRSxJQUNJdXNDLFFBREEvZixzQkFBSix1QkFIYXhzQixNQUlUdXNDO2lCQUNzQjthQUkxQjRDLGNBQWNudkM7TUFDaEIsYUFEZ0JBO01BQ2hCO1FBQ0EsU0FGZ0JBO1FBRWhCO1VBRUcsSUFBSXVzQyxRQVZEL2Y7VUFXSCxnQkFMYXhzQixNQUlUdXNDO1VBQ0osWUFMYXZzQztVQUliOzs7OztpQkFHQTthQUlEb3ZDLGdCQUFnQnB2QyxNQUFNc1UsTUFBTWxEO01BQzlCLFNBRGtCcFI7TUFDbEI7UUFDRSxXQUZnQkEsY0FHWnVzQyxRQURBL2YsUUFGa0JsWSxNQUFNbEQsUUFBTmtEO2VBaFB0Qmc0QixVQWdQZ0J0c0MsUUFHWnVzQztpQkFDcUI7YUFHekI4QyxhQUFhcnZDLGFBQVcsdUJBQVhBLFVBQW9DO2FBRWpEc3ZDLFdBQVd0dkM7TUFDYixTQURhQTtNQUNiLFNBQ0UsSUFBSXVzQyxRQTVCQS9mLFVBNEJKLHVCQUZXeHNCLE1BRVB1c0M7aUJBQ3NCO2FBVTFCZ0QsaUJBQWlCdnZDLE1BQU03ckI7TUFBSSxhQUFKQSxNQUFJLFdBQVY2ckIsWUFBTTdyQixxQkFBeUM7YUFHaEVxN0QsaUJBQWlCeHZDLGFBQVcsT0FBWEEsU0FBNkI7YUFFOUN5dkMsa0JBQWtCenZDO01BQVcsT0FBWEEsMkJBQW1EO2FBR3JFMHZDLHFCQUFxQjF2QyxNQUFNM3JCLEdBQUksWUFBSkEsRUFBSSxRQUFzQjthQUNyRHM3RCxxQkFBcUIzdkMsYUFBVyxPQUFYQSxTQUE0QjthQUlqRDR2QyxTQUFTejdELEdBQ1gsT0FEV0EsMkJBQ29DO2FBZTdDMDdELGtCQUFrQjd2QyxNQUFNL2E7TUFDMUIsYUFEMEJBO01BQzFCO1FBQ0UsUUFGa0IrYSxXQUFNL2EsUUFWMUIsVUFEOEJDO1FBQzlCO1VBQ1UsSUFBSi9RLEVBQUksU0FGb0IrUTtVQUVwQixXQUFKL1E7VUFBSSxXQVNVNnJCO1VBVFYsZ0JBU1VBO1FBZnBCO2lCQWlCbUQ7YUFHakQ4dkMsa0JBQWtCOXZDLGFBQVcsT0FBWEEsUUFBOEI7YUFFaEQrdkMsY0FBYy92QyxNQUFNN3JCO01BQ3RCLGNBRHNCQTtNQUN0QjtRQUNVLElBQUo4USxJQUFJLFNBRlk5UTtRQUVaLFdBQUo4UTtRQUFJO1NBRUorcUQ7VUFKVWh3Qzs7WUFXWCxNQUFRLE1BWEdBO1FBWXNCLHlCQVp0QkEsTUFJVmd3QztpQkFVa0M7YUFNdENDO1VBQW1CQyxnQkFBUUM7NkJBQVJELFVBQVFDO2FBTzNCQyxlQUFlQztNQUNYLDRCQURXQSxVQUNYLHlCQUVZO2FBRWhCQyxjQUFjdHdDLGFBQVcsT0FBWEEsUUFBMEI7YUFFeEN1d0MscUJBQXFCdndDO1VBQU9rd0MsZ0JBQVFDO01BQ3RDLGNBRHVCbndDLE1BQU9rd0M7TUFFOUIsa0JBRnVCbHdDLE1BQWVtd0M7TUFFdEM7YUFHRUssZ0JBQWdCeHdDLE1BQU9td0MsV0FBWUQ7TUFDckMsZ0JBRHlCQyxXQUFZRCxRQUUvQix3QkFERkc7TUFDRSxrQkFJSiw0QkFOZ0Jyd0MsTUFDZHF3QztNQUFKLElBRVEzd0Q7TUFDa0IseURBRGxCQSxLQUc2QjthQUVuQyt3RCxxQkFBcUJ6d0MsTUFBT213QyxXQUFZRDtNQUMxQyxnQkFEOEJDLFdBQVlELFFBRXBDLHdCQURGRztNQUNFLHNCQUlKLHFCQU5xQnJ3QyxNQUNuQnF3QyxXQUtpQzthQUVuQ0ssZ0JBQWdCMXdDLGFBQzhCLFVBRDlCQSxrQkFDMEQ7YUFFMUUyd0MsbUJBQW1CM3dDLE1BQU13SztNQUNaLElBQVg2bEMsU0FBVyxnQkFETXJ3QztNQUVNLDRCQUZOQSxNQUVNLFdBRkF3SyxPQUN2QjZsQyxVQUN3QzthQUcxQ08sK0JBQStCNXdDO1VBS2hCL2IsV0FEQXRVLFdBREN3ckIsV0FERjlGLFdBREN4aEI7TUFEZ0Jtc0IsWUFDaEJuc0I7TUFEZ0Jtc0IsWUFFakIzSztNQUZpQjJLLFlBR2Y3RTtNQUhlNkUsWUFJaEJyd0I7TUFKZ0Jxd0IsWUFLaEIvYjs7YUFRZjRzRCwrQkFBK0I3d0M7TUFBVyxVQUFYQSxrREFNbEM7YUFJRzh3QywrQkFBa0M5d0MsTUFBTW5zQixFQUFFd2hCO01BQzVDLFlBRDBDeGhCLEVBQzFDLFlBRDRDd2hCLEVBQzVDLFFBQWlEO2FBRS9DMDdDLCtCQUFrQy93QztNQUNwQyxVQURvQ0Esb0JBQ0s7YUFJdkNneEMsZ0JBQWdCaHhDO01BQVcsa0JBQVhBLHFCQUF3QztJQUczQyxJQUFiaXhDLFdBQWE7YUFXYkMsZUFWbUJseEMsTUFBTTdyQjtNaERsNEI5QixJZ0RrNEI4QjhRO01BQzNCO3FCQUQyQkE7UUFDM0I7VUFDQSxRQUYyQkE7WUFJekIsV0FKbUIrYSxVQURuQml4QztZQUtBLFFBSnlCaHNEOztVQUVYLGtCQUZLK2EsVUFEbkJpeEMsYUFDeUJoc0Q7b0JBTXhCO0lBUFksU0FlYmtzRCw2QkFBNkJueEMsTUFBTTFvQjtNQUNkOzsrQmhEajVCMUIsT2dCNkRLSyxpQmdDbTFCbUNMO01BQ2QsNEJBQ1UscUJBRklBLEdBRUk7TUFDakIsMkJoRG41QjNCLE9nRDgzQkswNUQsZ0JBa0I2Qmh4QztNQUlSLDJCaERwNUIxQixPZ0Q0NEJLa3hDLGVBSTZCbHhDO01BS1IsMkJoRHI1QjFCLE9nRDQ0QktreEMsZUFJNkJseEM7TUFLUixRQUFvQjtJQXBCNUIsU0E0QmJveEM7TUFBMkI7WUFDaEIvOEQsV0FBVyxzQkFBWEE7TUFDTixhQUFFO0lBOUJNLFNBK0JiZzlEO01BQTRCO1lBQ2pCaDlELFdBQVksc0JBQVpBO01BQ04sYUFBRTtJQWpDTSxTQW1DYmk5RCxnQ2hEcDZCTDtJZ0RpNEJrQixTQW9DYkMsaUNoRHI2Qkw7SWdEaTRCa0IsU0F3Q2JDLGtCQUFrQjM5RCxFQUFFd2hCLEVBQUU4RixFQUFFeHJCLEVBQUVzVTtNQUViLG9DQWw0Qlh1bEQ7TUFxNEJKLElBRklrSSxRQURBRDtNQUFXLElBSVhFLFdBQWE7TUFDakIsc0JBRElBO01BRUosVUFMSUQsU0FHQUM7TUFKVyxJQWNHLGlCQURELGlCQURDO01BREU7Y0FQaEJBO2NBT2dCOzs7Ozs7Ozs7Ozs7O2NuQ2wxQlZ4OEQ7O2NtQ3EwQlV0QjtjQUFFd2hCO2NBQUU4RjtjQUFFeHJCO2NBQUVzVTs7O2NBWjFCbXREO2NBR0FDO2NBSUFDO2NBQ0FDO2NBTUVFLFNBc0NIO0lBaEZjLFNBb0ZiRywyQkFBMkJDO01BQzdCO2VBRDZCQSw0REFNUjtJQTFGTixTQStGYkMsZUFBZXQ2RCxPQUFPNkU7TUFDeEIsb0JoRGorQkg7TWdEaStCRyxvQmhEaitCSDtNZ0RpK0JhO09BQU4wMUQ7UUFBTSxrQkFET3Y2RCxPQUFPNkUscUJoRGgrQjNCO01nRGsrQnlCLHlCaERsK0J6QixPZ0Q4M0JLMjBELGdCQW1HRWU7TUFFaUIseUJoRG4rQnhCLE9nRDQ0QktiLGVBcUZFYTtNQUdpQix5QmhEcCtCeEIsT2dENDRCS2IsZUFxRkVhO01BR2lCLE9BSGpCQSxHQUlEO0lBcEdZLFNBd0diQyx5QkFBeUIxNkQ7TUFDM0IscUJBQWdELHFCQURyQkEsR0FDNkI7TUFBekM7O2lCaEQxK0JsQixPZ0I2REtLLGlCZ0M0NkJ5Qkw7b0JBQzhCO0lBekcxQyxTQTZHYjI2RCxvQkFBb0J0OEQ7TUFDdEIsb0JoRC8rQkg7TWdEKytCa0I7O2lCaEQvK0JsQixPd0NvS0t3N0IsY1EwMEJvQng3QjtvQkFDd0I7SUE5Ry9CLElBb0hidThEO0lBcEhhLFNBcUhiQyxzQkFBb0IsZ0JBRHBCRCxlQUNnRDtJQUd2Qzs7S0FJTyx1Q2hDaCtCaEJ6N0Q7S2dDaStCZ0IsdUNoQ2grQmhCQztLZ0NpK0JnQixrQ0FOaEIwN0Q7SUFNZ0IsU0FPaEJJLHVCQUF1QjE1RCxJQUFJaTVEO01BQzdCLGVBRDZCQSxPQUVyQixJQUFKMTlELEVBQUksU0FGaUJ5RSxLQUd6QixNQUh5QkEsS0FHekIsT0FESXpFLENBRUg7SUFYaUIsU0FlaEJvK0Q7TUFBeUIsOEJBckJ6QkwsT0FNQUcsY0Flb0U7SUFmcEQsU0F5Q2hCRyxtQ0FDRixZQUFpQztJQTFDZixTQTRDaEJDLDZCQUE2QkMsS0FDL0IsbUJBQWtDO0lBN0NoQixTQStDaEJDLDJCQUEyQkQsS0FDN0IsV0FENkJBLE9BQ1E7SUFoRG5CLFNBa0RoQkUsNkJBQTZCRjtNQUNuQixJQUFSRyxNQUFRLDJCQURtQkg7TUFFL0IsNkJBRitCQTtNQUUvQixPQURJRyxLQUVDO0lBckRhLFNBdURoQkMseUJBQXlCSixJQUFJSztNQUMvQixZQUQrQkEsS0FBSkwsUUFDM0IsUUFBb0U7SUF4RGxELFNBMERoQk0sK0JBQW9DTjtNQVk5QixTQUFKLytELEVBUG9CUSxFQUFFMUUsRUFBRXdFLEdBQ2tCLGdDQU5SeStELE9BTVEsTUFEdEJ2K0QsRUFBRTFFLEVBQUV3RTtNQVFwQixTQUFKa2hCLFFBWEYsZ0NBRm9DdTlDO01BYzlCLFNBQUp6M0MsUUFWRixnQ0FKb0N5M0M7TUFlOUIsU0FBSmpqRSxFQVJvQndFLEdBQ3RCLGdDQVJvQ3krRCxPQU9keitEO01BU2hCLFNBQUo4UCxFQVBvQjlQLEdBQ3RCLGdDQVZvQ3krRCxPQVNkeitEO01BT2hCLHlCQUpKTixFQUNBd2hCLEVBQ0E4RixFQUNBeHJCLEVBQ0FzVSxFQUN1QjtJQVNiLFNBQVprdkQsZ0JoRG5sQ0wsT2dEaXBCSzlFLGFBNFdBZ0U7SUF1RlksU0FBWmUsZ0JoRHBsQ0wsT2dEa3BCSzlFLGFBMldBK0Q7SUF3RmEsU0FBYmdCLGlCaERybENMLE9nRG9wQks5RSxjQXlXQThEO0lBeUZjLFNBQWRpQixrQmhEdGxDTCxPZ0RxcEJLOUUsZUF3V0E2RDtJQTBGVyxTQUFYa0IsZWhEdmxDTCxPZ0RzcEJLOUUsWUF1V0E0RDtJQTJGWSxTQUFabUIsZ0JoRHhsQ0wsT2dEOGdCSzlHLGFBK2VBMkY7SUE0RlcsU0FBWG9CLGVoRHpsQ0wsT2dEZ2pCSzVHLFlBNmNBd0Y7SUE2RlksU0FBWnFCLGdCaEQxbENMLE9nRGlqQks1RyxhQTRjQXVGO0lBOEZZLFNBQVpzQixnQmhEM2xDTCxPZ0QyaEJLaEgsYUFrZUEwRjtJQStGYSxTQUFidUIsaUJoRDVsQ0wsT2dEdWlCS2hILGNBc2RBeUY7SUFnR1csU0FBWHdCLG9CaEQ3bENMLE9nRHduQktoRyxZQXFZQXdFO0lBaUdlLFNBQWZ5QixxQmhEOWxDTCxPZ0Q0bkJLL0YsZ0JBaVlBc0U7SUFrR2MsU0FBZDBCLG9CaEQvbENMLE9nRCtuQksvRixlQThYQXFFO0lBbUdZLFNBQVoyQixrQmhEaG1DTCxPZ0Rtb0JLL0YsYUEwWEFvRTtJQW9HYyxTQUFkNEIsb0JoRGptQ0wsT2dEc29CSy9GLGVBdVhBbUU7SUFxR2EsU0FBYjZCLG1CaERsbUNMLE9nRDRvQks5RixjQWlYQWlFO0lBc0dhLFNBQWI4QixpQmhEbm1DTCxPZ0R5b0JLaEcsY0FvWEFrRTtJQXVHYyxTQUFkK0I7TWhEcG1DTCxPZ0Rtc0JLckYsZUEwVEFzRDtJQXdHWSxTQUFaZ0MsZ0JoRHJtQ0wsT2dEOHNCS3BGLGFBK1NBb0Q7SUF5R2MsU0FBZGlDLGtCaER0bUNMLE9nRDZzQkt0RixlQWdUQXFEO0lBMEdnQixTQUFoQmtDLG9CaER2bUNMLE9nRHdxQkszRixpQkFxVkF5RDtJQTJHYyxTQUFkbUMsa0JoRHhtQ0wsT2dEbXFCSzdGLGVBMFZBMEQ7SUE0R2dCLFNBQWhCb0M7TWhEem1DTCxPZ0RpcUJLL0YsaUJBNFZBMkQ7SUE2R21CLFNBQW5CcUM7TWhEMW1DTCxPZ0Q4cUJLN0Ysb0JBK1VBd0Q7SUErR1ksU0FBWnNDLGdCaEQ1bUNMLE9nRGt0Qkt6RixhQTJTQW1EO0lBZ0hhLFNBQWJ1QyxpQmhEN21DTCxPZ0QydEJLekYsY0FrU0FrRDtJQWlIZSxTQUFmd0M7TWhEOW1DTCxPZ0RzdUJLekYsZ0JBdVJBaUQ7SUFtSFUsU0FBVnlDLGNoRGhuQ0wsT2dEK3VCS3hGLFdBOFFBK0M7SUFvSFksU0FBWjBDLGdCaERqbkNMLE9nRDZ1QksxRixhQWdSQWdEO0lBc0hhLFNBQWIyQyxpQmhEbm5DTCxPZ0RneUJLakYsY0E2TkFzQztJQXVIYSxTQUFiNEMsaUJoRHBuQ0wsT2dENi9CSzVDO0lBeUhpQixTQUFqQjZDO01oRHRuQ0wsT2dEeXhCS3JGLGtCQW9PQXdDO0lBMEhpQixTQUFqQjhDLHFCaER2bkNMLE9nRDYvQks5QztJQTRIZSxTQUFmK0M7TWhEem5DTCxPZ0R1MEJLNUUsZ0JBc0xBNkI7SUE2SG9CLFNBQXBCZ0Q7TWhEMW5DTCxPZ0QrMEJLNUUscUJBOEtBNEI7SUE4SGUsU0FBZmlELG1CaEQzbkNMLE9nRHUxQks1RSxnQkFzS0EyQjtJQStIa0IsU0FBbEJrRDtNaEQ1bkNMLE9nRDAxQks1RSxtQkFtS0EwQjtJQWlJZ0IsU0FBaEJtRCxvQmhEOW5DTCxPZ0Q0dkJLakcsaUJBaVFBOEM7SUFrSWdCLFNBQWhCb0Qsb0JoRC9uQ0wsT2dENi9CS3BEO0lBbUlpQixTQUFqQnFEO01oRGhvQ0wsT2dEaXdCS2pHLGtCQTRQQTRDO0lBcUlvQixTQUFwQnNEO01oRGxvQ0wsT2dEb3dCS2pHLHFCQXlQQTJDO0lBc0lvQixTQUFwQnVELHdCaERub0NMLE9nRDYvQkt2RDtJQXlJRixTQURFd0Q7TWhEcm9DTCxPZ0RnNUJLMUUsNkJBNkdBa0I7SUE0SUYsU0FERXlEO01oRHhvQ0wsT2dEKzFCS2xGLCtCQThKQXlCO0lBOElGLFNBREUwRDtNaEQxb0NMLE9nRDQyQktsRiwrQkFpSkF3QjtJQWlKRixTQURFMkQ7TWhEN29DTCxPZ0RzM0JLbEYsK0JBdUlBdUI7SUFtSkYsU0FERTREO01oRC9vQ0wsT2dEeTNCS2xGLCtCQW9JQXNCO0lBc0pGLFNBREU2RDtNaERscENMLE9nRG9rQks3SSwrQkF5YkFnRjtJQXdKRixTQURFOEQ7TWhEcHBDTCxPZ0Q0akJLL0ksK0JBaWNBaUY7SUEwSkYsU0FERStEO01oRHRwQ0wsT2dEbWpCS3JKLGtCQTBjQXNGO0lBNEpGLFNBREVnRSxxQmhEeHBDTCxPZ0Q2L0JLaEU7SUE4SkYsU0FERWlFLG9CaEQxcENMLE9nRG9qQkt0SixpQkF5Y0FxRjtJQWdLRixTQURFa0Usb0JoRDVwQ0wsT2dENi9CS2xFO0lBa0tGLFNBREVtRSxlaEQ5cENMLE9nRHVqQktySixZQXNjQWtGO0lBa0tGLFNBTU1vRSxjQUFnQnQyQyxJQUF1QnUyQyxLQUFLM0U7VUFBNUI0RTs7aUJBQVMsUUFBVEEsZ0JBQVN2MkMsYUFBVHcyQyxPQXZkcEIzSDtRQXVkc0Q7OztnQkFHakQ0SDtZQUNMLFdBSjJDSCxLQUFLM0U7WUFLaEQsV0FMb0I2RSxPQUE0QjdFO1lBS2hELGFBTG9CNkUsNEJBR2ZDOztVQURFLGtCQUZvQ0gsS0FBSzNFO1FBQzFDO0lBUFIsU0F1QkVnRixhQUFlNTJDLElBQXVCdTJDLEtBQUszRSxJQUFJaUY7TUFDakQsR0FEaUI3MkMsSUFBUyxRQUFUQSxjQUFTQyxhQUFUdzJDLE9BeGVmM0g7TUF5ZUksdUJBRDJDK0g7TUFDM0M7WUFFU0MsaUJBQUhqNkQ7UUFDVixXQUpzQzA1RCxLQUFLM0UsSUFHakMvMEQ7WUFYMkIwRSxJQVd4QnUxRDtRQVZmO1VBQU0scUJBRGlDdjFEO1VBQ2pDO2dCQUVTRSxlQUFIN047WUFDVixXQUllNmlFLE9BQTRCN0U7WUFIM0MsV0FHc0MyRSxLQUFLM0UsSUFMakNoK0Q7Z0JBSDJCMk4sSUFHeEJFOztVQURGO01BUUEsUUFHeUI7SUE1QnRDLFNBK0JFczFELGNBQWNuRixJQUFJMTlEO01BQ3BCLDhCQURvQkEsR0FDcEI7ZUFHSWdJO1FBQ0YsZ0JBTGMwMUQsSUFLTSxNQUxGMTlELEVBRWhCaUksUUFDQUMsV0FEQUQ7UUFHRjtrQkFGRUM7UUFFRixRQUMyQjs7V0FIekJBLGFBRkE3RTtVQVFJLDBCQVRZckQsRUFHaEJrSTtVQU1JO1lBRUYsU0FDQSxpQkFaVXcxRDs7NEJBY1YsU0FBVSxlQWRBQSxZQWlCTDs7UUFFWCxTQWpCSXoxRCxZQURBNUU7UUFrQkosWUFBcUIsY0FBUTtJQWxEN0IsU0FvREV5L0QsZ0JBQWtCaDNDLElBQXVCdTJDLEtBQUszRTtNaERudENuRCxHZ0RtdEN1QjV4QztPQUFPLFFBQVBBLFlBQU9DOztXQUFQM1ksMEJBQW1CLFFBQUU7TUFBZCxVQUVqQixJQUFMMVQsV0FBSyxrQkFGaUMyaUUsS0FBSzNFLElBRTNDaCtEO01BREcsa0JBRFkwVCxLQUE0QnNxRDtJQXBEaEQsU0F3REVxRixnQkFBaUJ2dUQsR0FBSUMsTUFBTWlwRDtNaER2dENoQyxtQmdEd3RDVyxJQUFMaCtELFdBQUssa0JBRFc4VSxHQUFVa3BELElBQzFCaCtEO01BQ1EsSUFBTDhJO01BQUssa0JBRllpTSxNQUFNaXBELElBRXZCbDFEO0lBMUROLFNBNERFdzZELGdCQUFpQi82RCxLQUFNQyxNQUFNdzFEO01oRDN0Q2xDLG1CZ0Q0dENvQixJQUFMOTdELFdBQUssa0JBREVxRyxLQUFZeTFELElBQ25COTdEO01BQ00sSUFBTGpDO01BQUssa0JBRk91SSxNQUFNdzFELElBRWxCLzlEO0lBOURiLFNBa0VFc2pFLFlBQVk5L0QsT0FBTysvRDtNQUNYLHFCQUNBLHdCQUROeitEO01BRUosV0FIY3RCLE9BRVZ1NkQsSUFGaUJ3RjtNQUlyQixlQUZJeEY7TUFETSxJQUlOcjZELElBSkFvQjtNQUlNLFlBQU5wQixJQUVDLE1BTkRvQixNQUlBcEIsYUFDWSxTQUxab0IsSUFNMkI7SUF6RS9CLFNBc0ZFMCtELHNCQUFzQnpGLElBQUkvK0Q7TUFBYSxVQUFiQTtPQUFhLE9BQWJBO2dCQUNHLG9CQURQKytEO2dCQUVPLG9CQUZQQTtnQkFJTyxzQkFKUEE7Z0JBS08sd0JBTFBBO2dCQU1PLHdCQU5QQTtnQkFRTyxxQkFSUEE7aUJBU08scUJBVFBBOztPQUFpQixPQUFiLytEOztjQUdUbytCLE9BSFNwK0IsY0FHaEJzaEMsTUFIZ0J0aEM7aUJBbGpCMUIrN0QsZUFrakJzQmdELElBR1p6OUIsTUFBT2xEO2dCQUlZOztjQUdsQnI2QixFQVZlL0Q7VUFVRyxjQVZQKytEO1VBVU8scUJBVlBBLElBVVhoN0QsR0FBNEQ7SUFoR3pFLFNBc0dNMGdFLGFBQVcxRixJQUFJOXZEO01oRHJ3Q3hCO01nRHF3QzhCLFVBQU5BO09BMEJTOztPQTFCSCxPQUFOQTs7Y0FTSXBPLEVBVEpvTyxPQVNDZ0IsRUFURGhCO1VBVW5CLGFBVmU4dkQsSUFTSzl1RDtVQUNwQiw2QkFWZTh1RCxJQVNRbCtEOzttQkFUSm9POztZQWFuQixJQURvQ0M7WUFDcEMsYUFiZTZ2RDtZQWNjO3FCQWRkQSxrQkFjYyxZQWR6QjBGLGFBWWdDdjFEO2NBR0FDO1VBQ3BDLGFBaEJlNHZEO1VBaUJLO29DQUFtQixZQWpCbkMwRixhQWVnQ3QxRDtXQUVoQjs7aUNBakJMNHZELElBaUJWeG1CLE9BQVFtc0I7O21CQWpCTXoxRDs7OztrQkFDK0MyQyxJQUQvQzNDLE9BQ3VDdXFDLGFBQWxCdkQ7Ozs2QkFrQmpCNTBDLEVBbkJKNE4sT0FtQkMrbUM7OzttQkFuQkQvbUM7Ozs7a0JBSzZDMk0sSUFMN0MzTSxPQUtxQ3FvRCxlQUFsQjlmOzs7OzZCQWdCakJ6ekMsRUFyQkZrTCxPQXFCRHNvQzs7O21CQXJCQ3RvQzs7OztrQkFDK0MyQyxJQUQvQzNDLE9BQ3VDdXFDLGFBQWxCdkQ7Ozs2QkFrQmpCNTBDLEVBbkJKNE4sT0FtQkMrbUM7OzttQkFuQkQvbUM7Ozs7OztrQkFLNkMyTSxJQUw3QzNNLE9BS3FDcW9ELGVBQWxCOWY7Ozs7MkJBZ0JqQnp6QyxFQXJCRmtMLE9BcUJEc29DOzs7Y0FFSm1NLElBdkJLejBDLE9BdUJSd29DLElBdkJReG9DO1VBdUJTLGFBdkJiOHZELElBdUJKdG5CO1VBQWlCLGtCQUFkaU0sSUF2QkNxYjs7Y0F3Qkw0RixJQXhCUzExRCxPQXdCUyxhQXhCYjh2RCxJQXdCTDRGLEtBQWtCLHNCQXhCYjVGOztjQXlCS3J5RCxJQXpCRHVDLE9BeUJGMjFELElBekJFMzFEO1VBeUJTLGFBekJiOHZELElBeUJFNkY7VUFBVyxtQkFBUmw0RDtNeEM5d0JoQjtld0N3dkJKLGFBSGVxeUQsSUFDeUI5b0IsWUFucEJ4QzJrQixpQkFrcEJlbUUsSUFDMkN2bEIsS0FBUTVuQzs7U0FNbEUsYUFQZW10RCxJQUt1QnZuQjtnQkF2cEJ0Q29qQixpQkFrcEJlbUUsSUFLeUN6SCxPQUdoQixTQUh3QjE3QztlQWVwQyxhQXBCYm1qRCxJQW1CSy9vQixLQUNRLHVCQXBCYitvQixJQW1CUTE5RDtnQkFHSyxhQXRCYjA5RCxJQXFCR3huQixLQUNVLHFCQXRCYnduQixJQXFCTWg3RCxHQUtTO0lBaEloQyxTQXNJTThnRSxhQUFXOUYsSUFBSTl2RDtNaERyeUN4QjtNZ0RxeUM4QixVQUFOQTtPQTZCUzs7T0E3QkgsT0FBTkE7O2NBWUlwTyxFQVpKb08sT0FZQ2dCLEVBWkRoQjtVQWFuQixhQWJlOHZELElBWUs5dUQ7VUFDcEIsNkJBYmU4dUQsSUFZUWwrRDs7bUJBWkpvTzs7WUFnQm5CLElBRG9DQztZQUNwQyxhQWhCZTZ2RDtZQWlCYztxQkFqQmRBLGtCQWlCYyxZQWpCekI4RixhQWVnQzMxRDtjQUdBQztVQUNwQyxhQW5CZTR2RDtVQW9CSztvQ0FBbUIsWUFwQm5DOEYsYUFrQmdDMTFEO1dBRWhCOztpQ0FwQkw0dkQsSUFvQlZ4bUIsT0FBUW1zQjs7bUJBcEJNejFEOzs7O2tCQUMrQzJDLElBRC9DM0MsT0FDdUN1cUMsYUFBbEJ2RDs7OzZCQXFCakI1MEMsRUF0Qko0TixPQXNCQyttQzs7O21CQXRCRC9tQzs7OztrQkFLNkMyTSxJQUw3QzNNLE9BS3FDcW9ELGVBQWxCOWY7Ozs7NkJBbUJqQnp6QyxFQXhCRmtMLE9Bd0JEc29DOzs7bUJBeEJDdG9DOzs7O2tCQUMrQzJDLElBRC9DM0MsT0FDdUN1cUMsYUFBbEJ2RDs7OzZCQXFCakI1MEMsRUF0Qko0TixPQXNCQyttQzs7O21CQXRCRC9tQzs7Ozs7O2tCQUs2QzJNLElBTDdDM00sT0FLcUNxb0QsZUFBbEI5Zjs7OzsyQkFtQmpCenpDLEVBeEJGa0wsT0F3QkRzb0M7OzttQkF4QkN0b0M7Ozs7a0JBU3NDMDBDLElBVHRDMTBDLE9BUzhCNjFELGVBQWxCcnRCO2NBQy9CLGFBVmVzbkIsSUFTZ0J0bkI7cUJBM3JCL0JtakIsaUJBa3JCZW1FLElBU2tDK0YsT0FFVCxXQUZpQm5oQjtjQWlCM0NELElBMUJLejBDO1VBMEJTLGFBMUJiOHZEO1VBMEJtRCx1QkExQm5EQSxJQTBCbUQsV0FBcERyYjs7Y0FDSmloQixJQTNCUzExRCxPQTJCUyxhQTNCYjh2RCxJQTJCTDRGLEtBQWtCLHNCQTNCYjVGOztjQTRCS3J5RCxJQTVCRHVDLE9BNEJGMjFELElBNUJFMzFEO1VBNEJTLGFBNUJiOHZELElBNEJFNkY7VUFBVyxtQkFBUmw0RDtNeENqekJoQjtld0N3eEJKLGFBSGVxeUQsSUFDeUI5b0IsWUFuckJ4QzJrQixpQkFrckJlbUUsSUFDMkN2bEIsS0FBUTVuQzs7U0FNbEUsYUFQZW10RCxJQUt1QnZuQjtnQkF2ckJ0Q29qQixpQkFrckJlbUUsSUFLeUN6SCxPQUdoQixTQUh3QjE3QztlQWtCcEMsYUF2QmJtakQsSUFzQksvb0IsS0FDUSx1QkF2QmIrb0IsSUFzQlExOUQ7Z0JBR0ssYUF6QmIwOUQsSUF3Qkd4bkIsS0FDVSxxQkF6QmJ3bkIsSUF3Qk1oN0QsR0FLUztJQW5LaEMsU0EyS0VnaEUsV0FBU250QyxFQUFFbW5DO1VBQWF2OUI7YTVDaUtwQnFVO3dCNEMvSkM1bUMsS0FBTyxhQUZEOHZELElBRU45dkQsS0FBTyxrQkFGSDJvQixFQUFFbW5DLElBRTBCOztlQUZidjlCO0lBM0sxQixTQWdMRXdqQyxZQUFVcHRDLEVBQUVtbkM7TWhELzBDakIsSWdEKzBDOEJ2OUIsb0I1QzJhckJ1VixhNEMzYU1uZixFQUFFbW5DLElBQWF2OUI7SUFoTDNCLFNBbUxFeWpDLFdBQVNsRztVQUFjdjlCO2E1Q3dhbkJ1Viw0QkoxdkRULGVnRGsxQzRCdlY7SUFuTHpCLFNBc0xFMGpDLFVBQVFuRztNQUFNLG9CaERyMUNuQjtNZ0RxMUNtQixzQmhEcjFDbkIsT2dEMDBDS2dHLGdCQVdRaEcsVUFBeUI7SUF0TG5DLFNBdUxFb0csU0FBTzNqQyxLQUFNLDRCQXpWYjY5QixlQXlWTzc5QixJQUErQjtJQXZMeEMsU0F3TEU0akMsVUFBUTVqQyxLQUFNLDRCQXpWZDg5QixlQXlWUTk5QixJQUErQjtJQXhMekMsU0EwTEU2akMsU0FBU3p0QztVQUFXNEo7YTVDa0poQnFVO3dCNENoSkM1bUM7aUJBQU87MEJBRkgyb0IsV0FFVW1uQyxLQUFPLG9CQUFQQSxJQUFkOXZELElBQXVDLEVBQUM7O2VBRnpCdXlCO0lBMUx0QixTQStMRThqQyxRQUFROWpDLEtBQU0seUJBQWM3a0MsR0FBSyxPQUFMQSxDQUFNLEVBQTFCNmtDLElBQStCO0lBL0x6QyxTQTBRRStqQyxRQXpFUzN0QztNQUNILElBRGM0SixhQUNkLG9CQUNFLHdCQURONytCO01BQ00sU0FDTjg4QixJQUFFeHdCO1FBQ0osYUFGRTh2RCxJQUNFOXZEO1FBRUYsa0JBTE8yb0IsRUFLUCx1QkFKQWoxQixFQUNBbzhELEtBRzhCO01BSHhCLG1CQUNOdC9CLE1BSGtCK0I7SUFqTXRCLFNBME1FZ2tDLFVBQVFoa0MsS0FBTSxlQWwxQ2QrMEIsS0FrMUNRLzBCLElBQXFCO0lBMU0vQixTQTRNRWlrQyxVQUFVN3RDO01BQ0osSUFEZTRKLGFBQ2Ysb0JBQ0Usd0JBRE43K0I7TUFDTSxTQUNOODhCLElBQUV4d0I7UUFDSixhQUZFOHZELElBQ0U5dkQ7UUFFRixrQkFMUTJvQixFQUtSLHVCQUpBajFCLEVBQ0FvOEQsS0FHOEI7TUFIeEIsbUJBQ050L0IsTUFIbUIrQjtJQTVNdkIsU0FxTkVra0MsU0FBU2xrQyxLQUFNLGlCQTcxQ2YrMEIsS0E2MUNTLzBCLElBQXNCO0lBck5qQyxTQXlORW1rQztNQUNGLGVBNVhFdEcsaUJBNFhGLHNCQTNYRUMsZ0JBNFg2QjtJQUV4QixRQUpMcUc7SUFJSyxTQVNMQywrQkFBc0M1NEMsTUFDakNuc0IsRUFBU3doQixFQUFXOEYsRUFBVXhyQjtNQUNyQywrQkFGd0Nxd0IsTUFDakNuc0IsRUFBU3doQjtNQUNoQixZQUQyQjhGO01BQzNCLFlBRHFDeHJCO01BQ3JDLFFBRXdCO0lBYmpCLFNBZ0JMa3BFLCtCQUFzQzc0QztNQUN4QyxVQUR3Q0Esd0NBRUc7SUFLM0MsU0FERTg0QztNaERsNUNMLE9nRHE0Q0tGLCtCQXhZQXZHO0lBMlpGLFNBREUwRztNaER2NUNMLE9nRDQ0Q0tGLCtCQS9ZQXhHO0lBMlpGLFNBVUUyRyxVQUFRcmpFO01BQ0EsSUFEVzYrQixhQUNYLHdCQURBNytCO01BQ0EsU0FDTmkxQixFQUFFM29CLEtBQU0sYUFEUjh2RCxJQUNFOXZELEtBQU0sc0JBRFI4dkQsTUFDb0Q7TUFEOUMsbUJBQ05ubkMsSUFGaUI0SjtJQVZyQixTQStCRXlrQywrQkFBK0JqNUM7VUFJWnN0QyxhQUREQyxhQURBQyxhQUREQztlQUtmeUwsVUFBVXJsRSxFQUFFZ0o7UWhENzdDbkIsNEJnRDY3Q2dELElBQUx4SSxXQUFLLGtCQUEvQlIsRUFBMEJRO1FBQWdCLE9BQXhDd0k7TUFDVSwyQmhEOTdDN0IsT2dENjdDT3E4RCxVQUxlekw7TUFPUSwyQmhELzdDOUIsT2dENjdDT3lMLFVBSmdCMUw7TUFNTztNQUNBLDJCaERoOEM5QixPZ0Q2N0NPMEwsVUFIZ0IzTDtNQUtPO01BRUMsMkJoRGo4Qy9CLE9nRDY3Q08yTCxVQUZpQjVMO01BTU87SUF6QzVCLFNBMkNFNkwsK0JBQStCM2tDO01BQ3RCLElBQVA0a0MsS0FBTywrQkFEc0I1a0M7TUFDdEIsU0FDUDZrQyxjQUFjaGxFLEdBQUksa0JBRGxCK2tFLHNCQUNjL2tFLEdBQXNDO01BRDdDLFNBRVBpbEUsZUFBZWpsRSxHQUFJLGtCQUZuQitrRSxzQkFFZS9rRSxHQUF1QztNQUYvQyxTQUdQa2xFLGVBQWVsbEUsR0FBSSxrQkFIbkIra0Usc0JBR2Uva0UsR0FBdUM7TUFIL0MsU0FJUG1sRSxnQkFBZ0JubEUsR0FBSSxrQkFKcEIra0Usc0JBSWdCL2tFLEdBQXdDO01BSmpELFVBQ1BnbEUsY0FDQUMsZUFDQUMsZUFDQUMsZ0JBQzREO0lBR2hFLFNBREVDO01oRDM4Q0wsT2dEdTdDS1IsK0JBMWJBNUc7SUFpZEYsU0FERXFIO01oRDc4Q0wsT2dEbThDS1AsK0JBdGNBOUc7SUFpZEY7OztPQXh6QkU1RDtPQWljQThFO09BemtCQTdHO09BMGtCQThHO09BdmNBbkY7T0FrY0E4RTtPQWpjQTdFO09Ba2NBOEU7T0FoY0E3RTtPQWljQThFO09BaGNBN0U7T0FpY0E4RTtPQTFkQXZGO09Ba2VBK0Y7T0EvZEE5RjtPQWdlQStGO09BdmVBbEc7T0FxZUFnRztPQTFkQTVGO09BNmRBK0Y7T0ExZEE5RjtPQTJkQStGO09BcmRBN0Y7T0FzZEE4RjtPQXpkQS9GO09BMGRBZ0c7T0F0WkFuRjtPQXlaQXNGO09BeFpBckY7T0F1WkFvRjtPQWxhQXRGO09BaWFBcUY7T0E5YUF0RjtPQWRBRjtPQStiQTJGO09BemJBMUY7T0E0YkE2RjtPQXZjQS9GO09BcWNBNkY7T0F2Y0E5RjtPQXdjQStGO09BelVBMUU7T0FtVkFpRjtPQW5UQTFFO09Bb1RBMkU7T0EzVkFwRjtPQTZWQXFGO09BeFZBcEY7T0F5VkFxRjtPQTVUQS9FO09BWUFJO09Ba1RBNEU7T0ExU0EzRTtPQTJTQTRFO09BaFNBMUU7T0FrU0E0RTtPQXJTQTdFO09Bb1NBNEU7T0EvWEEvRjtPQWtZQWlHO09BL1hBaEc7T0FnWUFpRztPQTlYQWhHO09BK1hBaUc7T0E5YUF4RztPQTBaQXlGO09BalpBeEY7T0FrWkF5RjtPQTlYQXRGO09BaVlBd0Y7T0FuWUF6RjtPQW9ZQTBGO09BM1lBM0Y7T0F3WUF5RjtPQTFXQW5GO09BOFhBaUc7T0E3WEFoRztPQThYQWlHOztPQXhtQkFqSjtPQWdrQkFnSDtPQXBqQkEvRztPQXFqQkFnSDtPQXJpQkF6RztPQXVtQkFxSjtPQTNtQkF6SjtPQW1tQkFxSjtPQWxtQkFwSjtPQXNtQkFzSjtPQXJtQkFySjtPQW1tQkFvSjtPQWxtQkFuSjtPQXNtQkFxSjtPQTVRQXBGO09BcVBBMEU7T0EvUUEvRTtPQXVSQWtGO09BcFJBakY7T0FzUkFrRjtPQWhUQXJGO09BeVNBa0Y7T0E1UkFqRjtPQThSQWtGO09BdGtCQTFJO09BOGtCQTZJO09BdGxCQTlJO09Bd2xCQStJO09BM0tBbkU7T0FvQkFLO09BQ0FDO09BaEJBTDtPQVdBRztPQU1BRztPQWVBRTtPQTlDQVg7T0FYQUY7T0FtRkFjO09BR0FDO09BR0FFO09BR0FDO09BS0FFO09BR0FFO09BNEdJdUQ7T0FpQkpNO09BUUFHO09BcUJBQztPQUlBQztPQUlBQztPQTBIQWE7T0FDQUM7T0FDQUM7T0FrQkFJO09BV0FFO09BdEJBSjtPQVpBTDtPQVJBRjtPQWVBTTtPQVZBTDtPQTBGQU87T0E5REFFO09BdURBTztPQU9BVDtPQXZCQU87T0FLQUM7T0FsQkFIO09BT0FDO09BNTFCQWhNO09BeWlCQTRHO09BeGlCQTNHO09BeWlCQTRHO09BNlZBdUY7T0FvQkFRO09BUkFOO09BVUFPO0lBQ0Y7UUN2eUNJQzthQUtBQyxVQUFVQztNQUNaO1FBQ1UsSUFBSjlpRSxFQUFJLFdBRkU4aUU7UUFFRixRQUFKOWlFO1FBQUk7Z0JBRkU4aUU7UUFFRixVQUFKOWlFLEVBSWEsUUFOUDhpRTtlQUVOOWlFOzs7O1VBT0osUUFkQTRpRSxVQWNBLDJCQWRBQTttQkFrQkM7YUFHREcsVUFBVUQsSUFDWixPQURZQSxZQUdQLFVBSE9BLEdBR0s7YUFRZkUsa0JBQWtCRjtNQUNaLElBQUo5aUUsRUFBSSxVQURZOGlFLElBQ1osR0FEWUEsTUFFRixrQkFDbEIsT0FGSTlpRSxDQUVIO2FBR0NpakUsYUFBYUgsSUFDUixVQURRQSxJQUNSLE9BRFFBLEtBRU47YUFLUEksbUJBQW1CSixJQUFLLGFBQUxBLFNBQXlCO2FBRTVDSyxjQUFjTDtNQUNoQixTQURnQkE7TUFDaEI7Ozt5QkFDc0I7UUFDTSxJQUFmNzRDO1FBQWUsT0FBZkEsTUFFOEI7YUFHekNtNUMsV0FBV04sSUFDYixPQURhQSx5QkFHUTthQUtuQk8sWUFBWVAsSUFBSyxhQUFMQSxNQUFvQzthQUVoRFEsd0JBQXdCUixJQUFLLGtCQUFvQzthQXlTbkVTLGFBdlNRVDtNQUNSLGlCQURRQSxNQUVFLGFBRE5VO01BRUosUUFGSUE7TUFFSixRQUhRVjtNQUdSLE9BREluMkMsR0FHRDthQUtEODJDLFVBQVVsbUMsTUFBTXVsQyxJQUNsQix3QkFEa0JBLElBQ2xCLE9BRFl2bEMsS0FFUDthQUdIbW1DLFlBQVlubUMsTUFBTXVsQyxJQUFLLGlCQUFYdmxDLGNBQU11bEMsR0FBNkI7YUFFL0NhLFdBQVdwbUMsTUFBTXVsQyxHQUFHOWlFO01BQ3RCLFNBRG1COGlFLE1BQUc5aUUsR0FDdEIsbUJBRGF1OUIsTUFBTXVsQyxHQUVDO1FBR2xCYzthQUVBQyxTQUFPQyxNQUFNeDVEO01BUUc7O2NBbkdoQnM0RDs7Ozs7Y0EyRmF0NEQ7Y0FRRyxTQVZoQnM1RDtjQUVPRSxNQVVWO2FBR0dDLGNBQVl6bUU7TUFDZCxzQ0FEY0E7TUFDZCxTQUVJZ047UUFDRixHQUZFM0osT0FEQS9ILEtBR2dCO1FBQ1YsSUFBSm9ILEVBQUksZ0JBTEkxQyxFQUNWMUU7UUFJTTtlQUFKb0gsQ0FFSDtNQU5ILGtCQUVJc0ssS0FLbUI7O0lBR0wsU0FBaEIwNUQsc0JqRDFSUCxPaURrUU9IO0lBd0JnQixJQXFEZGxqRTtJQXJEYyxTQThDaEJzakUsa0JBQWtCNWlFO01BQUssc0JBQUxBLElBQUssaUJBQXFDO0lBOUM1QyxTQWtEaEI2aUUsa0JBQWtCN2lFLElBQU0saUJBQWlCO0lBbER6QixTQW9EaEI4aUUsUUFBUUMsY0FBY04sTUFBTXppRTtNQUU5QjtlQUlJaUo7UUFDRixHQUpFMVIsT0FDQTJoQixRQUc4QixJQUFKdmEsRUFBSSxlQUw5QitCLElBQ0FuSixNQUk4QixjQUFKb0g7UUFDNUIsR0FIRXFrRSxPQUdXO1FBQ0osZUFUbUJoakUsR0FFMUJVLE1BREFwQjtRQVFPLGFBTFA0WjtrQkFDQThwRCxXQUtpQixXQVZYRCxjQUFvQi9pRTtrQkFHMUJ6SSxTQVNFLGVBVkZtSixPQVlDO01BWkwsZ0JBRndCK2hFLE1BTXBCeDVELEtBU2E7SUFzQmpCLElBSUVnNkQsTUFKRixRQXZDRUosNEJsQy9TRnprRTtJa0NzVkEsU0FNRThrRSxhQUFhQyxRQUdidjZDO01BRkYsd0JBRUVBO1FBQ1MsSUFBTDVvQixHQUFLLFdBSkltakUsUUFHYnY2QztlQTlDQWs2QyxRQU5BRixxQkFvREFoNkMsTUFDSTVvQjtNQUZHLE9BSlBpakUsS0FPK0M7SUFHckMsU0FHVkcsZ0JqRHBZUCxPaUR5WE9GLGFsQzFWRnJqRTtJa0NtV2dCLFNBR2R3akUsb0JqRHJZUCxPaUR5WE9ILGFsQzNWRnBqRTtJa0NvV2dCLFNBS2R3akUsZUFBYXRqRSxJakR2WXBCLE9pRDhVTzhpRSxRQUZBRCxxQkEyRGE3aUUsT0FDMEI7SUFOekIsU0FTZHVqRSxTQUFTOUI7TUFDWCxTQURXQTtNQUNYO09BSWlDOztRQUpqQyxrQkFFRSxJQURhemhFLFdBQ2IsNkJBRGFBO1FBRWEsSUFBUHdqRTtRQUFPLDZCQUFQQSxNQUNjO0lBZG5CLElBaUNaQztJQWpDWSxTQWdDZEMsYUFFR1gsY0FBYy9pRTtNQUNsQjtRQUFJLGNBRGNBLEdBRGZ5akU7Ozs7VUFLQyxJQURFaEMsR0FDRixRQUpBc0IsaUJBQWMvaUU7VUFJZCxnQkFKY0EsR0FHWnloRSxJQUpIZ0M7VUFLQyxPQURFaEM7UUEzQlAsV0E4Qks7SUFJaUIsU0FBcEJrQztNakQ5YVAsT2lEa2FPRCxhQXRGQWI7SUFrR29CO2FBY3RCZSxVQUFVM25FLEdBQUksc0JBQUpBLEVBQTBCO0lBZGQsU0FnQnRCNG5FLGlCQUFpQmxsRTtNQUNULDBDQURTQSxHQUN1QztJQWpCbEMsU0FvQnRCbWxFLGlCQUFpQkM7TUFFakIsMENBRmlCQSxTQUtOO0lBekJXLFNBb0N0QkM7TUFDRixnREFBd0Q7SUFyQ2hDLFNBd0N0QkM7TUFDRixnREFBcUQ7SUF6QzdCLFNBZ0R0QkMsbUJBQW1CdmxFLEVBQUV3bEU7TWpEOWQxQixPaUQ0YktQLFVBK0JGLHlCQUdxQmpsRSxFQUFFd2xFLElBQ2dCO0lBakRmLFNBa0Z0QkMsZ0JBQWdCM0MsR0FBRzlpRTtNQUNaLElBQUx3bEUsR0FBSyxrQkFEUzFDO01BQ1QsT0FBTDBDLE9BRGlCeGxFLEVBRU4sd0JBRkc4aUUsSUFHbEIsbUJBSHFCOWlFLEVBQ2pCd2xFLEdBRW1CO0lBckZDLFNBNEVsQkUsV0FXVTVDLEdBUGRqckQ7TUFIRixVQUdFQTtRQVFPLElBQUwydEQsR0FBSyxrQkFETzFDO1FBQ1AsY0FBTDBDO2lCQUVNLHdCQUhNMUM7d0JBQ1owQztvQkFHTSx3QkFKTTFDLElBSU4sZ0JBSk1BO21CQUtULHNCQUpIMEM7Z0JBUkYzdEQ7T0EzQkY7U0FBUSxnQkFrQ1FpckQsSUFqQ1QsU0FpQ1NBO1NBakNUO1dBQXVCLFNBRDFCOWlFO1dBQzBCOzs7O1d6QzRDeEIsYXlDekNGLHdCQThCWThpRTtXQTdCUDs7TUFzQkYsdUJBT1NBLEdBUGRqckQsSUFBeUI7SUFoRkgsU0FpR3RCOHRELFdBQVc3QyxJQUF3Qix1QkFBbkIsYUFBTEEsTUFBNEI7SUFqR2pCLFNBcUd0QjhDLFdBQVc5QztNQUNQLElBR0p4bEUsRUFISSxhQURPd2xFO01BQ1AsNEJBR0p4bEU7O2lCQUFlLG1DQUFmQTs7Z0JBQXdEO0lBekdsQyxTQXNIdEJ1b0U7TUFBNkI7OztpQkFDdEI7aUJBQ0E7aUJBQ0E7aUJBQ0E7aUJBQ0E7O2lCQUNNOztNQUNSLDZCQUFZO0lBN0hLLFNBbUl0QkMsa0JBQWtCemlCLEtBQUt5ZjtNQUN6QixPQURvQnpmO21CQUNoQjEyQixJQU1nQixXQUFPLGFBUEZtMkM7bUJBQ3JCbjJDLElBSWdCLFdBQU8sYUFMRm0yQzttQkFDckJuMkMsSUFHZ0IsV0FBTyxhQUpGbTJDO21CQUNyQm4yQyxJQUtnQixXQUFPLGFBTkZtMkM7b0JBQ3JCbjJDLElBRStCLGFBSFZtMkM7TUFHMkIsSUFLaEQ1akUsRUFMZ0Qsc0JBRmhEeXRCO01BUVEsU0FEUnp0QixZQUNRLGdCQVJSeXRCO09BUXFDLGFBUnJDQSxNQU9BenRCO01BQzRCLE9BUjVCeXRCLEdBUTZEO0lBNUl6QyxTQW9KdEJvNUMsWUFBWWpELElBQXdDLDRCQUFuQixhQUFyQkEsSUFBd0M7SUFwSjlCLFNBdUxsQmtELHdCQUF3QnpvQyxNQUFNdWxDO01qRHJtQnZDLElpRHFtQmlDcHlCO01BQzlCO2lCQUQ4QkEsUUFDWixPQURZQTtRQUV0QixJQUdOMXdDLEVBSE0sVUFGNEI4aUU7UUFHakMsR0FIaUNBLE1BR1osT0FITXB5QjtRQUk5QixTQUNFMXdDOztZQUlZLHdCQVRnQjB3QyxRQUFNb3lCLElBQU5weUI7O2tCQUs1QjF3QztXQUNZLHVCQU5nQjB3QyxRQUFNb3lCLEdBS2xDOWlFLEdBTDRCMHdDO1FBV3ZCLE9BWHVCQSxRQVdsQjtJQWxNWSxTQW9RdEJ1MUIsMEJBL0R3QjFvQyxNQUFNdWxDO01BQ2hDLFNBRDBCdmxDLE1BQ1I7TUFDVixJQUFKdjlCLEVBQUksa0JBRndCOGlFO01BRXhCLE9BQUo5aUUsYUFNUSwwQ0FOUkE7TUFBSSxJQUdGMHdDLFFBQVEsV0FMWW5ULE1BQU11bEMsR0FFNUI5aUU7TUFHVSwrQkFBUjB3QyxRQUwwQm95QixHQVFvQztJQTdNNUMsU0FrT3RCb0QsZ0JBQWdCQyxNQUFNQyxPQUFPM1IsUUFBTXFPO01BR3JDLFNBSCtCck8sUUFHYjtNQUNWLElBQUo1OEMsSUFBSSxrQkFKNkJpckQ7TUFLbEMsY0FMcUJzRCxPQUlwQnZ1RDtRQUVVLHVCQU5pQjQ4QyxRQUFNcU8sR0FJakNqckQsS0FuQmdCMGxCO1FBQ2xCO21CQURrQkEsTUFDQSxPQURBQTtVQUVWLElBR052OUIsRUFITSxVQWEyQjhpRTtVQVpoQyxHQVlnQ0EsTUFaWCxPQUhOdmxDO1VBS1QsY0FVYTZvQyxPQVZwQnBtRTtZQUNZLHVCQU5JdTlCLE1BZWlCdWxDLEdBVmpDOWlFLEdBTGdCdTlCO29CQUtoQnY5QjtZQUlZLHdCQVRJdTlCLE1BZWlCdWxDLElBZmpCdmxDO1VBV1gsT0FYV0E7TUF3QlIsMENBTFIxbEIsSUFKY3N1RCxPQVN5RDtJQTNPbkQsU0E4T3RCRyx1QkFBa0IsK0JBRVI7SUFHUSxTQUFsQkM7TWpEanFCTCxPaURncEJLTCwyQkFZQUk7SUFLa0IsU0FFbEJFLHNCQUFpQiwrQkFFUDtJQUdPLFNBQWpCQztNakR4cUJMLE9pRGdwQktQLDBCQW1CQU07SUFLaUIsU0FFakJFO01BQWdCOzs7OztNekMxSlosbUJ5QzRKTTtJQUdhLFNBQXZCQztNakQvcUJMLE9pRGdwQktULGdDQTBCQVE7SUFLdUIsU0FLdkJFLFVBQVVycEMsTUFBTXVsQztNQUNWLHdCQURVQSxJQUNWLFNBQUo5aUU7TUFBSTs7Z0JBRUMsa0JBSEd1OUIsTUFBTXVsQyxHQUNkOWlFOztpQkFHSyxrQkFKR3U5QixNQUFNdWxDLEdBQ2Q5aUU7TUFJRyxPQUxLdTlCLEtBS0E7SUFWYSxTQWF2QnNwQywrQkFBbUN0cEMsTUFBTXVsQztNQUMvQixJQUFScHlCLFFBQVEsVUFEeUJuVCxNQUFNdWxDO01BQy9CLGlDQUFScHlCLFFBRHVDb3lCLEdBRVQ7SUFmVCxTQTBDdkJnRSxvQkFBb0J6akIsS0FBS3JKLFFBQU04b0I7TUFDakMsT0FEc0J6ZjtlQUVKLHVCQUZTckosUUFBTThvQjtlQUdmLHNDQUhTOW9CLFFBQU04b0I7O1NBSnJCLHNCQUllOW9CLFFBQU04b0IsSUFuQjNCLG9CQW1CMkJBO1NBbkIzQixVQUNKOWlFO1dBQ1ksSUFBUnU5QixNQUFRLFdBSE1tVCxRQW9CYW95QixHQWxCL0I5aUU7V0FDWSxTQUFSdTlCLE1BQ2MsT0FEZEE7V0FBUSxJQUVSMWxCLElBQUksVUFldUJpckQ7V0FkNUIsR0FjNEJBLE1BZFAsT0FIcEJ2bEM7V0FBUTtXQUlaLFNBRkkxbEI7O2NBSW9CLGlDQU5wQjBsQixNQWlCMkJ1bEMsR0FmM0JqckQsS0FlMkJpckQ7d0JBZjNCanJEOzs7OzswQkFLcUIsa0NBUHJCMGxCLE1BaUIyQnVsQyxHQWYzQmpyRCxLQWUyQmlyRDtXekN6TTNCO29CeUM2TGdDLGdDQUxoQ3ZsQyxNQWlCMkJ1bEMsR0FmM0JqckQsS0FlMkJpckQ7b0JBVHhCLHdCQVJIdmxDLE1BaUIyQnVsQztTQVIxQixpQ0FaYXB5QixRQW9CYW95QjtlQUtmLHNCQUxTOW9CLFFBQU04b0I7ZUFNZixpQ0FOUzlvQixRQUFNOG9CO2dCQU9mLDRCQVBTOW9CLFFBQU04b0IsSUFPYztJQWpEdEIsU0F1RHZCaUUscUJBQXFCeHBDLE1BQU11bEM7TUFDN0IsU0FEdUJ2bEMsTUFDTCxPQURLQTtNQUVmLElBR052OUIsRUFITSxVQUZxQjhpRTtNQUcxQixPQUgwQkE7ZUFBTnZsQzttQkFLckJ2OUI7aUJBTHFCdTlCO2lCQU1HLG1DQU5IQSxNQUFNdWxDLEdBSzNCOWlFLEdBTDJCOGlFLEdBT2pCO0lBOURhLFNBa0V2QmtFLG1CQUFtQnpwQyxNQUFNdWxDO01BQzNCLFNBRHFCdmxDLE1BQ0gsT0FER0E7TUFFYixJQUFKdjlCLEVBQUksVUFGbUI4aUU7TUFHeEIsR0FId0JBLE1BR0gsT0FISHZsQztnQkFFakJ2OUIsZUFLRyxPQVBjdTlCO01BTWdCLGlEQU5oQkEsTUFBTXVsQyxHQUV2QjlpRSxHQUZ1QjhpRSxHQU9mO0lBekVhLFNBb0h2Qm1FLFdBQVdqdEIsUUFBTWt0QixVQUFVcEU7TUFuQ2pCO3VCQW1DQzlvQixRQUFnQjhvQjtPQW5DakIsZ0NBQVJ2bEMsTUFtQ3lCdWxDO2VBQ3pCcHlCLFFBQ2MsVUFEZEEsUUFEZXcyQjtNQW5DUCxJQXNDUmxuRSxFQUFJLFVBSHFCOGlFO01BSTFCLEdBSjBCQSxNQUlMLFVBSHBCcHlCLFFBRGV3MkI7TUFLbkIsVUFGSWxuRTtRQUlVOzRCQU5WMHdDLFFBRHlCb3lCLEdBR3pCOWlFO1NBS2Msa0JBRFp5MEQsUUFQYXlTO1NBU2dCO1VBRjdCelM7O1dBQ0EwUyxjQUM2QixxQkFEN0JBLFlBUnVCckU7OztRQVUzQiw2QkFESXVELFFBVHVCdkQsSUFRdkJxRTtNQUlKLDZCQVhFejJCLFFBRHlCb3lCLElBQVZvRSxVQVlxQjtJQWhJZixTQW1JdkJFLDhCQUE4QjdwQyxNQUFNdWxDLEdBQUcvd0QsTUFBTXZXO01BQy9DLFNBQUlnWSxVQUFVeFQ7UUFDWixZQURZQSxlQUdWLGFBSFVBLHFCQUlKO01BSlY7aUNBRCtDeEU7T0FDL0MsV0FEZ0MraEM7T0FDaEMsS0FLSTU4QjtPQUxKOztZQU9BL0g7UUFDRTtVQUFRLGdCQVQ0QmtxRSxJQVVsQixlQUFVLGdCQVZpQnRuRSxJQVEvQzVDO1VBRUssYUFEQ29ILFlBQ3FDLFdBVkYrUjtVQVVVLFNBSC9DMitCLFdBSWlCLFdBWG9CMytCO1VBWTlCLHdCQUxQMitCLFdBUGtDb3lCLEdBU2hDOWlFO1VBQUksU0FEVnBIOzs7TUFNQSxPQVBJODNDLFVBT0U7SUFqSm1CLFNBb0p2QjIyQixlQUFlOXBDLE1BQU0ycEMsVUFBVXBFO01BQ2pDLGVBRGlCdmxDLFVBQ2pCLGFBQWdCLGFBRGlCdWxDO01BQ08sUUFBTTtNQUE5QztPQUNZLGtCQUZLdmxDLE1BQWdCdWxDO09BRXJCLFdBQVJweUI7T0FBUSxhQUNJLGFBSGlCb3lCO01BR08sUUFBTTtNQUY5QyxJQUdNLFlBSjJCQTtNQUkzQixTQUNKOWlFOzs7O1lBNkJZO2dDQWhDVjB3QyxRQUY2Qm95QixHQUsvQjlpRTthQTZCWSxXQUFSZzZDO2FBQVEsYUFDSSxhQW5DZThvQjtZQW1DUyxRQUFNO1lBQWdCO3FCQUQxRDlvQixRQWxDMkI4b0IsR0E3Vy9Cd0M7Ozs7a0JBa1hBdGxFO1VBQ1k7OEJBSlYwd0MsUUFGNkJveUIsR0FLL0I5aUU7V0FDWSxXQUFScW1FO1dBQVEsYUFDSSxhQVBldkQ7VUFPUyxRQUFNO1VBRGxDO1dBRVJ3RTtZQUFRLDhCQUZSakIsUUFOMkJ2RCxHQTdXL0J3QztVQXNYZ0IsU0FEWmdDLGFBQ1ksYUFUZXhFO1lBVVgsb0JBVldBLElBVVg7Ozs7O2dCQUFkeUUsaUJBRkZELFFBSU8scUJBSlBBLFFBUjJCeEU7WUFhYixTQUhaeUUsYUFHWSxhQWJhekU7Y0FjVCxJQUNkanJELElBRGMsVUFkU2lyRDtjQWNULFVBQ2RqckQ7Z0JBQ1ksdUJBTmQwdkQsUUFWeUJ6RSxHQWV2QmpyRDtnQkFFZ0IsU0FEWjJ2RCxhQUNZLGFBakJPMUU7a0JBa0JmLHNCQWxCZUE7O29CQXFCSDt1Q0FMaEIwRSxRQWhCU047cUJBZ0JUTzs7O3VCQUtJTixjQUNpQixxQkFEakJBLFlBckJlckU7Ozs7b0NBZ0JuQjJFO2tCQUVJLElBRkpDOzs7Z0JBQVEsSUFGWkMsUUFFSUQ7O21CQUZKQyxRQUpGSjtjQWVjLFNBWFpJLGFBV1ksYUF6Qlc3RTtnQkEwQm5CLElBQ0pockQsSUFESSxVQTFCbUJnckQ7MEJBMkJ2QmhyRCxtQkFJSyxPQWpCTDZ2RDtnQkFZSTtpQkFFUSxtQkFkWkEsUUFkdUI3RSxHQTJCdkJockQ7aUJBQ1ksV0FBUjh2RDtpQkFBUSxhQUNJLGFBN0JPOUU7Z0JBNkJpQixRQUFNO2dCQUFnQixzQ0FEMUQ4RSxRQTVCbUI5RTtjQXlCbUIsT0FYMUM2RTtZQUR3QyxPQUgxQ0o7VUFEd0MsT0FEMUNEO2tCQUhKdG5FO016Q3hUSTtReUN5VlE7NEJBcENWMHdDLFFBRjZCb3lCLEdBSy9COWlFO1NBaUNZLFdBQVJ5MEQ7U0FBUSxhQUNJLGFBdkNlcU87UUF1Q1MsUUFBTTtRQUFnQjtpQkFEMURyTyxRQXRDMkJxTyxHQTdXL0J3QztNQXNaSyx1QkFBZ0I7SUE3TEUsU0FnTXZCdUMscUJBQXFCdHFDLE1BQU0ycEMsVUFBVXBFO01BQ3ZDLGVBRHVCdmxDLFVBQ3ZCLGFBQWdCLGFBRHVCdWxDO01BQ0MsUUFBTTtNQUE5QztPQUNZLGdDQUZXdmxDLE1BQWdCdWxDO09BRTNCLFdBQVJweUI7T0FBUSxhQUNJLGFBSHVCb3lCO01BR0MsUUFBTTtNQUY5QyxJQUdRLFlBSitCQSxJQUkvQixTQUFKOWlFO01BQUk7O1VBR007OEJBTFYwd0MsUUFGbUNveUIsR0FJbkM5aUU7V0FNYyxrQkFIWmc2QyxRQVB1Qmt0QjtXQWFMLHFDQUhsQkMsWUFWaUNyRTtXQWFmLFdBSGxCcUUsY0FHQVc7V0FBa0IsUUFObEI5dEIsVUFTQSt0QjtVQUhrQiwwQkFLbEJ0VCxRQWxCaUNxTzs7a0NBcUJyQywwQkFuQkVweUIsUUFGbUNveUI7TUFzQmhDLG1CQUFZO0lBdE5NLFNBeU52QmtGLGdCQUFnQnpxQyxNQUFNMnBDLFVBQVVwRTtNQUNsQyxlQURrQnZsQyxVQUNsQixhQUFnQixhQURrQnVsQztNQUNNLFFBQU07TUFBOUM7T0FDWSxrQkFGTXZsQyxNQUFnQnVsQztPQUV0QixXQUFScHlCO09BQVEsYUFDSSxhQUhrQm95QjtNQUdNLFFBQU07TUFGOUMsSUFJRTlpRSxFQURJLFVBSjRCOGlFO01BSTVCLFNBQ0o5aUU7O1VBaUNZOzhCQXBDVjB3QyxRQUY4Qm95QixHQUtoQzlpRTtXQWlDWSxXQUFSZzZDO1dBQVEsYUFDSSxhQXZDZ0I4b0I7VUF1Q1EsUUFBTTtVQUFZLDRCQUR0RDlvQixRQXRDa0JrdEIsVUFBVXBFOztnQkFLaEM5aUU7U0FDWTs2QkFKVjB3QyxRQUY4Qm95QixHQUtoQzlpRTtVQUNZLFdBQVJ5MEQ7VUFBUSxhQUNJLGFBUGdCcU87U0FPUSxRQUFNO1NBRGxDLElBR1ZqckQsSUFESSxVQVIwQmlyRDttQkFTOUJqckQ7VUEwQkEsNEJBN0JFNDhDLFFBTmtCeVMsVUFBVXBFO1NBTXBCO1VBSUUsbUJBSlZyTyxRQU40QnFPLEdBUzlCanJEO1VBQ1ksV0FBUnd1RDtVQUFRLGFBQ0ksYUFYY3ZEO1NBV1UsUUFBTTtTQUxwQztVQU1FLDZCQUZSdUQsUUFWMEJ2RDtVQVlsQixXQUFSd0U7VUFBUSxhQUNJLGFBYmN4RTtTQWFVLFFBQU07U0FQcEMsSUFRUSxjQWRZQSxJQWNaLFNBQ2RockQ7U0FEYzs7WUFFRix1QkFKWnd2RCxRQVowQnhFLEdBZTFCaHJEO1lBRWdCLFNBRFp5dkQsYUFDWSxhQWpCVXpFO2NBa0JsQixvQkFsQmtCQTs7Z0JBcUJOO21DQUxoQnlFLFFBaEJZTDtpQkFnQlpPOzs7bUJBS0lOLGNBQ2lCLHFCQURqQkEsWUFyQmtCckU7Ozs7Z0NBZ0J0QjJFO2NBRUksSUFGSkQ7OztZQUFRLElBQVJFOzs7O2lEQUpKSjtTQU5NLElBUU5LLGlCQVdLLGFBVEREO1NBVVEsU0FaWkMsYUFZWSxhQTFCYzdFO1dBMkJ0QixJQUNKL3FELElBREksVUEzQnNCK3FEO3FCQTRCMUIvcUQsbUJBSUssT0FsQkw0dkQ7V0FhSTtZQUVRLG1CQWZaQSxRQWQwQjdFLEdBNEIxQi9xRDtZQUNZLFdBQVI2dkQ7WUFBUSxhQUNJLGFBOUJVOUU7V0E4QmMsUUFBTTtXQUFnQixzQ0FEMUQ4RSxRQTdCc0I5RTtTQTBCZ0IsT0FaMUM2RTtNQStCRCxtQkFBWTtJQXRRTSxTQStRdkJNLFlBQVlDLElBQ0QzcUMsTUFEV3VsQztNakQ5N0IzQixJaUQrN0JnQnB5QjtNQUNYO2lCQURXQSxRQUNPLE9BRFBBO1FBRUgsSUFBSjF3QyxFQUFJLFVBSGM4aUU7UUFJbkIsR0FKbUJBLE1BSUUsT0FIYnB5QjtRQUlULEdBTFV3M0I7VUFNSyxJQUFScndELElBTkdxd0Q7VUFNSyxHQUhibG9FLE1BR0s2WCxJQUFrQixpQkFMaEI2NEIsUUFEV295QjtVQU1MLElBQ0UsbUJBTlJweUIsUUFEV295QixHQUdsQjlpRSxHQUZPMHdDOztRQUVILElBTUosS0FOQTF3QztRQU1BOzs7O1F6Q3ZiQSxZeUN3YjhCLE9BVHZCMHdDO1FBRUgsSUFRUSxtQkFWTEEsUUFEV295QixHQUdsQjlpRSxHQUZPMHdDO2lCQVdIO0lBM1JlLFNBK1J2QnkzQixVQUFVNXFDLE1BQU11bEM7TUFJVyxrQkFKakJ2bEMsTUFBTXVsQyxHQUlXLGtCQUpYQSxJQUkwQztJQW5TbkMsU0FnVXZCc0YsMEJBQ0VsekQ7TUFBSixhQUFJQSwwQ0FVaUI7SUEzVUksU0EwVnZCbXpELGdCQUFnQmpELFFBQVE3bkMsTUFBTXVsQztNQUNoQyxTQUQwQnZsQyxNQUNSLHdCQURBNm5DO01BRVYsSUFBSnBsRSxFQUFJLFVBRndCOGlFO01BRzdCLE9BSDZCQSxNQTdqQjlCLG1DQTZqQmdCc0MsVUFFZHBsRSxDQUVIO0lBRzRCLFNBQTNCc29FO01qRGhoQ0wsT2lEeWdDS0Q7SUFRNkIsU0FBN0JFO01qRGpoQ0wsT2lEeWdDS0Y7SUFRNkIsU0FFN0JHLG9CQUFvQmpyQyxNQUFNdWxDO01BQ3RCLGdDQURnQnZsQyxNQUFNdWxDO01BQ3RCLFNBbkRrQjJGOzs7Ozs7Y0FpRXRCOzs7a0JBQ1UsZ0JBaEJnQjNGLElBZ0JoQixLQUFKOWlFO2tCQUFJOzs7O2tCekNuaEJOLGdCeUNtaEJFQSxFQUdHLGlCQUhIQSxFQUdxQjtlQUNsQjtlQUNBO2VBeENKLCtCQUh3QjhUO2VBRXhCLG9DQUZxQkQ7O3NCQUN4QmdFO3lCQU1KLFlBTklBOzt3QkFLQSxtQ0FOd0JoRSxHQUFHQztxQkFsd0IzQjZ2RCxXQXd4QmtCcG1DLGNBQU11bEM7Ozs7Ozs7O2tCQWxESjJGO1dBdUR0Qjs7O2VBQ1UsSUFFTnpvRSxFQUZNLFVBTmdCOGlFO2VBTWhCLFdBRU45aUUsYUFDSyxpQkFETEEsSUFDdUI7WUFFbEI7WUFDQTtZQTVESDtzQkFGZ0J5b0UsMkJBQUdHOztjQUFHQzs7OzttQkFDMUI3b0UsMkJBUUosWUFSSUE7O3FCQU1BLG1DQVBvQnlvRSxHQUFHRyxLQUFHQztrQkF0dUIxQmxGLFdBd3hCa0JwbUMsY0FBTXVsQzs7aUJBbERKMkY7TXpDamRsQjs7UXlDcWNpQixVQVlDQTs7Ozs7Ozs7Ozs7O2VBdHVCcEI5RSxXQXd4QmtCcG1DLE1BQU11bEM7TUF3QjFCLHdCQTFFc0IyRixHQTBFSjtJQTFCVyxTQThCN0JLLGVBRWlCdnJDLE1BRkl1bEM7TUFFdkIsU0FZSWlHLFVBQVV4ckM7UUFDTixJQUVKdjlCLEVBRkkseUJBRE11OUIsTUFkU3VsQztRQWVmLGNBRUo5aUUsRUFEUSxZQUZFdTlCLE1BZFN1bEMsSUFpQmQsc0JBQUw5aUUsRUFBOEI7TUFkMUIsSUFFSkEsRUFGSSxrQkFIZThpRTtNQUdmLFVBRUo5aUU7UUFEa0I7NkJBRkh1OUIsTUFGSXVsQztTQVFmLDZCQURNcHlCLFFBUFNveUI7UUFRZixjQUdKanJEO2lCQURVLDhCQUFxQixZQUhyQjY0QixRQVBTb3lCO2lCQVlULHFCQUxBcHlCLFFBUFNveUIsR0FXbkJqckQ7TUFOSyw2QkFBTDdYLEVBY1k7SUFqRGUsU0FxRDdCZ3BFLGlCQUVpQnpyQyxNQUZNdWxDO01BRXpCLFNBS0ltRyxvQkFBVTFyQztRakQ3a0NqQixJaUQ2a0NpQm1UO1FBQ1o7VUFBTSxJQUdKMXdDLEVBSEksMkJBRE0wd0MsUUFQV295QjtVQVFqQixVQUdKOWlFLEVBRlEsbUJBRkUwd0MsUUFQV295QjtvQkFXckI5aUU7WUFEdUI7aUNBSGIwd0MsUUFQV295QjthQWNqQixpQ0FEVzlvQixRQWJNOG9CO1lBY2pCO2NBRWdCLHFCQUhMOW9CLFFBYk04b0I7Y0FnQkQ7O3VCQVFwQm9HOzs7Y0FUcUI7bUNBRk5sdkIsUUFiTThvQjtlQW9CakIsbUNBRFN1RCxRQW5CUXZEO2NBb0JqQjtnQkFDZ0IscUJBRlB1RCxRQW5CUXZEO2dCQXFCRDs7eUJBR3BCb0c7O2NBVHFCLElBT04sbUJBSEY3QyxRQW5CUXZELE9BT1hweUI7O1lBR2EsSUFPUiw0QkFKQXNKLFFBYk04b0IsSUFPWHB5Qjs7VUFDTixJQUdXLG1CQUpMQSxRQVBXb3lCLEdBV3JCOWlFLEdBSlUwd0M7bUJBSXFDO01BVG5ELFNBc0JJdzRCLG9CQUFZM3JDO1FqRDlsQ25CLElpRDhsQ21CbVQ7UUFDZDtVQUFNLHFDQURRQSxRQXhCU295QjtVQXlCakI7WUFDZSx3QkFGUHB5QixRQXhCU295QixJQXdCVHB5QjtVQUdQOzttQkFwQkx1NEIsc0JBaUJZdjRCO3dDQWpCWnU0QixlQWlCWXY0QixVQUdRO01BekJ4QixTQUtJcTRCLFVBQVV4ckMsT2pEN2tDakIsdUJpRDZrQ08wckMsY0FBVTFyQztNQUpOLElBRUp2OUIsRUFGSSxrQkFIaUI4aUU7TUFHakIsY0FFSjlpRTtlQURrQixzQkFGSHU5QixNQUZNdWxDO2VBS2hCLHNCQUFMOWlFLEVBd0JZO0lBbEZlLFNBb0c3Qm1wRSx1QkFBdUI3c0UsU0FBUzhzRSxXQUFXN3JDLE1BQU11bEM7TUFDbkQsU0FBUXVHLFdBQVd6d0UsRUFBRXN2RTtRakR0bkN4QixJaURzbkNzQi9vRTtRQUNqQjtVQUFRLGdCQUZ5QzJqRSxJQUV6QyxTQURTM2pFO1VBQ1Q7WUFDUSxhQUhpQzJqRTtZQUdqQzthQUNiLHdCQUpvQnhtRSxTQUVuQjBELEdBRUQsVUFGQ0EsTUFEZWtvRTs7Ozs7VUFLakI7WUFBUSxXcEN2aENGOXBFLFFvQ2loQ3lDMGtFLEdBRTdDOWlFLEdBSU0sUUFMT2I7c0JBTU87TUFOMUIsR0FEa0NpcUU7UUFXaEMsSUFES3BwRSxFQVYyQm9wRTtRQVdoQyxXQVgyQzdyQyxNQVV0Q3Y5QjtRQUNMLGFBWGlEOGlFO1FBWTFDO1VBQ0ksSUFBTDBDLEdBQUssVUFic0MxQztVQWF0QyxPQUhOOWlFLE1BR0N3bEUsR0FFQyx3QkFmMEMxQyxJQWdCMUMsbUJBTkY5aUUsRUFHQ3dsRTtRQUpFO3dCQVRtQ2pvQyxTQWdCYjtJQXBIRCxTQXdIN0IrckMsZ0JBQWdCeEcsR0FJaEJybEU7TWpEN29DTCxHaUQ2b0NLQTtXQUhhSCxFQUdiRzs7NEJBQUssTUFBTEEsTUFIYUgsRUFHYkc7TUFGUSxJQUFKN0UsRUFBSSxXQUZRa3FFO01BR04sMENBRE5scUUsRUFEUzBFO0lBekhnQixTQWdJN0Jpc0UsWUFBWXpHLEdBQUdybUU7TUFDakIsT0FEaUJBO2VBRUMsT0FGSnFtRSxhQUdJLGtCQUhKQSxZQUlLLE9BSkxBLE1BSTRCO0lBcElYLFNBd0k3QjBHLGlCQUFpQmxzQztNQUFVLEdBQVZBLFNBRUgsSUFBVEMsTUFGWUQsV0FFSCxPQUFUQyxNQURHLE9wQ3RqQ0FuL0IsT29DdWpDVztJQTFJVSxTQTZJN0JxckUsMEJBQTBCQztNQUM1QixTQUQ0QkEsT0FDSztNQUNyQjtvQ0FGZ0JBO09BR2hCLG9CQURObHVFO09BRVUsY0FGVkEsTUFDTSxzQkFETkE7TUFFVSxVQURWMHNFLElBQ0Fud0IsUUFDUTtJQWxKaUIsU0E0SnpCNHhCLDhCQUdKOTFDLEVBQUU0SjtNakRockNQLElpRGdyQ08rQztNQUFPO2lCQUFQQTtRQXFDa0Msa0JBckNwQzNNOztRQUFTLE9BQVAyTTtpQkFLa0MsVUFMbENBO2lCQU1rQyxVQU5sQ0E7aUJBT2tDLFVBUGxDQTtpQkFRa0MsVUFSbENBO2lCQVNrQyxVQVRsQ0E7aUJBVWtDLFVBVmxDQTtpQkFXa0MsVUFYbENBO2lCQVlrQyxVQVpsQ0E7aUJBYWtDLFVBYmxDQTtpQkFja0MsV0FkbENBO2tCQWlCa0MsV0FqQmxDQTtrQkFrQmtDLFdBbEJsQ0E7a0JBbUJrQyxXQW5CbENBO2tCQWdDa0MsV0FoQ2xDQTs7V0FrQzJCLElBREwxbkMsS0FqQ3RCMG5DLFNBaUNlOWtDLE1BakNmOGtDLFNBa0MyQixlQUFXLEtBRHZCOWtDO1dBQ1k7O29CQU03Qmt1RSxzQ0F4Q0EvMUMsT0FpQ3dCLzZCOztvQkFPeEI4d0UsK0JBeENBLzFDLE9BaUN3Qi82QjtrQkFsQlksV0FmbEMwbkM7a0JBZ0JrQyxXQWhCbENBO2tCQTBCa0MsV0ExQmxDQTs7OzthQTRCc0I7Y0FEb0J6bkMsT0EzQjFDeW5DOztjQTJCZ0M2TztjQUNWLGtCQURVQSxPQUFVdDJDO2NBM0IxQ3luQzs7V0E4QnNCO1lBRG9CeG5DLE9BN0IxQ3duQzs7WUE2QmdDcVA7WUFDVixrQkFEVUEsT0FBVTcyQztZQTdCMUN3bkM7OztXQUVGLElBRE93TCxTQURMeEw7V0FFRixnQkFBSXFwQzthQUNGLFNBQUlDLE1BQU1DO2VBQWUsa0JBSDNCbDJDLEtBRUlnMkMsT0FDUUUsY0FBOEM7YUFBeEQsMkJBQUlELE1BRkM5OUIsU0FHNkI7a0JBa0JBLFdBdEJsQ3hMO2tCQXVCa0MsV0F2QmxDQTtrQkF3QmtDLFdBeEJsQ0E7O2VBbUNrQnZuQyxPQW5DbEJ1bkMsU0FtQ2E1akMsSUFuQ2I0akM7V0F5RVcsVUF0Q0U1akM7WUFzQ0YsT0F0Q0VBO3lCQW5DYjRqQyxNQW1Da0J2bkM7eUJBbkNsQnVuQyxNQW1Da0J2bkM7O2VBd0NwQixnQkFBSTR3RTtpQkFDRixTQUFJQyxNQUFNQzttQkFBZSxrQkE1RTNCbDJDLEtBMkVJZzJDLE9BQ1FFLGNBQThDO2lCQUF4RCwyQkFBSUQsTUF6Q2M3d0UsT0EwQ1c7MEJBN0U3QnVuQyxNQW1Da0J2bkM7O1lBc0NQLE9BdENFMkQ7eUJBbkNiNGpDLE1BbUNrQnZuQzt5QkFuQ2xCdW5DLE1BbUNrQnZuQzt5QkFuQ2xCdW5DLE1BbUNrQnZuQzt5QkFuQ2xCdW5DLE1BbUNrQnZuQzt5QkFuQ2xCdW5DLE1BbUNrQnZuQzt5QkFuQ2xCdW5DLE1BbUNrQnZuQzt5QkFuQ2xCdW5DLE1BbUNrQnZuQzt5QkFuQ2xCdW5DLE1BbUNrQnZuQzt5QkFuQ2xCdW5DLE1BbUNrQnZuQzs7ZUFzRGUsSUFBVjJDLFFBdERWZ0I7ZUFzRG9COzt3QkFqRG5DZ3RFO29DQXhDQS8xQyxFQXlGeUJqNEIsUUF0REwzQzs7d0JBS3BCMndFLCtCQXhDQS8xQyxFQXlGeUJqNEIsUUF0REwzQzswQkFuQ2xCdW5DLE1BbUNrQnZuQzswQkFuQ2xCdW5DLE1BbUNrQnZuQztrQkFmZ0IsV0FwQmxDdW5DLCtCQXFDdUM7SUFwTVosU0F1TTdCb3BDLG9DQUdBLzFDLEVBQUVuNEIsTUFBTStoQztNakQzdENiLElpRDJ0Q083aEM7TUFBYTtpQkFBYkE7U0FxQjZCOztrQkFuRTNCK3RFLGdDQThDSjkxQyxFQUFRNEo7dUNBOUNKa3NDLHlCQThDSjkxQyxFQUFRNEo7O1FBQU8sT0FBYjdoQztpQkFTNkIsWUFUN0JBO2lCQVU2QixZQVY3QkE7aUJBVzZCLFlBWDdCQTtpQkFZNkIsWUFaN0JBO2lCQWE2QixZQWI3QkE7aUJBYzZCLFlBZDdCQTtpQkFlNkIsWUFmN0JBO2lCQWdCNkIsWUFoQjdCQTtpQkFvQjZCLFlBcEI3QkE7O1dBdUJPO1lBRGtCOUMsS0F0QnpCOEM7WUFzQm9CMUIsSUF0QnBCMEI7WUFzQmVuQyxJQXRCZm1DO1lBdUJPLFNBQU0sS0FERW5DLEtBQUtTO1lBRU0sc0JBRHhCWCxHQUR1QlQ7WUF0QnpCOEM7O2tCQWlCNkIsYUFqQjdCQTtrQkFrQjZCLGFBbEI3QkE7a0JBbUI2QixhQW5CN0JBOztXQUVGLElBRFVvd0MsU0FEUnB3QztXQUVGLGdCQUFJaXVFO2FBQ0YsU0FBSUMsTUFBTUM7ZUFBZSxrQkFIM0JsMkMsS0FFSWcyQyxPQUNRRSxjQUE4QzthQUF4RCxpQ0FBSUQsTUFGSTk5QixTQURGdk8sSUFJc0M7O1dBRTlDLElBRGtCd08sV0FMaEJyd0M7V0FNRixnQkFBSWl1RTthQUNGLFNBQUlDLE1BQU1DO2VBQWUsa0JBUDNCbDJDLEtBTUlnMkMsT0FDUUUsY0FBOEM7YUFBeEQsaUNBQUlELE1BRlk3OUIsV0FMVnhPLElBUXNDLEVBZ0JRO0lBbE96QixTQTRKekJ1c0Msb0JBR0puMkMsRUFBRTRKO01qRGhyQ1AsdUJpRDZxQ1Nrc0Msd0JBR0o5MUMsRUFBRTRKO0lBL0oyQixTQXVNN0Iyc0MsMEJBR0F2MkMsRUFBRW40QixNQUFNK2hDO01qRDN0Q2IsdUJpRHd0Q0ttc0MsOEJBR0EvMUMsRUFBRW40QixNQUFNK2hDO0lBMU1xQixTQXFRekI0c0MsV0FHSnZILEdBQUdybEMsSUFBSTZzQztNakR6eENaLElpRHl4Q1E5cEM7TUFBZTtpQkFBZkE7UUF3Skg7O1FBeEprQixPQUFmQTs7V0FFSCxJQURLMW5DLEtBREYwbkM7V0FFSyxZQUZSc2lDO1dBRUEsSUFDSTlpRSxFQUFJLFdBSFI4aUU7V0FJUyxVQURMOWlFLEVBQ0ssV0FKVDhpRSxHQUNLaHFFLEtBREV3eEU7O1dBTVAsSUFEVXZ4RSxPQUxQeW5DO1dBTUssaUJBTlJzaUM7V0FNQSxJQUNJanJELElBQUksV0FQUmlyRDtXQVFTLFVBRExqckQsSUFDSyxXQVJUaXJELEdBS1UvcEUsT0FMSHV4RTs7b0JBQUo5cEM7Ozs7ZUFXWTtnQkFEMEJ2bkM7Z0JBQVpnRDtnQkFDZCxnQ0FEY0E7Z0JBQ2Q7OzswQkFDTnNoQyxZQUFRdWxDO21CQUFLLHNCQURsQm9GLEtBQ0szcUMsTUFBUXVsQyxHQUFvQztnQkFEdEMsYUFBTnRuRSxJQURnQ3ZDO2VBQzFCO3dCQVhmNnBFLEdBYUkwSCxTQWJHRixlQVlIQyxPQXB4QkpoSDs7Ozs7a0JBdXhCMERycUU7O2tCQUFYZ29DO2tCQUMzQ3dwQzs0QkFBS250QyxZQUFRdWxDLElBQUssd0JBQWJ2bEMsTUFBUXVsQyxHQUFvQztpQkFDbkM7MEJBakJsQkE7MEJBaUJrQixXQUY2QjVoQyxNQUFXaG9DOzBCQWZuRG94RTs7OzBCQWdCSEk7MEJBeHhCSm5IOztnQkEyeEIwRHBxRTs7Z0JBQVh5dkM7Z0JBQzNDK2hDOzBCQUFLcHRDLFlBQVF1bEMsSUFBSyx3QkFBYnZsQyxNQUFRdWxDLEdBQW9DO2VBQ25DO3dCQXJCbEJBO3dCQXFCa0IsV0FGNkJsNkIsTUFBV3p2Qzt3QkFuQm5EbXhFOzs7d0JBb0JISzt3QkE1eEJKcEg7OztZQSt4QmF2cUUsT0F2QlZ3bkM7WUF3QkMxeUIsY0FBS3l2QixZQUFRdWxDLElBQUsscUJBQWJ2bEMsTUFBUXVsQyxHQUE4QjtrQkFxSS9DMkgsZUE3SkEzSCxHQXVCYTlwRSxPQXZCTnN4RSxlQXdCSHg4RCxLQWh5Qkp5MUQ7OztZQW15QmtCbnFFLE9BM0Jmb25DO1lBMkJVbG1DLElBM0JWa21DO1lBNEJDb3FDLGdCQUFLcnRDLFlBQVF1bEMsSUFBSyx3QkFBYnZsQyxNQUFRdWxDLEdBQThCO2tCQWlJL0MySCxlQTdKQTNILEdBMkJrQjFwRSxPQTNCWGt4RSxRQTJCTWh3RSxNQUNUc3dFLE9BcHlCSnJIOztXQXV5QlE7WUFEZWxxRSxPQTlCcEJtbkM7WUE4QmNobUMsS0E5QmRnbUM7WUE4QlNqbUMsTUE5QlRpbUM7WUE4QkU5bEMsTUE5QkY4bEM7WUErQkssZ0NBQTJCLGNBRDlCOWxDO1lBQ0c7c0JBQ0M2aUMsWUFBUXVsQztlQUFLLDJCQXp2Qlp6ZixLQXl2QkQ5bEIsTUFBUXVsQyxHQUFtQztXQUNQO29CQWpDN0NBO29CQThCdUJ6cEU7b0JBOUJoQml4RTtvQkE4QksvdkU7b0JBQUtDO29CQUVicXdFOzZCQXp2QlcvSDtzQkFBOEMsMEJBQTNCLGtCQUF4QnpmLEtBQUt5Zjs7V0E0dkJQO1lBRGlCeHBFLE9BbEN0QmtuQztZQWtDZ0I3bEMsT0FsQ2hCNmxDO1lBa0NXL2xDLE1BbENYK2xDO1lBa0NJM2xDLFFBbENKMmxDO1lBbUNLLGtDQUEyQixjQUQ1QjNsQztZQUNDO3NCQUNDMGlDLFlBQVF1bEM7ZUFBSywyQkF4dUJWZ0ksT0F3dUJIdnRDLE1BQVF1bEMsR0FBbUM7V0FDUDtvQkFyQzdDQTtvQkFrQ3lCeHBFO29CQWxDbEJneEU7b0JBa0NPN3ZFO29CQUFLRTtvQkFFZm93RTs2QkF4dUJhakk7c0JBQWdELDBCQUEzQixrQkFBMUJnSSxPQUFLaEk7O1dBMnVCVDtZQURxQnRwRSxPQXRDMUJnbkM7WUFzQ29CMWxDLE9BdENwQjBsQztZQXNDZTVsQyxNQXRDZjRsQztZQXNDUXhsQyxRQXRDUndsQztZQXVDSyxrQ0FBMkIsY0FEeEJ4bEM7WUFDSDtzQkFDQ3VpQyxZQUFRdWxDO2VBQUssMkJBN3VCTmtJLE9BNnVCUHp0QyxNQUFRdWxDLEdBQW1DO1dBQ1A7b0JBekM3Q0E7b0JBc0M2QnRwRTtvQkF0Q3RCOHdFO29CQXNDVzF2RTtvQkFBS0U7b0JBRW5CbXdFOzZCQTd1QmlCbkk7c0JBQW9ELDBCQUEzQixrQkFBOUJrSSxPQUFLbEk7O1dBZ3ZCYjtZQURpQnBwRSxPQTFDdEI4bUM7WUEwQ2dCdmxDLE9BMUNoQnVsQztZQTBDV3psQyxNQTFDWHlsQztZQTBDSXJsQyxRQTFDSnFsQztZQTJDSyxrQ0FBMkIsY0FENUJybEM7WUFDQztzQkFDQ29pQyxZQUFRdWxDO2VBQUssMkJBL3VCVm9JLE9BK3VCSDN0QyxNQUFRdWxDLEdBQW1DO1dBQ1A7b0JBN0M3Q0E7b0JBMEN5QnBwRTtvQkExQ2xCNHdFO29CQTBDT3Z2RTtvQkFBS0U7b0JBRWZrd0U7NkJBL3VCYXJJO3NCQUFnRCw0QkFBM0Isa0JBQTFCb0ksT0FBS3BJOztrQkFtc0JkdGlDOzs7a0JBOEMwQzVtQyxRQTlDMUM0bUMsU0E4Q29DK0wsT0E5Q3BDL0wsU0E4QytCbmxDLE1BOUMvQm1sQztxQkE2SkhpcUM7dUJBN0pBM0g7dUJBOEM2Q2xwRTt1QkE5Q3RDMHdFO3VCQThDMkJqdkU7dUJBQUtreEM7dUJBL2J2Q3k3Qjt1QkF0VUFqQzs7O2tCQTB3QjRDbHNFLFFBbkR6QzJtQyxTQW1EbUNrTSxPQW5EbkNsTSxTQW1EOEJqbEMsTUFuRDlCaWxDO3FCQTZKSGlxQzt1QkE3SkEzSCxHQW1ENENqcEUsUUFuRHJDeXdFLFFBbUQwQi91RSxNQUFLbXhDLE9BemdCdEMyNkIsZUFqUUF0Qjs7a0JBd3dCa0Jwc0UsUUFqRGY2bUMsU0FpRFNwbEMsT0FqRFRvbEMsU0FpREl0bEMsTUFqREpzbEM7cUJBNkpIaXFDO3VCQTdKQTNILEdBaURrQm5wRSxRQWpEWDJ3RSxRQWlEQXB2RSxNQUFLRSxPQXZpQlo2ckUsV0FqT0FsQjs7O1lBNHdCV2pzRSxRQXJEUjBtQztZQXFERzdrQyxNQXJESDZrQztZQXNEQzRxQztpQ0FBU3RJO2VBdk9QO29DQXVPT0E7Z0JBdk9QO3lCQUtKOWlFOzsrQkFDQSxVQUNFLHlCQUZGQTtlQUdKLHFCQVBJdW1CLEVBc09XdThDLEdBQWlCO2tCQXVHOUIySCxlQTdKQTNILEdBcURXaHBFLFFBckRKd3dFLFFBcUREM3VFLFFBQ0Z5dkUsT0E1ekJKeEY7O1dBNjBCQSxJQURNOXBFLFFBdEVIMGtDO1dBdUVBLGdCQXZFSHNpQyxTQUFHdGlDLE1Bc0VHMWtDO1dBRUQ7O2VBRWdCQyxRQTFFbEJ5a0MsU0EwRWFULE1BMUViUztXQTJFSCxzQmpEcDJDTCxPaUQwZlNrbEMsV0EreEJKNUMsVUEwRWdCL2lDO2VBMUViUyxNQTBFa0J6a0M7OztlQUdGQyxRQTdFaEJ3a0MsU0E2RVcva0MsSUE3RVgra0M7V0E4RUgsV0E5RUFzaUMsR0E2RWNybkU7ZUE3RVgra0MsTUE2RWdCeGtDOzs7ZUFJU0UsUUFqRnpCc2tDLFNBaUZrQjlrQyxNQWpGbEI4a0MsU0FpRlNsRCxRQWpGVGtEO1dBa0ZLLGlCQUFpQixpQkFEYmxELFNBakZad2xDO1dBbUZRLElBQUp4bEUsRUFBSSxhQW5GUndsRTtXQW1GUTthQUVGLGdDQUZGeGxFLEVBRmlCNUIsT0FHakJzdEM7Ozs7YUFFa0IsZUFGbEJBLE1BRWtCLFVBQVByZ0M7V0FFSixVQUpQcWdDLE1BSU8sV0F4Rlg4NUIsR0FpRjRCNW1FLFFBakZyQm91RTs7ZUF5RnVCbHVFLFFBekYzQm9rQyxTQXlGb0I1a0MsUUF6RnBCNGtDLFNBeUZXOUMsVUF6Rlg4QztXQTBGSyxpQkFBaUIsaUJBRFg5QyxXQXpGZG9sQztXQTJGUSxJQUFKajFELElBQUksYUEzRlJpMUQ7V0EyRlE7YUFHYzswQ0FIbEJqMUQ7Y0FHa0I7Y0FDQyw0QkFKbkJBO2NBSW1CO2NBY25CLGtCQWRZbThCLE1BY0ssVUFBVyxLQXBCVHB1QztjQW1CbkIsaUJBZFlndUMsTUFjSSxVQW5CR2h1QztjQUdkNHRDO2NBQUxKOzs7bUNBb0JKO2FBRnNCOzs2QkFBUCtYO2NBbEJOM1g7Y0FBTEo7V0FxQkU7c0JBckJGQSxNQURBdjdCO21CQXNCRSxXQWpITmkxRCxHQWlIb0IsV0FyQlh0NUIsTUFIcUJwdEMsU0F6RnZCa3VFO2tCQXlEUDtrQkFFQTs7V0E0RTRCO1lBRElqdUUsUUF0STdCbWtDO1lBc0lhN29DLGVBdEliNm9DO1lBdUl5Qiw4QkFEWjdvQztXQUNoQixzQmpEaDZDTCxPaUQwZlMrdEUsV0EreEJKNUM7V0F1STRCLElBdkl6QnRpQyxNQXNJNkJua0M7OztvQkF0STdCbWtDOztpQkF5STBDaGtDLFFBekkxQ2drQyx5QkF5SStCc0s7YUFDbEMsV0ExSUFnNEI7YUEwSW1CLFdBMUluQkE7YUEySWMsc0JBRm9CaDRCLE1BQVd0dUMsU0F6STFDZ2tDOztlQTRJMEM5akMsUUE1STFDOGpDLHlCQTRJK0I4SztXQUNsQyxXQTdJQXczQjtXQTZJbUIsV0E3SW5CQTtXQThJYyxzQkFGb0J4M0IsT0FBVzV1QyxTQTVJMUM4akM7OztXQStESCxJQURPd0wsU0E5REp4TDtXQStESCxHQS9ETzhwQzthQWlFSztjQURJUCxhQWhFVE87Y0FnRUNULE9BaEVEUztjQWlFSyxhQURKVCxPQWhFUi9HO2FBa0VhLFVBRExybEUsRUFDSyxXQWxFYnFsRSxHQThETzkyQixTQUVTKzlCO1dBSVo7O29CQXBFRHZwQzs7YUFvSFk7Y0FEaUQzakM7Y0FBWnd1RTtjQUExQmx1QyxXQW5IdkJxRDtjQW9IWSxrQ0FEcUM2cUM7Y0FDckM7O2NBQ0g7YUFDWix1QkFIMEJsdUMsY0FDdEJtdUMsT0FDQTU2QixRQXJISm95QjthQW9IZSxJQUdQLGlCQXZIUkEsSUF1SFEsZUFIQ25pQyxNQUR1RDlqQzthQU12RCxVQUZMMHVFLElBRUssV0F6SFR6SSxHQXdISTBJLFdBeEhHbEI7V0EySEs7WUFEd0IzdEUsUUExSGpDNmpDO1lBMEh1QmxrQyxTQTFIdkJra0M7WUEySFM7V0FDWix1QkFGMEJsa0MsV0FDdEJpaEMsTUEzSEp1bEM7V0EySFksSUFFUjN5QyxJQUFJLGFBN0hSMnlDO1dBOEhTLFVBREwzeUMsSUFDSyxXQTlIVDJ5QyxHQTBIb0NubUUsUUExSDdCMnRFOztXQWdJSztZQURlbjNCLFFBL0h4QjNTO1lBK0hlL2pDLFFBL0hmK2pDO1lBZ0lTLGtCQWhJWnNpQyxHQStIa0JybUU7V0FFTCxVQURUdTZCLE1BQ1MsV0FqSWI4ckMsR0ErSDJCM3ZCLFFBL0hwQm0zQjs7V0FtSVAsWUFuSUc5cEMsU0FtSUssc0JBbklSc2lDO1dBb0lTLFVBRExockQsSUFDSyxXQXBJVGdyRCxHQWtJZTF2QixRQWxJUmszQjs7V0FpSnFCO1lBRFJtQixRQWhKakJqckM7WUFnSlk1akMsSUFoSlo0akM7WUFpSnlCLHVDQURiNWpDLElBQUs2dUU7WUFDUTtZQUNoQixtQkFsSlozSSxHQWlKcUJoM0IsT0FqSmR3K0I7V0FrSkssWUFDWSxJQUFib0Isb0JBQWEsT0FBYkE7V0FDRjtrQkF2RlQsbURBMkZHO0lBaGEwQixTQXFhN0JqQixlQU1BM0gsR0FBR3JsQyxJQUFJNnNDLFFBQVFod0UsSUFBSUUsS0FBS3NULEtBQUs2a0Q7TUFBUyxVQUF2QnI0RDtrQkFBSUU7VUF3Qm5CLEdBeEJtQkEsS0F3Qm5CO1VBdEJRLFdBRmdCc1QsS3BDeDFDaEIxUCxnQm9DdzFDUjBrRTtVQUdRLElBQUpybEUsRUFBSSxXQUhxQmsxRCxNQUE3Qm1RO1VBSVMsVUFETHJsRSxFQUNLLFdBSlRxbEUsR0FBR3JsQyxJQUFJNnNDO1FBTVAsSUFEMEJwK0QsRUFMUDFSO1FBTVgsV0FOZ0JzVCxLcEN4MUNoQjFQLFFvQzYxQ2tCOE4sRUFMMUI0MkQ7UUFNQSxJQUNJbnNELElBQUksV0FQcUJnOEMsTUFBN0JtUTtRQVFTLFVBRExuc0QsSUFDSyxXQVJUbXNELEdBQUdybEMsSUFBSTZzQzs7UUFBK0IsU0FBdkJod0U7OztzQkFBSUU7Y0FvQm5CLEdBcEJtQkEsS0FvQm5CO2NBVlEsV0FWZ0JzVCxVcEN4MUNoQjFQLFFvQ3cxQ1Iwa0U7Y0FXUSxJQUFKM2lCLElBQUksV0FYcUJ3UyxNQUE3Qm1RO2NBWVMsVUFETDNpQixJQUNLLFdBWlQyaUIsR0FBR3JsQyxJQUFJNnNDO2dCQWF5Q3I0QixJQWI3QnozQztZQWNYLFdBZGdCc1QsVUFhd0Jta0MsSUFiaEQ2d0I7WUFlUSxJQUFKeGlCLElBQUksV0FmcUJxUyxNQUE3Qm1RO1lBZ0JTLFVBREx4aUIsSUFDSyxXQWhCVHdpQixHQUFHcmxDLElBQUk2c0M7VUFrQlA7UUFJQSwrQ0FFMEM7SUFuY2IsU0EwYzdCcUIsT0FBTzdJLEdBQUc4STtVQUFpQnB3RSxhQUFMaWlDO2VBQ2hCb3VDLE1BQ0YvdUUsRUFBRWdtRDtZQUFGbkQsTUFBRW1zQjtRQUFRO2FBQVJBO1lBQ2lCO2FBQVo3dUUsRUFETDZ1RTthQUNFcnVFLEVBREZxdUU7YUFDaUIsZUFEbkJuc0IsSUFDSWxpRDthQURKa2lEO2FBQUVtc0IsT0FDSzd1RTs7VUFDRixPQUZMMGlELElBRU07ZUFFUjlyQixFQUFFeTJDLFFBQVF4dEU7UUFDWixZQVBPZ21FO1FBT1A7VUFDZSx1QkFSUkEsR0FBZXJsQyxJQU1sQjZzQztjQUdBeUI7Ozs7Ozs7Ozs7Ozs7Ozs7O2FBQ2lCcGpFLElBRGpCb2pFOztjQUVBO2dCQUFZLElBREtwakUsSUFDRSxrQkFBa0IsY0FYZG5OOztVekMzOEJ2QiwwQnlDbzlCQXV3RTs7MEJBSWEsSUFBUmpwQixhQUFRLGFBUExobUQsRUFPSGdtRDtRQUNNLElBQVBpcEI7UUFBTyxrQkFkTEgsR0FBSDlJLEdBY0NpSixJQUFnQjthQTVUcEIvQixvQkFvVEZuMkMsRUFOb0I0SjtJQTFjTyxTQStkN0J1dUMsT0FBT2xKLEdBQUdybEMsS0FBTSxjQUFUcWxDLEdBdldQd0csZ0JBdVdVN3JDLElBQW9DO0lBL2RqQixTQWllN0J3dUMsUUFBUTN1RSxFQUFFc3VFLEdBQUdudUMsS0FBYyw0QkFBbkJuZ0MsR0FBRXN1RSxHQUFHbnVDLElBQTZDO0lBamU3QixTQWtlN0J5dUMsT0FBTzV1RSxFQUFFbWdDO01BQWMsNEJBQWhCbmdDLEdBMVdQZ3NFLGdCQTBXUzdyQyxJQUEwRDtJQWxldEMsU0FvZTdCMHVDLE1BQU0xdUMsS0FBTSxjQTluQ1Y2bUMsTUFreEJGZ0YsZ0JBNFdNN3JDLElBQStDO0lBcGV4QixTQXllN0IydUMsY0FHRXRKLEdBQUd1SixPQUFPdnZFO01BQ0osaUJwQzE1Q0FzQixRb0N5NUNOMGtFO01BRVEsSUFBTnRuRSxJQUFNLGFBRlJzbkU7TUFFUTtRQUVKLGlDQUZGdG5FLElBRkM2d0UsUUFHRDV1Qzs7OztRQUVrQixlQUZsQkEsSUFFa0IsVUFBUDkwQjtNQUNmLGtCQU5ZN0wsRUFHUjJnQyxJQUdFO0lBbGZ1QixTQXFmN0I2dUMsY0FHRWh2RSxFQUFFK3VFLE9BQU92dkU7TUFBbUIsbUNBQTVCUSxHQUFFK3VFLE9BQU92dkUsRUFBb0Q7SUF4ZmxDLFNBMmY3Qnl2RSxtQkFBbUJqdkUsRUFBRW1nQztNQUN2QixjQUF3RGhnQyxHQUFLLE9BQUxBLENBQU07TUFBaEQsZ0NBQVEsY0FEREgsWUFBRW1nQyxTQUN3QztJQTVmaEMsU0ErZjdCK3VDLFVBQVVsdkU7TUFDWixjQUFxQ0csR0FBSyxPQUFMQSxDQUFNO01BQXBDLG9DQUFRLElBREhILHNCQUNnQztJQWhnQmIsU0FvZ0I3Qm12RSxRQUFRcHJFLEdBQUd1cUUsR0FBR251QyxLQUFjLGdDQUFwQnA4QixJQUFHdXFFLEdBQUdudUMsSUFBb0Q7SUFwZ0JyQyxTQXFnQjdCaXZDLE9BQU9yckUsR0FBR284QjtNQUFhLGdDQUFoQnA4QixJQTdZUGlvRSxnQkE2WVU3ckMsSUFBZ0U7SUFyZ0I3Qzs7OztRQTFwQjNCNm1DO1FBYUFHO1FBQ0FDO1FBTUFFO1FBUEFIO1FBQ0FDO1FBdEhBWDtRQVdBQztRQTZHQVc7UUExTEExQjtRQU9BQztRQUVBQztRQWlLQW1COztPQXluQ0YwSDtPQUdBRTtPQUVBQztPQTFCQVI7T0F1QkFNO09BUUFHO09BWUFFO09BTUFDO09BSUFDO09BTUFFO09BREFEO0lBcGdCNkI7YUM1L0I3QkUsU0FBUzVzRSxLQUFLL0MsR0FDaEIsaUNBRFcrQyxLQUFLL0MsRUFDc0I7YUFFcEM0dkUsbUJBQW1CN3NFLEtBQ2pCMHNCO01BQ1UsSUFBVnhrQixLQUFVLGFBRFZ3a0I7TUFFSixpQ0FIcUIxc0IsS0FFakJrSSxLQUMwQjsyQkFONUIwa0UsU0FHQUM7O29CQ0FLbGtFLEdBQ1UsSUFBYm1rRSxJQUFhLFVBQ2pCLHNCQURJQSxJQUNJO1FBWU5DLHdCQVVBQyxzQkFPQUM7aUNBZW9CMXZFO01BQ3RCLDBDQURzQkEsV0FDdEI7O1lBQ0ExRTtRQUNFO1VBQWdDLHlCQUhaMEUsRUFFdEIxRTtVQUNrQyxpQkFGOUJvSjtVQUU4QixTQURsQ3BKOzs7TUFJQSxVQUxJb0o7TUFBSixJQU9JaXJFLGlCQVBBanJFO01BU0osT0FGSWlyRSxHQUVLO2FBSzJCQyxXQUFTenZFLEVBQUtDLEdBQUksMkJBQVRELEVBQUtDLEVBQWU7eUNBQTdCd3ZFO2FBSUFDLFdBQVMxdkUsRUFBS0MsR0FBSSwyQkFBVEQsRUFBS0MsRUFBZTtJQWdDeEM7dUNBaENXeXZFO0tBR0RDOztLQWdCakNDLG9CQXJEQUw7S0ErREFNO0tBR3VCO2FBSW5CRSxTQUFTcHdFLEdBQ2YsV0FEZUEsRUFFZixVQUZlQSw2QkFFTztJQU5HLFNBUXZCcXdFLFVBQVVDO01BQ1o7O1dBRFlBO09BR0Usd0JBRFYvc0UscUJBVkY0c0U7TUFZRixpQkFESUksZ0JBREFodEU7TUFESixXQUlzQixTQUhsQkE7TUFHSixpQkFGSWd0RTtNQUZKLElBSUEsS0FISWh0RSxZQUdKOztZQUNBL0g7UUFBd0I7VUFBeUI7aUJBQWpEQTtXQUFpRCxzQkFOckM4MEUsV0FNWjkwRTtVQUF3QixpQkFIcEIrMEU7VUFHNkMsU0FBakQvMEU7OztNQUNBLFVBeEZFbTBFLG9CQW9GRVksdUNBVzBCO0lBdEJMLFNBd0J2QkMsU0FBT0MsTUFBTUM7TUFDZixhQURTRCxvQkFDVCxLQUFJRSxXQURXRDtNQUNmO1FBRWlCLElBQVhFLFNBQVcsZUFIRkYsU0F4QmJQO1FBNEJBLE9BSk9NLFdBR0hHLFdBRkZEO1FBR0YsV0FESUM7UUFBVzs7O01BbEJqQixXQXFCRTtJQTlCdUI7YUE0Q3ZCRyxXQUFXQztNQUNiLElBQUlsZCxNQURTa2Q7TUFFYixTQUZhQSxNQUNUbGQ7TUFDSixPQURJQSxLQUVDO0lBL0NvQixTQWlEdkJtZCxpQkFBaUJELE1BQU1ydUU7TUFDekI7UUFDRSw4QkFGdUJBLEtBQU5xdUU7Ozs7VUFJTCxJQUFSRSxNQUFRLFdBSktGO1VBS1EsK0JBTEZydUUsS0FJbkJ1dUUsTUFKYUY7VUFNUyw4QkFGdEJFLFFBSmFGO1VBTVMsT0FGdEJFO1FBUk4sV0FXTztJQXhEa0IsU0EwRHZCQyxrQkFBa0JILE1BQU1JO01BQ2hCLDRCbkRwTGIsT21EMEtLSCxpQkFTa0JELGFBQU1JLE1BQ2M7SUEzRGYsU0E2RHZCQyxXQUFXTCxNQUFNRSxNQUFNSTtNQUN6QjtNQUNHLDJCQUZnQkosTUFBTkY7Z0JBNUJiLFNBNEJhQSxNQUFNRTtnQkEzQm5CLGlCQTJCYUYsU0FBTUU7O2dCQUFNSTs7Z0JBQVpOLGlCQUFNRSxNQUFNSSxTQUFaTixZQUtpRDtJQWxFckMsU0FvRXZCTyxXQUFXUCxNQUFNRTtNQUNuQjtRQUFJLGVBRGVBLE1BQU5GOzs7O1NBRUssd0JBRkxBLFNBQU1FO21CQUVvQjtJQXRFZCxTQXdFdkJNLFVBQVFDLEtBQ1YsYUFEVUEsTUFDcUIsVUFEckJBLElBQ3NDO0lBekV2QixTQTJFdkJDLE9BQU9WLE1BQU1XLEtBQUtDLFdBQVdDO01BQ3BCO3dCQURJRjtPQUVFLHVCQUZHQztPQUdGLHdCQUhhQztPQUlWOzt5Qm5EeE14QixPbUQwS0taLGlCQTBCT0QsYUFFTGU7T0FHa0I7O3lCbkR6TXpCLE9tRDBLS2QsaUJBMEJPRCxhQUdMZ0I7TUFFa0I7OztVQUxiaEIsb0NBSUxpQixlQUhBSDtPQURLZDtNQUNFLElBSVcsa0JBTGJBO01BS2EsY0FPYm1CLElBQUkxbkUsS0FBSzJuRTtRQUNULFdBREFELElBWExMLFFBWTRCLG1CQUR2QkssSUFBSTFuRSxLQUFLMm5FLFlBQ2dEO01BRmhFOztNQU1GO2lCQUNPRyxJQUFJckI7VUFDSyxpQ0FEVHFCLElBQUlyQixNQUhQbUI7VUFJWSxTQUhaQztVQUdZO1lBR0QsNkJBSkpwQixNQWxCRkY7Ozs7O1VBcUJELGlDQUhHRTtVQUdILFFBRVc7UUFwQmZjO1FBRUFFO01Bb0JKO2lCQUNPSyxJQUFJckI7VUFDSyxpQ0FEVHFCLElBQUlyQixNQVhQbUI7VUFhYSxpQ0FGTm5CLFFBVlBvQjtVQVlhLFFBQThCO1FBMUIzQ1A7UUFFQUU7TUFxQkosV0FWSUk7TUFVSixXQVRJQztNQUxGLElBY0YsWUF6QlN0QjtNQWlDTjs7O2lCQUNPdUIsSUFBa0JDO1VBQXZCLElBQU9MLElBQUZJLE9BQ0MsV0FEQ0osSUE5QlJGLGdCQThCd0JPLE1BQWxCRCxJQUFrQkMsR0FDZ0M7OztNQUZ6RCxRQUlJO0lBaEhrQixTQWtIdkJDLE1BQU16QjtNQUVOO2dCQUZNQTtPQUVOOzs7Ozs7TUFFdUIsY0FKakJBO01BTUw7OztpQkFDTzl3RSxFQUFFTjtVQUFnQiw2QkFBaEJBLEVBUEpveEU7VUFPb0IsMEJBQWhCcHhFLE9BQUZNLEVBQTRDO1FBTlZ3eUU7UUFBd0JmO01BS2pFLFdBTEVVO01BS0YsV0FMV0M7TUFDWixTQUZNdEI7TUFZTDs7O2lCQUNPdUIsSUFBa0JDO1VBQXZCLElBQU9MLElBQUZJLE9BQ0MsV0FEQ0osSUFaNENQLFlBWTVCWSxNQUFsQkQsSUFBa0JDLEdBQzRCOztRQWJoQ0c7TUFXckIsUUFJb0I7SUFsSUUsU0FvSXZCQyxTQUFTNUI7TUFDWCxJQUFJbGQsTUFET2tkLFNBQ1gsV0FBSWxkLGNBQUosT0FBSUEsS0FFQztJQXZJb0IsU0F5SXZCK2UsYUFBYTdCLE1BQU1ydUU7TUFDckI7UUFBSSw2QkFEaUJBLEtBQU5xdUU7Ozs7VUFHRCxJQUFSbGQsTUFBUSxTQUhDa2Q7VUFJVix3QkFKZ0JydUU7V0FJYyw4QkFKZEEsS0FHZm14RCxNQUhTa2Q7VUFLYixPQUZJbGQ7UUFQTixXQVNPO0lBOUlrQixTQWdKdkJnZixTQUFTckIsS0FDUixrQkFEUUEsY0FDNEI7SUFqSmQsU0FtSnZCc0Isc0JBQXNCL0IsTUFBTWdDLE1BQU1DO01BQ3hCO3dCQURrQkQ7T0FDbEIsT0FBUkU7T0FBUSxNQUR3QkQ7T0FHMUIsbUJBRE5FLFNBQWdDQztPQUMxQixLQURORDtPQUNNOztZQUNWcHhFO1FBQ0U7VUFBVzs7NkJBTFdpdkUsTUFLWSxpQkFKaENrQyxRQUdKbnhFO1VBQ0UsaUJBRkVnRCxJQUNKaEQ7VUFDYSxTQURiQTs7O01BSFksSUFNWixLQUxvQ3F4RSxjQUtwQzs7O1FBQ0U7VUFBa0I7Z0JBRHBCNTNFLElBTEkyM0U7V0FNZ0Isa0JBUkluQyxNQVFlLGlCQVJIaUMsS0FPcEN6M0U7VUFDRSxpQkFMRXVKO1VBS2dCLFNBRHBCdko7OztNQUdBLE9BUEl1SixHQU9EO0lBN0pzQixTQStKdkJzdUUsYUFBYXJDLE1BQU1ydUU7TUFDckI7UUFBSSw2QkFEaUJBLEtBQU5xdUU7Ozs4QkFDaUM7bUJBQVk7SUFoS25DLFNBa0t2QnNDLGNBQWN0QyxNQUFNSTtNQUNaLDRCbkQ1UmIsT21Ed1JLaUMsYUFHY3JDLGFBQU1JLE1BQ2M7SUFuS1gsU0FxS3ZCbUMsZ0JBQWdCdkMsTUFBTXR4RSxHQUN4QixjQUR3QkEsRUFBTnN4RSxVQUNsQixRQUEyQztJQXRLbEIsU0FtTHZCd0MsYUFBYUM7TUFDZixTQURlQSxlQUNtQjtNQUV2QjtzQ0FISUE7T0FJSCxnQkFEUkM7TUFFSjtpQkFDT2w0RSxFQUFFKzJFO1VBQ0wsSUFBSUosS0FERDMyRTtVQUV1QiwrQkFGckIrMkUsSUFDREosSUFISm5CO1VBSzBCLDhCQUZ0Qm1CLE1BSEpuQjtVQUswQixRQUF3QztRQVR2RHlDO01BS2YsT0FESXpDLEtBT0M7SUE5TG9CLFNBZ012QjJDLFdBQVczQztNQUNiLHFCQTFKRUYsb0JBeUpXRTtNQUVTLGVBRlRBO01BR1c7ZUFIWEE7cUJBR1csaUJBSFhBLHVDQUdrRDtJQW5NdEMsU0FxTXZCNEMsU0FBU0MsSUFBSVosS0FBS3JCLFdBQVdDLGtCQUErQjk1QztVQUFMcEssYUFBVm1tRDtNQUMvQyxPQURXRCxJQUFJWixLQUFLckIsV0FBV0M7TUFDL0IsSUFDSTloRSxLQUYwRGdvQixJQUdoRCxXQUhpQys3QyxRQUFwQ0QsSUFBOENsbUQsS0FHZixXQUhLbW1ELFFBQXBDRDtNQUlYLE1BSldBO01BQ1g7T0FHQTtPQU1LLGNBVjBCaEM7T0FRNUI7OztvQkFDT2tDLElBQTJCLGtCQVQxQkYsSUFTMEIsaUJBVDFCQSxJQVNERSxJQUErRDs7T0FGbEMsY0FQeEJkO01BTVo7O21CQUpDbGpFOztpQkFLTSxxQm5EclViLE9tRHdSS3NqRSxhQXNDU1E7O0lBck1jLFNBaU52QkcsV0FBV0MsVUFBVUM7TUFDWCx1QkFEQ0QsV0FFRSxvQkFGUUMsV0FDbkJsRDtNQUVKLFdBRklBO01BR0gscUJBRkdtRCxZQUZtQkQsV0FFbkJDLFdBRXFEO0lBck5oQyxTQTBOdkJDLGlCQUFpQkgsVUFBVUMsV0FBV0c7TUFDNUIsdUJBRE9KLFdBRUosb0JBRmNDLFdBQ3pCbEQ7TUFFSixXQUZJQTtNQUVKLGdCQUg2QmtEO01BRzdCLGdCQURJQztNQUNKLFFBRStCO0lBL05OLFNBaU92QkcsWUFBWUM7TUFDZCxTQUFJQyxhQUFpQixvQ0FEUEQsSUFDNkM7TUFBM0QsVUFBSUMsb0JBQ3VDO0lBbk9sQixTQXVPdkJDLGNBQWN6RDtNQUVOLElBQU50bUUsSUFBTSxtQkFGTXNtRTtNQUloQixTQUpnQkE7TUFLUixzQkFISnRtRSxJQUdnQjtJQTVPSyxTQThPdkJncUUsa0JBQWtCQyxNQUFNM0Q7TUFDMUIsR0FEb0IyRCxNQUNhLE9BRGJBO01BR1IsSUFBTmpxRSxJQUFNLG1CQUhjc21FO01BS3hCLFNBTHdCQTtNQU1oQixzQkFISnRtRSxJQUlIO0lBclBzQixTQXVQbkJrcUUsT0FBT2xxRTtNbkRoWGhCOzs7Y21EbVhRNUksYUFBSHBDO1VBQVEsV0FBUkEsRUFIV2dMO3NCQUdSNUk7O1FBREs7SUF6UGUsU0E0UHZCK3lFLGlCQUFpQm5xRSxJQUFJc21FO01BQ3ZCLFVBRHVCQSxTQUN2QixXQUFJOEQ7TUFBSixZQUVFLE9BSGlCcHFFLElBQ2ZvcUUsV0FFYztJQS9QTyxTQWlRdkJDLHFCQUFxQkosTUFBTWpxRSxJQUFJc21FO01BQ2pDLEdBRHVCMkQsTUFDVSxPQURKanFFO01BQ2EsSUFDcENvcUUsTUFGMkI5RDtNQUNTLFNBQ3BDOEQsTUFDZ0IsT0FIT3BxRSxJQUV2Qm9xRTtNQUNnQyxPQUhUcHFFLEdBSzFCO0lBdFFzQixTQXdRdkJzcUUsK0JBQW1DTCxNQUFNM0Q7TUFDM0MsR0FEcUMyRCxNQUNKLE9BRElBO01BRXpCLElBQU5qcUUsSUFBTSxjQUYrQnNtRTtNQUd6QyxpQkFESXRtRSxJQUZxQ3NtRTtNQUd6QyxPQURJdG1FLEdBR0g7SUE3UXNCLFNBd1N2QnVxRSxXQUVLOTdEO01BRk0sR0FFTkEsTUFBVSxPQUFWQSxTQURJLDZCQUNpQjtJQTFTSCxTQStTdkIrN0QsV0FBV2wxRSxFQUFFbTFFLEtBQUs3bUQ7TUFDcEIsdUJBQUl2cEIsS0FBSjtZQURhL0U7WUFHYnhFO1FBQ0U7bUJBRkVxRTtVQUVlLDJCQUpKczFFLEtBR2YzNUU7VUFDRSxTQURGQTthQUhhd0UsTUFHYnhFOztNQUZBLFNBQ0lxRTtNQWxCa0IsR0FnQkZ5dUIsUUFkSCx3QkFlYnZwQjtNQWhCTyw2QkFzQlI7SUF0VHNCLFNBMlV2QnF3RSxjQUFjQyxLQW5CSUY7TUFvQmQsSUFwQm1CRyxTQW9CbkIsV0FEVUQ7TUFDVixHQXBCbUJDO1FBc0J2QixRQXRCa0JILHdCQUFGMzVFLE1BQU84eUI7O1FBQ3pCO2tCQURrQjl5QjtZQUVSLHlCQUZVMjVFLEtBQUYzNUUsVUFHRSs1RSxTQUhLam5EO1lBSXZCO2NBdkJVLEdBc0JRaW5EO21DQURoQngwQjtrQkFHTSxJQUxleTBCLFNBS2YsV0FGVUQ7a0JBRVYsR0FMZUM7b0JBUWpCLFFBUlVoNkUsZ0JBQU84eUI7a0JBTVY7Z0JBbkJGLEdBZ0JPaW5EO2tCQWRILFNBY0dBOztrQkFkSCxJQVhDMzFFLEtBd0JkbWhEO2tCQXhCa0IsR0F5QkZ3MEI7b0JBdkJILGNBRkMzMUUsU0FhaEJzMUUsV0FTZ0IxNUUsVUFBRTI1RSxLQXRCRnYxRTtrQkFDUDtnQkFTQTtjQU5BO1VBbUJHLE9BRFcwdUI7TUF3QnZCLGtCQXhCa0I2bUQsNkJBbUJKRSxLQUs4QjtJQWhWckIsU0FtWXZCSSxVQUFVekU7TUFDSixpQkFESUE7TUFHc0I7OztTQUY5Qmh4RTs7O2dCQUU4QixpQkFIdEJneEUsMENBQ1JoeEU7WUFDQThRLElBRVUsV0FKRmtnRTtNM0NvQk4sa0IyQ2xCRmxnRSxJQURBOVE7TUFLSixpQkFOWWd4RSxTQUVSbGdFO01BSUosT0FKSUEsR0FLSDtJQTFZd0IsU0E4ZHZCNGtFLFlBQVkxRSxNQUFNVDtNQUNwQixRQURvQkEsbUJBQ3BCOztXQXhEb0IvMEUsT0F3RGhCK0g7VUFFRjtnQkExRGtCL0g7V0EwRE4sdUJBSE0rMEU7V0F0RHBCOztjQUFjO3VCQURNLzBFO2NBQ1Esd0JBc0RSKzBFLHVCQXREZ0I7V0FDOUI7b0JBbURKb0Y7OztjQWxEd0I7O2VBdURRQyxNQTdJbEIsU0FBSnYxRSxHbkQ3Y2YsZ0JtRDZjNEJxSyxLQUFRLE9BQXJCckssQ0FBc0IsR0FBdEJBOzs7Y0F1RlU7O2VBc0RZdTFFLE1BNUlsQixTQUFONTFFLEduRDljYixnQm1EOGM0QjBLLEtBQU8sT0FBUEEsUUFBZjFLLEVBQTRDLEdBQTVDQTs7O2NBdUZZOztlQUFrQjtlQXFETjQxRTtnQkExSWxDLFNBRFVsdEUsRUFBRTFJLEduRC9jZixnQm1EZ2RZMEssS0FDUCxPQURPQSxRQURDaEMsT0FBRTFJLEVBRW1EO2tCQUZyRDBJLEVBQUVvSTs7O2NBdUZVOztlQW9EWThrRTtnQkF4SWxCLFNBQUw1MUU7bUJuRGxkZCxnQm1Ea2Q0QjBLLEtBQU8sa0JBQVBBLFdBQWQxSyxHQUFjMEssSUFBcUI7a0JBQW5DcUc7OztjQXFGVzs7ZUFtRFk2a0U7Z0JBdklsQixTQUFONTFFLEduRG5kYixnQm1EbWQ0QjBLLElBQUlySyxHQUFLLFFBQXhCTCxLQUFtQkssRUFBSyxRQUF3QjtrQkFBaER3MUU7OztjQXFGWTs7ZUFBa0I7ZUFrRE5EO2dCQXRJaEIsU0FBTmwyRSxFQUFFVyxHbkRwZGpCLGdCbURvZDhCcUssS0FBUSxrQkFBdkJoTCxFQUFFVyxFQUF3QjtrQkFBMUJYLEVBQUU2Wjs7O2NBcUZROztlQUFrQjtlQWlETnE4RDtnQkFySWhCLFNBQVJsMkUsRUFBRU07bUJuRHJkZixnQm1EcWQ4QjBLLEtBQU8sa0JBQXhCaEwsRUFBaUJnTCxRQUFmMUssR0FBZ0Q7a0JBQWxEdWlELElBQUV1ekI7OztjQXNGQTs7ZUFBbUI7ZUFBa0I7ZUErQ2ZGO2dCQW5JbEMsU0FEVWwyRSxFQUFFZ0osRUFBRTFJO21CbkR0ZGpCLGdCbUR1ZFkwSztxQkFDUCxrQkFGUWhMLEVBQ0RnTCxRQURHaEMsT0FBRTFJLEdBRXFEO2tCQUZ6RHdpRCxJQUFFbC9CLElBQUV5eUQ7OztjQXVGUTs7ZUFBa0I7ZUE2Q05IO2dCQWpJaEIsU0FBUGwyRSxFQUFFTTttQm5EemRoQixnQm1EeWQ4QjBLO3FCQUFTLGtCQUF6QmhMLEVBQXlCLFdBQVRnTCxXQUFkMUssR0FBYzBLLEtBQXlCO2tCQUF6Q2c0QyxJQUFFc3pCOzs7Y0FzRkQ7O2VBQWtCO2VBQWtCO2VBMkNkSjtnQkFoSVIsU0FBUmwyRSxFQUFFVyxFQUFFQzttQm5EMWR6QixnQm1EMGRzQ29LLEtBQVEsa0JBQXpCaEwsRUFBRVcsRUFBRUMsRUFBMEI7a0JBQTlCdWlELElBQUVFLElBQUV6aUQ7OztjQXdGVjs7ZUFBa0I7ZUFBa0I7ZUF3Q2RzMUU7Z0JBL0hSLFNBQVZsMkUsRUFBRVcsRUFBRUw7bUJuRDNkdkIsZ0JtRDJkc0MwSyxLQUFPLGtCQUExQmhMLEVBQUVXLEVBQWlCcUssUUFBZjFLLEdBQWtEO2tCQUF0RG9qRCxJQUFFRixJQUFFK3lCOzs7Y0EwRlI7O2VBQWtCO2VBQWtCO2VBQW1CO2VBcUNqQ0w7Z0JBMUhsQyxTQURnQmwyRSxFQUFFVyxFQUFFcUksRUFBRTFJO21CbkQvZHpCLGdCbURnZVkwSztxQkFDUCxrQkFGY2hMLEVBQUVXLEVBQ1RxSyxRQURXaEMsT0FBRTFJLEdBRStDO2tCQUZyRHNqRCxJQUFFNHlCLElBQUVsakQsSUFBRW1qRDs7O2NBeUZWOztlQUFrQjtlQUFrQjtlQWtDZFA7Z0JBOUhULFNBQVJsMkUsRUFBRVcsRUFBRUw7bUJuRDVkeEIsZ0JtRDRkcUMwSztxQkFBVyxrQkFBNUJoTCxFQUFFVyxFQUEwQixXQUFYcUssV0FBYjFLLEdBQWEwSyxLQUEyQjtrQkFBNUM2NEMsSUFBRTZ5QixJQUFFQzs7O2NBK0ZUOztlQUFrQjtlQUFrQjtlQStCZFQ7Z0JBN0hWLFNBQVJsMkUsRUFBRU0sRUFBRUs7bUJuRDdkdkIsZ0JtRDZkb0NxSyxLQUFPLGtCQUF4QmhMLEVBQWlCZ0wsUUFBZjFLLEdBQUVLLEVBQWdEO2tCQUFwRG1qRCxJQUFFOHlCLElBQUVDOzs7Y0FpR1I7O2VBQWtCO2VBQW1CO2VBQWtCO2VBNEJqQ1g7Z0JBdkhsQyxTQURnQmwyRSxFQUFFZ0osRUFBRTFJLEVBQUVLO21CbkRsZXpCLGdCbURtZVlxSztxQkFDUCxrQkFGY2hMLEVBQ1BnTCxRQURTaEMsT0FBRTFJLEdBQUVLLEVBRStDO2tCQUZyRG0yRSxJQUFFQyxJQUFFQyxLQUFFQzs7O2NBK0ZWOztlQUFrQjtlQUFrQjtlQXlCZGY7Z0JBNUhULFNBQVJsMkUsRUFBRU0sRUFBRUs7bUJuRDlkeEIsZ0JtRDhkcUNxSztxQkFBUyxrQkFBMUJoTCxFQUEwQixXQUFUZ0wsV0FBZjFLLEdBQWUwSyxLQUFickssRUFBd0M7a0JBQTVDdTJFLElBQUVDLEtBQUVDOzs7Y0FzR1Q7O2VBQWtCO2VBc0JJbEI7Z0JBckhYLFNBQU41MUUsRUFBRUs7bUJuRHJldEIsZ0JtRHFlbUNxSztxQkFBTyxrQkFBUEEsV0FBZjFLLEdBQWUwSyxJQUFickssRUFBK0M7a0JBQWpEMDJFLEtBQUVDOzs7Y0FpR1A7O2VBQWtCO2VBb0JJcEI7Z0JBbkhsQyxTQURlNTFFLEVBQUVtcEI7bUJuRHRlcEIsZ0JtRHVlWXplO3FCQUFPLGtCQUFQQSxXQURNMUssR0FDTjBLLFlBRFF5ZSxHQUNpRDtrQkFEbkQ4dEQsS0FBRTl0RDs7O2NBa0dMOztlQUFrQjtlQUFrQjtlQWtCZHlzRDtnQkFqSGxDLFNBRGU1MUUsRUFBRTBJLEVBQUV5Z0I7bUJuRHhldEIsZ0JtRHllWXplO3FCQUFPLGtCQUFQQSxXQURNMUssR0FDTjBLLFlBRFFoQyxPQUFFeWdCLEdBRWdEO2tCQUZwRCt0RCxLQUFFQyxJQUFFNWdEOzs7Y0FtR1A7O2VBQWtCO2VBZUlxL0M7Z0JBOUdsQyxTQURnQjUxRSxFQUFFbXBCO21CbkQzZXJCLGdCbUQ0ZVl6ZTtxQkFBaUMsb0JBQWpDQSxXQURTeWUsR0FDVHplO3FCQUFpQyxrQkFBakNBLFdBRE8xSyxHQUNQMEssU0FBaUQ7a0JBRDFDMHNFLEtBQUVoZ0Q7OztjQWtHTixnQkFBa0I7Y0FBeUIsVUFVekM0NUM7Y0FWRjtlQWFzQjRFO2dCQTVHbEMsU0FEYXpzRCxFQUFFOW9CO21CbkQ3ZWxCLGdCbUQ4ZVlxSztxQkFBTyx5Q0FERHJLLEVBQUY4b0IsS0FBRTlvQixFQUN5QztrQkFEM0NnM0UsSUFBRUM7OztjQWtHSCxnQkFBa0I7Y0FBd0IsVUFReEN0RztjQVJGO2VBV3NCNEU7Z0JBMUdsQyxTQURXenNELEVBQUVucEI7bUJuRC9laEIsZ0JtRGdmWTBLO3FCQUNQLFNBRE9BLFFBREkxSztxQkFFWCw4Q0FGU21wQixVQUdtQjtrQkFIbkJvdUQsSUFBRUM7OztjQWtHRCxnQkFBa0IsWUFBa0I7Y0FDN0IsVUFLTHhHO2NBTkY7ZUFTc0I0RTtnQkF0R2xDLFNBRFd6c0QsRUFBRXpnQixFQUFFMUk7bUJuRG5mbEIsZ0JtRG9mWTBLO3FCQUNQLFNBRE9BLFFBREloQyxPQUFFMUk7cUJBRWIsOENBRlNtcEIsVUFLcUI7a0JBTHJCc3VELElBQUVDLElBQUVDOzs7Y0FpR0gsZ0JBQWtCO2NBQXlCLFVBR3pDM0c7Y0FIRjtlQU1zQjRFO2dCQWhHbEMsU0FEWXpzRCxFQUFFbnBCO21CbkR6ZmpCLGdCbUQwZlkwSztxQkFDRyxvQkFESEEsV0FESzFLLEdBQ0wwSztxQkFDRyw4Q0FGQXllLFVBRTZDO2tCQUY3Q3l1RCxJQUFFQzs7ZUFpR29CakMsTUFMaENEO1VBTUEsV0FKWTNFLE1BR1JFLE1BQTRCMEU7VUFDaEM7O1FBMURZLFNBNERWO0lBcGVxQixTQTJldkJrQztNQUNGLFVBL2VFNUgsZUF5Q0FXLGdCQUNBQyxrQkFzY3VEO0lBN2VoQzs7OztPQTRDdkJDO09BNkZBOEI7T0FVQUU7T0FZQU07T0FHQUM7T0FqSEFyQztPQVNBRTtPQVVBSTtPQVBBRjtPQWlhQXFFO09BblpBaEU7T0F1Q0FlO09BbURBYztPQWxMQXREO09BZ01BdUQ7T0FhQUc7T0FLQUM7T0FZQUk7T0FTQUk7T0FPQUU7O09BTUFHO09BT0FDO09BY0FHO09BS0FFO09BT0FDO09BbUVBSTtPQTlaQTFGO09BOGpCQW9JO0lBM2V1Qjs7O2FDdEV2QkMsZUFBZXhELElBQUl5RDtNQUNyQjtjQURxQkE7T0FFVixzQkFEUDVzRTtPQUNPLEtBRFBBO09BQ087O1lBQ1g1UDtRQUNFO1VBQTBCLElBaENJMDhFLE1BZ0NKLGlCQUpQRixRQUdyQng4RTtVQTlCQSxVQURnQzA4RTtXQUNoQyxPQURnQ0E7O2NBSTNCOzt5QkEyQkwxOEU7MkJBM0JhNnNELEdBQUlob0Q7b0JBQ21CLElBQXpCODNFLEtBTFVGLFNBK0JyQno4RTtvQkExQm9DLEdBRHZCNnNELE9BQ0Y4dkIsS0FFRixvQ0FxQlE1RDtvQkFuQlIsa0JBSkU0RCxLQURNOTNFLEVBS0g7eUJBTERnb0Q7ZUFBUixRQTJCTDdzRDtlQTlCSXVVLEtBR1NzNEM7OztjQVFSLElBQVF2bUQ7Y0FPUjtnQkFQUUE7O2lCQUFSLFNBQVFBLEVBbUJidEc7b0JwRHRESDtzQm9EcUM2QixJQUFiaWQsSUFkUXcvRCxTQStCckJ6OEU7c0JBakIwQixHQUZic0csTUFFQTJXLElBRUYsb0NBWU04N0Q7c0JBZFMsU0FJZixhQUpFOTdEO3NCQUlGOytCQUpFQTs0Q2hDVlh4TSxpQmdDVVd3TTttQkFGQTNXLEVBbUJidEc7Y0FuQkssSUFYRHVVLEtBV1NqTzs7eUJBWFRpTyxLQW9CVSxZQU9Hd2tFOztXQTNCakIsU0FEZ0MyRDtZQXVCM0IsVUF2QjJCQSxTQUM1Qm5vRSxLQXNCVSxlQUtHd2tFLElBTk42RDs7WUFFSSxNQXhCaUJGLFNBQzVCbm9FLEtBdUJNblE7VUFFVixTQUtBcEUsS0E5Qkl1VTtVQStCd0IsU0FENUJ2VTs7O01BR0EsT0FsQ3FCeThFLElBa0NqQjthQUVGSSxTQUFTOUQsSUFBSTJEO01BQ2YsVUFEZUE7UUFHWixJQURNRSxNQUZNRixTQUdaLHNCQUhRM0QsSUFFRjZEO01BRUYsK0NBQWlEO2FBaUJ0REUsaUJBQWlCTixRQUFNMXNFLEVBQUV0TDtNcERoRjlCLFNvRGlGVyxhQURtQkEsTUFBUmc0RSxzQkFBUWg0RTtRQUUzQixTQUZtQmc0RSwyQkFFbkI7OztVQUNFO1lBQStCLFFBSE5oNEUsTUFFM0J4RSxHQUN1Qix1QkFISnc4RSxRQUVuQng4RTtZQWhCQSxVQUQ4QjA4RTthQUM5QixTQUQ4QkE7O3dCQU9uQixhQVB5QnBuRTtpQkFReEIsT0FPYXhGLE1BRXpCOVAsR0FSR3NVO2lCQUNFOzBCQURGQSxLQVRpQ2dCLFFBU2pDaEI7bUJBQ0UsU0FERkE7Ozs7O2U1Q3NjRzs7YzRDNWNILE1BY0h0VSxLQWpCb0NzVjs7YUFDcEMsU0FEOEJvbkU7ZUFhM0IsSUFETUUsTUFacUJGLFNBYUosaUJBRGpCRSxNQUdnQjlzRSxNQUV6QjlQLEdBakJvQ3NWO1lBa0JILFNBRGpDdFY7Ozs7bUNBRUk7YUFFRmc5RSxXQUFXTixNQUFNNXNFLEVBQUV0TDtNQUNyQixVQURhazRFO1FBR1YsSUFETUUsTUFGSUYsU0FHVix3QkFETUUsTUFGVTlzRSxFQUFFdEw7TUFJZCwrQ0FBbUQ7MkJBL0J4RHE0RSxTQTJCQUc7O0lDMURpQjs7ZUFBakJDO0tBQWlCO2FBS2pCRztNQUFrQixZQUxsQkgsZUFLa0Isc0JBQXFDO0lBTHRDLFNBT2pCSSxNQUFNajJFO01BQ1Isd0JBTkU4MUUsY0FDQUM7UUFNZ0IsSUFBWkcsVUFBWSxzQkFOaEJIO1FBT0EsS0FSQUQsWUFPSUksWUFOSkg7UUFPQSxZQURJRztNQUlOLGVBWEVKLFVBQ0FDLFVBSU0vMUU7TUFNUjtjQUNXO0lBZFEsU0FnQmpCbTJFO01BQ00sSUFBSjc0RSxFQUFJLFdBZk53NEUsWUFDQUM7TUFjTSxZQWpCTkY7TUFpQk0sT0FBSnY0RSxDQUFxRTtJQWpCdEQsU0FxQmpCODRFLFdBQVdDO01BQ0csSUFBWkMsVUFBWTtNQUNoQjtpQkFBZWg1RSxHQUFLLG9DQURoQmc1RSxVQUNXaDVFLFFBQW9DO1FBRnRDKzRFO01BRWIsU0FDSUUsaUJBQWlCcnVFO1FBQ25CO1VBQUksc0NBSEZvdUUsVUFFaUJwdUU7OztnQ0FFSixVQUZJQTtVQURELFdBR0s7TUFIekIsU0FJSXN1RSxpQkFBaUJ4MkU7UUFDWCxJQUFKMUMsRUFBSSxTQURXMEM7UUFDWDtVQUNKLHNDQVBGczJFLFVBTUVoNUU7OztnQ0FFK0IseUNBRi9CQTtVQUhKLFdBSzhEO01BUGhFLFNBc0lJbTVFLFFBV21CMStDO1FyRHBNMUI7UXFEMExLO1VBQU0saUJBVWVBO1VBVmY7Ozs7O2dCQUNRLEtBU09BO2dCQUpmLG1CQUllQTtnQkFKZjt3Q0FDUSxLQUdPQSxNQUgrQixRQUcvQkE7a0JBRlQsS0FFU0E7O2dCQURkOzs7Z0JBUE8sS0FRT0E7Z0JBQ3JCO2tCQUFNLG1CQURlQTtrQkFDZjs7b0NBQ1EsS0FGT0EsTUFFUDtvQ0FDQSxLQUhPQTtvQkFJVCxLQUpTQTs7a0JBS2Q7WUFaSyxLQU9TQTs7VUFOZCxnQkFBb0I7TUEzSTdCLFNBMkdJMitDLE9BQVEzK0M7UUFDSixpQkFESUE7UUFDSjs7Ozs7O3NCQUNRLEtBRkpBLE1BRUk7c0JBQ0EsS0FISkEsTUFHSTtzQkFDQSxLQUpKQSxNQUlJOzs7O2FBRVYsS0FOTUE7YUFPTSxtQkFQTkE7YUFPTTs7O2lCQUVSLEtBVEVBO2lCQVVVLG1CQVZWQTtpQkFVVTs7O3FCQUVSLEtBWkZBO3FCQVlFOzs7Ozs7Ozs7O2lCQUlHO2FBRUo7VUFFQyxLQXBCRkE7VUFvQkU7UUFDTCxlQUFvQjtNQWhJN0IsU0FpRkk0K0Msa0JBQW1CNStDO1FBQ3JCO1VBQU0saUJBRGVBO1VBQ2Y7O3dDQUVGLEtBSGlCQSxNQUdxQjtVQUNTLGtDQUFmLGlCQUFpQjtNQXJGdkQsU0E0RUk2K0MsY0FBZTcrQztRQUNYLGlCQURXQTtRQUNYOzs7VTdDZ1pGO1k2QzlZQSxLQUhhQSxNQUd5QixxQ0FIekJBO1FBSVYseUJBSlVBLEtBSWM7TUFoRmpDLFNBNERJOCtDLE9BYzBCdjVFO1FBYjVCO1VBQU0saUJBYXNCQTtVQWJ0Qjs7Ozs7YzdDZ2FGLGE2QzFaQSxLQU93QkEsR0FQYywrQkFPZEE7OztnQkFUeEIsS0FTd0JBO2dCQVRjO2dCQUsxQztrQkFBTSxtQkFJc0JBO2tCQUp0Qjs7O2tEQUVGLEtBRXdCQSxHQUZjOzs7dUJBRXRDLEtBQXdCQSxHQUFjLCtCQUFkQTtrQkFDdUIsa0NBQWY7NkJBWmhDLEtBV3dCQSxHQVhjO1VBS0ssZ0NBQWYsaUJBQWlCO01BcEVuRCxTQStDSXc1RSxPQUFRLytDO1FBQ1Y7VUFBTSxpQkFESUE7VUFDSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1k3QzZhRixhNkN6YUEsS0FMTUEsTUFLZ0M7VUFDOUIsMkJBQWtCLGdCQUFnQjtNQXJEaEQsU0FzRElnL0MsV0FJTXo1RTtRQUhGLGlCQUdFQTtRQUhGOzs7WUFFRixLQUNJQSxHQUFjLGdCQUFpQixVQUFXLDBCQUExQ0E7UUFDaUI7UUFBaUI7c0JBRGxDQSxFQUNxRDtNQTNEL0QsU0F5Q0l1K0IsTUFBTzlEO1FBQ1Q7VUFBTSxpQkFER0E7VUFDSDs7Ozs7Ozs7Ozs7OztZN0NtYkYsYTZDaGJBLEtBSktBLE1BSWlDO1VBQzlCLDJCQUFrQixnQkFBZ0I7TUE5Q2hELFNBU1FpL0MscUJBeUZFai9DO1FBeEZSO1VBQU0saUJBd0ZFQTtVQXhGRjs7Ozs7Ozs7Ozs7OztvQkF5QkYsS0ErRElBO29CQTlEYztvQkFtRHRCO3NCQUFNLG1CQVdFQTtzQkFYRjs7d0NBQ1MsS0FVUEEsbUJBVk87OzBCQUVYLEtBUUlBOzBCQVJKOzRCQUVNLElBREZsZ0IsSUFDRSxPQU1Ga2dCOzs7a0RBTGtCOzs7MEJBRUosTUFKZGxnQjs7d0JBS0ksS0FFSmtnQjt3QkFGMEM7O3NCQUMzQzs7b0JBeEVILEtBeUVJQTtvQkF6RUo7c0JBMEVFLG1CQURFQTtzQkFDRixhQU9DO3NCQVBEOzt3QkFFRixLQUhJQTt3QkFHSjswQkFDVSxnQkFKTkE7OztnREFLZ0I7MEJBR2pCOzRCQWhGQy8zQjs7d0JBK0VJLEtBUEorM0IsVUF4RUEvM0I7Ozs0Q0FFa0I7O29CQUVWLG1CQW9FUiszQjs7c0JBbkVXLEtBbUVYQSxNQW5FVyxhQUxYLzNCO29CQU1HOztvQkFNRyxLQTRETiszQjtvQkE1RE07OzZCQTJGWmsvQyx3QkEvQk1sL0M7a0RBK0JOay9DLGlCQS9CTWwvQzsyQkE3RE0sS0E2RE5BLE1BN0RNLGtCQTZETkE7Ozs7OzsyQkF0RkosS0FzRklBOzs7Ozs7Ozs7OztvQkE1RUosS0E0RUlBLE1BM0VjLGdCQUFpQiwwQkEyRS9CQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTdDMlhKO3FCNkN0YlEsS0EyREpBLE1BM0Q2Qjs7ZUF6QmpDLEtBb0ZJQSxNQW5GYyxnQkFBaUIseUJBbUYvQkE7O2VBL0VKLEtBK0VJQSxNQTlFYyxnQkFBaUIsMEJBOEUvQkE7VUExREQsU0FBSTtNQXhDYixTQWlJSWsvQyxzQkFBZWwvQztRQUNYLGlCQURXQTs7VUFHYixLQUhhQTtVQUd5QixRQUh6QkE7VUFHeUI7aURBM0hwQ2kvQyx1QkF3SFdqL0M7d0NBeEhYaS9DLGdCQXdIV2ovQztRQUlMLCtCQUFzQjtNQXJJcEMsU0FTUW0vQyxXQXlGRW4vQyxNckRySmIsdUJxRDREV2kvQyxlQXlGRWovQztNQWxHVixnQkF3SkkzMkI7UUFBUyxxQkFBaUI0MUIsT0FBVSxrQkFBcEM1MUIsTUFBb0QsRUFBQztJQS9LdEMscUJBcUJqQmcxRTtJQXJCaUI7SUNzRUY7TXREbEdwQixJc0RvSVN2cUIseUJ0RHBJVDtlc0RzSVN0akQsT0FBUzZnQixJQUFxQzRpQztRQUNoRCxHQURXNWlDO1NBQVMsUUFBVEEsY0FBU0M7O2FBQVQ0aUMsT0FBUztZQVBBeHVEO1FBQ3BCO1VBQ0ssTUFLMkN1dUQsZ0JBUDVCdnVEO1lBR2YsUUFIZUE7YUFPVHd1RDtXQUVlOzhCQUp4Qko7WUFJd0Isa0JBSnhCQSxxQmxDekdKeGlELGlCa0N5R0l3aUQ7WUFJRS9DLEtBQXNCOztlQUF0QkE7VUFDOEMsMkJBVjlCcnJELEtBU2hCcXJELEtBVGdCcnJELEdBVWtEO2VBRXBFcTNCLE1BQU0xUTtRQUNSO2dCQURRQSxnQkFDUixLQUNJempCLFlBREo7O2NBRUEvSDtVQUNFOzZCQUpNd3JCLEtBR1J4ckI7WUFDRSxTQURGQTs7O2dCQUVJO2VBRUYyZ0MsTUFBTW5WO1FBQ1IsSUFBSXpqQixJQURJeWpCO1FBQ1IsT0FBSXpqQixRQURJeWpCO2lCQUdOLE1BSE1BO2tDQU1JLGVBTkpBLFVBT0w7ZUFFRGlyQyxLQUFLbGlEO1FBQUksU0FBSkEsUUFBSSxLQUFKQSxRQUFvQixZQUFwQkE7UUFBb0IsVUFBcEJBLHVCQUF1QztlQUU1Q3FoRCxVQUFVcHFDLEVBQUUreUQsTUFDZCxPQURjQSxRQUFGL3lELHdCQUN1QjtlQUVqQ2d6RCxNQUFNaHpEO1FBQ1IsU0FBUW1wQztVdERqS2Y7VXNEaUsyQjs7a0NBR0x6MEQsZ0JBQUhrSDtjQUFrQixtQkFBbEJBO29CQUdNakgsa0JBQUg4ZTtnQkFDSyxlQURMQSxJQUNLLFVBREY5ZTtjQUZaLE9BTEVxckI7MEJBSU90ckI7O1lBRFQsU0FLNkI7UUFQbkMsTUFEUXNyQixLQUNSLEtBU0lsUCxxQkFUSjs7Y0FVQXRjO1VBQ0U7WUFBUyxtQkFBVSxpQkFGakJzYyxFQUNKdGM7WUFDRSxpQkFGRXNjLEVBQ0p0YztZQUNXLFNBRFhBOzs7Z0JBRUk7ZUFzQkY0Z0MsT0FBT3BWO1FBQ1QsVUFEU0EsS0FDVCxNQUFJd29DLGlCQUFKLE1BQ0lTO1FBRUosTUFKU2pwQztRQUNUO1NBR0EsS0FESTBvQztTQUNKLFdBRklPLG9CQUZLanBDO1FBS3FEO1VBQ2hELElBQVJ5b0MsTUFBUSxlQUhWQztVQUdVLE9BQVJEO1VBQVE7OztjQUVZO29CQUVIL3pELGNBQU5xNkIsY0FBTmdrRDtnQkFDSCxjQURlcitFO2dCQUVKO2dDQVpWc3JCLEVBVUUreUQ7aUJBRzhCLFFBSDlCQSxLQUFNaGtELEtBR3dCLGlCQVBuQzA1QixNQU1NSTtnQkFDSixpQkFQRkosTUFNTUk7Z0JBQ0o7Y0FKTyxRQUl1QztXQVB4QyxLQUpWSTtXQUlVOztnQkFRWnowRDtZQUNFOzRCQUFjLGlCQWRkZzBELE1BYUZoMEQ7Y0FDRSxTQURGQTs7O1VBUlk7OztRQXhDTSxXQW1EakI7ZUFFRDgxQixJQUFJdEssRUFBRSs1QixJQUFJdDJDO1FBQ0Q7OEJBREx1YyxLQUFFKzVCO1NBRUEsWUFGRi81QixFQUNGK3lEO1NBRVksMEJBSFJoNUIsSUFBSXQyQztTQUl1QixVQUgvQnN2RSxLQUVBRyxVQUMrQixpQkFKN0JsekQsS0FFRnhyQjtRQUdKLGlCQUxNd3JCLEtBRUZ4ckIsWUFFQTYxRDtRQUNKLE9BTE1ycUM7UUFDSyxTQURMQTtRQUtOLFlBRTJDLE9BUHJDQSxPQU82QztlQUVqRHNMLE9BQU90TCxFQUFFKzVCO1FBQ0EsSUFBUGc1QixLQUFPLGdCQURGL3lELEtBQUUrNUI7UUFDQSxTQUNIbzVCO1V0RGpPZjtVc0RpTytCOztrQkFFZkMsY0FBT2x0RSxnQkFBSHRLO2lCQUhUbTNFLFNBR0tLO2dCQUNTLDBCQURMeDNFLEVBSkZtK0M7Z0JBS087eUJBQ0QsT0FOUi81QixhQU1RLE9BRkQ5Wjt5QkFHYyxVQUhyQmt0RSxHQUFJeDNFLEVBR2lCLGNBSGRzSzswQkFPTixPQVhEOFoseUJBSU85WjtrQkFVRmdpRCxrQkFBRnowQztjQUF1QixVQVYxQjIvRCxHQVVHMy9ELElBQXVCLGNBQXJCeTBDO1lBWEQsU0FXeUM7UUFDOUM7cUJBZkNsb0MsRUFDTCt5RDtTQWVVLG1CQUFjLGlCQWhCbkIveUQsS0FlTHhyQjtRQUNKLGlCQWhCU3dyQixLQWVMeHJCO1FBQ0osUUFBc0M7ZUEwQnBDd1QsS0FBS2dZLEVBQUUrNUI7UUFDRTs4QkFESi81QixLQUFFKzVCO1NBR2tCLGVBSHBCLzVCLEVBcEJZK3lEO1NBdUJELHlCQUhYL3lEOzs7O2dCQWpCQW96RCxZQUFPMStFLGNBQUhrSDtlQUhRbTNFLFNBR1pLO2NBQ1MsMEJBREx4M0UsRUFpQkZtK0M7Y0FoQk87O2lCQUVJLDRCQUhUbitDO2lCQUdTLFlBS0EsSUFBTGtWLGFBQUssT0FBTEE7aUJBTEssVUFITnBjOzs7O1lBZVYsMkJBRFM0Yzs7VUFmVCxnQkFxQnlDO2VBc0IzQzhiLFNBQVNwTixFQUFFKzVCO1FBQ0Y7OEJBREEvNUIsS0FBRSs1QjtTQUdrQixlQUhwQi81QixFQXBCWSt5RDtTQXVCRCx5QkFIWC95RDs7OztnQkFqQkpvekQsWUFBTzErRSxjQUFIa0g7ZUFIWW0zRSxTQUdoQks7Y0FDUywwQkFETHgzRSxFQWlCRW0rQztjQWhCRzs7aUJBRUksSUFLVmpwQyxFQUxVLGdCQUhUbFY7aUJBR1MsR0FLVmtWLEVBQWUsT0FBZkE7aUJBTFUsVUFITnBjOzs7O1lBZVYsMkJBRFM0Yzs7VUFmVCxTQXFCNkM7ZUFFL0N1NUMsU0FBUzdxQyxFQUFFKzVCO1FBQ0YsSUFBUGc1QixLQUFPLGdCQURBL3lELEtBQUUrNUI7UUFDRixTQUNIK1E7VXREelNmO1VzRHlTZ0M7O2tCQUVsQnNvQixjQUFPMStFLGdCQUFIa0g7aUJBSFBtM0UsU0FHR0s7Z0JBQ1MsMEJBREx4M0UsRUFKRW0rQztnQkFLRzs7bUJBQ1csNEJBRmhCbitDO21CQUVnQjtxQkFHUCxJQUFMa1YsYUFBUSxVQUFSQSxFQUFRLGVBTFRwYzttQkFFYSxZQUZiQTs7OztjQVlWLCtCQURTMG1COztZQVpGLFNBYVk7UUFDQSxtQkFqQlo0RSxFQUNQK3lEO1FBZ0JXLHVDQWpCSi95RCxxQkFpQjZCO2VBR3RDK3FDLFFBQVEvcUMsRUFBRSs1QixJQUFJdDJDO1FBQ0wsSUFBUHN2RSxLQUFPLGdCQUREL3lELEtBQUUrNUI7UUFDRCxTQUNIczVCO1V0RDdUZjtVc0Q2VGdDOztrQkFFaEJELGNBQU9sdEUsZ0JBQUh0SztpQkFIVG0zRSxTQUdLSztnQkFDUywwQkFETHgzRSxFQUpEbStDO2dCQUtNLHNCQURGN3pDO2dCQUVDLHVCQUZKdEssRUFKRG0rQyxJQUFJdDJDO2NBU00sK0JBQVQyWDs7WUFOQSxnQkFNNEI7UUFFakMsZ0JBWEU0RSxFQUNOK3lELE1BV0ksbUJBWkUveUQsS0FXTnhyQjtRQUNJO1VBRU4sd0JBRkVzRzs7OztZQUljLElBQVpvNEUsVUFBWSxnQkFoQk5uNUIsSUFBSXQyQztZQWlCZCxpQkFqQlF1YyxLQVdOeHJCLGVBVkF1K0UsS0FlRUcsVUFKRnA0RTtZQUtGLE9BakJRa2xCO1lBZ0JRLFNBaEJSQTtZQWlCUixZQUUyQyxPQW5CbkNBO1VBbEJlLFdBcUM0QjtlQUVuRHFMLElBQUlyTCxFQUFFKzVCO1FBQ0c7OEJBREwvNUIsS0FBRSs1QjtTQVdjLGVBWGhCLzVCLEVBQ0YreUQ7U0FVVSx5QkFYUi95RDs7UUFFa0I7O2dCQUdqQm96RCxZQUFPMStFLGNBQUhrSDtlQUFKdzNFLE9BSkhMO2NBS1ksMEJBRExuM0UsRUFMSG0rQztjQU1RLG9CQURGcmxEO2NBRUM7WUFHVSwyQkFBVDRjOztVQU5aLFNBT21DO2VBRXJDdkUsT0FBS3JVLEVBQUVzbkI7UUFDVCxRQURTQSxLQUNULEtBUUkxQyx1QkFSSjs7Y0FTQTlvQjs7VUFDRTtZQUFVLDZCQUZSOG9CLElBQ0o5b0I7WUFUb0I7O2dCQUlGO2lCQURIRTtpQkFBSGtIO2lCQUNNLHNCQUROQTtpQkFDbUIsd0JBRG5CQTs7O3NCQUdTa1YsYUFBUjJlLFdBQWEsV0FQbkIvMkIsRUFPTSsyQixFQUFRM2U7Z0JBRkgsVUFESHBjOzt1QkFNZkY7Ozs7UUFyQndCLFFBdUJwQjtlQUVGc04sS0FBS3BKLEVBQUVzbkIsRUFBRWpYO1FBQ1gsUUFEU2lYLEtBQ1QsVUFEV2pYLE1BQ1gsS0FVSXVVLHVCQVZKOztjQVlBOW9COztVQUNFOztrQkFGRW9UO2FBRWdCLHFCQUhoQjBWLElBRUo5b0I7YUFaa0JnRzthQUFFb0Q7WUFDbEI7aUJBRGdCcEQ7Z0JBS1c7aUJBRGQ5RixLQUpHOEY7aUJBSU5vQixFQUpNcEI7aUJBS1csc0JBRGpCb0I7aUJBQzhCLHdCQUQ5QkE7OztzQkFHV2tWLGFBQVIyZSxXQVBLM3hCLE9BT1EsV0FSckJwRixFQVFRKzJCLEVBQVEzZSxFQVBIbFQ7O2dCOUNvS2xCLGtCOENwS2tCRTtnQkFLUyxJQUxYdEQsRUFJSDlGLEtBSktrSjs7Y0FXaEJnSyxZQVhnQmhLO3VCQVlwQnBKOzs7O1FBR0EsT0FKSW9ULFNBSUM7ZUFFSDBoRCxtQkFBbUI1d0QsRUFBRXNuQjtRQUN2QixTQUFRbXBDO1V0RDlYZjtVc0Q4WDJCOztjQUlSO2VBREl6MEQ7ZUFBSGtIO2VBQUp3M0U7ZUFDRyxzQkFEQ3gzRTtlQUNZLHdCQURaQTs7Z0JBS0csSUFES2tWLGFBQVIyZSxXQUNHLG1CQVRLLzJCLEVBUVIrMkIsRUFBUTNlO2dCQUNMO2tCQUlGLElBREd3aUU7a0JBQ0gsZ0JBVEQxM0UsRUFJQTZ6QixFQUlJNmpEO2tCQUVTLFVBVmpCRixHQUFJeDNFLEVBVWEsVUFWVmxIO2dCQUtBLFlBTEFBOztjQUNKLFlBRElBOztZQURWLFNBV21DO1FBYnpDLE1BRHVCc3JCLEtBQ3ZCLEtBZUlsUCxxQkFmSjs7Y0FnQkF0YztVQUNFO1lBQVMsbUJBQVUsaUJBRmpCc2MsRUFDSnRjO1lBQ0UsaUJBRkVzYyxFQUNKdGM7WUFDVyxTQURYQTs7O2dCQUVJO2VBRUY0UCxPQUFPNGIsR0FBSSxPQUFKQSxJQUFVO2VBRWJ5cEM7Ozs7WUFFZ0I7Ozs7cUJBQVRydUM7O1VBREY7ZUFHVHN1QyxNQUFNMXBDO1FBQ1I7Y0FEUUE7U0FDUjtTQUNFOztxQkFBcUJtQyxFQUFFM25CLEdBQWUsYUFBakIybkIsRUFBaUIsZ0JBQWYzbkIsR0FBa0M7U0FDL0MscUJBRlJtdkQ7U0FFUSxLQUhKM3BDO1FBSVI7bUJBQ094bEI7WUFDTTsrQkFETkE7YUFFVyxzQkFKZG92RCxNQUdLOXVEO1lBQ0osaUJBSkQ4dUQsTUFHSzl1RDtZQUNKLFFBQTBCOztRQUgvQixVQUpRa2xCLHFCQUNKMnBDLElBRUFDLE1BU3dCO2VBRXRCMnBCOzs7O2dCQUVPNytFLGdCQUFIa0g7WUFBYyxtQkFBZEE7Y0FDTixnREFEU2xIO1lBRVMsK0JBQVQwbUI7O1VBSEY7ZUFLVG80RCxZQUFZeHpEO1FBQ2Q7O2NBRGNBO1NBQ2Q7U0FFRTs7cUJBQ09tQyxFQUFFM25CLEdBQWUsYUFBakIybkIsRUFBaUIsc0JBQWYzbkIsR0FBd0M7U0FFdkMscUJBSlJtdkQ7U0FJUSxLQU5FM3BDO1FBT2Q7bUJBQ094bEI7WUFDTSxJQUFKTSxFQUFJLHNCQUROTjtZQUNNLFVBUlQ2MkMsVUFRS3YyQztZQUFJLFNBRUssaUJBTGQ4dUQsTUFHSzl1RDtZQUVKLGlCQUxEOHVELE1BR0s5dUQ7WUFFSixRQUEwQjs7UUFKL0IsVUFOSXUyQyxRQURVcnhCLGdCQUVWMnBDLElBSUFDLE1BVXdCO2VBRTFCbjhDLE9BQU9tWDtRQUdULElBQUlrbEMsU0FIS2xsQztRQUdULFNBRVEzUSxJQUFJemYsRUFBRXUxRDtjQUFGaHZELE1BQUVpdkQ7VUFBVTtlQUFWQTtjQU1JO2VBREY5akQsS0FMRjhqRDtlQUtEcHVELEVBTENvdUQ7ZUFNSSxzQkFETHB1RDtlQUNrQix3QkFEbEJBOztvQkFHWW16QixnQkFBVmdyQjtnQkFDb0I7MkJBRHBCQSxJQUFVaHJCO3VDdEQzY2hDLE9zRG1jZTlhLElBQUlsWixJQUtJbUw7Y0FDRSxJQU5KOGpELE9BS0U5akQ7O1lBSFYsR0FGTW5MLFFBRlIrdUQsb0JBS087WUFDUztxQ0FOaEJBLFNBRVEvdUQ7YUFJUSxJQUpSQTs7YUFBRWl2RDtxQkFVTDtRQVpUOzhCdERqY1AsT3NEbWNlLzFDLG9CQVlHO2VBRVRpMkMsWUFBWS9uQztRQUFnQixnQkFBaEJBO1FBQWdCLG9CdERqZHJDO1FzRGlkcUMsc0J0RGpkckMsT3NCbUNTN2Isc0JnQzhhc0M7ZUFFdEM2akQsY0FBY2hvQztRQUFnQixnQkFBaEJBO1FBQWdCLG9CdERuZHZDO1FzRG1kdUMsc0J0RG5kdkMsT3NCbUNTN2Isc0JnQ2did0M7ZUFFeEM2bkIsUUFBUXZKLElBQUlwd0I7UUFDZDs7bUJBQVMscUNBRENvd0IsSUFDSzZLLEVBQUU3MkIsRUFBa0I7aUJBRHJCcEUsRUFDdUI7ZUFFbkN3MkQsWUFBWXBtQyxJQUFJcHdCO1FBQ2xCOzttQkFBUyx5Q0FES293QixJQUNDNkssRUFBRTcyQixFQUFzQjtpQkFEckJwRSxFQUN1QjtlQUV2QzQ1QixPQUFPNTVCLEdBQ0MsSUFBTm93QixJQUFNLGFBQ1YsWUFESUEsSUFES3B3QixHQUVULE9BRElvd0IsR0FFRDs7Y0F4VkR6Z0I7Y0FLQXVzQjtjQU9BeUU7Y0FTQTgxQjtjQTJEQTNnQztjQVNBZ0I7Y0EwQ0F0akI7Y0F5QkFvbEI7Y0FLQXk5QjtjQW9CQUU7Y0FxQkExL0I7Y0FhQXRlO2NBZ0NBdThDO2NBbEJBeG5EO2NBdUNBc0M7Y0FNQXNsRDtjQXNDQWo4QztjQW1CQXk4QztjQUVBQztjQUVBaDhCO2NBR0E2OEI7Y0FHQTU4QjtjQTNUQTRrRDtjQTRRQVE7SUExVVcsU0ErWWJDLGdCQUF3QiwyQkFBZTtJQS9ZMUIsU0ErYlRDLFVBOUNLbHVFLEdBQW1DLHlCQUFuQ0EsSUFBdUQ7SUFqWm5ELFNBa1pibXVFLGVBQWNudUUsR0FBbUMseUJBQW5DQSxJQUE0RDtJQWxaN0QsU0FtWmJvdUUsVUFBU3B1RSxFQUFjaXFCLEdBQWUseUJBQTdCanFCLElBQWNpcUIsRUFBOEM7SUFuWnhELFNBb1pib2tELFlBQVdydUUsR0FBc0IseUJBQXRCQSxJQUEwQztJQXBaeEMsU0FxWmJzdUUsWUFBV3R1RSxHQUFzQix5QkFBdEJBLElBQTBDO0lBclp4QyxTQXVaYnV1RSxXQUFVbmhFLEdBQWVGLElBQzNCLHlCQURZRSxLQUFlRixPQUNBO0lBeFpaLFNBMFpic2hFLFdBQVV4dUUsR0FBbUMseUJBQW5DQSxFQUFzRDtJQTFabkQsU0EyWmJ5dUUsY0FBZXp1RSxHQUFtQywwQkFBbkNBLEVBQTJEO0lBM1o3RCxTQTRaYjB1RSxTQUFVMXVFLEVBQWNzTCxHQUFlLDBCQUE3QnRMLEVBQWNzTCxFQUE2QztJQTVaeEQsU0E2WmJxakUsV0FBWTN1RSxHQUFzQiwwQkFBdEJBLEVBQXlDO0lBN1p4QyxTQThaYjR1RSxXQUFZNXVFLEdBQXNCLDBCQUF0QkEsRUFBeUM7SUE5WnhDLFNBK1piNnVFLFVBQVd6aEUsR0FBY0YsSUFBc0IsMEJBQXBDRSxHQUFjRixHQUE0QztJQS9aeEQsU0FpYWI0aEUsT0FBS3Y2QixJQUFJaHJCO01BQ0QsSUFBTndsRCxJQUFNLFlBQ1YsU0FESUEsSUFET3hsRCxNQUdYLFVBRkl3bEQsSUFER3g2QixLQUdQLE9BRkl3NkIsR0FHRDtJQXJhWSxTQXVhYkMsTUFBTUQsSUFBSXg2QjtNQUNOLG9CQURFdzZCO01BQ0YsVUFFUSxJQUFQOWtELFdBQU8sT0FBUEEsTUFIS3NxQixJQUdjLFdBSGxCdzZCO01BRUUsUUFFTTtJQTNhRDtlQWliVHB3RSxPQUFPc3JCLEVBQUUzZTtRQUNILElBQUpsVixFQUFJLFlBQ1IsU0FESUEsRUFET2tWLEdBR1gsVUFGSWxWLEVBREs2ekIsR0FHVCxPQUZJN3pCLENBR0g7VUFDQ2dWO2VBQ0E3TyxNQUFNbkcsRUFBRTZ6QjtRQUdKLG9CQUhFN3pCO1FBR0YsVUFHRixJQURHMDdCLGFBQ0EsdUJBTkc3SCxFQUtINkg7UUFERyxRQUUwRDtlQUdsRW05QyxhQUFhNzRFLEVBQUU2ekIsRUFBRTNlO1FBQ25CLFdBRGVsVixHQUVmLFVBRmVBLEVBQUU2ekIsR0FFakIsZ0JBRmU3ekIsRUFBSWtWLEVBR1A7OztnQkFsQlYzTTtnQkFLQXlNO2dCQUNBN087Z0JBN0JKaXlFO2dCQXFDSU47Z0JBQ0FlO2dCQTNDSlg7SUFyWmE7TXREbEdwQixJc0Q2aUJhL3hFO2VBQ0E2TyxLQUFNOHpDLEtBQVlyckQsR0FBSSx1QkFBSkEsRUFBWTs7K0JBRDlCMEksTUFDQTZPO09BdmhCVjhmO09BQ0F5RTtPQUNBODFCO09BQ0EzZ0M7T0FDQWdCO09BQ0F0akI7T0FDQW9sQjtPQUNBeTlCO09BQ0FFO09BQ0ExL0I7T0FDQXJ2QjtPQUVBc3REO09BRUF4bkQ7T0FFQXNDO09BQ0FzbEQ7T0FDQWo4QztPQUVBeThDO09BRUFDO09BRUFoOEI7T0FDQTY4QjtPQUVBZ29CO09BQ0FROztlQTZmTXJ2RSxPQUFPK21ELElBQUssNEJBQUxBLEdBQTRCO2VBQ25DOThCLE9BQU81NUI7UUFDQyxJQUFOb3dCLElBQU0sV0FDVixXQW5nQkpvbUMsWUFrZ0JRcG1DLElBREtwd0IsR0FFVCxPQURJb3dCLEdBRUQ7O2NBSkR6Z0I7Y0F6aEJOdXNCO2NBQ0F5RTtjQUNBODFCO2NBQ0EzZ0M7Y0FDQWdCO2NBQ0F0akI7Y0FDQW9sQjtjQUNBeTlCO2NBQ0FFO2NBQ0ExL0I7Y0FDQXJ2QjtjQUVBc3REO2NBRUF4bkQ7Y0FFQXNDO2NBQ0FzbEQ7Y0FDQWo4QztjQUVBeThDO2NBRUFDO2NBRUFoOEI7Y0FDQTY4QjtjQWlnQk01OEI7Y0EvZk40a0Q7Y0FDQVE7SUErQ2lCLFNBeWRYa0IsY0FBVSxZQUFNO0lBemRMLFNBMGRYQyxNQUFJbjZFLEVBQUVpMUIsRUFBRTNlLEdBQUksU0FBUnRXLEtBQWEsaUJBQVhpMUIsRUFBRTNlLFNBQVMsUUFBaUI7SUExZHZCLFNBNGRYOGpFLFNBQVNubEQsRUFBRS90QjtNQUNQLG9CQURPQTtNQUNQLFVBQ1EsSUFBUHJJLFdBQU8sR0FBUEEsTUFGSW8yQixFQUVhO01BQ2pCLFFBQUs7SUEvZEMsU0FpZVhvbEQsU0FBT3I2RSxFQUFFaTFCO1VBQ0UzMEIsRUFESk4sS0FDTXNNO01BQ2I7V0FEV2hNO2NBR1RrbEIsRUFIU2xsQixLQUdKMEssRUFISTFLO1VBR0csWUFKTDIwQixFQUlQelAsSUFBaUMsa0JBSHRCbFosSUFHTnRCLEdBQTRCO2NBSHhCaU0sU0FBRTFLLFNBR1hpWixFQUhXbFosS0FBRmhNLE1BQUVnTTs7UUFFTCxTQUlBO0lBeGVHLFNBMGVYZ3VFLE9BQUt0NkUsRUFBRWkxQjtNQUNUO1lBRE9qMUI7T0FDRCw4QnREN2tCYixPc0Q4akJTbzZFLFNBY09ubEQ7TUFDSCxVQUNNLElBQUwvdEIsV0FBSyxrQkFBTEE7TUFDRyxRQUFJO0lBN2VELFNBK2VYcXpFLFNBQU92NkUsR0FBSSxnQkFBSkEsS0FBa0I7SUEvZWQsU0FnZlh3NkUsUUFBTXg2RSxHQUFJLGlCQUFPO0lBaGZOLFNBeWZieTZFLGdCQUE2QiwyQkFBZTtJQXpmL0IsU0EyZmJDLFNBQVUxdkUsR0FBeUMseUJBQXpDQSxJQUE2RDtJQTNmMUQsU0E0ZmIydkUsY0FBZTN2RSxHQUNULHlCQURTQSxJQUNnQjtJQTdmbEIsU0E4ZmI0dkUsU0FBVTV2RSxFQUFtQmlxQixHQUMvQix5QkFEWWpxQixJQUFtQmlxQixFQUNBO0lBL2ZoQixTQWdnQmI0bEQsV0FBWTd2RSxHQUEyQix5QkFBM0JBLElBQStDO0lBaGdCOUMsU0FpZ0JiOHZFLFdBQVk5dkUsR0FBMkIseUJBQTNCQSxJQUErQztJQWpnQjlDLFNBbWdCYit2RSxTQUFVL3ZFLEdBQXlDLHlCQUF6Q0EsSUFBNkQ7SUFuZ0IxRCxTQW9nQmJnd0UsY0FBZWh3RSxHQUNULHlCQURTQSxJQUNnQjtJQXJnQmxCLFNBc2dCYml3RSxTQUFVandFLEVBQW1CaXFCLEdBQy9CLHlCQURZanFCLElBQW1CaXFCLEVBQ0E7SUF2Z0JoQixTQXdnQmJpbUQsV0FBWWx3RSxHQUEyQix5QkFBM0JBLElBQStDO0lBeGdCOUMsU0F5Z0JibXdFLFdBQVlud0UsR0FBMkIseUJBQTNCQSxJQUErQztJQXpnQjlDLFNBNGdCYm93RSxVQUFXaGpFLEdBQWlCRixJQUM5Qix5QkFEYUUsS0FBaUJGLE9BQ0g7SUE3Z0JaLFNBOGdCYm1qRSxVQUFXampFLEdBQWlCRixJQUM5Qix5QkFEYUUsS0FBaUJGLE9BQ0g7SUEvZ0JaLFNBZ2hCYm9qRSxXQUFZbGpFLEdBQW1CRixJQUNqQyx5QkFEY0UsS0FBbUJGLE9BQ047SUFqaEJaLFNBbWhCYnFqRSxXQUFVdndFLEdBQXdDLHlCQUF4Q0EsRUFBMkQ7SUFuaEJ4RCxTQW9oQmJ3d0UsZ0JBQWV4d0UsR0FDVCwwQkFEU0EsRUFDZTtJQXJoQmpCLFNBc2hCYnl3RSxXQUFVendFLEVBQW1Cc0wsR0FDL0IsMEJBRFl0TCxFQUFtQnNMLEVBQ0Q7SUF2aEJmLFNBd2hCYm9sRSxhQUFZMXdFLEdBQTJCLDBCQUEzQkEsRUFBOEM7SUF4aEI3QyxTQXloQmIyd0UsYUFBWTN3RSxHQUEyQiwwQkFBM0JBLEVBQThDO0lBemhCN0MsU0EwaEJiNHdFLFlBQVd4akUsR0FBZ0JGLElBQXdCLDBCQUF4Q0UsR0FBZ0JGLEdBQThDO0lBMWhCNUQsU0E0aEJiMmpFLE9BQUtDLEtBQUtDLEtBQUt4bkQ7TUFDUCxJQUFOd2xELElBQU07TUFDVixXQURJQSxJQURheGxEO01BR2pCLFNBRkl3bEQsSUFERytCO01BSVAsU0FISS9CLElBRFFnQztNQUlaLE9BSEloQyxHQUtEO0lBbGlCWSxTQW9pQmJpQyxRQUFNakMsSUFBSStCLEtBQUtDO01BQ1gsbUJBREVoQztNQUNGO1FBRVEsSUFBUDlrRDtRQUFPLEdBQVBBLE1BSEs2bUQ7VUFJSSxxQkFKUi9CO1VBSVE7WUFFRSxJQUFQajlDLGVBQU8sT0FBUEEsUUFOTWkvQyxLQU1jLFdBTnZCaEM7VUFLTTtRQUlGO01BUEYsUUFPTTtJQTdpQkQ7ZUFxakJUcHdFLGFBQWUyTTtRQUNULElBREswNUMsWUFBSEYsWUFDRjtRQUNSLFdBREkxdUQsRUFEYWtWO1FBR2pCLFNBRklsVixFQURNMHVEO1FBR0ssU0FGWDF1RCxFQURTNHVEO1FBR0UsT0FGWDV1RDtlQUlGZ1YsS0FBSzh6QztRQUNXO1NBREY4RjtTQUFIRjtTQUNLLHNCQURYNUYsS0FBUzhGO1FBQ2hCLHdCQURPOUYsS0FBTTRGO2VBRVh2b0QsTUFBTW5HO1FBQ0YsSUFEUTR1RCxZQUFIRixZQUNMLGVBREUxdUQsR0FDVSxpQkFEVkE7O2NBR1M2NkUsZ0JBQVZDO1VBQ21CLEdBQW5CLGlCQUpJcHNCLEdBR0pvc0IsU0FDbUIsaUJBSlpsc0IsR0FHR2lzQixNQUVSO1VBQXdCO1FBSFQ7ZUFLdEJqeUUsUUFBUTVJO1FBQ0osbUJBRElBLEdBQ1EsaUJBRFJBOztjQUdPNHVELGNBQVZGLDRCQUFVRTtRQURPLFFBQ2U7ZUFDckNpcUIsYUFBYTc0RSxRQUFVa1Y7WUFBSjA1QyxZQUFIRjtRQUNsQixhQURlMXVEO1FBRWYsU0FGZUEsRUFBRzB1RDtRQUVILFNBRkExdUQsRUFBTTR1RDtRQUVOLGtCQUZBNXVELEVBQVVrVjtlQUl2QmxNLFVBQVVoSjtRQUFJLG9CQUFKQSxHQUFJLFlBbEVsQis1RSxXQWtFYy81RSxPQUFnQzs7a0JBdEIxQ3VJLE9BS0F5TSxLQUVBN08sTUF6Q0pnMEUsV0FnREl2eEUsUUFJQWl3RSxhQUlBN3ZFO0lBM2tCUztNdERsR3BCLElzRDJyQmU3QztlQUNBNk8sS0FBTTh6QyxLQUFZcnJELEdBQUksd0JBQUpBLEVBQWE7VUFOL0JvUCxzQkFLQTFHLE1BQ0E2TztlQUxBbU8sT0FBTTJsQyxLQUFZcnJELEdBQUksd0JBQUpBLEVBQWE7OytCQUQvQm9QLFFBQ0FzVztPQWhxQloyUjtPQUNBeUU7T0FDQTgxQjtPQUNBM2dDO09BQ0FnQjtPQUNBdGpCO09BQ0FvbEI7T0FDQXk5QjtPQUNBRTtPQUNBMS9CO09BQ0FydkI7T0FFQXN0RDtPQUVBeG5EO09BRUFzQztPQUNBc2xEO09BQ0FqOEM7T0FFQXk4QztPQUVBQztPQUVBaDhCO09BQ0E2OEI7T0FFQWdvQjtPQUNBUTs7ZUEyb0JNcnZFLE9BQU8rbUQsSUFBSyw0QkFBTEEsR0FBNEI7ZUFDbkM5OEIsT0FBTzU1QjtRQUNDLElBQU5vd0IsSUFBTSxXQUNWLFdBanBCSm9tQyxZQWdwQlFwbUMsSUFES3B3QixHQUVULE9BRElvd0IsR0FFRDs7Y0FKRHpnQjtjQXZxQk51c0I7Y0FDQXlFO2NBQ0E4MUI7Y0FDQTNnQztjQUNBZ0I7Y0FDQXRqQjtjQUNBb2xCO2NBQ0F5OUI7Y0FDQUU7Y0FDQTEvQjtjQUNBcnZCO2NBRUFzdEQ7Y0FFQXhuRDtjQUVBc0M7Y0FDQXNsRDtjQUNBajhDO2NBRUF5OEM7Y0FFQUM7Y0FFQWg4QjtjQUNBNjhCO2NBK29CTTU4QjtjQTdvQk40a0Q7Y0FDQVE7SUErQ2lCLFNBdW1CWG1ELGNBQVUsWUFBTTtJQXZtQkwsU0F3bUJYQyxNQUFJcDhFLEVBQUU4dkQsR0FBR0UsR0FBRzE1QztNQUFJLFNBQVp0VyxLQUFpQixpQkFBZjh2RCxHQUFHRSxHQUFHMTVDLFNBQVMsUUFBcUI7SUF4bUIvQixTQTBtQlgrbEUsVUFBVXZzQixHQUFHRSxHQUFHOW9EO01BQ1osbUJBRFlBLEdBQ0EsaUJBREFBOztZQUVGcVIsY0FBVEMsc0JBRktzM0MsTUFFSXYzQyxPQUZEeTNDLEdBRWlDO01BQ3pDLFFBQUs7SUE3bUJDLFNBK21CWHNzQixTQUFPdDhFLEVBQUU4dkQsR0FBR0U7VUFDRDF2RCxFQURKTixLQUNNc007TUFDYjtXQURXaE07Y0FHVGtsQixFQUhTbGxCLEtBR0owSyxFQUhJMUs7VUFHRyxhQUpMd3ZELEdBQUdFLEdBSVZ4cUMsSUFBc0Msa0JBSDNCbFosSUFHTnRCLEdBQWlDO2NBSDdCaU0sU0FBRTFLLFNBR1hpWixFQUhXbFosS0FBRmhNLE1BQUVnTTs7UUFFTCxTQUlBO0lBdG5CRyxTQXduQlhpd0UsT0FBS3Y4RSxFQUFFOHZELEdBQUdFO01BQ1o7WUFET2h3RDtPQUNELDhCdEQzdEJiLE9zRDRzQlNxOEUsVUFjT3ZzQixHQUFHRTtNQUNOLFVBQ00sSUFBTDlvRCxXQUFLLGtCQUFMQTtNQUNHLFFBQUk7SUEzbkJELFNBNm5CWHMxRSxTQUFPeDhFLEdBQUksZ0JBQUpBLEtBQWtCO0lBN25CZCxTQThuQlh5OEUsUUFBTXo4RSxHQUFJLGlCQUFPO0lBOW5CTixTQXVvQmIwOEUsU0FBT2wrRSxHQUFnQix5QkFBaEJBLEVBQStCO0lBdm9CekIsU0F3b0JibStFLFNBQVExbkQsR0FBcUIseUJBQXJCQSxFQUFvQztJQXhvQi9CLFNBMG9CYjJuRCxVQUFTNXhFLEVBQWN4TSxHQUE2Qix5QkFBM0N3TSxFQUFjeE0sRUFBaUQ7SUExb0IzRCxTQTJvQmJxK0UsZUFBYzd4RSxFQUFjeE0sR0FDdEIseUJBRFF3TSxFQUFjeE0sRUFDRztJQTVvQmxCLFNBNm9CYnMrRSxVQUFTOXhFLEVBQWN4TSxFQUFReTJCLEdBQ2pDLHlCQURXanFCLEVBQWN4TSxFQUFReTJCLEVBQ0Y7SUE5b0JoQixTQStvQmI4bkQsWUFBVy94RSxFQUFjeE0sR0FBZ0IseUJBQTlCd00sRUFBY3hNLEVBQW9DO0lBL29CaEQsU0FncEJidytFLFlBQVdoeUUsRUFBY3hNLEdBQWdCLHlCQUE5QndNLEVBQWN4TSxFQUFvQztJQWhwQmhELFNBa3BCYnkrRSxXQUFVN2tFLEdBQWU5TixHQUFTNE4sR0FBZTNOLEdBQVNqSztNQUM1RCx5QkFEWThYLEdBQWU5TixHQUFTNE4sR0FBZTNOLEdBQVNqSyxFQUMvQjtJQW5wQmQsU0FxcEJiNDhFLFdBQVVseUUsR0FBbUMseUJBQW5DQSxFQUFzRDtJQXJwQm5ELFNBc3BCYm15RSxnQkFBZW55RSxHQUFtQywwQkFBbkNBLEVBQTJEO0lBdHBCN0QsU0F1cEJib3lFLFdBQVVweUUsRUFBY3NMLEdBQWUsMEJBQTdCdEwsRUFBY3NMLEVBQTZDO0lBdnBCeEQsU0F3cEJiK21FLGFBQVlyeUUsR0FBc0IsMEJBQXRCQSxFQUF5QztJQXhwQnhDLFNBeXBCYnN5RSxhQUFZdHlFLEdBQXNCLDBCQUF0QkEsRUFBeUM7SUF6cEJ4QyxTQTBwQmJ1eUUsWUFBV25sRSxHQUFjRixJQUFzQiwwQkFBcENFLEdBQWNGLEdBQTRDO0lBMXBCeEQsU0E0cEJic2xFLE9BQUs3SixLQUFLcC9DO01BQ1osTUFET28vQyxnQkFFRyxhQUROcnpFO01BRUosV0FESXk1RSxJQUZReGxEO01BQ1osSUFFQSxLQUZJajBCLFVBRUo7O1lBQ0F0RztRQUFzQjtvQkFGbEIrL0UsSUFFSi8vRSxFQUFvQyxpQkFKN0IyNUUsS0FJUDM1RTtVQUFzQixTQUF0QkE7OztNQUNBLE9BSEkrL0UsR0FHRDtJQWpxQlksU0FtcUJiMEQsUUFBTTFELElBQUlwRztNQUNKLElBQUpyekUsRUFBSSxTQURBeTVFO01BQ0E7V0FBSno1RSxNQURRcXpFLGdCQUdxQjtRQUMvQixTQUhFcnpFLFVBR0Y7OztVQUNFO1lBQU0sb0JBTEZ5NUUsSUFJTi8vRTtZQUNRLFdBQ0k7WUFESixJQUVDaTdCO1lBQVksR0FBWkEsTUFBWSxpQkFQWDArQyxLQUlWMzVFLFVBSWM7WUFITixTQURSQTs7O2lCQU1BLFdBVk0rL0U7OzswREFXSyxvQkFBSTtJQTlxQkY7ZUFvckJUcHdFLE9BQU9zckIsRUFBRTNlO1FBQ0gsSUFBSmxWLEVBQUksU0FEQzZ6QjtRQUVULFdBREk3ekIsRUFET2tWO1FBQ0gsSUFDUixLQUZTMmUscUJBRVQ7O2NBQ0FqN0I7VUFDRTtzQkFIRW9ILEVBRUpwSCxFQUNjLGlCQUpMaTdCLEVBR1RqN0I7WUFDRSxTQURGQTs7O1FBR0EsT0FMSW9ILENBS0g7ZUFDQ2dWLEtBQUs4ekMsS0FBS2oxQjtRQUNaLGlCQURZQSxxQkFDWjs7Y0FDQWo3QjtVQUNFO3FCQUZFd3JCLEtBRWUsc0JBSFB5UCxFQUVaajdCO1lBQ08sd0JBSEFrd0Q7WUFHTCxTQURGbHdEOzs7UUFHQSxPQUpJd3JCLElBSUY7ZUFDQWplLE1BS3NCbkcsRUFBRjZ6QjtRQUp0QixRQUlzQkEsYUFIWCxlQUdhN3pCO1FBSGIsR0FEUFcsUUFDQWEsTUFDZ0I7UUFGcEIsSUFJRSxJQUpFYixZQUlzQi9IO1FBQ3RCO2tCQURzQkE7WUFHZCxvQkFIWW9ILEVBQUVwSDtZQUdkO2NBR0YsZ0JBQVcsc0JBTkNpN0IsRUFBSWo3QjtjQU1iLHdCQURBMGpGLEtBRUUsUUFQVzFqRjtjQVFYO1lBSkM7VUFIRSxTQVNPO2VBRXZCZ1EsUUFBUTVJO1FBQ0EsSUFBTlcsSUFBTSxTQURBWDtRQUNBLFNBQU5XLElBQ1k7UUFETixVQUdGLFVBSkVYO1FBSUY7VUFHRixnQkFTUSxpQkFmVlcsSUFLSzQ3RSxJQVVLLElBZlY1N0UsWUFNaUIvSDtVQUNiO29CQURhQTtjQUdMLHNCQVZOb0gsRUFPV3BIO2NBR0w7Z0JBR0YsSUFERzBqRjtnQkFDSCxpQkFOS2o4RSxFQUFFekgsWUFLSjBqRjtnQkFDSCxRQU5PMWpGOztjQUlEO1lBSEUsVUFESHlIO1FBRlAsUUFZUTtlQUNsQnc0RSxhQUFhNzRFLEVBQUU2ekIsRUFBRTNlO1FBQ25CLGFBRGVsVjtRQUNmLFNBRGlCNnpCLHFCQUNqQjs7Y0FDQWo3QjtVQUNFO3NCQUhhb0gsRUFFZnBILEVBQ2MsaUJBSEdpN0IsRUFFakJqN0I7WUFDRSxTQURGQTs7O1FBR0Esa0JBTGVvSCxFQUFJa1YsRUFLUDtlQUNWbE0sVUFBVWhKO1FBR0gsaUJBSEdBLFdBQ0lwSDtRQUNkO21CQURjQTtVQUNkOzs7WUFBVSxxQkFGQW9ILEVBQ0lwSDtZQUNKLGFBREl1RztZQUNKO1VBRFosWUFFc0I7O2tCQXpEcEJvSixPQU9BeU0sS0FNQTdPLE1BNUNKMjFFLFdBNkRJbHpFLFFBa0JBaXdFLGFBTUE3dkU7SUExdUJTO010RGxHcEIsSXNEczFCYTdDO2VBQ0E2TyxLQUFNOHpDLEtBQVlyckQsR0FBSSx1QkFBSkEsRUFBWTs7K0JBRDlCMEksTUFDQTZPO09BaDBCVjhmO09BQ0F5RTtPQUNBODFCO09BQ0EzZ0M7T0FDQWdCO09BQ0F0akI7T0FDQW9sQjtPQUNBeTlCO09BQ0FFO09BQ0ExL0I7T0FDQXJ2QjtPQUVBc3REO09BRUF4bkQ7T0FFQXNDO09BQ0FzbEQ7T0FDQWo4QztPQUVBeThDO09BRUFDO09BRUFoOEI7T0FDQTY4QjtPQUVBZ29CO09BQ0FROztlQXN5Qk1ydkUsT0FBTyttRCxJQUFLLDRCQUFMQSxHQUE0QjtlQUNuQzk4QixPQUFPNTVCO1FBQ0MsSUFBTm93QixJQUFNLFdBQ1YsV0E1eUJKb21DLFlBMnlCUXBtQyxJQURLcHdCLEdBRVQsT0FESW93QixHQUVEOztjQUpEemdCO2NBbDBCTnVzQjtjQUNBeUU7Y0FDQTgxQjtjQUNBM2dDO2NBQ0FnQjtjQUNBdGpCO2NBQ0FvbEI7Y0FDQXk5QjtjQUNBRTtjQUNBMS9CO2NBQ0FydkI7Y0FFQXN0RDtjQUVBeG5EO2NBRUFzQztjQUNBc2xEO2NBQ0FqOEM7Y0FFQXk4QztjQUVBQztjQUVBaDhCO2NBQ0E2OEI7Y0EweUJNNThCO2NBeHlCTjRrRDtjQUNBUTtJQStDaUIsU0Frd0JYNEUsY0FBVSxZQUFNO0lBbHdCTCxTQW13QlhDLE1BQUk3OUUsRUFBRWkxQixFQUFFM2UsR0FBSSxTQUFSdFcsS0FBYSxpQkFBWGkxQixFQUFFM2UsU0FBUyxRQUFpQjtJQW53QnZCLFNBcXdCWHduRSxZQUFVN29ELEVBQUUvdEI7TUFDZDtRQUNLLFlBRlNBLE9BQUYrdEIsYUFFeUI7UUFDbkMsU0FIVUEscUJBR1Y7OztVQUNFO1lBQU0sb0JBSkkvdEIsRUFHWmxOO1lBQ1E7Y0FDUSxJQUFQNkU7Y0FBWSxHQUFaQSxNQUFZLGlCQUxYbzJCLEVBR1ZqN0I7Ozs7WTlDMVZBLGM4QzZWUzs7UUFIVDs7OzBEQU1XLG9CQUFLO0lBOXdCTCxTQWd4QlgrakYsU0FBTy85RSxFQUFFaTFCO1VBQ0UzMEIsRUFESk4sS0FDTXNNO01BQ2I7V0FEV2hNO2NBR1RrbEIsRUFIU2xsQixLQUdKMEssRUFISTFLO1VBR0csZUFKTDIwQixFQUlQelAsSUFBa0Msa0JBSHZCbFosSUFHTnRCLEdBQTZCO2NBSHpCaU0sU0FBRTFLLFNBR1hpWixFQUhXbFosS0FBRmhNLE1BQUVnTTs7UUFFTCxTQUlBO0lBdnhCRyxTQXl4QlgweEUsT0FBS2grRSxFQUFFaTFCO01BQ1Q7WUFET2oxQjtPQUNELDhCdEQ1M0JiLE9zRHUyQlM4OUUsWUFvQk83b0Q7TUFDSCxVQUNNLElBQUwvdEIsV0FBSyxrQkFBTEE7TUFDRyxRQUFJO0lBNXhCRCxTQTh4QlgrMkUsVUFBT2orRSxHQUFJLGdCQUFKQSxLQUFrQjtJQTl4QmQsU0EreEJYaytFLFFBQU1sK0UsR0FBSSxpQkFBTztJQS94Qk47Ozs7UUErWWJpNUU7UUFnRElDO1FBN0NKQztRQUNBQztRQUNBQztRQUNBQztRQUVBQztRQUdBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUVBQztRQU1BRTs7O1dBa0RFRSxPQUNBQyxNQU9BRSxTQVNBQyxPQUtBQyxTQUNBQzs7UUFTRkM7UUFFQUM7UUFDQUM7UUFFQUM7UUFFQUM7UUFDQUM7UUFFQUM7UUFDQUM7UUFFQUM7UUFFQUM7UUFDQUM7UUFHQUM7UUFFQUM7UUFFQUM7UUFHQUM7UUFDQUM7UUFFQUM7UUFFQUM7UUFDQUM7UUFDQUM7UUFFQUM7UUFRQUc7OztXQW1FRUcsT0FDQUMsTUFPQUUsU0FTQUMsT0FLQUMsU0FDQUM7O1FBU0ZDO1FBR0FFO1FBQ0FDO1FBRUFDO1FBRUFDO1FBQ0FDO1FBRUFDO1FBR0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBRUFDO1FBT0FDOzs7V0ErRkVHLE9BQ0FDLE1BYUFFLFNBU0FDLE9BS0FDLFVBQ0FDOzs7VXREajRCVDs7SXNEa0dvQjthaEQ5RGZDLGlCQUFpQkMsV0FBV2xsRixpQkFBaUJpSTtNQVU1QyxxQkFWNENBLGNBVzFDLE9BWHlCakk7TUFZekIsOEJBWjBDaUksY0FDOUIzQztNQUNmO2dCQURlQTtVQUVQLGNBSFM0L0UsV0FBNEJqOUUsS0FDOUIzQyxJQUVnQixRQUZoQkE7VUFHVixNQUhVQSxVQUlKK1EsSUFKSS9RO1VBS2Y7b0JBRFcrUTtjQUVILGNBUFM2dUUsV0FBNEJqOUUsS0FLbENvTztlQUVvQixhQVBjcE8sS0FLbENvTyxhQUFFakMsSUFBRmlDO2NBR04sUUFITUE7O1lBQ0csYUFOK0JwTyxPQUtoQ21NO1FBSEMsYUFGK0JuTSxVQVlUO2FBTXBDazlFLGdCQUFnQkQsV0FBV2xsRixpQkFBaUJpSTtNQWMzQyxxQkFkMkNBLGNBZXpDLE9BZndCakk7TUFnQnhCLDhCQWhCeUNpSSxjQUN6QjNDO01BQ25CO2dCQURtQkE7VUFFWCxjQUhRNC9FLFdBQTRCajlFLEtBQ3pCM0MsSUFFWSxRQUZaQTtjQUlaK1EsSUFKWS9RO1VBS25CO29CQURPK1E7Y0FFQyxjQVBRNnVFLFdBQTRCajlFLEtBS3JDb087b0JBSVkra0UsSUFKWi9rRTtnQkFLUDswQkFEbUIra0U7b0JBRVgsY0FYUThKLFdBQTRCajlFLEtBU3pCbXpFO3NCQUVZLFFBRlpBO29CQUdkLGFBWnVDbnpFLE9BU3pCbXpFO2tCQUNMLGFBVjhCbnpFO2NBUXZDLFFBSEVvTzs7WUFDTyxPQU5hclc7UUFFYixhQUY4QmlJLFVBZ0JKO2FBMEJ0Q2k5RSxXQUFXMS9FLEVBQUUxRSxHQUFJLDhCQUFOMEUsRUFBRTFFLE1BQWU7YUFDNUJza0YsWUFBWTkvRTtNQUFJO2tDQUFKQTtPQUFJLHFCQUF1QixnQkFBM0JBO2lCQUF1QzthQUNuRCsvRSxZQUFZLy9FO01BQ2QscUJBRGNBO01BQ2Q7O29DQURjQTtzQkFFNkIscUJBQWhCLE1BRmJBO1FBRXFDOztxQ0FGckNBO3VCQUc2QixxQkFBaEIsTUFIYkE7Ozs7O01BR3NDLFdBQUM7YUFDbkRnZ0YsYUFBYXI5RSxLQUFLczlFLE1BQ3BCLG1CQURvQkEsS0FBTHQ5RSxLQUNtQjthQUVoQ3U5RSxnQkFBaUJuakUsT0FBTzh0QztNQUMxQjttQ0FEbUI5dEM7T0FDbkIsNEJBRDBCOHRDO01BQzFCLEdBQUlodUMsU0FBaUNzakU7UUFFM0IsSUFBSnRnRixFQUFJLE1BSGdCZ3JELFNBQ1dzMUIsUUFBakN0akU7UUFHQyx5QkFEQ2hkLEVBSGFrZDtvQkFLVixNQUxpQjh0QyxXQUNXczFCLFFBQWpDdGpFOztNQVFGLFFBQUk7O01BR0Y7Ozs7O0lBQ00sU0E2SlJ1akUsTUFuUXVCbGdGO01BQzNCLDRCQUQyQkEsR0FFbkIsV0FESjRCO01BRUosU0FESU47TUFESixJQUVBLEtBRklNLFVBRUo7O1lBQ0F0RztRQUNFO1VBQUcsMEJBTHNCMEUsRUFJM0IxRTtXQUVPLFdBSkhnRyxFQUZZM0c7O1dBT1QsU0FMSDJHLEVBS3NCLGdCQVBDdEIsRUFJM0IxRTtVQUcrQixTQUgvQkE7OztNQUtBLFNBUElnRztNQU9KLGdCQVBJQTtJQW9HUSxTQThKUjYrRSxjQTdKY3J4RCxJQUFLM3NCLE1BQU9DLE9BQVFDLE9BQU9takQ7TUFDM0MsR0FEb0NuakQ7T0FJUTtVQUpSQTtRQUlXLGdCQUpYQSxPQUFSRCxnQkFNcUIsVUFBUSxNQUZsQjVDOzs7O1NBSlg0QztPQUdnQixRQUhoQkEsZUFHZ0IsWUFBTyxNQUFaaWdEOzs7TUFBckM7U0FIbUJsZ0Q7T0FFdUIsUUFGdkJBLGNBRXVCLFlBQU8sTUFBWm1nRDs7O01BQ3JDLFNBREE7TUFERiw0QkFBa0IsTUEySmhCNDlCLFNBNUpjcHhELElBQTJCMDJCLGFBTXNCO0lBQ3BELFNBQVg0NkI7TU45SFAsT01vQ0tYLGlCQTRERUMsV0FIQWxsRjtJQWtDVSxTQUFWNmxGO01OL0hQLE9Nc0RLVixnQkEwQ0VELFdBSEFsbEY7SUFrQ1U7OztPQW5DVkQ7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQWdsRjtPQUNBRTtPQUNBQztPQUlBQztPQUdBRTs7T0EwS0FFO09BQ0FDO09BdEpBQztPQUNBQztJQUFVLFNBUVZDLGFBQVd0Z0YsRUFBRTFFO01BQVksc0JBQWQwRSxFQUFFMUUsR0FBWSxZQUFKb0g7TUFBSTs7O3VCQUFKQTtpQkFBMkM7SUFSdEQsU0FTVjY5RSxjQUFZemdGO01BQ2Q7a0NBRGNBO09BQ2QscUJBQXdCLGdCQURWQTs7Ozs4QkFFYSxnQkFGYkE7Ozs7K0JBR2EsZ0JBSGJBOzs7OztpQkFHMEI7SUFaNUIsU0FhVjBnRixjQUFZMWdGO01BQ2QsdUJBRGNBO01BQ2Q7O29DQURjQTtzQkFFNkIscUJBQWhCLE1BRmJBO1FBRXFDOztzQ0FGckNBO3dCQUc2QixxQkFBaEIsTUFIYkE7VUFHc0M7O3dDQUh0Q0E7MEJBSTZCLHFCQUFoQixNQUpiQTtZQUlzQzs7eUNBSnRDQTsyQkFLNkIscUJBQWhCLE1BTGJBOzs7Ozs7Ozs7TUFLdUMsV0FBQztJQWxCMUMsU0FtQlYyZ0YsZUFBYWgrRSxLQUFLczlFO01BQ3JCLCtCQURxQkEsU0FDckIsc0JBRGdCdDlFO01BQ2hCO09BQ1M7OztXQUZPQTsrREFBS3M5RTs7UUFJTyx1QkFKUEE7YUFJSSxrQkFBeEIsa0JBRkkvL0U7OztNQVBKLFdBU3VEO0lBdkIzQyxTQXlCVjBnRixrQkFBaUI3akUsT0FBTzh0QztNQUMxQjttQ0FEbUI5dEM7T0FDbkIsNEJBRDBCOHRDO01BQzFCLEdBQUlodUMsU0FBaUNzakU7UUFFM0I7aUJBSGdCdDFCLFNBQ1dzMUIsUUFBakN0akU7U0FHNEIsdUJBSmJFO1FBSVUseUJBQXhCLGtCQURDbGQ7b0JBRUcsTUFMaUJnckQsV0FDV3MxQixRQUFqQ3RqRTs7TUFRRixRQUFJO0lBbENNO01Bc0NSLG1DQURGZ2tFOzs7OzthQUVBQyxRQUFNNWdGO01BQ1IsNEJBRFFBLEdBRUEsV0FESjRCO01BRUosU0FESU47TUFDSixTQWlCSXUvRSxPQUFPL2dGO1FBQUk7Y0FBSkE7Y0FBSThQO1VBQW1CO3FCQWxCOUJ0TztZQWtCOEIsU0FBbkJzTztlQUFKOVAsTUFBSThQOztRQW5CZixRQW1COEQ7TUFqQjlELFNBQ1FreEUsZUFBS3hsRjtRTjFLbEIsSU0wS2tCdUc7UUFDWDthQURXQSxRQUhURCxFQUlZLGdCQUhaTjtVQUlJLElBR0pvQixFQUhJLGdCQU5BMUMsRUFJSzZCO1VBRUwsVUFHSmE7WUFGUTs7O3FCQUdScStFLHVCQU5TbC9FOzBDQU1Uay9FLGdCQU5TbC9FO29CQUtUYTtZQURROzs7cUJBRVJxK0UsdUJBTlNsL0U7MENBTVRrL0UsZ0JBTlNsL0U7VUFLRCxTQVBSUCxFQU9Bb0I7VUFISSxJQUdJLElBTENiO21CQUsrQjtNQU41QyxTQU9Jay9FLGdCQUFRamhGLEVBQUV4RTtZQUFGc1YsTUFBRS9PO1FBQ1o7YUFEWUEsUUFUVkQsR0FXQSxTQVZBTixNQVVBLGNBRlFzUDtVQUtGLDBCQWZGNVEsRUFVTTZCO1VBS0o7WUFDSSxZQU5GK087WUFNa0IsU0FkMUJ0UDtZQWMwQixTQU5oQk87WUFNZ0I7bURBWnRCaS9FOzs7WUFhTSxRQVBBai9FLFlBT0EsSUFQRitPLG9CQUFFL087VUFRQSxPQVJGK087VUFRRTtpREFkTmt3RSxpQkFNTWovRTt3Q0FOTmkvRSxVQU1Nai9FLE1BU1Q7TUFoQkwsU0FDUXFpRCxLQUFLNW9ELEdOMUtsQix1Qk0wS2F3bEYsU0FBS3hsRjtNQWtCYjtzQkFwQklnRyxFQXFCYTthQWdDZjAvRSxtQkFBbUJ4aEY7TUFDUSxLQUExQixXQURrQkEsV0FDUSxXQURSQTtPQUdiLGtCQUhhQSxNQUlaLGdCQUpZQTtNQUVWLG1EQUZVQSxHQU1sQjthQUlEeWhGLGdCQUFjbnlELElBQUszc0IsTUFBT0MsT0FBUUMsT0FBT21qRDtNQUMzQyxHQURvQ25qRDtPQVNBO1VBVEFBO1FBU0c7b0JBVEhBLE9BQVJEOztXQVdhLFlBQVEsbUJBSFY1Qzs7Ozs7U0FSWDRDO09BT2dCLFFBUGhCQSxlQU9nQixZQUFPLG1CQUFaaWdEOzs7O1NBUGxCbGdEO09BTXVCLFFBTnZCQSxjQU11QixZQUFPLG1CQUFabWdEOzs7TUFEM0I7MEJBQW1CLE1BdEU3QnMrQixRQWlFeUNwN0I7T0FwQm5DLFdBQVIsc0JBRFl4bEQ7O01BRVo7aUJBQ08wQztVTnJOWjtVTXNOUyxTQURHQTs7Ozs7Ozs7Ozs7OztVRTJUSCxpQkZ4VEksU0FMSnBCLE1BS0ksU0FMSkEsRUFFR29CLElBS0MsU0FQSnBCLEVBRUdvQixFQUtvQjtRQVJmMUM7TUEwQkEsdUJBeEJaLFNBRElzQjtNQXVCRix5REFIY3d0QixZQWFmO2FBT0NveUQsZUFBZWxoRjtNQUxqQixvQ0FLaUJBO01BTGpCO1FBSWtDLDBCQUNqQkE7UUFMRDs7OztRQUlrQixJRXNSOUIsbUNGdFJ1QyxnQkFDMUJBOzs7O1FBRU8sZUFGUEEsSUFFWixzQkFGWUE7UUFFWCxnQkFGV0E7TUFHWixrQkFIWUEsRUFHTDthQUNWbWhGLFVBQVFuaEY7TUFDVTs0QkFEVkE7T0FDVTs7T0FDVixvQkExSFJzZ0YsYUFIQXpsRixtQkE0SFV1bUY7TUFDRixXQURMQyxNQUNEQyxJQUNPO2FBQ1RDLFdBQVN2aEY7TUFDVSx5QkFEVkEsR0FDVTs4QkE3SG5Cc2dGLGFBSEF6bEYsbUJBZ0lXdW1GLEtBQ29DOzs7O09BbEkvQ3htRjtPQUNBQztPQUNBQztPQUNBQztPQUNBdWxGO09BQ0FDO09BSUFDO09BTUFDO09BTUFDO09BWUFDO09BRUFDO09BaUVBSztPQTRCQU07T0FKQUo7SUFzQlcsU0FBWEs7TU5yUlAsT01vQ0svQixpQkFtR0VhLGFBbUlBcmxGO0lBWVUsU0FBVndtRjtNTnRSUCxPTXNESzlCLGdCQWlGRVcsYUFtSUFybEY7SUFZVTs7O09BYlZEO09BQ0FDO09BQ0FDO09BQ0FDO09BcklBbWxGO09BQ0FDO09BSUFDO09BTUFDO09BTUFDOztPQTJIQVI7T0FDQUM7T0FDQXFCO09BQ0FDO0tBQVU7Ozs7S0E3TWRDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBR0FDO0tBQ0FDO2FBeU1FQyxTQUFPbkMsUUFBUTExQjtNQUNqQixJQUFJL29ELEVBQUosc0JBRFN5K0U7TUFFRyxTQURSeitFLE9BQ1EsYUFGSHkrRSxRQUNMeitFO09BR1csV0FKTnkrRSxRQUlNLElBek5md0IsVUFxTmlCbDNCO01BR1osV0FISTAxQixRQUFRMTFCLFNBSWdCO2FBRS9CODNCLFlBQVloZ0YsS0FBS3M5RTtNQUNoQixzQkFEV3Q5RSxLQUFLczlFO2VBRWQ7aUJBRlN0OUU7O2lCQUVULHNCQUZTQSxRQUVULHNCQUZjczlFO2VBR2QscUNBQWtDO2FBRXJDMkMsY0FBY2pnRjtNQUNoQiw4QkFEZ0JBLGNBTUd5YTtNQUNqQjtRQUFZLFFBREtBLFNBQ0wsYUFQRXphLEtBTUd5YTtVQUVULDBCQVJNemEsS0FNR3lhO1lBRVcsUUFGWEEsWUFMRjVoQjtZQUNmO2NBQVksUUFER0EsT0FDSCxhQUZFbUgsS0FDQ25IO2dCQUVQLDBCQUhNbUgsS0FDQ25IO2tCQUVhLFFBRmJBO2dCQUdWLDZCQUpTbUgsUUFNR3lhO2NBSmtCO1VBTzlCLFFBSFlBOztRQUNrQixTQUlGO2FBRWpDeWxFLFVBQVVsZ0Y7TUFDSixJQUFKYixFQUFJLGNBRElhO01BQ0osYUFBSmIsVUFDa0IsTUFGVmEsS0FFVSxzQkFGVkEsUUFDUmIsUUFDNEQ7YUFFOURnaEYsZUFBZW5nRjtNQUNULElBQUpiLEVBQUksY0FEU2E7TUFDVCxhQUFKYjtlQUNVO2VBQ1QsTUFIWWEsT0FHWixzQkFIWUEsUUFDYmIsTUFFMkM7YUFFN0NpaEYsaUJBQWlCcGdGO01BQ1gsSUFBSmIsRUFBSSxjQURXYTtNQUNYLGFBQUpiLEVBRGVhLEtBRUssTUFGTEEsT0FFSyxzQkFGTEEsUUFDZmIsTUFDOEQ7UUFLaEVraEYsMkJOelVMO2FNMlVLQyxlQUFlQyxTQUFTdG1FLE9BQU9HO01BQ2pDO3lCQUhFaW1FO09BR0Y7cUJBSEVBLHVCYzlTQS8yRSxpQmQ4U0ErMkU7T0FHUTtNQUNNLGdCQUZDRSxTQUVELHlCQUZVdG1FLE9BQ3RCdW1FLElBRDZCcG1FLFFBRTRCO1FBRzNEcW1FLHlCQTlQRmY7YUFnUUVnQixrQkFBa0JuakYsR0FBSSwyQkFBSkEsRUFBSSxRQUEwQjthQUNoRG9qRix5QkFBdUIsT0FIdkJGLHdCQUc2QzthQUU3Q0csVUFBWXYzRCxJQUFtQ3BQLE9BQU9HO01BQ3hELEdBRGNpUDtPQUFXLFFBQVhBLGdCQUFXQzs7V0FBWGkzRCxTQUxaRTtNQU1GLFNBQVFJLFNBQVNua0Y7UU50VnBCLElNc1ZvQjQ5QztRQUNmO1VBQVcsSUFBUHQ2QyxLQUFPLGVBRkN1Z0YsU0FBbUN0bUUsT0FBT0c7VUFFM0M7WUFFNEQsdUJBQTNELGNBRlJwYTtnQkFJQytGOzs7Y0FDSCxXQU5hdTBDLFVBTVcsTUFEckJ2MEM7Y0FDa0MsY0FOeEJ1MEM7O2tCQUtWdjBDLEdBQ3dEO01BTi9ELGtCQU9hO2FBRVhnN0UsZUFBaUIxM0QsY0FDbUNwUCxPQUFPRztNQUM3RCxHQUZtQmlQLElBQU8sUUFBUEEsWUFBT0MsYUFBUHhwQjtNQUVuQixRQUZpRCxrQkFBUm1oRixNQUFRRCxlQUFSQztNQUV6QztPQUQ4QixrQkFBWFYsU0FBV1c7O1dBQVhYLFNBaEJqQkU7TUFpQkYsU0FBUUksU0FBU25rRjtRTmpXcEIsSU1pV29CNDlDO1FBQ2Y7VUFBVyxJQUFQdDZDLEtBQU8sZUFGTXVnRixTQUFtQ3RtRSxPQUFPRztVQUVoRDtZQUdSLFlBSENwYSxLQUdELHdCQU5jRixRQUFzQm1oRixNQUduQ2poRjs7Z0JBSUMrRjs7O2NBQ0gsV0FOYXUwQyxVQU1XLE1BRHJCdjBDO2NBQ2tDLGNBTnhCdTBDOztrQkFLVnYwQyxHQUN3RDtNQU4vRCxrQkFPYTs7OztPQTlSYm01RTtPQUNBQztPQUNBQztPQXFORVc7T0FuTkZUO09BQ0FDO09BQ0FDO09BdU5FUTtPQXRORlA7T0F3T0VTO09BU0FFO09BTEFEO09BdE9GTjtPQUNBQztPQWZBYjtPQTRRRTJCO09BVUFHO09BWkFKO09BREFEO09BaFFGaEI7T0FDQUM7T0FDQUM7O2FDNURFdUIsTUFBSXpqRixFQUFFQyxHQUFXLFlBQWJELE9BQUVDLEtBQUZELE9BQUVDLEtBQTRDO2FBRWxEeWpGLE1BQUkxakYsRUFBRUMsR0FBVyxZQUFiRCxPQUFFQyxLQUFGRCxPQUFFQyxLQUE0QzthQUVsRDBqRixJQUFJM2pGLEdBQWMsY0FBZEEsWUFBa0M7YUFFdEM0akYsS0FBSzVqRixHQUF5QixZQUF6QkEsWUFBK0I7YUFFcEM2akYsSUFBSTdqRixFQUFFQztNQUF1QixZQUF6QkQsT0FBRUMsT0FBRkQsT0FBRUMsS0FBRkQsT0FBRUMsT0FBRkQsT0FBRUMsS0FDeUM7YUFFL0M2akYsSUFBSTlqRixFQUFFQztNQUNLLEdBQWtCLFNBRHZCQSxTQUNLLFNBRExBO1FBRUUsTUFGRkEsWUFHRSxFQUhGQSxPQUVGVCxJQUZFUztRQUlvQixhQUp0QkQsT0FFQVIsSUFGQVEsUUFHQXlYLEdBSEF6WCxPQUVBUixJQUZBUSxRQUdBeVg7TUFJSSxRQVBGeFgsWUFRRSxJQVJGQSxPQU9GMnhCLE1BUEUzeEI7TUFTb0IsYUFGdEIyeEIsTUFQQTV4QixlQVFBaWtCLEtBREEyTixNQVBBNXhCLGVBUUFpa0IsSUFFNkI7YUFFakM4L0QsSUFBSS9qRixHQUFJLFdBMUJSOUUsTUEwQkk4RSxFQUFhO2FBRWpCZ2tGLE1BQU1oa0YsR0FBZ0IsT0FBaEJBLHlCQUFnQzthQUV0Q2lrRixLQUFLamtGO01BRVcsZUFGWEEsTUFFa0MsV0FGbENBO01BRWtDLEdBQXJDUixRQUNZLE9BRFdyRTtNQUV0QixHQUZzQkEsUUFFTixPQUZqQnFFO01BR0MsR0FIc0JyRSxLQUF2QnFFLEdBSU0sSUFBSjBwQixFQUpxQi90QixJQUF2QnFFLEVBSWdCLE9BSmhCQSxJQUl3QyxlQUF0QzBwQjtNQUpZLElBTVpnN0QsSUFORjFrRixJQUF1QnJFO01BTVAsT0FOT0EsSUFNaUIsZUFBdEMrb0YsVUFBc0M7YUFFMUN0MUQsSUFBSTV1QixHQUFVLGtCQUFWQSxVQUFtQjthQUV2Qm1rRixNQUFNeGtGLEVBQUVpRCxHQUFnQixZQUFMLFNBQVhBLEtBQUZqRCxFQUE4QixTQUE1QmlELEtBQUZqRCxFQUEwQzthQUVoRHlrRixLQUFLcGtGO01QakVWLEdPaUVVQSx5QkFDMEI7TUFFYixlQUhiQSxNQUdvQyxXQUhwQ0E7TUFHb0MsR0FBZDdFLEtBQXZCcUU7T0FHUTtVQUhlckUsSUFBdkJxRTtRQUNBK3FDLEVBR0EsVUFKQS9xQyxLQUlvRCxzQkFBRixlQUQ5QzBwQjs7T0FHSTtZQU5SMXBCLElBQXVCckU7UUFDdkJvdkMsRUFNQSxVQVB1QnB2QyxLQU8yQixpQkFEOUMrb0YsTUFDNEMsZUFENUNBO01BR1IsU0FaS2xrRixLQWEyQixZQVQ1QnVxQyxRQUpDdnFDLE9BSUR1cUM7TUFEYyxJQUNkODVDLFVBSkNya0YsS0FJRHVxQztNQVVnQixrQkFYT3B2QyxJQUN2Qm92QyxNQVdIO2FBRUQrNUMsSUFBSXRrRjtNQUNNLElBQVJxSSxFQUFRLFNBRE5ySSxNQUNxQixZQUF2QnFJLElBQWdDLFNBRDlCckksTUFDRnFJLElBQW9ELFNBRGxEckksTUFDd0Q7YUFFNUR1a0YsSUFBSXZrRjtNQUFvQyxvQkFBcENBLFdBQXVCLHFCQUFSLEtBQWZBLFNBQStDO2FBRW5Ed2tGLElBQUl4a0YsRUFBRUMsR0FBUSxlQUFSQSxFQUFlLElBQWpCRCxJQUF5Qjs7OztPQW5FN0IvRTtPQUNBQztPQUNBQztPQU1Bd29GO09BRUFDO09BTkFIO09BRUFDO09BTUFHO09BZUFFO09BWkFEO09BOEJBTTtPQWhCQUo7T0FFQUM7T0FVQXIxRDtPQUVBdTFEO09BbUJBRztPQUdBQztPQUVBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T085REF4c0U7OztPQUVBRTtPQUVBblc7T0FJQUQ7T0FJQXFXO09BUUFHO09BZUFNOztPQVBBL1c7T0FFSTBXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0t5Q0lKa3NFO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0F0L0I7YUFFQXUvQjs7ZUFDVztlQUNBO2VBQ0k7ZUFDRTtlQUNEO2VBQ0U7ZUFDVDtlQUNBO2VBQ0Y7ZUFDTTtnQkFDQTtnQkFDQTtnQkFDTCxTQUFDO1FBS1RDLFdBQ0FDO2FBV01DLE1BQU1wVSxJQUFJcVUsSUFBSXBtRixFQUFFcW1GLElBQUl4bEY7TUFDMUIsR0FEc0J3bEYsUUFBTkQ7T0FDZSwyQkFEbkJyVSxJQUFJcVUsSUFDMkIsV0FEdkJwbUYsRUFBSm9tRjtNQUVPLDBCQUZHdmxGLElBQUp3bEYsc0JBRWpCO01BQWtCO1lBQWxCajJFO1FBQ0U7MkJBSFNnMkUsSUFBTUMsZ0JBRWpCajJFO1VBRUUsTUFKSzJoRSxJQUFJcVUsSUFBSXBtRixFQUFFcW1GLFlBQUl4bEY7VUFJbkIsU0FGRnVQOzs7Y0FHSTthQUNIazJFLE1BQU12VSxJQUFJcVUsSUFBSXBtRixFQUFFcW1GLElBQUl4bEY7TUFDMUIsUUFEc0J3bEY7UUFFSiwwQkFGUXhsRixJQUFKd2xGLGNBRWpCO1FBQWE7Y0FBYmoyRTtVQUNFOzZCQUhTZzJFLElBQU1DLGdCQUVqQmoyRTtZQUVFLE1BSksyaEUsSUFBSXFVLElBQUlwbUYsRUFBRXFtRixZQUFJeGxGO1lBSW5CLFNBRkZ1UDs7OztNQURXLDJCQURKMmhFLElBQUlxVSxJQUNZLFdBRFJwbUYsRUFBSm9tRixLQUtQO2FBQ1BHLE9BQWNubkMsS0FBTW9uQyxPQUFtQkMsS0FBS3ptRjtNQUNwQyx1QkFETW8vQyxLQUFNb25DLE9BQW1CQyxNQUMvQixLQUQrQkE7TUFDL0IsYUFHUkM7ZUFIRTNVO2VBRGtCeVU7a0JBS0ksTUFKdEJ6VSxJQUlnQyxlQURsQzJVLFFBSjRDMW1GLEVBSTVDMG1GLGFBSnVDRCxNQUNyQzFVO2tCQUdnQixNQUhoQkEsSUFHMEIsZUFBNUIyVSxRQUo0QzFtRixJQUFMeW1GLE1BQ3JDMVUsSUFLeUI7YUFJM0IwVSxLQUFLbGpGO01BQ0MsdUJBRERBLEdBRUMsaUJBREpqRCxLQUNJLEtBREpBLFVBQ0k7O1lBQ1J4RTtRQUFvQjtVQUFTLDZCQUh0QnlILEVBR1B6SDtVQUFvQixpQkFEaEJzYyxFQUNKdGM7VUFBNkIsU0FBN0JBOzs7TUFDQSxPQUZJc2MsQ0FFSDthQU9DdXVFLGNBQWM1VTtNQUNrQixnQ0FBeUIsS0FEM0NBO01BQ2hCLG1DQUFvQixhQURKQSxXQUNzRDthQW9CcEU2VSxTQUFPeG5DLEtBQUtvbkMsUUFDZCxzQkFEU3BuQyxLQUFLb25DLFdBQ2tCO2FBQzlCSyxNQUFJOVUsS0FBTSxtQ0FBTkEsUUFBMkI7YUFDL0IrVSxNQUFJL1U7TUFBTTs0QnZEaEtqQiwyQnVEZ0tXQSxlQUEyQjthQU8vQmdWLGdCQUFjaFY7TUFBeUIsdUNBQXpCQSxLQUFtQzthQUtqRGlWLFNBQVM1bkMsS0FBS29uQyxPQUFPdG1GO01BQ2YsSUFBSnFELEVBQUksU0FERzY3QyxLQUFLb25DLFFBRWhCLGlCQURJampGLEdBRG1CckQsR0FFdkIsT0FESXFELENBRUg7YUFNQzBqRixTQUFPN25DLEtBQUtvbkMsT0FBT1U7TUFDckIsc0JBRFM5bkMsS0FBS29uQyxVQUFPVSxLQUNjO2FBYWpDQyxnQkFBY3BWO01BQ2tCLHVCQURsQkE7TUFDaEIsbUNBQW9CLGFBREpBLFdBQzJCO2FBR3pDcVYsTUFBZ0I3akYsRUFBMEJqRDtNQUN0QyxpQ0FEWWlEO01BQ1osYUFFZSxjQUhIQSxLQUEwQmpELElBRTdCLGNBRkdpRCxLQUEwQmpELEdBRzRCO2FBT3RFK21GLE9BQWNqb0MsS0FBTW9uQyxPQUFtQlUsSUFBSWxuRjtNQUNuQyxJQUhLK3hFLElBR0wsU0FETTN5QixLQUFNb25DLE9BQW1CVTtNQUMvQixHQURZVjtRQUR0QjtjQUN5Q1U7Y0FEekM3a0Y7VUFBb0I7MEJBREwwdkUsSUFDZjF2RSxJQUFxQyxXQUNRckMsRUFEN0NxQztZQUFvQixTQUFwQkE7ZUFDeUM2a0YsUUFEekM3a0Y7O2VBRGUwdkU7TUFHTCxJQUpWLEtBR3lDbVYsWUFIekM7OztRQUF5Qjt3QkFDVm5WLElBRGZqMkUsRUFBMEMsV0FHR2tFLEVBSDdDbEU7VUFBeUIsU0FBekJBOzs7YUFDZWkyRSxHQU1nQzthQUM3Q3VWLFNBQWtCbG9DLEtBQU1vbkMsT0FBa0Jud0Q7TUFDbkM7bUJBRFcrb0IsS0FBTW9uQyxPQUFrQm53RDtPQUNuQyxJQURpQm13RDtPQU8xQixLQVA0Q253RDtPQU81Qzs7O1FBQXNDO3dCQU5sQ2t4RCxHQU1KenJGLElBTEk4SCxRQUswRCxpQkFQbEJ5eUIsS0FPNUN2NkI7VUFBc0MsU0FBdENBOzs7TUFDQSxPQVBJeXJGLEVBT0Y7YUFLQUMsVUFBT3BvQyxLQUFLb25DLE9BQU9pQixLQUFLQztNQUMxQixzQkFEU3RvQyxLQUFLb25DLFVBQU9pQixLQUFLQyxNQUNnQjthQWV4Q0MsZ0JBQWM1VjtNQUMrQix1QkFEL0JBLEtBQ2tCLG1CQURsQkE7TUFDaEI7MkNBQW9CLGFBREpBLGlCQUN5QzthQU92RDZWLFdBQVdya0YsRUFBRWpELEdBQUkscUJBQU5pRCxLQUFFakQsR0FBK0I7YUFDNUN1bkYsWUFBWXRrRixFQUFFakQsR0FBSSxxQkFBTmlELEtBQUVqRCxHQUFnQzthQWU5Q3duRixPQUFjMW9DLEtBQU1vbkMsT0FBbUJpQixLQUFLQyxLQUFLMW5GO01BQ3pDLElBUEsreEUsSUFPTCxVQURNM3lCLEtBQU1vbkMsT0FBbUJpQixLQUFLQztNQUNwQyxHQURZbEI7UUFMdEI7Y0FLOENrQjtjQUw5Q3hqRDtVQUNFOztrQkFJdUN1akQ7a0JBSnZDcGxGO2NBQ0U7OEJBSFcwdkUsSUFFYjF2RSxJQURGNmhDLElBRXVCLFdBRzRCbGtDLEVBSmpEcUMsSUFERjZoQztnQkFFSSxTQURGN2hDO21CQUl1Q29sRixTQUp2Q3BsRjs7cUJBREY2aEM7ZUFLOEN3akQsU0FMOUN4akQ7O2VBRGU2dEM7TUFPTCxJQVpWLEtBV3lDMFYsYUFYekM7OztRQUNFO21CQVU0Q0MsYUFWNUM7OztZQUNFOzRCQUdXM1YsSUFMZmoyRSxFQUNFc1UsRUFDcUIsV0FTNEJwUSxFQVhuRGxFLEVBQ0VzVTtjQUNFLFNBREZBOzs7bUJBREZ0VTs7O2FBS2VpMkUsR0FVc0M7YUFDbkRnVyxXQUFrQjNvQyxLQUFNb25DLE9BQWtCbndEO01BQzVDO1lBRDRDQTtPQUM1QyxXQUFJb3hELE9BQzRDLGlCQUZKcHhEO09BR25DLGFBSFcrb0IsS0FBTW9uQyxPQUN0QmlCLEtBQ0FDO09BQ0ssSUFIaUJsQjtPQVMxQixLQVJJaUI7T0FRSjs7O1FBQ0U7VUFBVSxJQUFOTyxJQUFNLGlCQVZnQzN4RCxLQVM1Q3Y2QjtVQUNZLEdBQU5rc0YsbUJBUkZOO1dBVUE7VUFGUSxJQUVxRCxLQVY3REEsYUFVNkQ7O2dCQUMvRHQzRTtZQUNFOztnQkFYQW0zRSxHQU1KenJGLElBTEk4SCxRQVNGd00sSUFURXhNLFFBVWtDLGlCQUpoQ29rRixJQUdKNTNFO2NBQ0UsU0FERkE7OztVQUhVLFNBRFp0VTs7O01BUUEsT0FkSXlyRixFQWNGO2FBS0FVLFVBQU83b0MsS0FBS29uQyxPQUFPaUIsS0FBS0MsS0FBS1E7TUFDL0Isc0JBRFM5b0MsS0FBS29uQyxVQUFPaUIsS0FBS0MsS0FBS1EsTUFDaUI7YUFpQjlDQyxnQkFBY3BXO01BQzRDO2tDQUQ1Q0E7T0FDK0IsbUJBRC9CQTtPQUNrQixtQkFEbEJBO01BQ2hCOzs2Q0FBb0IsYUFESkE7b0JBQ3NEO2FBT3BFcVcsYUFBYTdrRixFQUFFakQsRUFBRW1wQixHQUFJLHFCQUFSbG1CLEtBQUVqRCxFQUFFbXBCLEdBQWtDO2FBQ25ENCtELGNBQWM5a0YsRUFBRWpELEVBQUVtcEIsR0FBSSxxQkFBUmxtQixLQUFFakQsRUFBRW1wQixHQUFtQzthQUNyRDYrRCxhQUFhL2tGLEVBQUVqRCxHQUFJLHFCQUFOaUQsS0FBRWpELEdBQStCO2FBQzlDaW9GLGNBQWNobEYsRUFBRWpELEdBQUkscUJBQU5pRCxLQUFFakQsR0FBZ0M7YUFtQmhEa29GLE9BQWNwcEMsS0FBTW9uQyxPQUFtQmlCLEtBQUtDLEtBQUtRLEtBQUtsb0Y7TUFDOUMsSUFUSyt4RSxJQVNMLFVBRE0zeUIsS0FBTW9uQyxPQUFtQmlCLEtBQUtDLEtBQUtRO01BQ3pDLEdBRFkxQjtRQVB0QjtjQU9tRDBCO2NBUG5EdHBEO1VBQ0U7O2tCQU00QzhvRDtrQkFONUN4akQ7Y0FDRTs7c0JBS3FDdWpEO3NCQUxyQ3BsRjtrQkFDRTtrQ0FKUzB2RSxJQUdYMXZFLElBREY2aEMsSUFERnRGLElBRzJCLFdBSTZCNStCLEVBTHBEcUMsSUFERjZoQyxJQURGdEY7b0JBR00sU0FERnY4Qjt1QkFLcUNvbEYsU0FMckNwbEY7O3lCQURGNmhDO21CQU00Q3dqRCxTQU41Q3hqRDs7cUJBREZ0RjtlQU9tRHNwRCxTQVBuRHRwRDs7ZUFEZW16QztNQVNMLElBaEJWLEtBZXlDMFYsYUFmekM7OztRQUNFO21CQWM0Q0MsYUFkNUM7OztZQUNFO3VCQWErQ1EsYUFiL0M7OztnQkFDRTtnQ0FJU25XLElBUGZqMkUsRUFDRXNVLEVBQ0UybUIsRUFDdUIsV0FZNkIvMkIsRUFmeERsRSxFQUNFc1UsRUFDRTJtQjtrQkFDRSxTQURGQTs7O3VCQURGM21COzs7bUJBREZ0VTs7O2FBT2VpMkUsR0FZMkM7YUFDeEQwVyxXQUFrQnJwQyxLQUFNb25DLE9BQWtCbndEO01BQzVDO1lBRDRDQTtPQUM1QyxXQUFJb3hELE9BQzRDLGlCQUZKcHhEO09BRzVDO2NBRElxeEQ7O1VBQ29ELGlCQUFSLGlCQUhKcnhEO09BSW5DLGFBSlcrb0IsS0FBTW9uQyxPQUN0QmlCLEtBQ0FDLEtBQ0FRO09BQ0ssSUFKaUIxQjtPQVUxQixLQVRJaUI7T0FTSjs7O1FBQ0U7VUFBVSxJQUFOTyxJQUFNLGlCQVhnQzN4RCxLQVU1Q3Y2QjtVQUNZLEdBQU5rc0YsbUJBVEZOO1dBV0E7VUFGUSxJQUUrQyxLQVh2REEsYUFXdUQ7O2dCQUN6RHQzRTtZQUNFO2NBQVUsSUFBTmkyRSxJQUFNLGlCQUpSMkIsSUFHSjUzRTtjQUNZLEdBQU5pMkUsbUJBWko2QjtlQWNFO2NBRlEsSUFFK0MsS0FkekRBLGFBY3lEOztvQkFDekRueEQ7Z0JBQ0U7O29CQWZGd3dEO29CQU1KenJGLElBTEk4SDtvQkFTRndNLElBVEV4TTtvQkFhQW16QixJQWJBbnpCO29CQWM4QyxpQkFKMUN5aUYsSUFHSnR2RDtrQkFDRSxTQURGQTs7O2NBSFUsU0FEWjNtQjs7O1VBSFUsU0FEWnRVOzs7TUFhQSxPQW5CSXlyRixFQW1CRjthQVdGbUIsbUJBQW1CbmxGO01BQ2xCLDhCQURrQkE7O2VBRWhCLDJDQUF5QzthQUM1Q29sRixtQkFBbUJwbEY7TUFDbEIsOEJBRGtCQTs7ZUFFaEIsMkNBQXlDO2FBQzVDcWxGLG1CQUFtQnJsRjtNQUNsQiw4QkFEa0JBOztlQUVoQiwyQ0FBeUM7YUFDNUNzbEYsbUJBQW1CdGxGO01BQ2xCLDhCQURrQkE7O2VBRWhCLDJDQUF5QzthQUs1Q3VsRixVQUFVdmxGLEdBQUksdUJBQUpBLE1BQWtCO2FBQzVCd2xGLFVBQVV4bEYsRUFBRWtrRixNQUFPLHVCQUFUbGtGLEtBQUVra0YsTUFBeUI7YUFDckN1QixVQUFVemxGLEVBQUVra0YsS0FBS0MsTUFBTyx1QkFBZG5rRixLQUFFa2tGLEtBQUtDLE1BQThCO2FBQy9DdUIsVUFBVTFsRixFQUFFa2tGLEtBQUtDLEtBQUtRO01BQU8sdUJBQW5CM2tGLEtBQUVra0YsS0FBS0MsS0FBS1EsTUFBbUM7Ozs7T0FyVnpEOUM7T0FDQUM7T0FTQVM7T0FDQUM7T0FUQVQ7T0FDQUM7T0FDQUM7T0FDQUM7T0FHQUc7T0FGQUY7T0FDQUM7T0FFQUU7T0FHQXAvQjtPQUVBdS9CO09Ba0JBQztPQUNBQztVQXVCRUssT0FVQUUsS0FXQUU7O1FBcUJBQztRQWVBSTs7UUFMQUQ7UUFSQUY7UUFDQUM7UUFZQUU7O1FBU0FDO1FBNEJBSTs7UUFkQUY7UUFJQUM7UUFlQUU7O1FBYUFFO1FBd0NBTTs7UUF4QkFIO1FBUUFDO1FBQ0FDO1FBb0JBRTs7UUFzQkFFO1FBZ0RBTzs7UUE5QkFMO1FBUUFDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBd0JBRTtPQWtDRkM7T0FHQUM7T0FHQUM7T0FHQUM7O09BT0FDO09BQ0FDO09BQ0FDO09BQ0FDOztheEM5V0FDLFVBQVVDLFFBQVEzb0YsRUFBRVI7TUFDYixJQUFMdUUsR0FBSyxXQURHNGtGLFFBQVEzb0Y7TUFDWCxxQkFFSSxrQkFIU1IsRUFDbEJ1RSxHQUVhO01BRlIsK0JBQ3VCLHFCQUQ1QkEsR0FDb0QsT0FDdEM7YUFFaEI2a0YsY0FBYzVvRixFQUFFUixHQUNsQixpQkFWRXFFLFdBU2M3RCxFQUFFUixFQUNjO2FBRTlCcXBGLGVBQWU3b0YsRUFBRVIsR0FDbkIsaUJBWkVvRSxZQVdlNUQsRUFBRVIsRUFDUzthQUUxQnNwRixjQUFjeG5FLE1BQU05ZSxLQUFLeEMsRUFBRVI7TUFDbkIsZ0NmOUNiLE9lZ0NLbUUsV0FhYzJkLE1BQU05ZSxZQUFLeEMsRUFBRVIsRUFDZ0I7UUFFM0N1cEYsWUFDQXZzRCxXQUNBd3NEO2FBSUFDLGFBQVdsbEY7TUFDYjtRQUFNLElBQ0pyQixFQURJLG1CQURPcUI7OztnQ0FHYztRQURwQjtnQkFBTHJCLEVBQzZCO2FBRTdCd21GLGFBQVdubEY7TUFDYjtRQUFNLElBQ0pqRSxFQURJLG1CQURPaUU7OztnQ0FHYztRQURwQjtnQkFBTGpFLEVBQzZCO2FBRTdCcXBGLGFBQVdwbEY7TUFDYjtRQUFNLElBQ0ovRCxFQURJLFdBRE8rRDs7O2dDQUdjO1FBRHBCO2dCQUFML0QsRUFDNkI7YUFJN0JvcEYsZUFBYXJsRixHQUFHVSxJQUFJKzNCLElBQUluNUI7TUFDMUI7UUFBTSxhQURTVSxHQUFHVSxJQUFJKzNCLElBQUluNUIsS0FFbEI7OztnQ0FDbUI7bUJBQUk7YUFFN0JnbUYsc0JBQW9CdGxGLEdBQUdWO01BQ3pCO1FBQU0sSUFDSnJELEVBREksb0JBRGdCK0QsR0FBR1Y7OztnQ0FHRTtRQURwQjtnQkFBTHJELEVBQzZCO2FBSTdCc3BGLFVBQVV2bEYsR0FBR1UsSUFBSXJCLElBQUlDO1VBQ1ZZLE1BRE1iLElBQ0ZjLE1BRE1iO01BRXJCO2lCQURlYTtVQUdMLElBQUp2RSxFQUFJLE1BSkFvRSxHQUFHVSxJQUNGUixNQUFJQztVQUdMLFNBQUp2RTtZQUlGO21CQVBXdUUsUUFHVHZFO2FBSUYsTUFQT3NFLFFBR0x0RTthQUhLc0U7YUFBSUM7O2VBQUpELFFBRE1iLFFBV0Q7YUFjaEJtbUYsT0FBTzlrRixJQUFJckIsSUFBSXREO01BQ2pCLElBQUl1RCxJQUFKLHFCQURTb0I7TUFDVCxJQURhckIsTUFBSXRELFVBQ2J1RCxJQUNtQixPQUZkb0I7TUFDVCxJQUdNNlksV0FIRmphOztXQUdFaWEsY0FKT2xhLE1BQUl0RDtVQU1iLGtCQUZFd2Q7UUFJSjttQkFKSUE7U0FJSjtVQUFJa3NFOztZQVJPcG1GOztjQWVQO1NBR0osMEJBVElxbUY7UUFVSixLQW5CT2hsRixNQWtCSDhZLFVBbEJPbmE7UUFtQlgsT0FESW1hLFFBR0g7YUFFRG1zRSxVQUFVM2xGO01BQ1osSUFBSTRsRjtNQUFKO1FBR2tDOzZCQUp0QjVsRjtTQUlSLDBCQUpRQTtTQUVSMnFEOzs7OztNQURKO09BT0Esb0JBTklBLDBCQURBaTdCO09BUUo7UUFESUM7T0FPSixzQkFOSUM7T0FPUSxnQkFoQkE5bEYsR0FlUlUsTUFOQW9sRjtNQU9RLEdBQVJDLFFBUEFELGVBU0Ysa0JBSEVwbEYsTUFDQXFsRjtNQUdDO1FBQ0csSUFJSnBuRixFQUpJLG1CQXBCSXFCOzs7Z0NBdUJOLDRCQVJGVTtRQVdFO2VBQVF5L0MsS0FBS3ovQyxJQUFJckI7WUFBSjJtRixVQUFJOWxGO1FBQ2Y7VUFBVTt3QkFEQzhsRixNQUFJOWxGLE1BekJuQjBsRjtXQTBCYyx5QkFEQ0ssU0FBSS9sRjtXQUtQLFlBL0JKRixHQTBCT2ltRixNQUFJL2xGLE1BRVhnbUY7VUFHSSxHQUFKdHFGLElBSEFzcUYsSUFLRixrQkFQU0QsUUFBSS9sRixRQUtYdEU7VUFKTSxJQVFSLE1BVGFzRSxRQUVYZ21GLFFBRk9GLFlBQUk5bEY7bUJBU087TUFFZCxJQUFOOGxGLE1BQU0sT0F0Qlp0bEYsSUFDQXFsRjtNQXNCRSxlQURJQyxNQXJCTkQsTUFRQXBuRjtNQWNFLFlBRElxbkYsTUFyQk5ELGNBd0JEOzs7O09BOUlEM25GO09BQ0EwQjtPQUNBRDtPQUNBRDtPQU9BaWxGO09BR0FDO09BR0FDO09BR0FDO09BQ0F2c0Q7T0FDQXdzRDtPQUNBL2hGO09BQ0FuQztPQUVBbWtGO09BS0FDO09BS0FDO09BS0FybEY7T0FFQXNsRjtPQUtBQztPQXVEQUs7T0EwQ0ExaUY7O2FDMUlBa2pGLFlBQVV2QixRQUFRM29GLEVBQUVSO01BQ2IsSUFBTHlELEdBQUssV0FERzBsRixRQUFRM29GO01BQ1gscUJBRUksa0JBSFNSLEVBQ2xCeUQsR0FFYTtNQUZSLCtCQUN1QixtQkFENUJBLEdBQ3FELE9BQ3ZDO2FBRWhCa25GLGdCQUFjbnFGLEVBQUVSLEdBQ2xCLG1CQVZFb0QsU0FTYzVDLEVBQUVSLEVBQ2U7YUFFL0I0cUYsaUJBQWVwcUYsRUFBRVIsR0FDbkIsbUJBWkVtRCxVQVdlM0MsRUFBRVIsRUFDVTthQUUzQjZxRixnQkFBYy9vRSxNQUFNOWUsS0FBS3hDLEVBQUVSO01BQ25CLGtDaEIvQ2IsT2dCaUNLOEMsU0FhY2dmLE1BQU05ZSxZQUFLeEMsRUFBRVIsRUFDaUI7O0tBRTVDOHFGO0tBQ0FDO0tBQ0FDOzs7T0F0QkFwb0Y7T0FDQUM7T0FDQU87T0FDQUQ7T0FDQUw7T0FPQTZuRjtPQUdBQztPQUdBQztPQUdBQztPQUNBQztPQUNBQztPQUNBL21GO09BQ0FDO09BQ0FzRTtPQUNBbkY7T0FDQWtGO09BQ0FEO09BQ0E1RTtPQUNBRjtPQUNBRztPQUNBRztPQUNBbUU7Ozs7VWhCOURMOzs7Ozs7O0l1REFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YUMwQkNnakY7Ozs7Ozs7O09BTUVPOzs7Ozs7T0FEQUU7MENBQ0FEO09BRkFHO3dDQUNBRDtPQUZBRzs0Q0FDQUQ7T0FGQUc7MENBQ0FEO09BRkFHO3dDQUNBRDswQkFEQUUsT0FPb0I7Ozs7Ozs7Ozs7O2FBVWxCQyxzQkFBdUJDLE9BQTBCLHVCQUExQkEsTUFB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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